{"openapi":"3.1.0","info":{"title":"RMFG Manufacturing API","version":"2026-09-01","description":"Upload CAD, evaluate manufacturability, and quote sheet-metal and tube-laser parts. Authenticate with `Authorization: Bearer <access token or API key>`."},"servers":[{"url":"https://api.rmfg.com"}],"paths":{"/v1/webhook-endpoints":{"get":{"tags":["manufacturing-v1"],"summary":"List Webhook Endpoints","description":"Active endpoints for this caller. Secrets are never returned here.","operationId":"webhook_endpoints.list","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1List_V1WebhookEndpoint_"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"403":{"description":"The credentials do not permit this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"404":{"description":"The resource does not exist or is not visible to the caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"422":{"description":"Validation failed; see `error.param` and `error.details`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"429":{"description":"Rate limit exceeded; retry after the `Retry-After` header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"500":{"description":"Unexpected failure; safe to retry with the same Idempotency-Key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}}},"security":[{"BearerAuth":[]}]},"post":{"tags":["manufacturing-v1"],"summary":"Create Webhook Endpoint","description":"Register a URL for lifecycle events. The signing `secret` is returned\nonce, here; store it to verify `X-RMFG-Signature`.","operationId":"webhook_endpoints.create","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1WebhookEndpointCreateRequest"}}},"required":true},"responses":{"201":{"description":"Endpoint created; `secret` shown once.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1WebhookEndpoint"}}}},"400":{"description":"Malformed request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"403":{"description":"The credentials do not permit this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"404":{"description":"The resource does not exist or is not visible to the caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"409":{"description":"The resource is not ready, or Idempotency-Key was reused with a different request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"422":{"description":"Validation failed; see `error.param` and `error.details`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"429":{"description":"Rate limit exceeded; retry after the `Retry-After` header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"500":{"description":"Unexpected failure; safe to retry with the same Idempotency-Key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"503":{"description":"A dependency is temporarily unavailable; retry later.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}}},"security":[{"BearerAuth":[]}]}},"/v1/webhook-endpoints/{endpoint_id}":{"get":{"tags":["manufacturing-v1"],"summary":"Get Webhook Endpoint","operationId":"webhook_endpoints.get","security":[{"BearerAuth":[]}],"parameters":[{"name":"endpoint_id","in":"path","required":true,"schema":{"type":"string","title":"Endpoint Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1WebhookEndpoint"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"403":{"description":"The credentials do not permit this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"404":{"description":"The resource does not exist or is not visible to the caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"422":{"description":"Validation failed; see `error.param` and `error.details`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"429":{"description":"Rate limit exceeded; retry after the `Retry-After` header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"500":{"description":"Unexpected failure; safe to retry with the same Idempotency-Key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}}}},"delete":{"tags":["manufacturing-v1"],"summary":"Delete Webhook Endpoint","description":"Deactivate an endpoint. Pending deliveries to it are abandoned.","operationId":"webhook_endpoints.delete","security":[{"BearerAuth":[]}],"parameters":[{"name":"endpoint_id","in":"path","required":true,"schema":{"type":"string","title":"Endpoint Id"}}],"responses":{"204":{"description":"Endpoint deactivated."},"400":{"description":"Malformed request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"403":{"description":"The credentials do not permit this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"404":{"description":"The resource does not exist or is not visible to the caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"409":{"description":"The resource is not ready, or Idempotency-Key was reused with a different request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"422":{"description":"Validation failed; see `error.param` and `error.details`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"429":{"description":"Rate limit exceeded; retry after the `Retry-After` header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"500":{"description":"Unexpected failure; safe to retry with the same Idempotency-Key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"503":{"description":"A dependency is temporarily unavailable; retry later.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}}}}},"/v1/webhook-endpoints/{endpoint_id}/deliveries":{"get":{"tags":["manufacturing-v1"],"summary":"List Webhook Deliveries","description":"Recent delivery attempts for an endpoint, newest first, for debugging.","operationId":"webhook_endpoints.deliveries","security":[{"BearerAuth":[]}],"parameters":[{"name":"endpoint_id","in":"path","required":true,"schema":{"type":"string","title":"Endpoint Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1List_V1WebhookDelivery_"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"403":{"description":"The credentials do not permit this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"404":{"description":"The resource does not exist or is not visible to the caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"422":{"description":"Validation failed; see `error.param` and `error.details`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"429":{"description":"Rate limit exceeded; retry after the `Retry-After` header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"500":{"description":"Unexpected failure; safe to retry with the same Idempotency-Key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}}}}},"/v1/orders":{"get":{"tags":["manufacturing-v1"],"summary":"List Manufacturing Orders","description":"Orders placed from this caller's carts, plus orders on the caller's\nRMFG account, newest first.","operationId":"orders.list","security":[{"BearerAuth":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Limit"}},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque page cursor.","title":"Cursor"},"description":"Opaque page cursor."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1List_V1Order_"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"403":{"description":"The credentials do not permit this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"404":{"description":"The resource does not exist or is not visible to the caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"422":{"description":"Validation failed; see `error.param` and `error.details`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"429":{"description":"Rate limit exceeded; retry after the `Retry-After` header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"500":{"description":"Unexpected failure; safe to retry with the same Idempotency-Key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}}}}},"/v1/orders/{order_id}":{"get":{"tags":["manufacturing-v1"],"summary":"Get Manufacturing Order","operationId":"orders.get","security":[{"BearerAuth":[]}],"parameters":[{"name":"order_id","in":"path","required":true,"schema":{"type":"string","title":"Order Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Order"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"403":{"description":"The credentials do not permit this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"404":{"description":"The resource does not exist or is not visible to the caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"422":{"description":"Validation failed; see `error.param` and `error.details`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"429":{"description":"Rate limit exceeded; retry after the `Retry-After` header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"500":{"description":"Unexpected failure; safe to retry with the same Idempotency-Key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}}}}},"/v1/quotes/reprice":{"post":{"tags":["manufacturing-v1"],"summary":"Reprice Quote","operationId":"quotes.reprice","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1RepriceRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1QuotedDesign"}}}},"400":{"description":"Malformed request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"403":{"description":"The credentials do not permit this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"404":{"description":"The resource does not exist or is not visible to the caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"409":{"description":"The resource is not ready, or Idempotency-Key was reused with a different request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"422":{"description":"Validation failed; see `error.param` and `error.details`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"429":{"description":"Rate limit exceeded; retry after the `Retry-After` header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"500":{"description":"Unexpected failure; safe to retry with the same Idempotency-Key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"503":{"description":"A dependency is temporarily unavailable; retry later.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}}},"security":[{"BearerAuth":[]}]}},"/v1/quotes/preview":{"post":{"tags":["manufacturing-v1"],"summary":"Preview Quote","description":"Preview basket pricing and quantity-dependent fulfillment. The result is\nnot a checkout quote. Unchanged configurations reuse a five-minute pricing\nsnapshot; a miss runs full validation. Carts and payment always validate afresh.","operationId":"quotes.preview","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1QuoteRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Quote"}}}},"400":{"description":"Malformed request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"403":{"description":"The credentials do not permit this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"404":{"description":"The resource does not exist or is not visible to the caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"409":{"description":"The resource is not ready, or Idempotency-Key was reused with a different request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"422":{"description":"Validation failed; see `error.param` and `error.details`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"429":{"description":"Rate limit exceeded; retry after the `Retry-After` header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"500":{"description":"Unexpected failure; safe to retry with the same Idempotency-Key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"503":{"description":"A dependency is temporarily unavailable; retry later.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}}},"security":[{"BearerAuth":[]}]}},"/v1/materials":{"get":{"tags":["manufacturing-v1"],"summary":"List Materials","description":"Sheet-metal materials. Tube stock is listed by `GET /v1/tube-profiles`.","operationId":"materials.list","security":[{"BearerAuth":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"description":"Items per page (max 500).","default":100,"title":"Limit"},"description":"Items per page (max 500)."},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"`next_cursor` from the previous page.","title":"Cursor"},"description":"`next_cursor` from the previous page."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1List_V1Material_"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"403":{"description":"The credentials do not permit this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"404":{"description":"The resource does not exist or is not visible to the caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"422":{"description":"Validation failed; see `error.param` and `error.details`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"429":{"description":"Rate limit exceeded; retry after the `Retry-After` header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"500":{"description":"Unexpected failure; safe to retry with the same Idempotency-Key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}}}}},"/v1/tube-profiles":{"get":{"tags":["manufacturing-v1"],"summary":"List Tube Profiles","description":"Tube-laser stock profiles.","operationId":"tube_profiles.list","security":[{"BearerAuth":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"description":"Items per page (max 500).","default":100,"title":"Limit"},"description":"Items per page (max 500)."},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"`next_cursor` from the previous page.","title":"Cursor"},"description":"`next_cursor` from the previous page."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1List_V1TubeProfile_"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"403":{"description":"The credentials do not permit this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"404":{"description":"The resource does not exist or is not visible to the caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"422":{"description":"Validation failed; see `error.param` and `error.details`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"429":{"description":"Rate limit exceeded; retry after the `Retry-After` header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"500":{"description":"Unexpected failure; safe to retry with the same Idempotency-Key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}}}}},"/v1/finishes":{"get":{"tags":["manufacturing-v1"],"summary":"List Finishes","description":"Mechanical finishes. DFM `capabilities.finish_id` decides eligibility for\na specific part; this list only says what exists.","operationId":"finishes.list","security":[{"BearerAuth":[]}],"parameters":[{"name":"process","in":"query","required":false,"schema":{"anyOf":[{"enum":["sheet_metal","tube_laser"],"type":"string"},{"type":"null"}],"description":"Only finishes that can be applied to this process.","title":"Process"},"description":"Only finishes that can be applied to this process."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"description":"Items per page (max 500).","default":100,"title":"Limit"},"description":"Items per page (max 500)."},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"`next_cursor` from the previous page.","title":"Cursor"},"description":"`next_cursor` from the previous page."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1List_V1Finish_"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"403":{"description":"The credentials do not permit this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"404":{"description":"The resource does not exist or is not visible to the caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"422":{"description":"Validation failed; see `error.param` and `error.details`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"429":{"description":"Rate limit exceeded; retry after the `Retry-After` header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"500":{"description":"Unexpected failure; safe to retry with the same Idempotency-Key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}}}}},"/v1/powder-coat-colors":{"get":{"tags":["manufacturing-v1"],"summary":"List Powder Coat Colors","description":"Powder-coat colors. `viewer` carries rendering hints for 3D previews.","operationId":"powder_coat_colors.list","security":[{"BearerAuth":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"description":"Items per page (max 500).","default":100,"title":"Limit"},"description":"Items per page (max 500)."},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"`next_cursor` from the previous page.","title":"Cursor"},"description":"`next_cursor` from the previous page."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1List_V1PowderCoatColor_"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"403":{"description":"The credentials do not permit this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"404":{"description":"The resource does not exist or is not visible to the caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"422":{"description":"Validation failed; see `error.param` and `error.details`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"429":{"description":"Rate limit exceeded; retry after the `Retry-After` header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"500":{"description":"Unexpected failure; safe to retry with the same Idempotency-Key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}}}}},"/v1/hardware/taps":{"get":{"tags":["manufacturing-v1"],"summary":"List Taps","description":"Tap sizes. Reference an entry by `id` as `tap_id`.","operationId":"taps.list","security":[{"BearerAuth":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"description":"Items per page (max 500).","default":100,"title":"Limit"},"description":"Items per page (max 500)."},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"`next_cursor` from the previous page.","title":"Cursor"},"description":"`next_cursor` from the previous page."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1List_V1TapOption_"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"403":{"description":"The credentials do not permit this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"404":{"description":"The resource does not exist or is not visible to the caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"422":{"description":"Validation failed; see `error.param` and `error.details`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"429":{"description":"Rate limit exceeded; retry after the `Retry-After` header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"500":{"description":"Unexpected failure; safe to retry with the same Idempotency-Key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}}}}},"/v1/hardware/studs":{"get":{"tags":["manufacturing-v1"],"summary":"List Studs","description":"Installed studs. Reference an entry by `id` as `stud_id`.","operationId":"studs.list","security":[{"BearerAuth":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"description":"Items per page (max 500).","default":100,"title":"Limit"},"description":"Items per page (max 500)."},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"`next_cursor` from the previous page.","title":"Cursor"},"description":"`next_cursor` from the previous page."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1List_V1StudOption_"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"403":{"description":"The credentials do not permit this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"404":{"description":"The resource does not exist or is not visible to the caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"422":{"description":"Validation failed; see `error.param` and `error.details`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"429":{"description":"Rate limit exceeded; retry after the `Retry-After` header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"500":{"description":"Unexpected failure; safe to retry with the same Idempotency-Key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}}}}},"/v1/hardware/nuts":{"get":{"tags":["manufacturing-v1"],"summary":"List Nuts","description":"Installed nuts. Reference an entry by `id` as `nut_id`.","operationId":"nuts.list","security":[{"BearerAuth":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"description":"Items per page (max 500).","default":100,"title":"Limit"},"description":"Items per page (max 500)."},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"`next_cursor` from the previous page.","title":"Cursor"},"description":"`next_cursor` from the previous page."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1List_V1NutOption_"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"403":{"description":"The credentials do not permit this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"404":{"description":"The resource does not exist or is not visible to the caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"422":{"description":"Validation failed; see `error.param` and `error.details`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"429":{"description":"Rate limit exceeded; retry after the `Retry-After` header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"500":{"description":"Unexpected failure; safe to retry with the same Idempotency-Key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}}}}},"/v1/hardware/standoffs":{"get":{"tags":["manufacturing-v1"],"summary":"List Standoffs","description":"Installed press-fit standoffs. Reference an entry as `standoff_id`.","operationId":"standoffs.list","security":[{"BearerAuth":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"description":"Items per page (max 500).","default":100,"title":"Limit"},"description":"Items per page (max 500)."},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"`next_cursor` from the previous page.","title":"Cursor"},"description":"`next_cursor` from the previous page."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1List_V1StandoffOption_"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"403":{"description":"The credentials do not permit this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"404":{"description":"The resource does not exist or is not visible to the caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"422":{"description":"Validation failed; see `error.param` and `error.details`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"429":{"description":"Rate limit exceeded; retry after the `Retry-After` header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"500":{"description":"Unexpected failure; safe to retry with the same Idempotency-Key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}}}}},"/v1/hardware/{kind}/{item_id}/model":{"get":{"tags":["manufacturing-v1"],"summary":"Get Hardware Model","description":"Redirect to a short-lived download of the hardware's 3D model.","operationId":"hardware.model","security":[{"BearerAuth":[]}],"parameters":[{"name":"kind","in":"path","required":true,"schema":{"enum":["studs","nuts","standoffs"],"type":"string","title":"Kind"}},{"name":"item_id","in":"path","required":true,"schema":{"type":"string","title":"Item Id"}}],"responses":{"307":{"description":"Successful Response"},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"403":{"description":"The credentials do not permit this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"404":{"description":"The resource does not exist or is not visible to the caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"422":{"description":"Validation failed; see `error.param` and `error.details`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"429":{"description":"Rate limit exceeded; retry after the `Retry-After` header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"500":{"description":"Unexpected failure; safe to retry with the same Idempotency-Key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}}}}},"/v1/analyze":{"post":{"tags":["manufacturing-v1"],"summary":"Create Design","description":"Analyze a STEP file and immediately return its durable design resource.\n\nThe returned design ID remains stable while the internal queue processes\ngeometry and model artifacts. Poll `status_url`; no public job resource is\nrequired.","operationId":"designs.analyze","security":[{"BearerAuth":[]}],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Idempotency-Key"}},{"name":"Prefer","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Prefer"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","required":["file"],"properties":{"file":{"type":"string","format":"binary","description":"STEP or STP file, up to the documented size limit."}}}}}},"responses":{"202":{"description":"Design accepted; poll `status_url`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Design"}}}},"200":{"description":"Design analysis finished within the `Prefer: wait=N` window.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Design"}}}},"400":{"description":"Malformed request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"403":{"description":"The credentials do not permit this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"404":{"description":"The resource does not exist or is not visible to the caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"409":{"description":"The resource is not ready, or Idempotency-Key was reused with a different request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"413":{"description":"The uploaded file exceeds the size limit.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"415":{"description":"Unsupported Content-Type.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"422":{"description":"Validation failed; see `error.param` and `error.details`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"429":{"description":"Rate limit exceeded; retry after the `Retry-After` header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"500":{"description":"Unexpected failure; safe to retry with the same Idempotency-Key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"503":{"description":"A dependency is temporarily unavailable; retry later.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}}}}},"/v1/designs/{design_id}":{"get":{"tags":["manufacturing-v1"],"summary":"Get Design Resource","operationId":"designs.get","security":[{"BearerAuth":[]}],"parameters":[{"name":"design_id","in":"path","required":true,"schema":{"type":"string","title":"Design Id"}},{"name":"include_review_link","in":"query","required":false,"schema":{"type":"boolean","description":"Include a website review link. Upload polling can skip this work.","default":true,"title":"Include Review Link"},"description":"Include a website review link. Upload polling can skip this work."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Design"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"403":{"description":"The credentials do not permit this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"404":{"description":"The resource does not exist or is not visible to the caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"422":{"description":"Validation failed; see `error.param` and `error.details`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"429":{"description":"Rate limit exceeded; retry after the `Retry-After` header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"500":{"description":"Unexpected failure; safe to retry with the same Idempotency-Key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}}}}},"/v1/designs/{design_id}/weld-candidates":{"get":{"tags":["manufacturing-v1"],"summary":"Get Weld Candidates","description":"Find contact paths an agent can submit as assembly weld operations.\n\nCoordinates are millimetres in the assembly model frame, before viewer\ncentering/scaling. Each operation includes its actual joined instances.\nSelect and adapt candidates to the drawing; detection does not decide\nweld process, finish, intermittent spacing, or accessibility.","operationId":"designs.weld_candidates","security":[{"BearerAuth":[]}],"parameters":[{"name":"design_id","in":"path","required":true,"schema":{"type":"string","title":"Design Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1WeldCandidates"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"403":{"description":"The credentials do not permit this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"404":{"description":"The resource does not exist or is not visible to the caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"422":{"description":"Validation failed; see `error.param` and `error.details`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"429":{"description":"Rate limit exceeded; retry after the `Retry-After` header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"500":{"description":"Unexpected failure; safe to retry with the same Idempotency-Key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}}}}},"/v1/designs/{design_id}/preview":{"get":{"tags":["manufacturing-v1"],"summary":"Get Design Preview","description":"Serve the preview without waiting for assembly/design persistence.","operationId":"designs.preview","security":[{"BearerAuth":[]}],"parameters":[{"name":"design_id","in":"path","required":true,"schema":{"type":"string","title":"Design Id"}}],"responses":{"307":{"description":"Successful Response"},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"403":{"description":"The credentials do not permit this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"404":{"description":"The resource does not exist or is not visible to the caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"422":{"description":"Validation failed; see `error.param` and `error.details`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"429":{"description":"Rate limit exceeded; retry after the `Retry-After` header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"500":{"description":"Unexpected failure; safe to retry with the same Idempotency-Key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}}}}},"/v1/designs/{design_id}/model":{"get":{"tags":["manufacturing-v1"],"summary":"Get Design Model","operationId":"designs.model","security":[{"BearerAuth":[]}],"parameters":[{"name":"design_id","in":"path","required":true,"schema":{"type":"string","title":"Design Id"}}],"responses":{"307":{"description":"Successful Response"},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"403":{"description":"The credentials do not permit this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"404":{"description":"The resource does not exist or is not visible to the caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"422":{"description":"Validation failed; see `error.param` and `error.details`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"429":{"description":"Rate limit exceeded; retry after the `Retry-After` header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"500":{"description":"Unexpected failure; safe to retry with the same Idempotency-Key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}}}}},"/v1/designs/{design_id}/parts/{part_id}/model":{"get":{"tags":["manufacturing-v1"],"summary":"Get Part Model","operationId":"parts.model","security":[{"BearerAuth":[]}],"parameters":[{"name":"design_id","in":"path","required":true,"schema":{"type":"string","title":"Design Id"}},{"name":"part_id","in":"path","required":true,"schema":{"type":"string","title":"Part Id"}},{"name":"view","in":"query","required":false,"schema":{"enum":["formed","flat"],"type":"string","default":"formed","title":"View"}}],"responses":{"307":{"description":"Successful Response"},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"403":{"description":"The credentials do not permit this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"404":{"description":"The resource does not exist or is not visible to the caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"422":{"description":"Validation failed; see `error.param` and `error.details`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"429":{"description":"Rate limit exceeded; retry after the `Retry-After` header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"500":{"description":"Unexpected failure; safe to retry with the same Idempotency-Key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}}}}},"/v1/designs/{design_id}/parts/{part_id}/step":{"get":{"tags":["manufacturing-v1"],"summary":"Get Part Step","description":"Redirect to a short-lived download of a part's STEP file.","operationId":"parts.step","security":[{"BearerAuth":[]}],"parameters":[{"name":"design_id","in":"path","required":true,"schema":{"type":"string","title":"Design Id"}},{"name":"part_id","in":"path","required":true,"schema":{"type":"string","title":"Part Id"}},{"name":"view","in":"query","required":false,"schema":{"enum":["source","normalized","flat"],"type":"string","description":"`source` is the uploaded geometry; `normalized` is re-oriented into the frame used by the returned metadata; `flat` is the unfolded pattern.","default":"normalized","title":"View"},"description":"`source` is the uploaded geometry; `normalized` is re-oriented into the frame used by the returned metadata; `flat` is the unfolded pattern."}],"responses":{"307":{"description":"Successful Response"},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"403":{"description":"The credentials do not permit this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"404":{"description":"The resource does not exist or is not visible to the caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"422":{"description":"Validation failed; see `error.param` and `error.details`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"429":{"description":"Rate limit exceeded; retry after the `Retry-After` header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"500":{"description":"Unexpected failure; safe to retry with the same Idempotency-Key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}}}}},"/v1/dfm":{"post":{"tags":["manufacturing-v1"],"summary":"Create Dfm Report","description":"Evaluate a configuration and, by default, prepare production files.\n\nMissing selections return `status: requires_input`; unmanufacturable\nconfigurations return `status: blocked`. Neither is an HTTP error.\nReports are immutable: submit a new request to evaluate a change.","operationId":"dfm.create","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1DFMRequest"}}},"required":true},"responses":{"201":{"description":"Report created.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1DFMReport"}}}},"400":{"description":"Malformed request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"403":{"description":"The credentials do not permit this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"404":{"description":"The resource does not exist or is not visible to the caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"409":{"description":"The resource is not ready, or Idempotency-Key was reused with a different request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"422":{"description":"Validation failed; see `error.param` and `error.details`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"429":{"description":"Rate limit exceeded; retry after the `Retry-After` header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"500":{"description":"Unexpected failure; safe to retry with the same Idempotency-Key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"503":{"description":"A dependency is temporarily unavailable; retry later.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}}},"security":[{"BearerAuth":[]}]}},"/v1/dfm/{dfm_id}":{"get":{"tags":["manufacturing-v1"],"summary":"Get Dfm Report","operationId":"dfm.get","security":[{"BearerAuth":[]}],"parameters":[{"name":"dfm_id","in":"path","required":true,"schema":{"type":"string","title":"Dfm Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1DFMReport"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"403":{"description":"The credentials do not permit this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"404":{"description":"The resource does not exist or is not visible to the caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"422":{"description":"Validation failed; see `error.param` and `error.details`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"429":{"description":"Rate limit exceeded; retry after the `Retry-After` header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"500":{"description":"Unexpected failure; safe to retry with the same Idempotency-Key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}}}}},"/v1/dfm/{dfm_id}/parts/{part_id}/bend-plan":{"post":{"tags":["manufacturing-v1"],"summary":"Preview Dfm Bend Plan","description":"Experimental sampled bend plan; does not change purchasing DFM status.","operationId":"dfm.bend_plan_preview","security":[{"BearerAuth":[]}],"parameters":[{"name":"dfm_id","in":"path","required":true,"schema":{"type":"string","title":"Dfm Id"}},{"name":"part_id","in":"path","required":true,"schema":{"type":"string","title":"Part Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1BendPlanPreviewRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1BendProgramResponse"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"403":{"description":"The credentials do not permit this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"404":{"description":"The resource does not exist or is not visible to the caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"422":{"description":"Validation failed; see `error.param` and `error.details`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"429":{"description":"Rate limit exceeded; retry after the `Retry-After` header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"500":{"description":"Unexpected failure; safe to retry with the same Idempotency-Key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}}}}},"/v1/dfm/{dfm_id}/parts/{part_id}/file":{"get":{"tags":["manufacturing-v1"],"summary":"Get Dfm File","operationId":"dfm.file","security":[{"BearerAuth":[]}],"parameters":[{"name":"dfm_id","in":"path","required":true,"schema":{"type":"string","title":"Dfm Id"}},{"name":"part_id","in":"path","required":true,"schema":{"type":"string","title":"Part Id"}},{"name":"kind","in":"query","required":true,"schema":{"enum":["production_step","production_model","production_flat_step","production_flat_model","production_dxf","production_bend_lines_dxf"],"type":"string","title":"Kind"}}],"responses":{"307":{"description":"Successful Response"},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"403":{"description":"The credentials do not permit this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"404":{"description":"The resource does not exist or is not visible to the caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"422":{"description":"Validation failed; see `error.param` and `error.details`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"429":{"description":"Rate limit exceeded; retry after the `Retry-After` header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"500":{"description":"Unexpected failure; safe to retry with the same Idempotency-Key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}}}}},"/v1/quotes":{"post":{"tags":["manufacturing-v1"],"summary":"Create Quote","operationId":"quotes.create","security":[{"BearerAuth":[]}],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Idempotency-Key"}},{"name":"Prefer","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Prefer"}}],"responses":{"201":{"description":"Quote created.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Quote"}}}},"200":{"description":"Idempotent replay: the Idempotency-Key was already used with this exact request, so the original quote is returned.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Quote"}}}},"202":{"description":"File quote accepted and still processing; poll `status_url`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Quote"}}}},"400":{"description":"Malformed request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"403":{"description":"The credentials do not permit this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"404":{"description":"The resource does not exist or is not visible to the caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"409":{"description":"The resource is not ready, or Idempotency-Key was reused with a different request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"413":{"description":"The uploaded file exceeds the size limit.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"415":{"description":"Unsupported Content-Type.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"422":{"description":"Validation failed; see `error.param` and `error.details`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"429":{"description":"Rate limit exceeded; retry after the `Retry-After` header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"500":{"description":"Unexpected failure; safe to retry with the same Idempotency-Key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"503":{"description":"A dependency is temporarily unavailable; retry later.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1QuoteRequest"}},"multipart/form-data":{"schema":{"type":"object","required":["file","request"],"properties":{"file":{"type":"string","format":"binary"},"request":{"type":"string","description":"JSON encoded V1DirectQuoteRequest for a one-call file quote. Multi-part files return requires_input with the discovered design ID."}}}}}}}},"/v1/quotes/{quote_id}":{"get":{"tags":["manufacturing-v1"],"summary":"Get Quote Resource","operationId":"quotes.get","security":[{"BearerAuth":[]}],"parameters":[{"name":"quote_id","in":"path","required":true,"schema":{"type":"string","title":"Quote Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Quote"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"403":{"description":"The credentials do not permit this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"404":{"description":"The resource does not exist or is not visible to the caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"422":{"description":"Validation failed; see `error.param` and `error.details`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"429":{"description":"Rate limit exceeded; retry after the `Retry-After` header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"500":{"description":"Unexpected failure; safe to retry with the same Idempotency-Key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}}}}},"/v1/bend-programs":{"post":{"tags":["manufacturing-v1"],"summary":"Create","description":"Queue independent bend generation for a prepared DFM part. Poll the returned\nurl or subscribe to bend_program.completed / bend_program.failed webhooks.\nRetries with the same Idempotency-Key reuse the same saved resource.","operationId":"bend_programs.create","security":[{"BearerAuth":[]}],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string","minLength":1,"maxLength":255},{"type":"null"}],"title":"Idempotency-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1SavedBendProgramCreate"}}}},"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1SavedBendProgram"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"403":{"description":"The credentials do not permit this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"404":{"description":"The resource does not exist or is not visible to the caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"422":{"description":"Validation failed; see `error.param` and `error.details`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"429":{"description":"Rate limit exceeded; retry after the `Retry-After` header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"500":{"description":"Unexpected failure; safe to retry with the same Idempotency-Key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"400":{"description":"Malformed request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"409":{"description":"The resource is not ready, or Idempotency-Key was reused with a different request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"503":{"description":"A dependency is temporarily unavailable; retry later.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"200":{"description":"Existing completed or failed program returned for this Idempotency-Key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1SavedBendProgram"}}}}}}},"/v1/bend-programs/{program_id}":{"get":{"tags":["manufacturing-v1"],"summary":"Retrieve","description":"Retrieve saved status and links. This never reruns generation.","operationId":"bend_programs.retrieve","security":[{"BearerAuth":[]}],"parameters":[{"name":"program_id","in":"path","required":true,"schema":{"type":"string","title":"Program Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1SavedBendProgram"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"403":{"description":"The credentials do not permit this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"404":{"description":"The resource does not exist or is not visible to the caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"422":{"description":"Validation failed; see `error.param` and `error.details`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"429":{"description":"Rate limit exceeded; retry after the `Retry-After` header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"500":{"description":"Unexpected failure; safe to retry with the same Idempotency-Key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}}}}},"/v1/bend-programs/{program_id}/program":{"get":{"tags":["manufacturing-v1"],"summary":"Program","description":"Retrieve ordered steps, tools, station positions and independent gauge motion.","operationId":"bend_programs.program","security":[{"BearerAuth":[]}],"parameters":[{"name":"program_id","in":"path","required":true,"schema":{"type":"string","title":"Program Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/V1BendProgram"},{"type":"null"}],"title":"Response Bend Programs.Program"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"403":{"description":"The credentials do not permit this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"404":{"description":"The resource does not exist or is not visible to the caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"422":{"description":"Validation failed; see `error.param` and `error.details`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"429":{"description":"Rate limit exceeded; retry after the `Retry-After` header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"500":{"description":"Unexpected failure; safe to retry with the same Idempotency-Key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"409":{"description":"The resource is not ready, or Idempotency-Key was reused with a different request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"502":{"description":"An upstream service or saved artifact returned an invalid response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}}}}},"/v1/bend-programs/{program_id}/checks":{"get":{"tags":["manufacturing-v1"],"summary":"Checks","description":"Retrieve warnings, sampled collision witnesses and validation coverage.","operationId":"bend_programs.checks","security":[{"BearerAuth":[]}],"parameters":[{"name":"program_id","in":"path","required":true,"schema":{"type":"string","title":"Program Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1BendProgramChecks"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"403":{"description":"The credentials do not permit this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"404":{"description":"The resource does not exist or is not visible to the caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"422":{"description":"Validation failed; see `error.param` and `error.details`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"429":{"description":"Rate limit exceeded; retry after the `Retry-After` header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"500":{"description":"Unexpected failure; safe to retry with the same Idempotency-Key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"409":{"description":"The resource is not ready, or Idempotency-Key was reused with a different request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"502":{"description":"An upstream service or saved artifact returned an invalid response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}}}}},"/v1/bend-programs/{program_id}/preview.glb":{"get":{"tags":["manufacturing-v1"],"summary":"Preview","description":"Download the saved binary preview. The stable API URL refreshes its signed\ndownload after owner authorization; the storage bucket is private.","operationId":"bend_programs.preview","security":[{"BearerAuth":[]}],"parameters":[{"name":"program_id","in":"path","required":true,"schema":{"type":"string","title":"Program Id"}}],"responses":{"303":{"description":"Short-lived authenticated redirect to a private GLB with geometry and bend animation."},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"403":{"description":"The credentials do not permit this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"404":{"description":"The resource does not exist or is not visible to the caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"422":{"description":"Validation failed; see `error.param` and `error.details`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"429":{"description":"Rate limit exceeded; retry after the `Retry-After` header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"500":{"description":"Unexpected failure; safe to retry with the same Idempotency-Key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"409":{"description":"The resource is not ready, or Idempotency-Key was reused with a different request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"502":{"description":"An upstream service or saved artifact returned an invalid response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}}}}},"/v1/designs/{design_id}/image":{"get":{"tags":["manufacturing-v1"],"summary":"Get Design Image","description":"Render the whole design with every part instance in place.","operationId":"designs.image","security":[{"BearerAuth":[]}],"parameters":[{"name":"design_id","in":"path","required":true,"schema":{"type":"string","title":"Design Id"}},{"name":"view","in":"query","required":false,"schema":{"enum":["iso","top","bottom","front","back","left","right","flat"],"type":"string","description":"`iso` is a three-quarter view; `top` looks down the design's Z axis and `bottom` up it; `front`/`back`/`left`/`right` are the side elevations; `flat` renders the flat pattern. A hole is drawn solid when the face an operation applies from points at the camera, and hollow (and listed as hidden) when it points away.","default":"iso","title":"View"},"description":"`iso` is a three-quarter view; `top` looks down the design's Z axis and `bottom` up it; `front`/`back`/`left`/`right` are the side elevations; `flat` renders the flat pattern. A hole is drawn solid when the face an operation applies from points at the camera, and hollow (and listed as hidden) when it points away."},{"name":"format","in":"query","required":false,"schema":{"enum":["png","svg"],"type":"string","description":"`png` (default) or `svg`.","default":"png","title":"Format"},"description":"`png` (default) or `svg`."},{"name":"width","in":"query","required":false,"schema":{"type":"integer","maximum":4000,"minimum":320,"description":"Image width in pixels.","default":1200,"title":"Width"},"description":"Image width in pixels."}],"responses":{"200":{"description":"The rendered image.","content":{"image/png":{},"image/svg+xml":{}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"403":{"description":"The credentials do not permit this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"404":{"description":"The resource does not exist or is not visible to the caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"422":{"description":"Validation failed; see `error.param` and `error.details`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"429":{"description":"Rate limit exceeded; retry after the `Retry-After` header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"500":{"description":"Unexpected failure; safe to retry with the same Idempotency-Key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}}}}},"/v1/designs/{design_id}/parts/{part_id}/image":{"get":{"tags":["manufacturing-v1"],"summary":"Get Part Image","description":"Render one part with its holes and bends labelled by ID.","operationId":"parts.image","security":[{"BearerAuth":[]}],"parameters":[{"name":"design_id","in":"path","required":true,"schema":{"type":"string","title":"Design Id"}},{"name":"part_id","in":"path","required":true,"schema":{"type":"string","title":"Part Id"}},{"name":"view","in":"query","required":false,"schema":{"enum":["iso","top","bottom","front","back","left","right","flat"],"type":"string","description":"`iso` is a three-quarter view; `top` looks down the design's Z axis and `bottom` up it; `front`/`back`/`left`/`right` are the side elevations; `flat` renders the flat pattern. A hole is drawn solid when the face an operation applies from points at the camera, and hollow (and listed as hidden) when it points away.","default":"iso","title":"View"},"description":"`iso` is a three-quarter view; `top` looks down the design's Z axis and `bottom` up it; `front`/`back`/`left`/`right` are the side elevations; `flat` renders the flat pattern. A hole is drawn solid when the face an operation applies from points at the camera, and hollow (and listed as hidden) when it points away."},{"name":"format","in":"query","required":false,"schema":{"enum":["png","svg"],"type":"string","description":"`png` (default) or `svg`.","default":"png","title":"Format"},"description":"`png` (default) or `svg`."},{"name":"width","in":"query","required":false,"schema":{"type":"integer","maximum":4000,"minimum":320,"description":"Image width in pixels.","default":1200,"title":"Width"},"description":"Image width in pixels."},{"name":"labels","in":"query","required":false,"schema":{"enum":["all","holes","bends","none"],"type":"string","description":"Which feature labels to draw.","default":"all","title":"Labels"},"description":"Which feature labels to draw."},{"name":"hole_ids","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Comma-separated hole IDs to label; other holes are drawn without a label. Useful to confirm which holes a request refers to.","title":"Hole Ids"},"description":"Comma-separated hole IDs to label; other holes are drawn without a label. Useful to confirm which holes a request refers to."}],"responses":{"200":{"description":"The rendered image.","content":{"image/png":{},"image/svg+xml":{}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"403":{"description":"The credentials do not permit this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"404":{"description":"The resource does not exist or is not visible to the caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"422":{"description":"Validation failed; see `error.param` and `error.details`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"429":{"description":"Rate limit exceeded; retry after the `Retry-After` header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"500":{"description":"Unexpected failure; safe to retry with the same Idempotency-Key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}}}}},"/v1/dfm/{dfm_id}/parts/{part_id}/image":{"get":{"tags":["manufacturing-v1"],"summary":"Get Dfm Part Image","description":"Render a part with the report's configured operations marked.\n\nTaps, studs, nuts, and countersinks are drawn on the face they are\napplied from; the legend lists each one with its `side`. Once production\nfiles are ready the corrected geometry is rendered instead of the upload.","operationId":"dfm.image","security":[{"BearerAuth":[]}],"parameters":[{"name":"dfm_id","in":"path","required":true,"schema":{"type":"string","title":"Dfm Id"}},{"name":"part_id","in":"path","required":true,"schema":{"type":"string","title":"Part Id"}},{"name":"view","in":"query","required":false,"schema":{"enum":["iso","top","bottom","front","back","left","right","flat"],"type":"string","description":"`iso` is a three-quarter view; `top` looks down the design's Z axis and `bottom` up it; `front`/`back`/`left`/`right` are the side elevations; `flat` renders the flat pattern. A hole is drawn solid when the face an operation applies from points at the camera, and hollow (and listed as hidden) when it points away.","default":"iso","title":"View"},"description":"`iso` is a three-quarter view; `top` looks down the design's Z axis and `bottom` up it; `front`/`back`/`left`/`right` are the side elevations; `flat` renders the flat pattern. A hole is drawn solid when the face an operation applies from points at the camera, and hollow (and listed as hidden) when it points away."},{"name":"format","in":"query","required":false,"schema":{"enum":["png","svg"],"type":"string","description":"`png` (default) or `svg`.","default":"png","title":"Format"},"description":"`png` (default) or `svg`."},{"name":"width","in":"query","required":false,"schema":{"type":"integer","maximum":4000,"minimum":320,"description":"Image width in pixels.","default":1200,"title":"Width"},"description":"Image width in pixels."},{"name":"labels","in":"query","required":false,"schema":{"enum":["all","holes","bends","none"],"type":"string","description":"Which feature labels to draw.","default":"all","title":"Labels"},"description":"Which feature labels to draw."},{"name":"hole_ids","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Comma-separated hole IDs to label; other holes are drawn without a label. Useful to confirm which holes a request refers to.","title":"Hole Ids"},"description":"Comma-separated hole IDs to label; other holes are drawn without a label. Useful to confirm which holes a request refers to."}],"responses":{"200":{"description":"The rendered image.","content":{"image/png":{},"image/svg+xml":{}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"403":{"description":"The credentials do not permit this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"404":{"description":"The resource does not exist or is not visible to the caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"422":{"description":"Validation failed; see `error.param` and `error.details`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"429":{"description":"Rate limit exceeded; retry after the `Retry-After` header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"500":{"description":"Unexpected failure; safe to retry with the same Idempotency-Key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}}}}},"/v1/review-links":{"post":{"tags":["manufacturing-v1"],"summary":"Create Review Link","description":"Mint a website link for one design and a starting configuration.\n\nGive `review_url` to a person. They see the design in the 3D configurator\nwith the configuration applied, can change it, and save; read the saved\nconfiguration back with `GET /v1/review-links/{id}`. Every design also\ncarries a default link as `review_url`; DFM reports carry one for their\nexact configuration.","operationId":"review_links.create","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ReviewLinkCreateRequest"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ReviewLink"}}}},"400":{"description":"Malformed request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"403":{"description":"The credentials do not permit this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"404":{"description":"The resource does not exist or is not visible to the caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"409":{"description":"The resource is not ready, or Idempotency-Key was reused with a different request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"422":{"description":"Validation failed; see `error.param` and `error.details`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"429":{"description":"Rate limit exceeded; retry after the `Retry-After` header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"500":{"description":"Unexpected failure; safe to retry with the same Idempotency-Key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"503":{"description":"A dependency is temporarily unavailable; retry later.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}}},"security":[{"BearerAuth":[]}]}},"/v1/review-links/{link_id}":{"get":{"tags":["manufacturing-v1"],"summary":"Get Review Link Resource","description":"Read a link, including the configuration a person last saved.","operationId":"review_links.get","security":[{"BearerAuth":[]}],"parameters":[{"name":"link_id","in":"path","required":true,"schema":{"type":"string","title":"Link Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ReviewLink"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"403":{"description":"The credentials do not permit this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"404":{"description":"The resource does not exist or is not visible to the caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"422":{"description":"Validation failed; see `error.param` and `error.details`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"429":{"description":"Rate limit exceeded; retry after the `Retry-After` header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"500":{"description":"Unexpected failure; safe to retry with the same Idempotency-Key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}}}}},"/v1/review-pages/{access_token}":{"get":{"tags":["manufacturing-v1"],"summary":"Get Review Page","description":"Everything the website needs to open a review link. The unguessable\ntoken embedded in `review_url` is the credential.","operationId":"review_pages.get","parameters":[{"name":"access_token","in":"path","required":true,"schema":{"type":"string","title":"Access Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ReviewPage"}}}},"404":{"description":"The resource does not exist or is not visible to the caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"410":{"description":"The link has expired.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"422":{"description":"Validation failed; see `error.param` and `error.details`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"429":{"description":"Rate limit exceeded; retry after the `Retry-After` header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"500":{"description":"Unexpected failure; safe to retry with the same Idempotency-Key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}}},"security":[]}},"/v1/review-pages/{access_token}/configuration":{"put":{"tags":["manufacturing-v1"],"summary":"Save Review Page Configuration","description":"Save what the person chose on the website back to the link.","operationId":"review_pages.save","parameters":[{"name":"access_token","in":"path","required":true,"schema":{"type":"string","title":"Access Token"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ReviewPageConfigurationUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ReviewPage"}}}},"404":{"description":"The resource does not exist or is not visible to the caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"410":{"description":"The link has expired.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"422":{"description":"Validation failed; see `error.param` and `error.details`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"429":{"description":"Rate limit exceeded; retry after the `Retry-After` header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"500":{"description":"Unexpected failure; safe to retry with the same Idempotency-Key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}}},"security":[]}},"/v1/review-pages/{access_token}/model":{"get":{"tags":["manufacturing-v1"],"summary":"Get Review Page Model","operationId":"review_pages.model","parameters":[{"name":"access_token","in":"path","required":true,"schema":{"type":"string","title":"Access Token"}}],"responses":{"307":{"description":"Successful Response"},"404":{"description":"The resource does not exist or is not visible to the caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"410":{"description":"The link has expired.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"422":{"description":"Validation failed; see `error.param` and `error.details`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"429":{"description":"Rate limit exceeded; retry after the `Retry-After` header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"500":{"description":"Unexpected failure; safe to retry with the same Idempotency-Key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}}},"security":[]}},"/v1/review-pages/{access_token}/parts/{part_id}/model":{"get":{"tags":["manufacturing-v1"],"summary":"Get Review Page Part Model","operationId":"review_pages.part_model","parameters":[{"name":"access_token","in":"path","required":true,"schema":{"type":"string","title":"Access Token"}},{"name":"part_id","in":"path","required":true,"schema":{"type":"string","title":"Part Id"}},{"name":"view","in":"query","required":false,"schema":{"enum":["formed","flat"],"type":"string","default":"formed","title":"View"}}],"responses":{"307":{"description":"Successful Response"},"404":{"description":"The resource does not exist or is not visible to the caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"410":{"description":"The link has expired.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"422":{"description":"Validation failed; see `error.param` and `error.details`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"429":{"description":"Rate limit exceeded; retry after the `Retry-After` header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"500":{"description":"Unexpected failure; safe to retry with the same Idempotency-Key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}}},"security":[]}},"/v1/review-pages/{access_token}/parts/{part_id}/production-file":{"get":{"tags":["manufacturing-v1"],"summary":"Get Review Page Part Production File","description":"Prepared production file for one part of a DFM report run for this\npage's design, so the person reviewing can see the part as it will be\nmade without the integration's credentials.","operationId":"review_pages.part_production_file","parameters":[{"name":"access_token","in":"path","required":true,"schema":{"type":"string","title":"Access Token"}},{"name":"part_id","in":"path","required":true,"schema":{"type":"string","title":"Part Id"}},{"name":"dfm_id","in":"query","required":true,"schema":{"type":"string","title":"Dfm Id"}},{"name":"kind","in":"query","required":false,"schema":{"enum":["production_step","production_model","production_flat_step","production_flat_model","production_dxf","production_bend_lines_dxf"],"type":"string","default":"production_model","title":"Kind"}}],"responses":{"307":{"description":"Successful Response"},"404":{"description":"The resource does not exist or is not visible to the caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"410":{"description":"The link has expired.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"422":{"description":"Validation failed; see `error.param` and `error.details`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"429":{"description":"Rate limit exceeded; retry after the `Retry-After` header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"500":{"description":"Unexpected failure; safe to retry with the same Idempotency-Key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}}},"security":[]}},"/v1/review-pages/{access_token}/image":{"get":{"tags":["manufacturing-v1"],"summary":"Get Review Page Image","operationId":"review_pages.image","parameters":[{"name":"access_token","in":"path","required":true,"schema":{"type":"string","title":"Access Token"}},{"name":"view","in":"query","required":false,"schema":{"enum":["iso","top","bottom","front","back","left","right","flat"],"type":"string","description":"`iso` is a three-quarter view; `top` looks down the design's Z axis and `bottom` up it; `front`/`back`/`left`/`right` are the side elevations; `flat` renders the flat pattern. A hole is drawn solid when the face an operation applies from points at the camera, and hollow (and listed as hidden) when it points away.","default":"iso","title":"View"},"description":"`iso` is a three-quarter view; `top` looks down the design's Z axis and `bottom` up it; `front`/`back`/`left`/`right` are the side elevations; `flat` renders the flat pattern. A hole is drawn solid when the face an operation applies from points at the camera, and hollow (and listed as hidden) when it points away."},{"name":"format","in":"query","required":false,"schema":{"enum":["png","svg"],"type":"string","description":"`png` (default) or `svg`.","default":"png","title":"Format"},"description":"`png` (default) or `svg`."},{"name":"width","in":"query","required":false,"schema":{"type":"integer","maximum":4000,"minimum":320,"description":"Image width in pixels.","default":1200,"title":"Width"},"description":"Image width in pixels."}],"responses":{"200":{"description":"The rendered image.","content":{"image/png":{},"image/svg+xml":{}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"403":{"description":"The credentials do not permit this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"404":{"description":"The resource does not exist or is not visible to the caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"422":{"description":"Validation failed; see `error.param` and `error.details`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"429":{"description":"Rate limit exceeded; retry after the `Retry-After` header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"500":{"description":"Unexpected failure; safe to retry with the same Idempotency-Key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}}},"security":[]}},"/v1/review-pages/{access_token}/parts/{part_id}/image":{"get":{"tags":["manufacturing-v1"],"summary":"Get Review Page Part Image","operationId":"review_pages.part_image","parameters":[{"name":"access_token","in":"path","required":true,"schema":{"type":"string","title":"Access Token"}},{"name":"part_id","in":"path","required":true,"schema":{"type":"string","title":"Part Id"}},{"name":"view","in":"query","required":false,"schema":{"enum":["iso","top","bottom","front","back","left","right","flat"],"type":"string","description":"`iso` is a three-quarter view; `top` looks down the design's Z axis and `bottom` up it; `front`/`back`/`left`/`right` are the side elevations; `flat` renders the flat pattern. A hole is drawn solid when the face an operation applies from points at the camera, and hollow (and listed as hidden) when it points away.","default":"iso","title":"View"},"description":"`iso` is a three-quarter view; `top` looks down the design's Z axis and `bottom` up it; `front`/`back`/`left`/`right` are the side elevations; `flat` renders the flat pattern. A hole is drawn solid when the face an operation applies from points at the camera, and hollow (and listed as hidden) when it points away."},{"name":"format","in":"query","required":false,"schema":{"enum":["png","svg"],"type":"string","description":"`png` (default) or `svg`.","default":"png","title":"Format"},"description":"`png` (default) or `svg`."},{"name":"width","in":"query","required":false,"schema":{"type":"integer","maximum":4000,"minimum":320,"description":"Image width in pixels.","default":1200,"title":"Width"},"description":"Image width in pixels."},{"name":"labels","in":"query","required":false,"schema":{"enum":["all","holes","bends","none"],"type":"string","description":"Which feature labels to draw.","default":"all","title":"Labels"},"description":"Which feature labels to draw."}],"responses":{"200":{"description":"The rendered image.","content":{"image/png":{},"image/svg+xml":{}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"403":{"description":"The credentials do not permit this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"404":{"description":"The resource does not exist or is not visible to the caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"422":{"description":"Validation failed; see `error.param` and `error.details`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"429":{"description":"Rate limit exceeded; retry after the `Retry-After` header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"500":{"description":"Unexpected failure; safe to retry with the same Idempotency-Key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}}},"security":[]}},"/v1/review-pages/{access_token}/dfm/{dfm_id}":{"get":{"tags":["manufacturing-v1"],"summary":"Get Review Page Dfm","description":"Read preparation progress without re-evaluating the configuration.","operationId":"review_pages.dfm_get","parameters":[{"name":"access_token","in":"path","required":true,"schema":{"type":"string","title":"Access Token"}},{"name":"dfm_id","in":"path","required":true,"schema":{"type":"string","title":"Dfm Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1DFMReport"}}}},"404":{"description":"The resource does not exist or is not visible to the caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"410":{"description":"The link has expired.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"422":{"description":"Validation failed; see `error.param` and `error.details`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"429":{"description":"Rate limit exceeded; retry after the `Retry-After` header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"500":{"description":"Unexpected failure; safe to retry with the same Idempotency-Key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}}},"security":[]}},"/v1/review-pages/{access_token}/dfm":{"post":{"tags":["manufacturing-v1"],"summary":"Review Page Dfm","description":"Run DFM for the page's design with a configuration. The report belongs\nto the link's owner and never generates production files.","operationId":"review_pages.dfm","parameters":[{"name":"access_token","in":"path","required":true,"schema":{"type":"string","title":"Access Token"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ReviewPageConfigurationUpdate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1DFMReport"}}}},"404":{"description":"The resource does not exist or is not visible to the caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"410":{"description":"The link has expired.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"422":{"description":"Validation failed; see `error.param` and `error.details`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"429":{"description":"Rate limit exceeded; retry after the `Retry-After` header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"500":{"description":"Unexpected failure; safe to retry with the same Idempotency-Key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"503":{"description":"A dependency is temporarily unavailable; retry later.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}}},"security":[]}},"/v1/review-pages/{access_token}/quotes":{"post":{"tags":["manufacturing-v1"],"summary":"Review Page Quote","description":"Price the page's design with a configuration and quantity. The quote\nbelongs to the link's owner, exactly as if the owner had requested it.","operationId":"review_pages.quote","parameters":[{"name":"access_token","in":"path","required":true,"schema":{"type":"string","title":"Access Token"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ReviewPageQuoteRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Quote"}}}},"404":{"description":"The resource does not exist or is not visible to the caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"410":{"description":"The link has expired.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"422":{"description":"Validation failed; see `error.param` and `error.details`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"429":{"description":"Rate limit exceeded; retry after the `Retry-After` header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"500":{"description":"Unexpected failure; safe to retry with the same Idempotency-Key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"503":{"description":"A dependency is temporarily unavailable; retry later.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}}},"security":[]}},"/v1/api-keys":{"get":{"tags":["manufacturing-v1"],"summary":"List Keys","description":"Every key on the account, including revoked ones. Secrets are never shown.","operationId":"api_keys.list","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1List_V1ApiKey_"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"403":{"description":"The credentials do not permit this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"404":{"description":"The resource does not exist or is not visible to the caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"422":{"description":"Validation failed; see `error.param` and `error.details`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"429":{"description":"Rate limit exceeded; retry after the `Retry-After` header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"500":{"description":"Unexpected failure; safe to retry with the same Idempotency-Key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}}},"security":[{"BearerAuth":[]}]},"post":{"tags":["manufacturing-v1"],"summary":"Create Api Key","description":"Mint a key. The full `key` is returned once, here; only its hash is\nstored. Leave `scopes` empty for a key that can do everything.","operationId":"api_keys.create","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ApiKeyCreateRequest"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ApiKey"}}}},"400":{"description":"Malformed request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"403":{"description":"The credentials do not permit this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"404":{"description":"The resource does not exist or is not visible to the caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"409":{"description":"The resource is not ready, or Idempotency-Key was reused with a different request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"422":{"description":"Validation failed; see `error.param` and `error.details`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"429":{"description":"Rate limit exceeded; retry after the `Retry-After` header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"500":{"description":"Unexpected failure; safe to retry with the same Idempotency-Key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"503":{"description":"A dependency is temporarily unavailable; retry later.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}}},"security":[{"BearerAuth":[]}]}},"/v1/api-keys/{key_id}":{"delete":{"tags":["manufacturing-v1"],"summary":"Revoke Key","description":"Revoke a key immediately. Requests with it fail with 401 from then on.","operationId":"api_keys.revoke","security":[{"BearerAuth":[]}],"parameters":[{"name":"key_id","in":"path","required":true,"schema":{"type":"string","title":"Key Id"}}],"responses":{"204":{"description":"Key revoked."},"400":{"description":"Malformed request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"403":{"description":"The credentials do not permit this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"404":{"description":"The resource does not exist or is not visible to the caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"409":{"description":"The resource is not ready, or Idempotency-Key was reused with a different request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"422":{"description":"Validation failed; see `error.param` and `error.details`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"429":{"description":"Rate limit exceeded; retry after the `Retry-After` header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"500":{"description":"Unexpected failure; safe to retry with the same Idempotency-Key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"503":{"description":"A dependency is temporarily unavailable; retry later.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}}}}},"/v1/account":{"get":{"tags":["manufacturing-v1"],"summary":"Get Account","description":"The caller's identity, key scopes, and whether a card is saved for\nheadless orders (`POST /v1/carts/{id}/pay`).","operationId":"account.get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Account"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"403":{"description":"The credentials do not permit this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"404":{"description":"The resource does not exist or is not visible to the caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"422":{"description":"Validation failed; see `error.param` and `error.details`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"429":{"description":"Rate limit exceeded; retry after the `Retry-After` header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"500":{"description":"Unexpected failure; safe to retry with the same Idempotency-Key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}}},"security":[{"BearerAuth":[]}]}},"/v1/account/payment-method/setup-intent":{"post":{"tags":["manufacturing-v1"],"summary":"Create Payment Method Setup Intent","description":"Start saving a card (website account page). Returns a Stripe\nSetupIntent client secret for Stripe.js; confirm it with\n`POST /v1/account/payment-method/confirm`.","operationId":"account.payment_method.setup_intent","responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1SetupIntent"}}}},"400":{"description":"Malformed request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"403":{"description":"The credentials do not permit this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"404":{"description":"The resource does not exist or is not visible to the caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"409":{"description":"The resource is not ready, or Idempotency-Key was reused with a different request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"422":{"description":"Validation failed; see `error.param` and `error.details`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"429":{"description":"Rate limit exceeded; retry after the `Retry-After` header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"500":{"description":"Unexpected failure; safe to retry with the same Idempotency-Key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"503":{"description":"A dependency is temporarily unavailable; retry later.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}}},"security":[{"BearerAuth":[]}]}},"/v1/account/payment-method/confirm":{"post":{"tags":["manufacturing-v1"],"summary":"Confirm Payment Method","description":"Store the card once Stripe.js confirmed the SetupIntent.","operationId":"account.payment_method.confirm","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1SetupIntentConfirmRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1PaymentMethod"}}}},"400":{"description":"Malformed request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"403":{"description":"The credentials do not permit this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"404":{"description":"The resource does not exist or is not visible to the caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"409":{"description":"The resource is not ready, or Idempotency-Key was reused with a different request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"422":{"description":"Validation failed; see `error.param` and `error.details`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"429":{"description":"Rate limit exceeded; retry after the `Retry-After` header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"500":{"description":"Unexpected failure; safe to retry with the same Idempotency-Key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"503":{"description":"A dependency is temporarily unavailable; retry later.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}}},"security":[{"BearerAuth":[]}]}},"/v1/account/payment-method":{"delete":{"tags":["manufacturing-v1"],"summary":"Remove Payment Method","operationId":"account.payment_method.delete","responses":{"204":{"description":"Card removed."},"400":{"description":"Malformed request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"403":{"description":"The credentials do not permit this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"404":{"description":"The resource does not exist or is not visible to the caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"409":{"description":"The resource is not ready, or Idempotency-Key was reused with a different request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"422":{"description":"Validation failed; see `error.param` and `error.details`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"429":{"description":"Rate limit exceeded; retry after the `Retry-After` header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"500":{"description":"Unexpected failure; safe to retry with the same Idempotency-Key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"503":{"description":"A dependency is temporarily unavailable; retry later.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}}},"security":[{"BearerAuth":[]}]}},"/v1/oauth/register":{"post":{"tags":["agent-auth"],"summary":"Register","description":"Register a public OAuth client without an API key. Names are self-reported.\n\nJSON: client_name, redirect_uris, grant_types, token_endpoint_auth_method=none.","operationId":"oauth.register","requestBody":{"content":{"application/json":{"schema":{"properties":{"client_name":{"type":"string","maxLength":100},"redirect_uris":{"items":{"type":"string"},"type":"array","description":"Required for authorization_code. Exact HTTPS or HTTP loopback callbacks."},"grant_types":{"items":{"type":"string","enum":["authorization_code","refresh_token","urn:ietf:params:oauth:grant-type:device_code"]},"type":"array","default":["authorization_code","refresh_token"]},"token_endpoint_auth_method":{"type":"string","enum":["none"],"default":"none"}},"type":"object","required":["client_name"]}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[]}},"/v1/oauth/authorize":{"get":{"tags":["agent-auth"],"summary":"Authorize","description":"Start authorization_code with S256 PKCE; redirects to RMFG sign-in/consent.","operationId":"oauth.authorize","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[],"parameters":[{"in":"query","name":"client_id","required":true,"schema":{"type":"string"},"description":"Registered client ID."},{"in":"query","name":"response_type","required":true,"schema":{"type":"string"},"description":"Must be code."},{"in":"query","name":"redirect_uri","required":true,"schema":{"type":"string"},"description":"Exact registered callback."},{"in":"query","name":"state","required":true,"schema":{"type":"string"},"description":"Random value; verify on callback."},{"in":"query","name":"code_challenge","required":true,"schema":{"type":"string"},"description":"Unpadded base64url(SHA256(code_verifier))."},{"in":"query","name":"code_challenge_method","required":true,"schema":{"type":"string"},"description":"Must be S256."},{"in":"query","name":"scope","required":false,"schema":{"type":"string"},"description":"Space-separated permissions; defaults to designs dfm quotes carts orders."},{"in":"query","name":"resource","required":false,"schema":{"type":"string"},"description":"If supplied, the API origin."}]}},"/v1/oauth/device/code":{"post":{"tags":["agent-auth"],"summary":"Device Authorization","description":"Get a browser approval link. Form: client_id=rmfg-agent and optional scope.\n\nPoll the token endpoint at the returned interval using the device_code grant.","operationId":"oauth.device_authorization","requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"properties":{"client_id":{"type":"string","example":"rmfg-agent"},"scope":{"type":"string","default":"designs dfm quotes carts orders"},"resource":{"type":"string","description":"Optional; must equal the API origin."}},"type":"object","required":["client_id"]}}},"required":true},"responses":{"200":{"description":"Show the approval link and code; poll the token endpoint at interval seconds.","content":{"application/json":{"schema":{"properties":{"device_code":{"type":"string"},"user_code":{"type":"string"},"verification_uri":{"type":"string"},"verification_uri_complete":{"type":"string"},"expires_in":{"type":"integer","example":600},"interval":{"type":"integer","example":5}},"type":"object"}}}}},"security":[]}},"/v1/oauth/token":{"post":{"tags":["agent-auth"],"summary":"Token","description":"Exchange authorization_code + code_verifier, device_code, or refresh_token.\n\nSend application/x-www-form-urlencoded. A refresh token is rotated on every\nuse; serialize refreshes and save the new token. Reuse revokes the connection.\nRefresh may request the same or fewer approved scopes. A narrower access\ntoken does not narrow the connection or its replacement refresh token.","operationId":"oauth.token","requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"properties":{"client_id":{"type":"string"},"grant_type":{"type":"string","enum":["authorization_code","refresh_token","urn:ietf:params:oauth:grant-type:device_code"]},"code":{"type":"string","description":"Required for authorization_code."},"redirect_uri":{"type":"string","description":"Exact registered callback; required for authorization_code."},"code_verifier":{"type":"string","maxLength":128,"minLength":43,"description":"Required for authorization_code."},"device_code":{"type":"string","description":"Required for device authorization."},"refresh_token":{"type":"string","description":"Required for refresh_token. Single use; persist its replacement."},"scope":{"type":"string","description":"Optional for refresh_token: the same or fewer approved permissions. Omit to retain the original grant."},"resource":{"type":"string","description":"Optional; must equal the API origin."}},"type":"object","required":["client_id","grant_type"]}}},"required":true},"responses":{"200":{"description":"API-only access and rotating refresh token.","content":{"application/json":{"schema":{"properties":{"access_token":{"type":"string"},"refresh_token":{"type":"string"},"token_type":{"type":"string","enum":["Bearer"]},"expires_in":{"type":"integer","maximum":900.0},"scope":{"type":"string","description":"Granted permissions; may omit requested payments."}},"type":"object","required":["access_token","refresh_token","token_type","expires_in","scope"]}}}}},"security":[]}},"/v1/oauth/revoke":{"post":{"tags":["agent-auth"],"summary":"Revoke Token","description":"Revoke a connection using its access or refresh token. Unknown tokens succeed.","operationId":"oauth.revoke","requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"properties":{"client_id":{"type":"string"},"token":{"type":"string"}},"type":"object","required":["client_id","token"]}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[]}},"/v1/carts":{"post":{"tags":["manufacturing-v1"],"summary":"Create Cart","description":"Create a priced cart and a website link a person can pay from.\n\nThe cart is quoted immediately with the same rules as `POST /v1/quotes`.\nChoose a `shipping_option_id` from `quote.fulfillment.shipping_options`\n(now or with `PATCH`) to complete `totals`.","operationId":"carts.create","security":[{"BearerAuth":[]}],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Idempotency-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1CartCreateRequest"}}}},"responses":{"201":{"description":"Cart created.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Cart"}}}},"400":{"description":"Malformed request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"403":{"description":"The credentials do not permit this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"404":{"description":"The resource does not exist or is not visible to the caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"409":{"description":"The resource is not ready, or Idempotency-Key was reused with a different request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"422":{"description":"Validation failed; see `error.param` and `error.details`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"429":{"description":"Rate limit exceeded; retry after the `Retry-After` header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"500":{"description":"Unexpected failure; safe to retry with the same Idempotency-Key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"503":{"description":"A dependency is temporarily unavailable; retry later.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}}}}},"/v1/carts/{cart_id}":{"get":{"tags":["manufacturing-v1"],"summary":"Get Cart Resource","operationId":"carts.get","security":[{"BearerAuth":[]}],"parameters":[{"name":"cart_id","in":"path","required":true,"schema":{"type":"string","title":"Cart Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Cart"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"403":{"description":"The credentials do not permit this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"404":{"description":"The resource does not exist or is not visible to the caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"422":{"description":"Validation failed; see `error.param` and `error.details`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"429":{"description":"Rate limit exceeded; retry after the `Retry-After` header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"500":{"description":"Unexpected failure; safe to retry with the same Idempotency-Key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}}}},"patch":{"tags":["manufacturing-v1"],"summary":"Update Cart Resource","description":"Change items, destination, or shipping option; the cart re-quotes.","operationId":"carts.update","security":[{"BearerAuth":[]}],"parameters":[{"name":"cart_id","in":"path","required":true,"schema":{"type":"string","title":"Cart Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1CartUpdateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Cart"}}}},"400":{"description":"Malformed request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"403":{"description":"The credentials do not permit this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"404":{"description":"The resource does not exist or is not visible to the caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"409":{"description":"The resource is not ready, or Idempotency-Key was reused with a different request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"422":{"description":"Validation failed; see `error.param` and `error.details`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"429":{"description":"Rate limit exceeded; retry after the `Retry-After` header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"500":{"description":"Unexpected failure; safe to retry with the same Idempotency-Key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"503":{"description":"A dependency is temporarily unavailable; retry later.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}}}}},"/v1/cart-links/{access_token}":{"get":{"tags":["manufacturing-v1"],"summary":"Get Cart Link","description":"Open a cart from its link token. No API credentials are required: the\ntoken in `cart_url` is the credential, exactly like a shared checkout link.","operationId":"cart_links.get","parameters":[{"name":"access_token","in":"path","required":true,"schema":{"type":"string","title":"Access Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Cart"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"403":{"description":"The credentials do not permit this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"404":{"description":"The resource does not exist or is not visible to the caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"422":{"description":"Validation failed; see `error.param` and `error.details`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"429":{"description":"Rate limit exceeded; retry after the `Retry-After` header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"500":{"description":"Unexpected failure; safe to retry with the same Idempotency-Key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}}},"security":[]}},"/v1/cart-links/{access_token}/quote":{"post":{"tags":["manufacturing-v1"],"summary":"Quote Cart Link","description":"Quote a destination using only the link's stored designs and configuration.\n\nThe link is the credential. This does not change the cart or start payment.","operationId":"cart_links.quote","parameters":[{"name":"access_token","in":"path","required":true,"schema":{"type":"string","title":"Access Token"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1CartLinkQuoteRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Quote"}}}},"400":{"description":"Malformed request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"403":{"description":"The credentials do not permit this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"404":{"description":"The resource does not exist or is not visible to the caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"409":{"description":"The resource is not ready, or Idempotency-Key was reused with a different request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"422":{"description":"Validation failed; see `error.param` and `error.details`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"429":{"description":"Rate limit exceeded; retry after the `Retry-After` header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"500":{"description":"Unexpected failure; safe to retry with the same Idempotency-Key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"503":{"description":"A dependency is temporarily unavailable; retry later.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}}},"security":[]}},"/v1/cart-links/{access_token}/fulfillment":{"patch":{"tags":["manufacturing-v1"],"summary":"Update Cart Link Fulfillment","description":"Save the link holder's delivery choices before website checkout.\n\nOnly destination and shipping option are accepted. Existing payment/edit\nguards, revision checks, authoritative repricing and taxes still apply.","operationId":"cart_links.update_fulfillment","parameters":[{"name":"access_token","in":"path","required":true,"schema":{"type":"string","title":"Access Token"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1CartLinkFulfillmentRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Cart"}}}},"400":{"description":"Malformed request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"403":{"description":"The credentials do not permit this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"404":{"description":"The resource does not exist or is not visible to the caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"409":{"description":"The resource is not ready, or Idempotency-Key was reused with a different request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"422":{"description":"Validation failed; see `error.param` and `error.details`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"429":{"description":"Rate limit exceeded; retry after the `Retry-After` header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"500":{"description":"Unexpected failure; safe to retry with the same Idempotency-Key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"503":{"description":"A dependency is temporarily unavailable; retry later.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}}},"security":[]}},"/v1/cart-links/{access_token}/designs/{design_id}/model":{"get":{"tags":["manufacturing-v1"],"summary":"Get Cart Design Model","operationId":"cart_links.design_model","parameters":[{"name":"access_token","in":"path","required":true,"schema":{"type":"string","title":"Access Token"}},{"name":"design_id","in":"path","required":true,"schema":{"type":"string","title":"Design Id"}}],"responses":{"307":{"description":"Successful Response"},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"403":{"description":"The credentials do not permit this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"404":{"description":"The resource does not exist or is not visible to the caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"422":{"description":"Validation failed; see `error.param` and `error.details`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"429":{"description":"Rate limit exceeded; retry after the `Retry-After` header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"500":{"description":"Unexpected failure; safe to retry with the same Idempotency-Key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}}},"security":[]}},"/v1/cart-links/{access_token}/designs/{design_id}/parts/{part_id}/model":{"get":{"tags":["manufacturing-v1"],"summary":"Get Cart Part Model","operationId":"cart_links.part_model","parameters":[{"name":"access_token","in":"path","required":true,"schema":{"type":"string","title":"Access Token"}},{"name":"design_id","in":"path","required":true,"schema":{"type":"string","title":"Design Id"}},{"name":"part_id","in":"path","required":true,"schema":{"type":"string","title":"Part Id"}},{"name":"view","in":"query","required":false,"schema":{"enum":["formed","flat"],"type":"string","default":"formed","title":"View"}}],"responses":{"307":{"description":"Successful Response"},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"403":{"description":"The credentials do not permit this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"404":{"description":"The resource does not exist or is not visible to the caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"422":{"description":"Validation failed; see `error.param` and `error.details`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"429":{"description":"Rate limit exceeded; retry after the `Retry-After` header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"500":{"description":"Unexpected failure; safe to retry with the same Idempotency-Key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}}},"security":[]}},"/v1/carts/{cart_id}/pay":{"post":{"tags":["manufacturing-v1"],"summary":"Pay Cart","description":"Charge the account's saved card for this cart and create the order,\nwith no person in the loop.\n\nPreconditions: the cart is `open`, its quote is `ready`, it has a\n`ship_to` and a `shipping_option_id`, and the account has a card on file\n(`GET /v1/account`, saved on the website's account page) or the request\nnames a Stripe PaymentMethod. The charge is the cart's\n`totals.amount_total_cents`. On success the cart becomes `checked_out`\nand the response carries `order_id`. An uncertain result returns 202\nwith status `processing`; a durable worker retries order creation with the\nsame payment. Timeouts never trigger automatic refunds. Retrying a paid\ncart returns the existing payment.","operationId":"carts.pay","security":[{"BearerAuth":[]}],"parameters":[{"name":"cart_id","in":"path","required":true,"schema":{"type":"string","title":"Cart Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1CartPayRequest"}}}},"responses":{"201":{"description":"Charged; the order exists.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1CartPayment"}}}},"200":{"description":"Already paid; the existing payment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1CartPayment"}}}},"202":{"description":"Payment reconciliation or order creation is pending.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1CartPayment"}}}},"402":{"description":"The card was declined.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"400":{"description":"Malformed request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"403":{"description":"The credentials do not permit this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"404":{"description":"The resource does not exist or is not visible to the caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"409":{"description":"The resource is not ready, or Idempotency-Key was reused with a different request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"422":{"description":"Validation failed; see `error.param` and `error.details`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"429":{"description":"Rate limit exceeded; retry after the `Retry-After` header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"500":{"description":"Unexpected failure; safe to retry with the same Idempotency-Key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"503":{"description":"A dependency is temporarily unavailable; retry later.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}}}}},"/v1/design-uploads":{"post":{"tags":["Design uploads"],"summary":"Prepare Upload","operationId":"design_uploads.create","security":[{"BearerAuth":[]}],"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":255,"title":"Idempotency-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1DesignUploadRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"400":{"description":"Malformed request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"403":{"description":"The credentials do not permit this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"404":{"description":"The resource does not exist or is not visible to the caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"409":{"description":"The resource is not ready, or Idempotency-Key was reused with a different request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"413":{"description":"The uploaded file exceeds the size limit.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"415":{"description":"Unsupported Content-Type.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"422":{"description":"Validation failed; see `error.param` and `error.details`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"429":{"description":"Rate limit exceeded; retry after the `Retry-After` header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"500":{"description":"Unexpected failure; safe to retry with the same Idempotency-Key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"503":{"description":"A dependency is temporarily unavailable; retry later.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}}}}},"/v1/design-uploads/{upload_id}":{"get":{"tags":["Design uploads"],"summary":"Upload Details","description":"Read upload metadata using only the short-lived X-RMFG-Upload-Token capability.","operationId":"design_uploads.inspect","parameters":[{"name":"upload_id","in":"path","required":true,"schema":{"type":"string","title":"Upload Id"}},{"name":"X-RMFG-Upload-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Rmfg-Upload-Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"403":{"description":"The credentials do not permit this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"404":{"description":"The resource does not exist or is not visible to the caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"422":{"description":"Validation failed; see `error.param` and `error.details`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"429":{"description":"Rate limit exceeded; retry after the `Retry-After` header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"500":{"description":"Unexpected failure; safe to retry with the same Idempotency-Key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}}},"security":[]},"put":{"tags":["Design uploads"],"summary":"Upload File","description":"Upload raw STEP bytes with X-RMFG-Upload-Token; no OAuth token is needed.","operationId":"design_uploads.put","parameters":[{"name":"upload_id","in":"path","required":true,"schema":{"type":"string","title":"Upload Id"}},{"name":"X-RMFG-Upload-Token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Rmfg-Upload-Token"}}],"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"400":{"description":"Malformed request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"401":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"403":{"description":"The credentials do not permit this operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"404":{"description":"The resource does not exist or is not visible to the caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"409":{"description":"The resource is not ready, or Idempotency-Key was reused with a different request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"413":{"description":"The uploaded file exceeds the size limit.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"415":{"description":"Unsupported Content-Type.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"422":{"description":"Validation failed; see `error.param` and `error.details`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"429":{"description":"Rate limit exceeded; retry after the `Retry-After` header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"500":{"description":"Unexpected failure; safe to retry with the same Idempotency-Key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}},"503":{"description":"A dependency is temporarily unavailable; retry later.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1ErrorResponse"}}}}},"security":[],"requestBody":{"required":true,"content":{"application/octet-stream":{"schema":{"type":"string","format":"binary"}}}}}}},"components":{"schemas":{"V1Account":{"properties":{"object":{"type":"string","const":"account","title":"Object","default":"account"},"user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Id"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"auth_method":{"type":"string","enum":["api_key","oauth","session","anonymous_session","internal_service"],"title":"Auth Method","description":"`oauth` for agent connections, `api_key` for manual keys, `session` for a signed-in website user."},"scopes":{"items":{"type":"string"},"type":"array","title":"Scopes"},"payment_method":{"anyOf":[{"$ref":"#/components/schemas/V1PaymentMethod"},{"type":"null"}],"description":"Null until a card is saved on the website's account page."},"payment_method_setup_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Payment Method Setup Url"}},"type":"object","required":["auth_method"],"title":"V1Account"},"V1ApiKey":{"properties":{"id":{"type":"string","title":"Id"},"object":{"type":"string","const":"api_key","title":"Object","default":"api_key"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"prefix":{"type":"string","title":"Prefix","description":"First characters of the key, for display."},"scopes":{"items":{"type":"string","enum":["designs","dfm","quotes","carts","orders","webhooks"]},"type":"array","title":"Scopes"},"key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Key","description":"The full key; shown once when created and never stored."},"created_at":{"type":"string","format":"date-time","title":"Created At"},"last_used_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Used At"},"revoked_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Revoked At"}},"type":"object","required":["id","prefix","created_at"],"title":"V1ApiKey","description":"A public API key. `key` appears only in the create response."},"V1ApiKeyCreateRequest":{"properties":{"name":{"type":"string","maxLength":100,"minLength":1,"title":"Name","description":"A label for people."},"scopes":{"items":{"type":"string","enum":["designs","dfm","quotes","carts","orders","webhooks"]},"type":"array","title":"Scopes","description":"Restrict what the key may call. Empty means every scope. `designs` covers analyze, design reads, models, images, and review links; `dfm`, `quotes`, `carts`, `orders`, and `webhooks` cover those resources. Catalogs need no scope."}},"additionalProperties":false,"type":"object","required":["name"],"title":"V1ApiKeyCreateRequest"},"V1BackgaugeFlange":{"properties":{},"additionalProperties":true,"type":"object","title":"V1BackgaugeFlange","description":"Opaque backgauge reachability record produced by geometry analysis.\n\nTreat the contents as informational; the field set may change without an\nAPI version bump."},"V1Bend":{"properties":{"id":{"type":"integer","title":"Id"},"angle_degrees":{"type":"number","title":"Angle Degrees"},"radius_mm":{"type":"number","title":"Radius Mm"},"length_mm":{"type":"number","title":"Length Mm"},"location":{"anyOf":[{"$ref":"#/components/schemas/V1Point"},{"type":"null"}]},"direction":{"anyOf":[{"$ref":"#/components/schemas/V1Point"},{"type":"null"}]},"line_start":{"anyOf":[{"$ref":"#/components/schemas/V1Point"},{"type":"null"}]},"line_end":{"anyOf":[{"$ref":"#/components/schemas/V1Point"},{"type":"null"}]},"distortion_zone_sides":{"items":{"$ref":"#/components/schemas/V1BendDistortionZoneSide"},"type":"array","title":"Distortion Zone Sides"}},"type":"object","required":["id","angle_degrees","radius_mm","length_mm"],"title":"V1Bend"},"V1BendDistortionZoneSide":{"properties":{"source_hole_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Source Hole Id"},"edge_start":{"$ref":"#/components/schemas/V1Point"},"edge_end":{"$ref":"#/components/schemas/V1Point"},"outward_direction":{"$ref":"#/components/schemas/V1Point"}},"type":"object","required":["edge_start","edge_end","outward_direction"],"title":"V1BendDistortionZoneSide","description":"One sheet edge adjacent to a bend line where tooling contact distorts."},"V1BendGenerationProgress":{"properties":{"stage":{"type":"string","enum":["preparing_geometry","searching_setups","saving_preview"],"title":"Stage"},"started_at":{"type":"string","format":"date-time","title":"Started At"}},"type":"object","required":["stage","started_at"],"title":"V1BendGenerationProgress"},"V1BendPlanPreviewRequest":{"properties":{"include_preview":{"type":"boolean","title":"Include Preview","description":"Include self-contained 3D geometry and animation frames in preview; agents can omit it.","default":false}},"additionalProperties":false,"type":"object","title":"V1BendPlanPreviewRequest","description":"Request a Rust bend plan for the exact prepared DFM configuration."},"V1BendProgram":{"properties":{"material_id":{"type":"string","title":"Material Id"},"steps":{"items":{"$ref":"#/components/schemas/V1BendProgramStep"},"type":"array","title":"Steps"},"stations":{"items":{"$ref":"#/components/schemas/V1BendProgramStation"},"type":"array","title":"Stations"},"tools":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Tools","description":"Selected native catalog profiles: id, name, profileNumber, kind, height/width/radius in mm, angle in degrees, maximumLoad in kN/m."},"setup_count":{"type":"integer","title":"Setup Count"},"tooling_changes":{"type":"integer","title":"Tooling Changes"}},"type":"object","required":["material_id","steps","stations","tools","setup_count","tooling_changes"],"title":"V1BendProgram","description":"One resolved candidate. Steps are listed in execution order."},"V1BendProgramChecks":{"properties":{"status":{"type":"string","enum":["passed","failed","unavailable"],"title":"Status","description":"Overall sampled result. Inspect findings even when passed; this never means machine-ready."},"summary":{"type":"string","title":"Summary"},"findings":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Findings","description":"All tooling/process findings, with level, message and optional bendId."},"collisions":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Collisions","description":"Native sampled audit: status, hits (bendId/progress/mesh/obstacle), sample count, backgauge coverage, limitations and errors. Null means no collision audit ran."},"validation_scope":{"additionalProperties":true,"type":"object","title":"Validation Scope"},"inventory_confirmed":{"type":"boolean","title":"Inventory Confirmed"},"search":{"additionalProperties":true,"type":"object","title":"Search"}},"type":"object","required":["status","summary","findings","collisions","validation_scope","inventory_confirmed","search"],"title":"V1BendProgramChecks"},"V1BendProgramResponse":{"properties":{"object":{"type":"string","const":"bend_plan_preview","title":"Object","default":"bend_plan_preview"},"schema_version":{"type":"integer","const":2,"title":"Schema Version","default":2},"dfm_id":{"type":"string","title":"Dfm Id"},"part_id":{"type":"string","title":"Part Id"},"configuration_hash":{"type":"string","title":"Configuration Hash"},"engine":{"type":"string","title":"Engine"},"scene_revision":{"type":"string","title":"Scene Revision"},"source_step_sha256":{"type":"string","title":"Source Step Sha256"},"elapsed_ms":{"type":"number","title":"Elapsed Ms"},"machine_ready":{"type":"boolean","const":false,"title":"Machine Ready","default":false},"program":{"anyOf":[{"$ref":"#/components/schemas/V1BendProgram"},{"type":"null"}],"description":"Candidate setup and ordered steps; null when no program could be produced. Check checks.status before using it."},"checks":{"$ref":"#/components/schemas/V1BendProgramChecks"},"preview":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Preview","description":"Native render schema v1, or null if omitted: sceneAssets, ordered steps/frames, units and column-major matrices. Geometry and poses are embedded; no viewer URL is created."}},"type":"object","required":["dfm_id","part_id","configuration_hash","engine","scene_revision","source_step_sha256","elapsed_ms","program","checks","preview"],"title":"V1BendProgramResponse","description":"Resolved program, its checks, and optional self-contained 3D preview."},"V1BendProgramStation":{"properties":{"id":{"type":"string","title":"Id"},"setup_index":{"type":"integer","minimum":0.0,"title":"Setup Index","description":"Zero-based setup index."},"punch_id":{"type":"string","title":"Punch Id"},"die_id":{"type":"string","title":"Die Id"},"lower_adapter_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Lower Adapter Id"},"punch_segments_mm":{"items":{"type":"number"},"type":"array","title":"Punch Segments Mm"},"die_segments_mm":{"items":{"type":"number"},"type":"array","title":"Die Segments Mm"},"adapter_segments_mm":{"items":{"type":"number"},"type":"array","title":"Adapter Segments Mm"},"punch_segment_order_numbers":{"items":{"anyOf":[{"type":"string"},{"type":"null"}]},"type":"array","title":"Punch Segment Order Numbers","description":"Catalog order numbers for special end segments, aligned with punch_segments_mm."},"width_mm":{"type":"number","title":"Width Mm"},"center_mm":{"type":"number","title":"Center Mm"}},"type":"object","required":["id","setup_index","punch_id","die_id","punch_segments_mm","die_segments_mm","width_mm","center_mm"],"title":"V1BendProgramStation"},"V1BendProgramStep":{"properties":{"bend_id":{"type":"integer","title":"Bend Id"},"station_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Station Id","description":"Null when no tooling station could be resolved for this bend."},"reversed":{"type":"boolean","title":"Reversed"},"calibration_id":{"anyOf":[{"type":"integer"},{"type":"string"},{"type":"null"}],"title":"Calibration Id"},"estimated_force_kn":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Estimated Force Kn"},"springback":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Springback","description":"Versioned springback prediction and historical-match provenance. Null for older programs; not machine qualification."},"backgauges":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Backgauges","description":"Native gauge schema v1: fingers in fixed machine order with start/end X/R/Z in mm, retractStart/retractEnd normalized stroke progress, and placement contacts/stability. Null means no placement. A confirmed placement is not controller qualification."}},"type":"object","required":["bend_id","station_id","reversed","calibration_id","estimated_force_kn","backgauges"],"title":"V1BendProgramStep"},"V1CapabilityOption":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"available":{"type":"boolean","title":"Available","default":true},"unavailable_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Unavailable Reason"}},"type":"object","required":["id","name"],"title":"V1CapabilityOption"},"V1CardOnFilePayment":{"properties":{"type":{"type":"string","const":"card_on_file","title":"Type"}},"additionalProperties":false,"type":"object","required":["type"],"title":"V1CardOnFilePayment"},"V1Cart":{"properties":{"id":{"type":"string","title":"Id"},"revision":{"type":"integer","title":"Revision","default":0},"object":{"type":"string","const":"cart","title":"Object","default":"cart"},"status":{"type":"string","enum":["open","checked_out","expired"],"title":"Status"},"cart_url":{"type":"string","title":"Cart Url"},"items":{"items":{"$ref":"#/components/schemas/V1QuoteItemRequest"},"type":"array","title":"Items"},"ship_to":{"anyOf":[{"$ref":"#/components/schemas/V1ShipTo"},{"type":"null"}]},"shipping_option_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Shipping Option Id"},"selected_shipping_option":{"anyOf":[{"$ref":"#/components/schemas/V1ShippingOption"},{"type":"null"}]},"quote":{"$ref":"#/components/schemas/V1Quote"},"totals":{"$ref":"#/components/schemas/V1CartTotals"},"dfm_run_ids":{"additionalProperties":{"type":"string"},"type":"object","title":"Dfm Run Ids","description":"DFM report id per `design_id` whose production files (resized holes, calibrated bends, laser DXF) are prepared for this cart. Poll `GET /v1/dfm/{id}` for `production_files.status`."},"designs":{"items":{"$ref":"#/components/schemas/V1CartDesignSummary"},"type":"array","title":"Designs"},"manufacturing_warnings":{"items":{"$ref":"#/components/schemas/V1ManufacturingReviewWarning"},"type":"array","title":"Manufacturing Warnings","description":"Advisories from automatic file preparation. These do not prevent ordering a ready quote."},"order_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Order Id","description":"Set once payment completes."},"payment":{"anyOf":[{"$ref":"#/components/schemas/V1CartPayment"},{"type":"null"}],"description":"Present once `POST /v1/carts/{id}/pay` has been called."},"client_reference_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Client Reference Id"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Expires At"}},"type":"object","required":["id","status","cart_url","items","quote","totals","created_at","updated_at"],"title":"V1Cart","description":"A server-side basket a human can open, review, and pay on the website.\n\nThe cart re-quotes on every change; `quote` is the latest priced result.\n`cart_url` embeds an unguessable token, so anyone holding the link can\ncheck out."},"V1CartCreateRequest":{"properties":{"items":{"items":{"$ref":"#/components/schemas/V1QuoteItemRequest"},"type":"array","maxItems":100,"minItems":1,"title":"Items","description":"Up to 100 configured cart line items; quantity does not count toward this limit."},"ship_to":{"anyOf":[{"$ref":"#/components/schemas/V1ShipTo"},{"type":"null"}]},"shipping_option_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Shipping Option Id","description":"`id` of a `fulfillment.shipping_options[]` entry from the cart's quote. Encodes both carrier service and production speed."},"client_reference_id":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Client Reference Id"}},"additionalProperties":false,"type":"object","required":["items"],"title":"V1CartCreateRequest","description":"Create a cart: the quote basket plus checkout choices."},"V1CartDesignSummary":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"formed_dimensions":{"$ref":"#/components/schemas/V1Dimensions"},"parts":{"items":{"$ref":"#/components/schemas/V1CartPartSummary"},"type":"array","title":"Parts"}},"type":"object","required":["id","name","formed_dimensions","parts"],"title":"V1CartDesignSummary","description":"Enough about each design for a viewer of the link to render the cart\nwithout owning the underlying design resources."},"V1CartLinkFulfillmentRequest":{"properties":{"ship_to":{"anyOf":[{"$ref":"#/components/schemas/V1ShipTo"},{"type":"null"}]},"shipping_option_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Shipping Option Id"}},"additionalProperties":false,"type":"object","title":"V1CartLinkFulfillmentRequest","description":"A link holder may change delivery, never the basket or its ownership."},"V1CartLinkQuoteRequest":{"properties":{"ship_to":{"anyOf":[{"$ref":"#/components/schemas/V1ShipTo"},{"type":"null"}]}},"additionalProperties":false,"type":"object","title":"V1CartLinkQuoteRequest","description":"Price delivery for the fixed basket accessible through a cart link."},"V1CartPartSummary":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"suggested_process":{"type":"string","enum":["sheet_metal","tube_laser"],"title":"Suggested Process"},"instance_count":{"type":"integer","title":"Instance Count","default":1},"formed_dimensions":{"$ref":"#/components/schemas/V1Dimensions"},"surface_area_cm2":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Surface Area Cm2"},"tube_length_mm":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Tube Length Mm"}},"type":"object","required":["id","name","suggested_process","formed_dimensions"],"title":"V1CartPartSummary"},"V1CartPayRequest":{"properties":{"payment":{"oneOf":[{"$ref":"#/components/schemas/V1CardOnFilePayment"},{"$ref":"#/components/schemas/V1PaymentMethodPayment"}],"title":"Payment","discriminator":{"propertyName":"type","mapping":{"card_on_file":"#/components/schemas/V1CardOnFilePayment","payment_method":"#/components/schemas/V1PaymentMethodPayment"}}},"customer_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Customer Email","description":"Receipt and order emails; defaults to the account email."},"customer_phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Customer Phone"}},"additionalProperties":false,"type":"object","required":["payment"],"title":"V1CartPayRequest"},"V1CartPayment":{"properties":{"object":{"type":"string","const":"cart_payment","title":"Object","default":"cart_payment"},"cart_id":{"type":"string","title":"Cart Id"},"status":{"type":"string","enum":["paid","processing","failed","refunded"],"title":"Status"},"payment_intent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Payment Intent Id"},"amount_total_cents":{"type":"integer","title":"Amount Total Cents"},"order_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Order Id"},"order_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Order Url","description":"`/v1/orders/{order_id}` once the order exists."},"paid_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Paid At"}},"type":"object","required":["cart_id","status","amount_total_cents"],"title":"V1CartPayment"},"V1CartTotals":{"properties":{"amount_subtotal_cents":{"type":"integer","title":"Amount Subtotal Cents","description":"Manufacturing: Σ quote items."},"amount_shipping_cents":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Amount Shipping Cents","description":"Selected shipping option, including the freight surcharge when the order requires LTL. Null until an option is selected."},"amount_production_surcharge_cents":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Amount Production Surcharge Cents","description":"Expedited production fee of the selected option; 0 for standard."},"amount_tax_cents":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Amount Tax Cents","description":"Sales tax for the destination; see `tax_status`."},"tax_status":{"type":"string","enum":["calculated","destination_required","unavailable"],"title":"Tax Status","description":"`unavailable` means tax could not be calculated now and will be charged at checkout."},"amount_total_cents":{"type":"integer","title":"Amount Total Cents","description":"Sum of the known amounts above; what checkout will charge before any promotion code."}},"type":"object","required":["amount_subtotal_cents","tax_status","amount_total_cents"],"title":"V1CartTotals","description":"Every amount the website's checkout charges, computed by the API."},"V1CartUpdateRequest":{"properties":{"items":{"anyOf":[{"items":{"$ref":"#/components/schemas/V1QuoteItemRequest"},"type":"array","maxItems":100,"minItems":1},{"type":"null"}],"title":"Items","description":"Up to 100 configured cart line items; quantity does not count toward this limit."},"ship_to":{"anyOf":[{"$ref":"#/components/schemas/V1ShipTo"},{"type":"null"}]},"shipping_option_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Shipping Option Id"},"client_reference_id":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Client Reference Id"}},"additionalProperties":false,"type":"object","title":"V1CartUpdateRequest","description":"Replace parts of an open cart. Omitted fields keep their value; an\nexplicit null clears `ship_to` or `shipping_option_id`."},"V1CountersinkOperation":{"additionalProperties":false,"properties":{"hole_id":{"title":"Hole Id","type":"integer"},"outer_diameter_mm":{"exclusiveMinimum":0,"title":"Outer Diameter Mm","type":"number"},"angle":{"enum":[82,90],"title":"Angle","type":"integer"},"side":{"description":"Sheet face the countersink is cut into.","enum":["top","bottom"],"title":"Side","type":"string"}},"required":["hole_id","outer_diameter_mm","angle","side"],"title":"V1CountersinkOperation","type":"object"},"V1DFMIssue":{"properties":{"code":{"type":"string","title":"Code"},"message":{"type":"string","title":"Message"},"severity":{"type":"string","enum":["blocking","warning","info"],"title":"Severity","default":"blocking"},"customer_visible":{"type":"boolean","title":"Customer Visible","description":"False for internal review warnings that customer interfaces must omit.","default":true},"accepted":{"type":"boolean","title":"Accepted","description":"True when the caller listed this finding in `configuration.accepted_risks`.","default":false},"source":{"type":"string","enum":["geometry","manufacturing_rules"],"title":"Source","description":"`geometry` findings come from analyzing the uploaded file; `manufacturing_rules` findings depend on the selected material, tooling, or operations."},"part_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Part Id"},"hole_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Hole Id"},"bend_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Bend Id"},"operation":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Operation","description":"Configuration field the finding refers to, e.g. `taps`."},"details":{"additionalProperties":true,"type":"object","title":"Details","description":"Code-specific measurements. Numeric keys use `_mm`, `_degrees`, `_psi`, or `_tons` suffixes; see the documentation for each code."}},"type":"object","required":["code","message","source"],"title":"V1DFMIssue"},"V1DFMReport":{"properties":{"id":{"type":"string","title":"Id"},"object":{"type":"string","const":"dfm_report","title":"Object","default":"dfm_report"},"api_version":{"type":"string","const":"2026-09-01","title":"Api Version","default":"2026-09-01"},"dfm_ruleset_version":{"type":"string","title":"Dfm Ruleset Version","default":"2026-09-28-v8"},"design_id":{"type":"string","title":"Design Id"},"configuration_hash":{"type":"string","title":"Configuration Hash"},"status":{"type":"string","enum":["requires_input","ready","blocked"],"title":"Status","default":"ready"},"review_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Review Url","description":"Website page showing this exact configuration in the 3D configurator, where a person can adjust it and save. Read the saved configuration back with `GET /v1/review-links/{id}`."},"review_link_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Review Link Id"},"configuration":{"$ref":"#/components/schemas/V1ManufacturingConfiguration"},"parts":{"items":{"$ref":"#/components/schemas/V1PartDFM"},"type":"array","title":"Parts"},"requirements":{"items":{"$ref":"#/components/schemas/V1Requirement"},"type":"array","title":"Requirements"},"assembly_issues":{"items":{"$ref":"#/components/schemas/V1DFMIssue"},"type":"array","title":"Assembly Issues"},"production_files":{"$ref":"#/components/schemas/V1ProductionFilesStatus"}},"type":"object","required":["id","design_id","configuration_hash","configuration","parts","production_files"],"title":"V1DFMReport","description":"An immutable evaluation of one configuration.\n\nTo act on `requires_input` or `blocked`, submit a new request with the\ncorrected configuration; reports are never updated in place."},"V1DFMRequest":{"properties":{"design_id":{"type":"string","title":"Design Id"},"configuration":{"$ref":"#/components/schemas/V1ManufacturingConfiguration"},"generate_production_files":{"type":"boolean","title":"Generate Production Files","default":true}},"additionalProperties":false,"type":"object","required":["design_id","configuration"],"title":"V1DFMRequest"},"V1DefaultSelection":{"additionalProperties":false,"description":"Part-agnostic choices applied to every compatible part.\n\n`material_id` applies to sheet-metal parts only and `tube_profile_id` to\ntube-laser parts only; the other fields apply to every part. Hole-level\noperations are never defaults because hole IDs are scoped to one part.","properties":{"material_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Material Id"},"tube_profile_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Tube Profile Id"},"powder_coat_color_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Powder Coat Color Id"},"finish_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Finish Id"}},"title":"V1DefaultSelection","type":"object"},"V1Design":{"properties":{"id":{"type":"string","title":"Id"},"object":{"type":"string","const":"design","title":"Object","default":"design"},"status":{"type":"string","enum":["queued","processing","ready","failed"],"title":"Status"},"status_url":{"type":"string","title":"Status Url"},"name":{"type":"string","title":"Name"},"formed_dimensions":{"anyOf":[{"$ref":"#/components/schemas/V1Dimensions"},{"type":"null"}]},"parts":{"items":{"$ref":"#/components/schemas/V1Part"},"type":"array","title":"Parts"},"part_instances":{"items":{"$ref":"#/components/schemas/V1PartInstance"},"type":"array","title":"Part Instances"},"model_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model Url"},"image_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image Url","description":"Rendered picture of the whole design (all part instances in place). Accepts the same `view`, `format`, and `width` parameters as part images; labels are per part, so use each part's `image_url` to identify holes and bends."},"review_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Review Url","description":"Website page where a person can look at this design in the 3D configurator, add or change hole operations, material, and finish, and save the result. Read the saved choices back with `GET /v1/review-links/{id}`; the link `id` is `review_link_id`."},"review_link_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Review Link Id"},"models_status":{"type":"string","enum":["queued","processing","ready","failed"],"title":"Models Status"},"weld_candidates_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Weld Candidates Url","description":"Discover located contact paths and joined part-instance IDs for configuring welds."},"models_error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Models Error"},"preview_status":{"type":"string","enum":["queued","processing","ready","failed"],"title":"Preview Status","default":"queued"},"preview_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Preview Url","description":"Owner-authorized whole-model preview, available before analysis and production models finish."},"preview_error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Preview Error"},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"},"error":{"anyOf":[{"$ref":"#/components/schemas/V1ResourceError"},{"type":"null"}]}},"type":"object","required":["id","status","status_url","name","models_status"],"title":"V1Design"},"V1DesignUploadRequest":{"properties":{"filename":{"type":"string","maxLength":255,"minLength":5,"title":"Filename","description":"STEP/STP basename, without directories."},"size_bytes":{"anyOf":[{"type":"integer","maximum":52428800.0,"minimum":1.0},{"type":"null"}],"title":"Size Bytes"},"sha256":{"anyOf":[{"type":"string","pattern":"^[a-fA-F0-9]{64}$"},{"type":"null"}],"title":"Sha256"}},"additionalProperties":false,"type":"object","required":["filename"],"title":"V1DesignUploadRequest","description":"Create a short-lived, owner-bound upload capability for one STEP file."},"V1Dimensions":{"properties":{"length_mm":{"type":"number","title":"Length Mm"},"width_mm":{"type":"number","title":"Width Mm"},"height_mm":{"type":"number","title":"Height Mm"}},"type":"object","required":["length_mm","width_mm","height_mm"],"title":"V1Dimensions"},"V1Error":{"properties":{"type":{"type":"string","enum":["invalid_request_error","authentication_error","permission_error","not_found_error","conflict_error","rate_limit_error","api_error"],"title":"Type"},"code":{"type":"string","title":"Code","description":"Stable machine-readable error code."},"message":{"type":"string","title":"Message"},"param":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Param","description":"Dotted path of the offending request field."},"request_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Request Id"},"retryable":{"type":"boolean","title":"Retryable","default":false},"doc_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Doc Url"},"details":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Details","description":"Per-field validation problems, when any."}},"type":"object","required":["type","code","message"],"title":"V1Error"},"V1ErrorResponse":{"properties":{"error":{"$ref":"#/components/schemas/V1Error"}},"type":"object","required":["error"],"title":"V1ErrorResponse"},"V1Face":{"properties":{"id":{"type":"integer","title":"Id"},"parent_face_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Parent Face Id"},"hole_ids":{"items":{"type":"integer"},"type":"array","title":"Hole Ids"}},"type":"object","required":["id"],"title":"V1Face","description":"A flat panel of a sheet-metal part, bounded by bends.\n\nFace 0 is the base panel the analyzer unfolds from; each other face is a\nflange reached from `parent_face_id`. Use faces to resolve language such as\n\"the holes on the base\" or \"the mounting flange\" to hole IDs."},"V1Finish":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"slug":{"type":"string","title":"Slug"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"category":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"},"processes":{"items":{"type":"string","enum":["sheet_metal","tube_laser"]},"type":"array","title":"Processes","description":"Processes this finish can be applied to."},"base_price_cents":{"type":"integer","title":"Base Price Cents","default":0},"price_per_cm2_cents":{"type":"number","title":"Price Per Cm2 Cents","default":0},"price_tiers":{"items":{"$ref":"#/components/schemas/V1PriceTier"},"type":"array","title":"Price Tiers"},"min_length_mm":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Min Length Mm"},"max_length_mm":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Length Mm"},"min_width_mm":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Min Width Mm"},"max_width_mm":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Width Mm"},"min_height_mm":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Min Height Mm"},"max_height_mm":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Height Mm"},"min_narrow_side_mm":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Min Narrow Side Mm"},"max_narrow_side_mm":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Narrow Side Mm"},"min_thickness_mm":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Min Thickness Mm"},"max_thickness_mm":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Thickness Mm"},"min_surface_area_cm2":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Min Surface Area Cm2"},"min_fill_ratio":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Min Fill Ratio"},"eligible_material_ids":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Eligible Material Ids"},"part_flag":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Part Flag"}},"type":"object","required":["id","name","slug"],"title":"V1Finish"},"V1FlangeLength":{"properties":{"length_mm":{"type":"number","title":"Length Mm"},"bend_radius_mm":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Bend Radius Mm"},"bend_angle_degrees":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Bend Angle Degrees"}},"type":"object","required":["length_mm"],"title":"V1FlangeLength"},"V1FulfillmentEstimate":{"properties":{"production":{"items":{"$ref":"#/components/schemas/V1ProductionEstimate"},"type":"array","title":"Production"},"shipping_status":{"type":"string","enum":["destination_required","ready","invalid_address","service_unavailable"],"title":"Shipping Status"},"shipping_options":{"items":{"$ref":"#/components/schemas/V1ShippingOption"},"type":"array","title":"Shipping Options"},"requires_freight":{"type":"boolean","title":"Requires Freight","default":false},"freight_reasons":{"items":{"type":"string"},"type":"array","title":"Freight Reasons"}},"type":"object","required":["production","shipping_status"],"title":"V1FulfillmentEstimate"},"V1Hole":{"properties":{"id":{"type":"integer","title":"Id"},"shape":{"type":"string","enum":["round","cutout"],"title":"Shape","description":"`round` holes have a `diameter_mm`; `cutout` is any other interior boundary (slot, rectangle, irregular) and carries an `outline`. Hole operations (taps, studs, nuts, countersinks) apply to round holes only.","default":"round"},"diameter_mm":{"type":"number","title":"Diameter Mm","description":"0 for cutouts; see `shape`."},"area_mm2":{"type":"number","title":"Area Mm2"},"center":{"$ref":"#/components/schemas/V1Point","description":"Centre on the part's top face, in the design frame (mm)."},"normal":{"$ref":"#/components/schemas/V1Point","description":"Unit vector pointing out of the hole's top face. `side: \"top\"` operations are applied from this face; `bottom` is the opposite face."},"distance_to_nearest_edge_mm":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Distance To Nearest Edge Mm"},"face_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Face Id","description":"The flat face (panel between bends) this hole sits on; see the part's `faces[]`. Null when the analyzer did not resolve faces."},"nearest_bend_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Nearest Bend Id","description":"ID in the part's `bends[]`."},"distance_to_nearest_bend_mm":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Distance To Nearest Bend Mm","description":"Distance from the hole centre to the nearest bend line. Null when the part is flat or the hole is beside every bend's span."},"outline":{"items":{"$ref":"#/components/schemas/V1Point"},"type":"array","title":"Outline"},"wall":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Wall"},"position_along_tube_mm":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Position Along Tube Mm"}},"type":"object","required":["id","diameter_mm","area_mm2","center","normal"],"title":"V1Hole","description":"A detected hole or cutout. IDs are stable for the life of the design."},"V1HoleCapabilities":{"properties":{"hole_id":{"type":"integer","title":"Hole Id"},"taps":{"$ref":"#/components/schemas/V1HoleOperationCapability"},"studs":{"$ref":"#/components/schemas/V1HoleOperationCapability"},"standoffs":{"$ref":"#/components/schemas/V1HoleOperationCapability"},"nuts":{"$ref":"#/components/schemas/V1HoleOperationCapability"},"countersinks":{"$ref":"#/components/schemas/V1HoleOperationCapability"}},"type":"object","required":["hole_id","taps","studs","nuts","countersinks"],"title":"V1HoleCapabilities","description":"Which operations each round hole can take, after geometry rules such as\nedge distance are applied. Cutouts accept no hole operations."},"V1HoleOperationCapability":{"properties":{"available":{"type":"boolean","title":"Available"},"unavailable_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Unavailable Reason"},"option_ids":{"items":{"type":"string"},"type":"array","title":"Option Ids","description":"Catalog IDs that fit this hole (a subset of the part-level `options`). Empty for taps and countersinks, which accept every part-level option."}},"type":"object","required":["available"],"title":"V1HoleOperationCapability"},"V1LineItemBreakdown":{"properties":{"type":{"type":"string","enum":["base","bends","taps","studs","nuts","standoffs","countersinks","powder_coat","finish"],"title":"Type"},"unit_amount_cents":{"type":"integer","title":"Unit Amount Cents"},"amount_cents":{"type":"integer","title":"Amount Cents"}},"type":"object","required":["type","unit_amount_cents","amount_cents"],"title":"V1LineItemBreakdown","description":"One priced component of a line item.\n\n`base` is the discounted part price before operations; every other entry\nis one operation type. The `amount_cents` values sum to the line item's\n`amount_cents`, and the `unit_amount_cents` values sum to its\n`unit_amount_cents`."},"V1LineItemDiscount":{"properties":{"type":{"type":"string","const":"quantity","title":"Type"},"percent":{"type":"number","title":"Percent"},"unit_amount_cents":{"type":"integer","title":"Unit Amount Cents","description":"Reduction per manufactured part."},"amount_cents":{"type":"integer","title":"Amount Cents","description":"`unit_amount_cents` × `quantity`."}},"type":"object","required":["type","percent","unit_amount_cents","amount_cents"],"title":"V1LineItemDiscount"},"V1List_V1ApiKey_":{"properties":{"object":{"type":"string","const":"list","title":"Object","default":"list"},"data":{"items":{"$ref":"#/components/schemas/V1ApiKey"},"type":"array","title":"Data"},"has_more":{"type":"boolean","title":"Has More","default":false},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor","description":"Opaque cursor for the next page. Pass it as the `cursor` query parameter. Null when `has_more` is false."}},"type":"object","required":["data"],"title":"V1List[V1ApiKey]"},"V1List_V1Finish_":{"properties":{"object":{"type":"string","const":"list","title":"Object","default":"list"},"data":{"items":{"$ref":"#/components/schemas/V1Finish"},"type":"array","title":"Data"},"has_more":{"type":"boolean","title":"Has More","default":false},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor","description":"Opaque cursor for the next page. Pass it as the `cursor` query parameter. Null when `has_more` is false."}},"type":"object","required":["data"],"title":"V1List[V1Finish]"},"V1List_V1Material_":{"properties":{"object":{"type":"string","const":"list","title":"Object","default":"list"},"data":{"items":{"$ref":"#/components/schemas/V1Material"},"type":"array","title":"Data"},"has_more":{"type":"boolean","title":"Has More","default":false},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor","description":"Opaque cursor for the next page. Pass it as the `cursor` query parameter. Null when `has_more` is false."}},"type":"object","required":["data"],"title":"V1List[V1Material]"},"V1List_V1NutOption_":{"properties":{"object":{"type":"string","const":"list","title":"Object","default":"list"},"data":{"items":{"$ref":"#/components/schemas/V1NutOption"},"type":"array","title":"Data"},"has_more":{"type":"boolean","title":"Has More","default":false},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor","description":"Opaque cursor for the next page. Pass it as the `cursor` query parameter. Null when `has_more` is false."}},"type":"object","required":["data"],"title":"V1List[V1NutOption]"},"V1List_V1Order_":{"properties":{"object":{"type":"string","const":"list","title":"Object","default":"list"},"data":{"items":{"$ref":"#/components/schemas/V1Order"},"type":"array","title":"Data"},"has_more":{"type":"boolean","title":"Has More","default":false},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor","description":"Opaque cursor for the next page. Pass it as the `cursor` query parameter. Null when `has_more` is false."}},"type":"object","required":["data"],"title":"V1List[V1Order]"},"V1List_V1PowderCoatColor_":{"properties":{"object":{"type":"string","const":"list","title":"Object","default":"list"},"data":{"items":{"$ref":"#/components/schemas/V1PowderCoatColor"},"type":"array","title":"Data"},"has_more":{"type":"boolean","title":"Has More","default":false},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor","description":"Opaque cursor for the next page. Pass it as the `cursor` query parameter. Null when `has_more` is false."}},"type":"object","required":["data"],"title":"V1List[V1PowderCoatColor]"},"V1List_V1StandoffOption_":{"properties":{"object":{"type":"string","const":"list","title":"Object","default":"list"},"data":{"items":{"$ref":"#/components/schemas/V1StandoffOption"},"type":"array","title":"Data"},"has_more":{"type":"boolean","title":"Has More","default":false},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor","description":"Opaque cursor for the next page. Pass it as the `cursor` query parameter. Null when `has_more` is false."}},"type":"object","required":["data"],"title":"V1List[V1StandoffOption]"},"V1List_V1StudOption_":{"properties":{"object":{"type":"string","const":"list","title":"Object","default":"list"},"data":{"items":{"$ref":"#/components/schemas/V1StudOption"},"type":"array","title":"Data"},"has_more":{"type":"boolean","title":"Has More","default":false},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor","description":"Opaque cursor for the next page. Pass it as the `cursor` query parameter. Null when `has_more` is false."}},"type":"object","required":["data"],"title":"V1List[V1StudOption]"},"V1List_V1TapOption_":{"properties":{"object":{"type":"string","const":"list","title":"Object","default":"list"},"data":{"items":{"$ref":"#/components/schemas/V1TapOption"},"type":"array","title":"Data"},"has_more":{"type":"boolean","title":"Has More","default":false},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor","description":"Opaque cursor for the next page. Pass it as the `cursor` query parameter. Null when `has_more` is false."}},"type":"object","required":["data"],"title":"V1List[V1TapOption]"},"V1List_V1TubeProfile_":{"properties":{"object":{"type":"string","const":"list","title":"Object","default":"list"},"data":{"items":{"$ref":"#/components/schemas/V1TubeProfile"},"type":"array","title":"Data"},"has_more":{"type":"boolean","title":"Has More","default":false},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor","description":"Opaque cursor for the next page. Pass it as the `cursor` query parameter. Null when `has_more` is false."}},"type":"object","required":["data"],"title":"V1List[V1TubeProfile]"},"V1List_V1WebhookDelivery_":{"properties":{"object":{"type":"string","const":"list","title":"Object","default":"list"},"data":{"items":{"$ref":"#/components/schemas/V1WebhookDelivery"},"type":"array","title":"Data"},"has_more":{"type":"boolean","title":"Has More","default":false},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor","description":"Opaque cursor for the next page. Pass it as the `cursor` query parameter. Null when `has_more` is false."}},"type":"object","required":["data"],"title":"V1List[V1WebhookDelivery]"},"V1List_V1WebhookEndpoint_":{"properties":{"object":{"type":"string","const":"list","title":"Object","default":"list"},"data":{"items":{"$ref":"#/components/schemas/V1WebhookEndpoint"},"type":"array","title":"Data"},"has_more":{"type":"boolean","title":"Has More","default":false},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor","description":"Opaque cursor for the next page. Pass it as the `cursor` query parameter. Null when `has_more` is false."}},"type":"object","required":["data"],"title":"V1List[V1WebhookEndpoint]"},"V1ManufacturingConfiguration":{"additionalProperties":false,"description":"Canonical manufacturing intent used by both DFM and quotes.\n\nPrecedence is part override, then defaults, then unset. Process is owned\nby the analyzer and is intentionally absent from this request model.\nParts connected by located welds with the same powder-coat color are\ncoated as a weldment and may share a hanging opening. Disconnected parts\nand groups with different colors must each have their own opening.","properties":{"defaults":{"$ref":"#/components/schemas/V1DefaultSelection"},"parts":{"items":{"$ref":"#/components/schemas/V1PartConfiguration"},"title":"Parts","type":"array"},"assembly_operations":{"items":{"$ref":"#/components/schemas/V1WeldingOperation"},"title":"Assembly Operations","type":"array"},"accepted_risks":{"description":"Findings the customer accepts responsibility for. Holes or countersinks near a bend may distort when the part is formed; listing the code here turns that finding into a warning (`accepted: true`) so the part can be quoted and ordered.","items":{"enum":["hole_too_close_to_bend","countersink_too_close_to_bend"],"type":"string"},"title":"Accepted Risks","type":"array"}},"title":"V1ManufacturingConfiguration","type":"object"},"V1ManufacturingReviewWarning":{"properties":{"design_id":{"type":"string","title":"Design Id"},"code":{"type":"string","enum":["bend_radius_review","hole_correction_review","manufacturing_file_review"],"title":"Code"},"message":{"type":"string","title":"Message"}},"type":"object","required":["design_id","code","message"],"title":"V1ManufacturingReviewWarning","description":"An advisory for manual preparation; never a checkout requirement."},"V1ManufacturingTransformation":{"properties":{"type":{"type":"string","enum":["hole_diameter_adjustment","bend_radius_adjustment","material_thickness_adjustment","hole_face_inverted"],"title":"Type"},"code":{"type":"string","enum":["tap_hole_diameter","stud_hole_diameter","nut_hole_diameter","standoff_hole_diameter","countersink_inner_diameter","tooling_bend_radius","stocked_material_thickness","hole_normal_inverted"],"title":"Code"},"message":{"type":"string","title":"Message"},"hole_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Hole Id"},"bend_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Bend Id"},"from_mm":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"From Mm"},"to_mm":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"To Mm"}},"type":"object","required":["type","code","message"],"title":"V1ManufacturingTransformation","description":"One change RMFG made to the uploaded geometry to manufacture it."},"V1Material":{"properties":{"id":{"type":"string","title":"Id"},"material":{"type":"string","title":"Material"},"type":{"type":"string","title":"Type"},"thickness_in":{"type":"number","title":"Thickness In"},"thickness_mm":{"type":"number","title":"Thickness Mm"},"display_thickness":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Display Thickness"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"weight_g_per_cm2":{"type":"number","title":"Weight G Per Cm2"},"bendable":{"type":"boolean","title":"Bendable","default":false},"ultimate_tensile_strength_psi":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Ultimate Tensile Strength Psi"},"yield_tensile_strength_psi":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Yield Tensile Strength Psi"}},"type":"object","required":["id","material","type","thickness_in","thickness_mm","weight_g_per_cm2"],"title":"V1Material"},"V1NutOperation":{"additionalProperties":false,"properties":{"hole_id":{"title":"Hole Id","type":"integer"},"nut_id":{"description":"`id` from GET /v1/hardware/nuts.","title":"Nut Id","type":"string"},"side":{"default":"top","description":"Sheet face the nut is installed from.","enum":["top","bottom"],"title":"Side","type":"string"}},"required":["hole_id","nut_id"],"title":"V1NutOperation","type":"object"},"V1NutOption":{"properties":{"id":{"type":"string","title":"Id","description":"Catalog ID; use as `nut_id` in a configuration."},"size":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Size"},"pem_part_number":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Pem Part Number"},"mcmaster_part_number":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mcmaster Part Number"},"unit_system":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Unit System"},"hole_diameter_mm":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Hole Diameter Mm"},"head_outer_diameter_mm":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Head Outer Diameter Mm"},"head_height_mm":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Head Height Mm"},"minimum_sheet_thickness_mm":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Minimum Sheet Thickness Mm"},"material":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Material"},"default_side":{"type":"string","enum":["top","bottom"],"title":"Default Side","description":"Sheet face this nut style is installed from by default.","default":"top"},"model_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model Url"}},"type":"object","required":["id"],"title":"V1NutOption"},"V1OperationCapability":{"properties":{"available":{"type":"boolean","title":"Available"},"unavailable_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Unavailable Reason"},"options":{"items":{"$ref":"#/components/schemas/V1CapabilityOption"},"type":"array","title":"Options"}},"type":"object","required":["available"],"title":"V1OperationCapability"},"V1Order":{"properties":{"id":{"type":"string","title":"Id"},"object":{"type":"string","const":"order","title":"Object","default":"order"},"status":{"type":"string","enum":["received","in_production","ready_for_pickup","shipped","delivered","cancelled","refunded"],"title":"Status"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"cart_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cart Id"},"quote_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Quote Id"},"amount_subtotal_cents":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Amount Subtotal Cents"},"amount_discount_cents":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Amount Discount Cents"},"amount_tax_cents":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Amount Tax Cents"},"amount_total_cents":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Amount Total Cents"},"expedited":{"type":"boolean","title":"Expedited","default":false},"production_hold":{"type":"boolean","title":"Production Hold","default":false},"estimated_ship_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Estimated Ship Date"},"delivered_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Delivered At"},"tracking":{"anyOf":[{"$ref":"#/components/schemas/V1OrderTracking"},{"type":"null"}]},"line_items":{"items":{"$ref":"#/components/schemas/V1OrderLineItem"},"type":"array","title":"Line Items"},"events":{"items":{"$ref":"#/components/schemas/V1OrderEvent"},"type":"array","title":"Events","description":"Status history, oldest first."},"po_number":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Po Number"}},"type":"object","required":["id","status","created_at"],"title":"V1Order","description":"A manufacturing order. Orders are created when a cart is paid on the\nwebsite; this resource reports what happens to them afterwards."},"V1OrderEvent":{"properties":{"type":{"type":"string","title":"Type"},"at":{"type":"string","format":"date-time","title":"At"}},"type":"object","required":["type","at"],"title":"V1OrderEvent"},"V1OrderLineItem":{"properties":{"id":{"type":"string","title":"Id"},"type":{"type":"string","enum":["part","assembly_operation","other"],"title":"Type"},"part_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Part Id","description":"Analyzed part this line manufactures."},"design_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Design Id","description":"Design the part belongs to."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"quantity":{"type":"integer","title":"Quantity"},"unit_amount_cents":{"type":"integer","title":"Unit Amount Cents"},"amount_cents":{"type":"integer","title":"Amount Cents"},"material_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Material Id"},"tube_profile_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tube Profile Id"},"powder_coat_color_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Powder Coat Color Id"},"finish_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Finish Id"},"hole_operation_count":{"type":"integer","title":"Hole Operation Count","description":"Taps, studs, nuts, and countersinks on this part.","default":0}},"type":"object","required":["id","type","quantity","unit_amount_cents","amount_cents"],"title":"V1OrderLineItem"},"V1OrderTracking":{"properties":{"carrier":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Carrier"},"service":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Service"},"number":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Number"},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Url"},"shipped_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Shipped At"},"delivered_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Delivered At"}},"type":"object","title":"V1OrderTracking"},"V1Part":{"properties":{"analysis_status":{"type":"string","enum":["ready","failed"],"title":"Analysis Status","description":"Whether manufacturing geometry analysis completed. A failed part remains in the design for preview but cannot be quoted; ready does not imply manufacturability approval.","default":"ready"},"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"suggested_process":{"type":"string","enum":["sheet_metal","tube_laser"],"title":"Suggested Process"},"instance_count":{"type":"integer","minimum":1.0,"title":"Instance Count","default":1},"formed_dimensions":{"$ref":"#/components/schemas/V1Dimensions"},"flat_pattern_dimensions":{"anyOf":[{"$ref":"#/components/schemas/V1Dimensions"},{"type":"null"}]},"detected_thickness_mm":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Detected Thickness Mm"},"bend_count":{"type":"integer","title":"Bend Count","default":0},"bends":{"items":{"$ref":"#/components/schemas/V1Bend"},"type":"array","title":"Bends"},"hole_count":{"type":"integer","title":"Hole Count","default":0},"holes":{"items":{"$ref":"#/components/schemas/V1Hole"},"type":"array","title":"Holes"},"surface_area_cm2":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Surface Area Cm2"},"cut_length_mm":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Cut Length Mm"},"flange_lengths":{"items":{"$ref":"#/components/schemas/V1FlangeLength"},"type":"array","title":"Flange Lengths"},"backgauge_flanges":{"items":{"$ref":"#/components/schemas/V1BackgaugeFlange"},"type":"array","title":"Backgauge Flanges"},"faces":{"items":{"$ref":"#/components/schemas/V1Face"},"type":"array","title":"Faces","description":"Flat panels between bends; empty for tubes and flat parts."},"tube":{"anyOf":[{"$ref":"#/components/schemas/V1TubeAnalysis"},{"type":"null"}]},"model_url":{"type":"string","title":"Model Url"},"flat_pattern_model_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Flat Pattern Model Url"},"image_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image Url","description":"Rendered picture of this part with every hole and bend labelled by ID. Accepts `?view=iso|top|bottom|front|back|left|right|flat`, `?format=png|svg`, and `?width=`. Bottom-face features are drawn hollow when they are hidden in the chosen view."}},"type":"object","required":["id","name","suggested_process","formed_dimensions","model_url"],"title":"V1Part"},"V1PartCapabilities":{"properties":{"taps":{"$ref":"#/components/schemas/V1OperationCapability"},"studs":{"$ref":"#/components/schemas/V1OperationCapability"},"standoffs":{"$ref":"#/components/schemas/V1OperationCapability"},"nuts":{"$ref":"#/components/schemas/V1OperationCapability"},"countersinks":{"$ref":"#/components/schemas/V1OperationCapability"},"powder_coat_color_id":{"$ref":"#/components/schemas/V1OperationCapability"},"finish_id":{"$ref":"#/components/schemas/V1OperationCapability"},"holes":{"items":{"$ref":"#/components/schemas/V1HoleCapabilities"},"type":"array","title":"Holes","description":"Per-hole eligibility; authoritative for hole operations."}},"type":"object","required":["taps","studs","nuts","countersinks","powder_coat_color_id","finish_id"],"title":"V1PartCapabilities","description":"Keyed by the configuration field each capability governs."},"V1PartConfiguration":{"additionalProperties":false,"description":"Choices for one unique part.\n\nA field that is present overrides the matching default for this part;\nan explicit `null` clears the default. Operation arrays are per part and\nare never inherited: an omitted or empty array means no operations.","properties":{"material_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Material Id"},"tube_profile_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Tube Profile Id"},"powder_coat_color_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Powder Coat Color Id"},"finish_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Finish Id"},"part_id":{"title":"Part Id","type":"string"},"taps":{"items":{"$ref":"#/components/schemas/V1TapOperation"},"title":"Taps","type":"array"},"studs":{"items":{"$ref":"#/components/schemas/V1StudOperation"},"title":"Studs","type":"array"},"nuts":{"items":{"$ref":"#/components/schemas/V1NutOperation"},"title":"Nuts","type":"array"},"standoffs":{"items":{"$ref":"#/components/schemas/V1StandoffOperation"},"title":"Standoffs","type":"array"},"countersinks":{"items":{"$ref":"#/components/schemas/V1CountersinkOperation"},"title":"Countersinks","type":"array"}},"required":["part_id"],"title":"V1PartConfiguration","type":"object"},"V1PartDFM":{"properties":{"part_id":{"type":"string","title":"Part Id"},"status":{"type":"string","enum":["requires_input","ready","blocked"],"title":"Status","default":"ready"},"issues":{"items":{"$ref":"#/components/schemas/V1DFMIssue"},"type":"array","title":"Issues"},"capabilities":{"anyOf":[{"$ref":"#/components/schemas/V1PartCapabilities"},{"type":"null"}]},"files":{"anyOf":[{"$ref":"#/components/schemas/V1PartFiles"},{"type":"null"}]},"image_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image Url","description":"Rendered picture of this part with the configured taps, studs, nuts, and countersinks marked on the face they are applied from. Uses the production geometry once it is ready. Accepts the same `view`, `format`, and `width` parameters as design images."},"transformations":{"items":{"$ref":"#/components/schemas/V1ManufacturingTransformation"},"type":"array","title":"Transformations"},"production_design_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Production Design Id","description":"Identifier of the prepared production geometry once files are ready. Equals `part_id` when the uploaded geometry needed no change."},"tooling":{"anyOf":[{"$ref":"#/components/schemas/V1ProductionTooling"},{"type":"null"}]},"bend_input_ready":{"type":"boolean","title":"Bend Input Ready","description":"Corrected STEP and material calibration are ready for bend planning. May become true while DXF and display models are still processing.","default":false},"production_warnings":{"items":{"type":"string"},"type":"array","title":"Production Warnings","description":"Non-blocking notes from file preparation, e.g. DXF checks."}},"type":"object","required":["part_id"],"title":"V1PartDFM"},"V1PartFiles":{"properties":{"source_step_url":{"type":"string","title":"Source Step Url"},"normalized_step_url":{"type":"string","title":"Normalized Step Url","description":"The analyzed STEP re-oriented into the coordinate frame used by the returned geometry."},"formed_model_url":{"type":"string","title":"Formed Model Url"},"flat_pattern_step_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Flat Pattern Step Url"},"flat_pattern_model_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Flat Pattern Model Url"},"production_step_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Production Step Url"},"production_model_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Production Model Url"},"production_flat_step_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Production Flat Step Url"},"production_flat_model_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Production Flat Model Url"},"production_dxf_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Production Dxf Url","description":"Laser-ready DXF of the prepared flat pattern, unfolded with the tooling K-factor. Sheet-metal parts only."},"production_bend_lines_dxf_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Production Bend Lines Dxf Url","description":"The same flat pattern with bend lines drawn; sheet-metal parts with bends."}},"type":"object","required":["source_step_url","normalized_step_url","formed_model_url"],"title":"V1PartFiles","description":"Stable authenticated links; storage paths remain private."},"V1PartInstance":{"properties":{"id":{"type":"string","title":"Id"},"part_id":{"type":"string","title":"Part Id"},"model_part_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model Part Id","description":"Mesh-name identity in the shared assembly GLB; may differ from part_id after a copy."},"instance_index":{"type":"integer","minimum":0.0,"title":"Instance Index"},"transform":{"items":{"items":{"type":"number"},"type":"array"},"type":"array","title":"Transform"}},"type":"object","required":["id","part_id","instance_index","transform"],"title":"V1PartInstance"},"V1PaymentMethod":{"properties":{"object":{"type":"string","const":"payment_method","title":"Object","default":"payment_method"},"brand":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Brand"},"last4":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last4"},"exp_month":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Exp Month"},"exp_year":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Exp Year"},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"}},"type":"object","title":"V1PaymentMethod","description":"The card saved for headless API orders (set up on the account page)."},"V1PaymentMethodPayment":{"properties":{"type":{"type":"string","const":"payment_method","title":"Type"},"id":{"type":"string","title":"Id","description":"A Stripe PaymentMethod id (`pm_...`) usable off-session for this account's customer, for callers that manage their own payment details."}},"additionalProperties":false,"type":"object","required":["type","id"],"title":"V1PaymentMethodPayment"},"V1Point":{"properties":{"x":{"type":"number","title":"X"},"y":{"type":"number","title":"Y"},"z":{"type":"number","title":"Z"}},"type":"object","required":["x","y","z"],"title":"V1Point"},"V1PowderCoatColor":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"slug":{"type":"string","title":"Slug"},"hex_color":{"type":"string","title":"Hex Color"},"rgb_r":{"type":"number","title":"Rgb R"},"rgb_g":{"type":"number","title":"Rgb G"},"rgb_b":{"type":"number","title":"Rgb B"},"viewer":{"$ref":"#/components/schemas/V1ViewerMaterial"},"price_multiplier":{"type":"number","title":"Price Multiplier","default":1},"base_price_cents":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Base Price Cents"},"price_per_cm2_cents":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Price Per Cm2 Cents"},"available":{"type":"boolean","title":"Available","default":true}},"type":"object","required":["id","name","slug","hex_color","rgb_r","rgb_g","rgb_b","viewer"],"title":"V1PowderCoatColor"},"V1PriceTier":{"properties":{"quantity":{"type":"integer","minimum":1.0,"title":"Quantity"},"unit_amount_cents":{"type":"integer","title":"Unit Amount Cents"}},"type":"object","required":["quantity","unit_amount_cents"],"title":"V1PriceTier","description":"Per-unit price that applies at or above `quantity`."},"V1PricingMetadata":{"properties":{"version":{"type":"string","title":"Version"},"calculator":{"type":"string","title":"Calculator"},"components":{"additionalProperties":{"type":"string"},"type":"object","title":"Components","description":"Pricing component name to the rule version applied."},"config_hash":{"type":"string","title":"Config Hash","description":"Fingerprint of the rule set; equal hashes priced identically."}},"type":"object","required":["version","calculator","config_hash"],"title":"V1PricingMetadata","description":"Which pricing rules produced a number, for audit and reproducibility.\n\nContains only rule identifiers; never costs, margins, or rates."},"V1ProductionEstimate":{"properties":{"speed":{"type":"string","enum":["standard","expedited"],"title":"Speed"},"production_days":{"type":"integer","title":"Production Days"},"estimated_ship_date":{"type":"string","format":"date","title":"Estimated Ship Date"},"surcharge_cents":{"type":"integer","title":"Surcharge Cents","default":0},"explanation":{"items":{"type":"string"},"type":"array","title":"Explanation"}},"type":"object","required":["speed","production_days","estimated_ship_date"],"title":"V1ProductionEstimate"},"V1ProductionFilesStatus":{"properties":{"status":{"type":"string","enum":["skipped","queued","processing","ready","failed"],"title":"Status"},"status_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status Url"},"reason":{"anyOf":[{"type":"string","enum":["not_requested","disabled_by_request","requirements_missing","dfm_blocked"]},{"type":"null"}],"title":"Reason"},"error":{"anyOf":[{"$ref":"#/components/schemas/V1ResourceError"},{"type":"null"}]},"review_warning":{"anyOf":[{"$ref":"#/components/schemas/V1ManufacturingReviewWarning"},{"type":"null"}]},"corrections_applied":{"type":"boolean","title":"Corrections Applied","default":false}},"type":"object","required":["status"],"title":"V1ProductionFilesStatus"},"V1ProductionTooling":{"properties":{"k_factor":{"type":"number","title":"K Factor"},"bend_radius_mm":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Bend Radius Mm"},"punch_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Punch Id"},"die_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Die Id"},"calibration_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Calibration Id"}},"type":"object","required":["k_factor"],"title":"V1ProductionTooling","description":"The press-brake setup the production files were prepared for."},"V1QuantityOption":{"properties":{"quantity":{"type":"integer","title":"Quantity"},"unit_amount_cents":{"type":"integer","title":"Unit Amount Cents"},"amount_cents":{"type":"integer","title":"Amount Cents"},"line_items":{"items":{"$ref":"#/components/schemas/V1QuoteLineItem"},"type":"array","title":"Line Items"},"assembly_operations_amount_cents":{"type":"integer","title":"Assembly Operations Amount Cents","default":0}},"type":"object","required":["quantity","unit_amount_cents","amount_cents"],"title":"V1QuantityOption","description":"Price of the same configuration at another quantity."},"V1Quote":{"properties":{"id":{"type":"string","title":"Id"},"object":{"type":"string","const":"quote","title":"Object","default":"quote"},"api_version":{"type":"string","const":"2026-09-01","title":"Api Version","default":"2026-09-01"},"dfm_ruleset_version":{"type":"string","title":"Dfm Ruleset Version","default":"2026-09-28-v8"},"status":{"type":"string","enum":["processing","requires_input","ready","blocked","expired","failed"],"title":"Status"},"status_url":{"type":"string","title":"Status Url"},"design_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Design Id"},"currency":{"type":"string","const":"usd","title":"Currency","default":"usd"},"amount_subtotal_cents":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Amount Subtotal Cents","description":"Sum of `items[].amount_cents`."},"amount_shipping_cents":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Amount Shipping Cents","description":"Null: no shipping option is selected on a quote."},"amount_tax_cents":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Amount Tax Cents","description":"Null: tax is calculated at order time."},"amount_total_cents":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Amount Total Cents","description":"`amount_subtotal_cents` + `amount_shipping_cents` + `amount_tax_cents`, treating null as 0."},"items":{"items":{"$ref":"#/components/schemas/V1QuotedDesign"},"type":"array","title":"Items"},"requirements":{"items":{"$ref":"#/components/schemas/V1Requirement"},"type":"array","title":"Requirements"},"fulfillment":{"anyOf":[{"$ref":"#/components/schemas/V1FulfillmentEstimate"},{"type":"null"}]},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"completed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Completed At"},"expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Expires At"},"error":{"anyOf":[{"$ref":"#/components/schemas/V1ResourceError"},{"type":"null"}]}},"type":"object","required":["id","status","status_url","created_at","updated_at"],"title":"V1Quote","description":"An immutable priced evaluation of a basket of designs.\n\nQuotes never select a shipping option or compute tax; each\n`fulfillment.shipping_options[].amount_cents` is additive at order time.\nTo change a quote, create a new one."},"V1QuoteItemRequest":{"additionalProperties":false,"properties":{"generate_production_files":{"default":false,"description":"Prepare production files asynchronously from this same manufacturing evaluation.","title":"Generate Production Files","type":"boolean"},"design_id":{"title":"Design Id","type":"string"},"quantity":{"default":1,"description":"Completed units of this design.","maximum":1000000,"minimum":1,"title":"Quantity","type":"integer"},"configuration":{"$ref":"#/components/schemas/V1ManufacturingConfiguration"},"client_reference_id":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"title":"Client Reference Id"},"quantity_options":{"description":"Up to ten alternative quantities to price alongside `quantity`. Each is returned in `quantity_options[]` with its unit and total price for this exact configuration; the quote's own totals and fulfillment still use `quantity`.","items":{"type":"integer"},"maxItems":10,"title":"Quantity Options","type":"array"}},"required":["design_id","configuration"],"title":"V1QuoteItemRequest","type":"object"},"V1QuoteLineItem":{"properties":{"part_id":{"type":"string","title":"Part Id"},"process":{"type":"string","enum":["sheet_metal","tube_laser"],"title":"Process"},"quantity":{"type":"integer","title":"Quantity","description":"Manufactured parts: design quantity × `instance_count`."},"unit_amount_cents":{"type":"integer","title":"Unit Amount Cents","description":"Effective price per manufactured part after discounts, including operations."},"amount_cents":{"type":"integer","title":"Amount Cents","description":"`unit_amount_cents` × `quantity`."},"discounts":{"items":{"$ref":"#/components/schemas/V1LineItemDiscount"},"type":"array","title":"Discounts"},"breakdown":{"items":{"$ref":"#/components/schemas/V1LineItemBreakdown"},"type":"array","title":"Breakdown"},"material_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Material Id"},"tube_profile_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tube Profile Id"},"pricing_version":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Pricing Version"},"pricing":{"anyOf":[{"$ref":"#/components/schemas/V1PricingMetadata"},{"type":"null"}]}},"type":"object","required":["part_id","process","quantity","unit_amount_cents","amount_cents"],"title":"V1QuoteLineItem","description":"Pricing for one unique part. DFM findings for the part live in the\nenclosing item's `dfm.parts` entry with the same `part_id`."},"V1QuoteRequest":{"additionalProperties":false,"description":"Create one quote for one or more configured designs.","properties":{"items":{"items":{"$ref":"#/components/schemas/V1QuoteItemRequest"},"minItems":1,"title":"Items","type":"array"},"ship_to":{"anyOf":[{"$ref":"#/components/schemas/V1ShipTo"},{"type":"null"}],"default":null}},"required":["items"],"title":"V1QuoteRequest","type":"object"},"V1QuotedDesign":{"properties":{"pricing_token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Pricing Token","description":"Owner-bound pricing snapshot, valid for five minutes. Use quotes.reprice for quantity-only edits; checkout still requires a full quote."},"design_id":{"type":"string","title":"Design Id"},"quantity":{"type":"integer","title":"Quantity","description":"Completed units of the design."},"status":{"type":"string","enum":["requires_input","ready","blocked"],"title":"Status","default":"ready"},"client_reference_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Client Reference Id"},"quantity_options":{"items":{"$ref":"#/components/schemas/V1QuantityOption"},"type":"array","title":"Quantity Options","description":"Prices at the alternative quantities requested in `quantity_options`, for the same configuration."},"unit_amount_cents":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Unit Amount Cents","description":"`amount_cents` ÷ `quantity`, rounded."},"amount_cents":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Amount Cents","description":"Sum of `line_items[].amount_cents` plus `assembly_operations_amount_cents`."},"assembly_operations_amount_cents":{"type":"integer","title":"Assembly Operations Amount Cents","default":0},"dfm":{"$ref":"#/components/schemas/V1DFMReport"},"requirements":{"items":{"$ref":"#/components/schemas/V1Requirement"},"type":"array","title":"Requirements"},"line_items":{"items":{"$ref":"#/components/schemas/V1QuoteLineItem"},"type":"array","title":"Line Items"},"assembly_operations":{"items":{"$ref":"#/components/schemas/V1WeldingOperation"},"type":"array","title":"Assembly Operations"},"pricing_version":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Pricing Version"},"pricing":{"anyOf":[{"$ref":"#/components/schemas/V1PricingMetadata"},{"type":"null"}]}},"type":"object","required":["design_id","quantity","dfm"],"title":"V1QuotedDesign"},"V1RepriceRequest":{"properties":{"pricing_token":{"type":"string","maxLength":64,"minLength":40,"pattern":"^[A-Za-z0-9_-]+$","title":"Pricing Token"},"quantity":{"type":"integer","maximum":1000000.0,"minimum":1.0,"title":"Quantity"}},"additionalProperties":false,"type":"object","required":["pricing_token","quantity"],"title":"V1RepriceRequest"},"V1Requirement":{"properties":{"code":{"type":"string","title":"Code"},"message":{"type":"string","title":"Message"},"part_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Part Id"},"part_ids":{"items":{"type":"string"},"type":"array","title":"Part Ids"},"field":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Field"},"allowed_values_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Allowed Values Url"}},"type":"object","required":["code","message"],"title":"V1Requirement"},"V1ResourceError":{"properties":{"code":{"type":"string","title":"Code"},"message":{"type":"string","title":"Message"}},"type":"object","required":["code","message"],"title":"V1ResourceError"},"V1ReviewLink":{"properties":{"id":{"type":"string","title":"Id"},"object":{"type":"string","const":"review_link","title":"Object","default":"review_link"},"status":{"type":"string","enum":["open","expired"],"title":"Status","default":"open"},"design_id":{"type":"string","title":"Design Id"},"dfm_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Dfm Id"},"review_url":{"type":"string","title":"Review Url"},"configuration":{"$ref":"#/components/schemas/V1ManufacturingConfiguration"},"configuration_updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Configuration Updated At","description":"When a person last saved changes on the website; null until then."},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"},"expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Expires At"}},"type":"object","required":["id","design_id","review_url","configuration","created_at"],"title":"V1ReviewLink","description":"A website hand-off for one design.\n\n`review_url` opens the design in the RMFG configurator with\n`configuration` applied. When a person changes and saves the\nconfiguration there, `configuration` and `configuration_updated_at` on\nthis resource update; the API caller reads them back and continues\n(DFM, quote, cart) with what the person chose."},"V1ReviewLinkCreateRequest":{"properties":{"design_id":{"type":"string","title":"Design Id"},"configuration":{"$ref":"#/components/schemas/V1ManufacturingConfiguration","description":"Starting configuration shown on the page; may be empty."},"dfm_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Dfm Id","description":"Attach the link to a DFM report so the page opens that report's exact configuration."}},"additionalProperties":false,"type":"object","required":["design_id"],"title":"V1ReviewLinkCreateRequest"},"V1ReviewPage":{"properties":{"id":{"type":"string","title":"Id"},"object":{"type":"string","const":"review_page","title":"Object","default":"review_page"},"status":{"type":"string","enum":["open","expired"],"title":"Status","default":"open"},"design_id":{"type":"string","title":"Design Id"},"dfm_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Dfm Id"},"design":{"$ref":"#/components/schemas/V1Design"},"configuration":{"$ref":"#/components/schemas/V1ManufacturingConfiguration"},"configuration_updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Configuration Updated At"},"model_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model Url","description":"Token-authorized download of the whole-design model."},"part_model_urls":{"additionalProperties":{"type":"string"},"type":"object","title":"Part Model Urls","description":"Token-authorized formed-model download per part id."},"part_flat_model_urls":{"additionalProperties":{"type":"string"},"type":"object","title":"Part Flat Model Urls"}},"type":"object","required":["id","design_id","design","configuration"],"title":"V1ReviewPage","description":"What the website needs to render a review link. The link token is the\ncredential; no API key is involved."},"V1ReviewPageConfigurationUpdate":{"properties":{"configuration":{"$ref":"#/components/schemas/V1ManufacturingConfiguration"},"generate_production_files":{"type":"boolean","title":"Generate Production Files","description":"Prepare production files for this configuration so the review page can show exactly how the part will be manufactured.","default":true}},"additionalProperties":false,"type":"object","required":["configuration"],"title":"V1ReviewPageConfigurationUpdate"},"V1ReviewPageQuoteRequest":{"properties":{"preview":{"type":"boolean","title":"Preview","description":"Preview interactive pricing using a recent owner-bound snapshot when available. Does not create a checkout quote.","default":false},"pricing_token":{"anyOf":[{"type":"string","maxLength":64,"minLength":40,"pattern":"^[A-Za-z0-9_-]+$"},{"type":"null"}],"title":"Pricing Token"},"quantity_options":{"items":{"type":"integer"},"type":"array","maxItems":10,"title":"Quantity Options"},"quantity":{"type":"integer","maximum":1000000.0,"minimum":1.0,"title":"Quantity","default":1},"configuration":{"$ref":"#/components/schemas/V1ManufacturingConfiguration"},"ship_to":{"anyOf":[{"$ref":"#/components/schemas/V1ShipTo"},{"type":"null"}]}},"additionalProperties":false,"type":"object","required":["configuration"],"title":"V1ReviewPageQuoteRequest"},"V1SavedBendChecksSummary":{"properties":{"status":{"type":"string","enum":["pending","passed_sampled","needs_review","unavailable"],"title":"Status"},"warning_count":{"type":"integer","title":"Warning Count"},"collision_count":{"type":"integer","title":"Collision Count"},"url":{"type":"string","title":"Url"}},"type":"object","required":["status","warning_count","collision_count","url"],"title":"V1SavedBendChecksSummary"},"V1SavedBendPreview":{"properties":{"viewer_url":{"type":"string","title":"Viewer Url"},"asset_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Asset Url"},"format":{"type":"string","const":"glb","title":"Format","default":"glb"},"size_bytes":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Size Bytes"}},"type":"object","required":["viewer_url","asset_url","size_bytes"],"title":"V1SavedBendPreview"},"V1SavedBendProgram":{"properties":{"id":{"type":"string","title":"Id"},"object":{"type":"string","const":"bend_program","title":"Object","default":"bend_program"},"status":{"type":"string","enum":["queued","processing","completed","failed"],"title":"Status"},"progress":{"anyOf":[{"$ref":"#/components/schemas/V1BendGenerationProgress"},{"type":"null"}]},"url":{"type":"string","title":"Url"},"dfm_id":{"type":"string","title":"Dfm Id"},"part_id":{"type":"string","title":"Part Id"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"completed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Completed At"},"program":{"anyOf":[{"$ref":"#/components/schemas/V1SavedBendProgramSummary"},{"type":"null"}]},"checks":{"$ref":"#/components/schemas/V1SavedBendChecksSummary"},"preview":{"$ref":"#/components/schemas/V1SavedBendPreview"},"source":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Source"},"error":{"anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"title":"Error"},"machine_ready":{"type":"boolean","const":false,"title":"Machine Ready","default":false}},"type":"object","required":["id","status","url","dfm_id","part_id","created_at","completed_at","program","checks","preview","source","error"],"title":"V1SavedBendProgram","description":"Durable bend generation resource. A completed run can still find collisions."},"V1SavedBendProgramCreate":{"properties":{"dfm_id":{"type":"string","maxLength":100,"minLength":1,"title":"Dfm Id"},"part_id":{"type":"string","maxLength":100,"minLength":1,"title":"Part Id"}},"additionalProperties":false,"type":"object","required":["dfm_id","part_id"],"title":"V1SavedBendProgramCreate"},"V1SavedBendProgramSummary":{"properties":{"bend_count":{"type":"integer","title":"Bend Count"},"setup_count":{"type":"integer","title":"Setup Count"},"tooling_changes":{"type":"integer","title":"Tooling Changes"},"url":{"type":"string","title":"Url"}},"type":"object","required":["bend_count","setup_count","tooling_changes","url"],"title":"V1SavedBendProgramSummary"},"V1SetupIntent":{"properties":{"object":{"type":"string","const":"setup_intent","title":"Object","default":"setup_intent"},"id":{"type":"string","title":"Id"},"client_secret":{"type":"string","title":"Client Secret"}},"type":"object","required":["id","client_secret"],"title":"V1SetupIntent"},"V1SetupIntentConfirmRequest":{"properties":{"setup_intent_id":{"type":"string","title":"Setup Intent Id"}},"additionalProperties":false,"type":"object","required":["setup_intent_id"],"title":"V1SetupIntentConfirmRequest"},"V1ShipTo":{"additionalProperties":false,"properties":{"name":{"maxLength":200,"minLength":1,"title":"Name","type":"string"},"company":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Company"},"street1":{"maxLength":200,"minLength":1,"title":"Street1","type":"string"},"street2":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Street2"},"city":{"maxLength":100,"minLength":1,"title":"City","type":"string"},"state":{"maxLength":2,"minLength":2,"title":"State","type":"string"},"postal_code":{"maxLength":10,"minLength":5,"title":"Postal Code","type":"string"},"country":{"const":"US","default":"US","title":"Country","type":"string"},"phone":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Phone"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Email"}},"required":["name","street1","city","state","postal_code"],"title":"V1ShipTo","type":"object"},"V1ShippingOption":{"properties":{"id":{"type":"string","title":"Id"},"production_speed":{"type":"string","enum":["standard","expedited"],"title":"Production Speed"},"carrier":{"type":"string","title":"Carrier"},"service":{"type":"string","title":"Service"},"amount_cents":{"type":"integer","title":"Amount Cents"},"production_surcharge_cents":{"type":"integer","title":"Production Surcharge Cents","default":0},"planned_ship_date":{"type":"string","format":"date","title":"Planned Ship Date"},"estimated_delivery_date":{"type":"string","format":"date","title":"Estimated Delivery Date"},"delivery_days":{"type":"integer","title":"Delivery Days"},"delivery_date_guaranteed":{"type":"boolean","title":"Delivery Date Guaranteed","default":false},"requires_freight":{"type":"boolean","title":"Requires Freight","default":false},"rate_source":{"type":"string","enum":["live","estimated"],"title":"Rate Source"}},"type":"object","required":["id","production_speed","carrier","service","amount_cents","planned_ship_date","estimated_delivery_date","delivery_days","rate_source"],"title":"V1ShippingOption"},"V1StandoffOperation":{"additionalProperties":false,"properties":{"hole_id":{"title":"Hole Id","type":"integer"},"standoff_id":{"description":"`id` from GET /v1/hardware/standoffs.","title":"Standoff Id","type":"string"},"side":{"default":"top","description":"Sheet face the standoff is installed from.","enum":["top","bottom"],"title":"Side","type":"string"}},"required":["hole_id","standoff_id"],"title":"V1StandoffOperation","type":"object"},"V1StandoffOption":{"properties":{"id":{"type":"string","title":"Id","description":"Catalog ID; use as `standoff_id` in a configuration."},"size":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Size"},"pem_part_number":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Pem Part Number"},"mcmaster_part_number":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mcmaster Part Number"},"unit_system":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Unit System"},"length_mm":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Length Mm"},"hole_diameter_mm":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Hole Diameter Mm"},"hole_diameter_tolerance_mm":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Hole Diameter Tolerance Mm"},"minimum_sheet_thickness_mm":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Minimum Sheet Thickness Mm"},"minimum_edge_distance_mm":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Minimum Edge Distance Mm"},"material":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Material"},"model_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model Url"}},"type":"object","required":["id"],"title":"V1StandoffOption"},"V1StitchWeldPattern":{"additionalProperties":false,"description":"Repeat beads along the guide's arc length; clip the last bead at its end.\n\nPitch is start-to-start spacing, not the unwelded gap. Reversing the guide\nchanges the starting end. A closed guide is traversed once, without wrapping.","properties":{"length_mm":{"exclusiveMinimum":0,"title":"Length Mm","type":"number"},"pitch_mm":{"exclusiveMinimum":0,"title":"Pitch Mm","type":"number"},"offset_mm":{"default":0,"minimum":0,"title":"Offset Mm","type":"number"}},"required":["length_mm","pitch_mm"],"title":"V1StitchWeldPattern","type":"object"},"V1StudOperation":{"additionalProperties":false,"properties":{"hole_id":{"title":"Hole Id","type":"integer"},"stud_id":{"description":"`id` from GET /v1/hardware/studs.","title":"Stud Id","type":"string"},"side":{"default":"top","description":"Sheet face the stud is installed from.","enum":["top","bottom"],"title":"Side","type":"string"}},"required":["hole_id","stud_id"],"title":"V1StudOperation","type":"object"},"V1StudOption":{"properties":{"id":{"type":"string","title":"Id","description":"Catalog ID; use as `stud_id` in a configuration."},"size":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Size"},"pem_part_number":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Pem Part Number"},"mcmaster_part_number":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mcmaster Part Number"},"unit_system":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Unit System"},"length_mm":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Length Mm"},"thread_length_mm":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Thread Length Mm"},"hole_diameter_mm":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Hole Diameter Mm"},"hole_diameter_tolerance_mm":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Hole Diameter Tolerance Mm"},"base_diameter_mm":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Base Diameter Mm"},"minimum_sheet_thickness_mm":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Minimum Sheet Thickness Mm"},"minimum_edge_distance_mm":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Minimum Edge Distance Mm"},"material":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Material"},"model_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model Url"}},"type":"object","required":["id"],"title":"V1StudOption"},"V1TapOperation":{"additionalProperties":false,"properties":{"hole_id":{"title":"Hole Id","type":"integer"},"tap_id":{"description":"`id` from GET /v1/hardware/taps.","title":"Tap Id","type":"string"}},"required":["hole_id","tap_id"],"title":"V1TapOperation","type":"object"},"V1TapOption":{"properties":{"id":{"type":"string","title":"Id","description":"Catalog ID; use as `tap_id` in a configuration."},"size":{"type":"string","title":"Size"},"thread_standard":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Thread Standard"},"pitch":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Pitch","description":"Thread pitch in the tap's own units: mm for metric taps, threads per inch for imperial taps."},"major_diameter_mm":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Major Diameter Mm"},"hole_diameter_mm":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Hole Diameter Mm","description":"Diameter the hole is laser-cut to before it is tapped (major diameter minus one pitch). Production files resize a tapped hole to this size; the change is reported as a `tap_hole_diameter` transformation on the DFM report."}},"type":"object","required":["id","size"],"title":"V1TapOption"},"V1TubeAnalysis":{"properties":{"holes_coordinate_frame":{"type":"string","enum":["source","normalized"],"title":"Holes Coordinate Frame","description":"Frame of this part's holes. Apply normalized_to_source_transform only for normalized holes, then apply the part instance transform.","default":"normalized"},"detected_profile_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Detected Profile Key"},"selected_profile_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Selected Profile Id"},"length_mm":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Length Mm"},"cross_section":{"anyOf":[{"$ref":"#/components/schemas/V1TubeCrossSection"},{"type":"null"}]},"normalized_to_source_transform":{"anyOf":[{"items":{"items":{"type":"number"},"type":"array"},"type":"array"},{"type":"null"}],"title":"Normalized To Source Transform","description":"4x4 row-major transform from the normalized tube frame back to the uploaded file's coordinates."},"features":{"items":{"$ref":"#/components/schemas/V1TubeFeature"},"type":"array","title":"Features"}},"type":"object","title":"V1TubeAnalysis"},"V1TubeCrossSection":{"properties":{"shape":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Shape"},"outer_width_mm":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Outer Width Mm"},"outer_height_mm":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Outer Height Mm"},"outer_diameter_mm":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Outer Diameter Mm"},"wall_thickness_mm":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Wall Thickness Mm"}},"type":"object","title":"V1TubeCrossSection"},"V1TubeFeature":{"properties":{"type":{"type":"string","title":"Type"},"id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Id"},"diameter_mm":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Diameter Mm"},"center":{"anyOf":[{"$ref":"#/components/schemas/V1Point"},{"type":"null"}]},"wall_normal":{"anyOf":[{"$ref":"#/components/schemas/V1Point"},{"type":"null"}]},"wall":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Wall"},"position_along_tube_mm":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Position Along Tube Mm"}},"additionalProperties":true,"type":"object","required":["type"],"title":"V1TubeFeature","description":"A detected tube feature such as a round hole or an end cut.\n\n`type` is stable. Additional type-specific measurements may appear and are\ninformational only."},"V1TubeProfile":{"properties":{"id":{"type":"string","title":"Id"},"material":{"type":"string","title":"Material"},"type":{"type":"string","title":"Type"},"shape":{"type":"string","title":"Shape"},"display_name":{"type":"string","title":"Display Name"},"outer_width_mm":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Outer Width Mm"},"outer_height_mm":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Outer Height Mm"},"outer_diameter_mm":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Outer Diameter Mm"},"inner_diameter_mm":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Inner Diameter Mm"},"wall_thickness_mm":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Wall Thickness Mm"},"outer_corner_radius_mm":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Outer Corner Radius Mm"},"inner_corner_radius_mm":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Inner Corner Radius Mm"},"weight_kg_per_m":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Weight Kg Per M"},"default_stock_length_mm":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Default Stock Length Mm"},"step_available":{"type":"boolean","title":"Step Available","default":false},"dxf_available":{"type":"boolean","title":"Dxf Available","default":false}},"type":"object","required":["id","material","type","shape","display_name"],"title":"V1TubeProfile"},"V1ViewerMaterial":{"properties":{"metalness":{"type":"number","title":"Metalness"},"roughness":{"type":"number","title":"Roughness"},"env_map_intensity":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Env Map Intensity"}},"type":"object","required":["metalness","roughness"],"title":"V1ViewerMaterial","description":"Physically based rendering hints for 3D previews of a powder coat."},"V1WebhookDelivery":{"properties":{"id":{"type":"string","title":"Id"},"object":{"type":"string","const":"webhook_delivery","title":"Object","default":"webhook_delivery"},"event_id":{"type":"string","title":"Event Id"},"event_type":{"type":"string","enum":["bend_program.completed","bend_program.failed","design.ready","design.failed","dfm_report.production_files.ready","dfm_report.production_files.failed","quote.ready","quote.failed","cart.checked_out","order.status_changed"],"title":"Event Type"},"status":{"type":"string","enum":["pending","success","failed"],"title":"Status"},"attempts":{"type":"integer","title":"Attempts"},"next_attempt_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Next Attempt At"},"last_status_code":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Last Status Code"},"last_error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Error"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"delivered_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Delivered At"},"payload":{"additionalProperties":true,"type":"object","title":"Payload"}},"type":"object","required":["id","event_id","event_type","status","attempts","created_at","payload"],"title":"V1WebhookDelivery"},"V1WebhookEndpoint":{"properties":{"id":{"type":"string","title":"Id"},"object":{"type":"string","const":"webhook_endpoint","title":"Object","default":"webhook_endpoint"},"url":{"type":"string","title":"Url"},"events":{"items":{"type":"string","enum":["bend_program.completed","bend_program.failed","design.ready","design.failed","dfm_report.production_files.ready","dfm_report.production_files.failed","quote.ready","quote.failed","cart.checked_out","order.status_changed"]},"type":"array","title":"Events"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"active":{"type":"boolean","title":"Active","default":true},"secret":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Secret","description":"Signing secret; returned only when the endpoint is created."},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"}},"type":"object","required":["id","url","events","created_at"],"title":"V1WebhookEndpoint","description":"Where lifecycle events are posted for this API caller.\n\nDeliveries are signed: `X-RMFG-Signature: v1=<hex HMAC-SHA256 of\n\"<X-RMFG-Timestamp>.<raw body>\" using the endpoint secret>`. The body is\n`{id, type, created_at, data}`; `data.status_url` points at the resource\nto fetch, so a receiver never needs to trust the payload alone. Failed\ndeliveries retry after 1m, 5m, 30m, 2h, and 8h."},"V1WebhookEndpointCreateRequest":{"properties":{"url":{"type":"string","maxLength":2000,"minLength":12,"title":"Url","description":"HTTPS URL that receives POSTed events."},"events":{"items":{"type":"string","enum":["design.ready","design.failed","dfm_report.production_files.ready","dfm_report.production_files.failed","quote.ready","quote.failed","cart.checked_out","order.status_changed"]},"type":"array","maxItems":20,"minItems":1,"title":"Events","description":"Event types to deliver to this endpoint: design.ready, design.failed, dfm_report.production_files.ready, dfm_report.production_files.failed, quote.ready, quote.failed, cart.checked_out, order.status_changed."},"description":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Description"}},"additionalProperties":false,"type":"object","required":["url","events"],"title":"V1WebhookEndpointCreateRequest"},"V1WeldCandidate":{"properties":{"id":{"type":"string","title":"Id"},"operation":{"$ref":"#/components/schemas/V1WeldingOperation"}},"type":"object","required":["id","operation"],"title":"V1WeldCandidate"},"V1WeldCandidates":{"properties":{"object":{"type":"string","const":"weld_candidates","title":"Object","default":"weld_candidates"},"design_id":{"type":"string","title":"Design Id"},"coordinate_frame":{"type":"string","const":"assembly_model","title":"Coordinate Frame","default":"assembly_model"},"candidates":{"items":{"$ref":"#/components/schemas/V1WeldCandidate"},"type":"array","title":"Candidates"}},"type":"object","required":["design_id","candidates"],"title":"V1WeldCandidates","description":"Detected contact boundaries, not a drawing-approved weld plan.\n\nCopy selected operations into configuration.assembly_operations. Set method,\nfinish, and access from the drawing. Add a stitch pattern for intermittent\nbeads; inaccessible or unwanted contacts can be omitted."},"V1WeldPoint":{"additionalProperties":false,"properties":{"x":{"title":"X","type":"number"},"y":{"title":"Y","type":"number"},"z":{"title":"Z","type":"number"}},"required":["x","y","z"],"title":"V1WeldPoint","type":"object"},"V1WeldingOperation":{"additionalProperties":false,"description":"A welded seam. `part_instance_ids` with one entry is a seam on that\ninstance (for example a rolled edge); two or more entries join them.","properties":{"type":{"const":"weld","default":"weld","title":"Type","type":"string"},"method":{"default":"auto","enum":["auto","mig","tig"],"title":"Method","type":"string"},"weld_length_mm":{"anyOf":[{"exclusiveMinimum":0,"type":"number"},{"type":"null"}],"default":null,"description":"Total deposited weld length, excluding stitch gaps. Calculated from the path and optional stitch pattern when omitted; if supplied it must match.","title":"Weld Length Mm"},"stitch":{"anyOf":[{"$ref":"#/components/schemas/V1StitchWeldPattern"},{"type":"null"}],"default":null},"path_points_mm":{"anyOf":[{"items":{"$ref":"#/components/schemas/V1WeldPoint"},"maxItems":1024,"minItems":2,"type":"array"},{"type":"null"}],"default":null,"description":"Ordered seam polyline in millimetres, in the analyzed assembly model's Z-up coordinate frame (before GLTF axis conversion or viewer scaling). GET the design's weld_candidates_url for located paths. Its length must match weld_length_mm within 0.01 mm or one part per million for a continuous weld. Required for a ready DFM report or quote. Omitting it returns a blocking weld_path_required finding; no location is invented. With stitch, this is the full guide; only the repeated beads are welded and priced.","title":"Path Points Mm"},"part_instance_ids":{"items":{"type":"string"},"minItems":1,"title":"Part Instance Ids","type":"array"},"weld_finish":{"default":"none","enum":["none","rough","fine"],"title":"Weld Finish","type":"string"},"joint_access":{"default":"open","enum":["open","tight","blind"],"title":"Joint Access","type":"string"}},"required":["part_instance_ids"],"title":"V1WeldingOperation","type":"object"}},"securitySchemes":{"BearerAuth":{"type":"http","description":"Preferred public API authentication: Authorization: Bearer <access token or API key>","scheme":"bearer"}}}}