{"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 <API key>`."},"servers":[{"url":"https://api.rmfg.com"}],"paths":{"/v1/dropship/items":{"get":{"tags":["dropship-v1"],"summary":"List Items","description":"Lists this account's approved and requested dropship items.\n\nkind='part' items carry `part` (material summary); kind='assembly' items\ncarry `assembly` with part_count/has_welds computed from the sample\norder's recipe (one recipe query per assembly item).","operationId":"dropship.items.list","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DropshipItemsResponse"}}}},"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/dropship/orders":{"post":{"tags":["dropship-v1"],"summary":"Create Dropship Order","description":"Creates a dropship order.\n\nIdempotent on (account, external_ref): a repeat external_ref returns the\nexisting order with status 200. On-demand items charge immediately.\nContract items allocate committed quantity without a second parts charge\nand begin on production hold for an explicit Factory release.","operationId":"dropship.orders.create","security":[{"BearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DropshipCreateOrderRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DropshipOrderResponse"}}}},"200":{"description":"Existing order for a repeated external_ref.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DropshipOrderResponse"}}}},"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":"Idempotency-Key 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"}}}}}},"get":{"tags":["dropship-v1"],"summary":"List Dropship Orders","description":"Lists this account's orders, optionally filtered by external_ref.","operationId":"dropship.orders.list","security":[{"BearerAuth":[]}],"parameters":[{"name":"external_ref","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"External Ref"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DropshipOrdersResponse"}}}},"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/dropship/orders/{order_id}":{"get":{"tags":["dropship-v1"],"summary":"Get Dropship Order","description":"Returns one order with status, tracking, and charge breakdown.","operationId":"dropship.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/DropshipOrderResponse"}}}},"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/dropship/webhook-endpoints":{"get":{"tags":["dropship-v1"],"summary":"List Endpoints","description":"Lists active webhook endpoints. Secrets are never returned here.","operationId":"dropship.webhook_endpoints.list","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DropshipWebhookEndpointsResponse"}}}},"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":["dropship-v1"],"summary":"Create Endpoint","description":"Creates a webhook endpoint. The signing secret is returned once.","operationId":"dropship.webhook_endpoints.create","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DropshipWebhookEndpointCreate"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DropshipWebhookEndpoint"}}}},"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":"Idempotency-Key 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/dropship/webhook-endpoints/{endpoint_id}":{"delete":{"tags":["dropship-v1"],"summary":"Delete Endpoint","description":"Deactivates a webhook endpoint (pending deliveries are abandoned).","operationId":"dropship.webhook_endpoints.delete","security":[{"BearerAuth":[]}],"parameters":[{"name":"endpoint_id","in":"path","required":true,"schema":{"type":"string","title":"Endpoint Id"}}],"responses":{"204":{"description":"Successful Response"},"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":"Idempotency-Key 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":{"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":"Idempotency-Key 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":"Idempotency-Key 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/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":"Idempotency-Key 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"}}],"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}/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":"Idempotency-Key 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}/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":"Idempotency-Key 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/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":"Idempotency-Key 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":{"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":"Idempotency-Key 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":"Idempotency-Key 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":"Idempotency-Key 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":"Idempotency-Key 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":"Idempotency-Key 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/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":"Idempotency-Key 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":"Idempotency-Key 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}/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":"Idempotency-Key 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"}}}}}}}},"components":{"schemas":{"DropshipCreateOrderRequest":{"properties":{"sku":{"type":"string","title":"Sku"},"quantity":{"type":"integer","minimum":1.0,"title":"Quantity"},"external_ref":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"External Ref"},"retail_unit_price_cents":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Retail Unit Price Cents"},"source":{"anyOf":[{"$ref":"#/components/schemas/DropshipOrderSource"},{"type":"null"}]},"ship_to":{"$ref":"#/components/schemas/DropshipShipTo"}},"type":"object","required":["sku","quantity","ship_to"],"title":"DropshipCreateOrderRequest"},"DropshipItem":{"properties":{"id":{"type":"string","title":"Id"},"sku":{"type":"string","title":"Sku"},"name":{"type":"string","title":"Name"},"status":{"type":"string","title":"Status"},"kind":{"type":"string","title":"Kind"},"unit_price_cents":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Unit Price Cents"},"fulfillment_model":{"type":"string","title":"Fulfillment Model","default":"on_demand"},"contract_quantity":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Contract Quantity"},"deposit_paid_cents":{"type":"integer","title":"Deposit Paid Cents","default":0},"production_release_mode":{"type":"string","title":"Production Release Mode","default":"automatic"},"part":{"anyOf":[{"$ref":"#/components/schemas/DropshipItemPart"},{"type":"null"}]},"assembly":{"anyOf":[{"$ref":"#/components/schemas/DropshipItemAssembly"},{"type":"null"}]}},"type":"object","required":["id","sku","name","status","kind"],"title":"DropshipItem"},"DropshipItemAssembly":{"properties":{"id":{"type":"string","title":"Id"},"part_count":{"type":"integer","title":"Part Count"},"has_welds":{"type":"boolean","title":"Has Welds"},"file_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"File Name"}},"type":"object","required":["id","part_count","has_welds"],"title":"DropshipItemAssembly"},"DropshipItemPart":{"properties":{"id":{"type":"string","title":"Id"},"material":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Material"},"material_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Material Type"},"thickness":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Thickness"}},"type":"object","required":["id"],"title":"DropshipItemPart"},"DropshipItemsResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/DropshipItem"},"type":"array","title":"Items"}},"type":"object","required":["items"],"title":"DropshipItemsResponse"},"DropshipOrder":{"properties":{"id":{"type":"string","title":"Id"},"status":{"type":"string","title":"Status"},"external_ref":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"External Ref"},"sku":{"type":"string","title":"Sku"},"quantity":{"type":"integer","title":"Quantity"},"parts_total_cents":{"type":"integer","title":"Parts Total Cents"},"billing_mode":{"type":"string","title":"Billing Mode","default":"per_order"},"production_hold":{"type":"boolean","title":"Production Hold","default":false},"shipping":{"$ref":"#/components/schemas/DropshipOrderShipping"},"tracking":{"anyOf":[{"$ref":"#/components/schemas/DropshipOrderTracking"},{"type":"null"}]},"charges":{"anyOf":[{"items":{"$ref":"#/components/schemas/DropshipOrderCharge"},"type":"array"},{"type":"null"}],"title":"Charges"},"created_at":{"type":"string","title":"Created At"}},"type":"object","required":["id","status","sku","quantity","parts_total_cents","shipping","created_at"],"title":"DropshipOrder"},"DropshipOrderCharge":{"properties":{"kind":{"type":"string","title":"Kind"},"amount_cents":{"type":"integer","title":"Amount Cents"},"status":{"type":"string","title":"Status"},"stripe_payment_intent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Stripe Payment Intent Id"},"created_at":{"type":"string","title":"Created At"}},"type":"object","required":["kind","amount_cents","status","created_at"],"title":"DropshipOrderCharge"},"DropshipOrderResponse":{"properties":{"order":{"$ref":"#/components/schemas/DropshipOrder"}},"type":"object","required":["order"],"title":"DropshipOrderResponse"},"DropshipOrderShipping":{"properties":{"status":{"type":"string","title":"Status"}},"type":"object","required":["status"],"title":"DropshipOrderShipping"},"DropshipOrderSource":{"properties":{"platform":{"type":"string","maxLength":50,"minLength":1,"title":"Platform"},"store":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Store"},"order_id":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Order Id"},"order_name":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Order Name"},"line_item_id":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Line Item Id"},"line_item_title":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Line Item Title"}},"type":"object","required":["platform"],"title":"DropshipOrderSource","description":"Optional integration metadata for tracing an API order upstream."},"DropshipOrderTracking":{"properties":{"carrier":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Carrier"},"number":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Number"},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Url"}},"type":"object","title":"DropshipOrderTracking"},"DropshipOrdersResponse":{"properties":{"orders":{"items":{"$ref":"#/components/schemas/DropshipOrder"},"type":"array","title":"Orders"}},"type":"object","required":["orders"],"title":"DropshipOrdersResponse"},"DropshipShipTo":{"properties":{"name":{"type":"string","title":"Name"},"street1":{"type":"string","title":"Street1"},"street2":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Street2"},"city":{"type":"string","title":"City"},"state":{"type":"string","title":"State"},"postal_code":{"type":"string","title":"Postal Code"},"country":{"type":"string","title":"Country"},"phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"}},"type":"object","required":["name","street1","city","state","postal_code","country"],"title":"DropshipShipTo","description":"Dropship destination. `postal_code` matches the manufacturing API's\n`ship_to`; the original `zip` name is still accepted on input."},"DropshipWebhookEndpoint":{"properties":{"id":{"type":"string","title":"Id"},"url":{"type":"string","title":"Url"},"events":{"items":{"type":"string"},"type":"array","title":"Events"},"active":{"type":"boolean","title":"Active"},"created_at":{"type":"string","title":"Created At"},"secret":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Secret"}},"type":"object","required":["id","url","events","active","created_at"],"title":"DropshipWebhookEndpoint"},"DropshipWebhookEndpointCreate":{"properties":{"url":{"type":"string","title":"Url"},"events":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Events"}},"type":"object","required":["url"],"title":"DropshipWebhookEndpointCreate"},"DropshipWebhookEndpointsResponse":{"properties":{"endpoints":{"items":{"$ref":"#/components/schemas/DropshipWebhookEndpoint"},"type":"array","title":"Endpoints"}},"type":"object","required":["endpoints"],"title":"DropshipWebhookEndpointsResponse"},"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","session","anonymous_session","internal_service"],"title":"Auth Method","description":"`api_key` for Bearer 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."},"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","minItems":1,"title":"Items"},"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."},"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","minItems":1},{"type":"null"}],"title":"Items"},"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"},"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-01-v2"},"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"},"models_error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Models 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"},"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.","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":{"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"}]},"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"},"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"}},"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-01-v2"},"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":{"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`."},"V1QuotedDesign":{"properties":{"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"},"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":{"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"},"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"},"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":{"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":["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":["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"},"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":{"exclusiveMinimum":0,"title":"Weld Length Mm","type":"number"},"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 uploaded assembly's coordinate frame (before viewer centering/scaling). Its length must match weld_length_mm within 0.01 mm or one part per million. Omit only when seam placement is unknown; no location is invented.","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":["weld_length_mm","part_instance_ids"],"title":"V1WeldingOperation","type":"object"},"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"}},"securitySchemes":{"BearerAuth":{"type":"http","description":"Preferred public API authentication: Authorization: Bearer <API key>","scheme":"bearer"}}}}