{
  "openapi": "3.1.0",
  "info": {
    "contact": {
      "email": "integrations@luminovo.com"
    },
    "description": "The base URL of Luminovo's API is `https://api.luminovo.com/`.\n\n**Versioning**\n\nThis API uses data model versioning to ensure backwards compatibility. The data model version is specified using the `Accept` header. For example, `Accept: application/api.luminovo.rfq-v1+json` specifies version 1 of the RfQ data model. Refer to each endpoint's description for the correct `Accept` header value. If no `Accept` header is provided, the API will return a 404 error.\n\n**Handling Enum Types**\n\nFor all enum types in the API, you must account for an `\"Unknown\"` case. This ensures forward-compatibility, as new enum variants may be introduced without notice within the same data model version. For example, an enum `Status` with variants `Ok` and `Error` may gain a new variant `Warning` at any time.\n",
    "license": {
      "name": "Proprietary",
      "url": "https://www.luminovo.com"
    },
    "title": "Luminovo API",
    "version": "1.0.0",
    "x-logo": {
      "backgroundColor": "#22283c",
      "url": "https://uploads-ssl.webflow.com/5c7fe6c71d33841ef1f9ed4f/5c7fe6c71d33847079f9ee30_logo2.svg"
    }
  },
  "servers": [
    {
      "url": "https://api.luminovo.com"
    }
  ],
  "tags": [
    {
      "description": "An Assembly is a logical group of items that should be assembled into one unit. It represents a complete product or sub-product that can be manufactured, sourced, and managed as a cohesive unit.\nYou can view assemblies in Luminovo under the \"Assemblies\" tab.\n",
      "name": "Assembly",
      "x-displayName": "Assembly"
    },
    {
      "description": "Authentication and token retrieval endpoints.",
      "name": "Authentication",
      "x-displayName": "Authentication"
    },
    {
      "description": "BOM stands for Bill of Materials - it's a comprehensive list of all components, parts, and assemblies required to manufacture a product.\nYou can view BOMs in Luminovo under the respective RfQ.\n",
      "name": "BOM",
      "x-displayName": "BOM"
    },
    {
      "description": "Components are the fundamental building blocks that make up electronic assemblies (PCBs, products, etc.).\nYou can view components in Luminovo under the \"Parts\" tab.\nThere are `OffTheShelf` and `Custom` components in order to get good data quality in Luminovo.\n- `OffTheShelf` are all electonic components which have a MPN and can be purchased from an electronic parts suppliers.\n- `Custom` are all other non-electronic components, such as screws, packaging materials, lables, etc. Also, custom are all electronic components which are not standartized and don't have an MPN.\n",
      "name": "Components",
      "x-displayName": "Components"
    },
    {
      "description": "Get information about a custom part.\n",
      "name": "Custom Part",
      "x-displayName": "Custom Part"
    },
    {
      "description": "Search, Create and Get Customers.\n",
      "name": "Customer",
      "x-displayName": "Customer"
    },
    {
      "description": "**Deprecated.** The demand import endpoint is deprecated and will be removed in a future version.\n\nA demand in Luminovo is a request for a specific quantity of electronic parts or assemblies\nthat need to be delivered by a certain date. Demands are attached to assemblies or components\nwithin Luminovo based on the internal part number.\n",
      "name": "Demand",
      "x-displayName": "Demand"
    },
    {
      "description": "Retrieve calculation plans and their configurations for RFQs.\n",
      "name": "Flexible Calculation",
      "x-displayName": "Flexible Calculation"
    },
    {
      "description": "Get, create, delete and update all your manufacturing resources.\n",
      "name": "Manufacturing and Calculation",
      "x-displayName": "Manufacturing and Calculation"
    },
    {
      "description": "Import offers and inventory data, create custom part offers and get a PCB offer.\n",
      "name": "Offers and Inventory",
      "x-displayName": "Offers and Inventory"
    },
    {
      "description": "This section is relevant for the users of Luminovo’s Customer Collaboration Platform.\nUse the following endpoints to customize the order options your customer receives when ordering via the Customer Collaboration Platform.\n",
      "name": "Order Management",
      "x-displayName": "Order Management"
    },
    {
      "description": "PCB-related endpoints and resources.",
      "name": "PCB",
      "x-displayName": "PCB"
    },
    {
      "description": "Pick and Place (PnP) data for assemblies.\n",
      "name": "PnP",
      "x-displayName": "PnP"
    },
    {
      "description": "**Deprecated.** These endpoints are deprecated and will not be maintained going forward.\nIf you currently rely on them and this is a blocker, please reach out to us.\n\nGet and create purchase orders for a sourcing scenario.\n",
      "name": "Purchase Orders",
      "x-displayName": "Purchase Orders"
    },
    {
      "description": "You can upload the quotation for an RfQ.\n",
      "name": "Quotation",
      "x-displayName": "Quotation"
    },
    {
      "description": "Get one or all RfQ’s, delete, create or update one RfQ.\n",
      "name": "RfQ",
      "x-displayName": "RfQ"
    },
    {
      "description": "A sourcing scenario defines a sourcing configuration for a project. Each scenario specifies which\nassemblies to source (demands), their required quantities, and a set of solution preferences\nthat control how offers are evaluated and selected.\n\nSourcing scenarios belong to a project, which is either an **RFQ** (Request for Quotation) or a\n**Negotiation**. A single project can have multiple scenarios, allowing you to compare\ndifferent sourcing strategies side by side — for example, different order quantities,\nsupplier preferences, or lead time targets.\n\n**Note on solution preferences:** Sourcing scenarios include detailed solution preferences that control\nhow offers are evaluated (e.g., lead time targets, supplier preferences, inventory handling,\npricing filters, packaging, and excess thresholds). These settings are complex and evolve\nfrequently — we update them on a monthly basis. For this reason, **managing solution\npreferences via the API is not supported**. Please configure them through the Luminovo UI\ninstead.\n",
      "name": "Sourcing Scenario",
      "x-displayName": "Sourcing Scenario"
    },
    {
      "description": "Supplier-management related endpoints.\n",
      "name": "Supplier",
      "x-displayName": "Supplier"
    },
    {
      "description": "Get all your Luminovo users.\n",
      "name": "User",
      "x-displayName": "User"
    }
  ],
  "paths": {
    "/assemblies/import": {
      "post": {
        "operationId": "PostAssemblies",
        "parameters": [
          {
            "description": "In case it is set to \"true\" it will allow importing assemblies even if some of the referenced IPNs do not exist in Luminovo.\nThese IPNs will then be recorded in BOM item notes. If set to “false”, the assemblies with missing IPNs will get skipped during import\n",
            "examples": {
              "enabled": {
                "value": "true"
              }
            },
            "in": "query",
            "name": "skip_missing_ipns",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Assemblies"
              }
            }
          },
          "description": "This endpoint allows importing assembly data.\n\n**The import need not include all your assemblies.**\n**Assemblies that were uploaded previously but are not present in a new upload are not deleted.**\n\nAn assembly is a logical group of items that should be assembled into one unit.\nAssemblies can be nested via subassemblies. Nesting has to be acyclic, that is no\nassembly may be referenced in any of its own subassemblies.\n\nAssemblies are uniquely identified by the combination of `internal_part_number` and\n`revision.` That is, an assembly with the same `internal_part_number` and `revision` may\nnot be listed twice. All duplicated assemblies will be skipped during import.\n\nFinally, an assembly will also not be imported if it is part of a circular reference.\nThat is, if an assembly is referenced in any of its own subassemblies.\n",
          "required": true
        },
        "responses": {
          "207": {
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "items": {
                      "$ref": "#/components/schemas/AssemblyImportResponse"
                    }
                  },
                  "type": "object"
                }
              }
            },
            "description": "Successfull import"
          },
          "400": {
            "description": "Bad request"
          }
        },
        "summary": "Import Assembly Data",
        "tags": [
          "Assembly"
        ],
        "security": [
          {
            "BearerAuth": []
          }
        ]
      }
    },
    "/components/import": {
      "post": {
        "operationId": "PostComponents",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Components"
              }
            }
          },
          "description": "Import your ERP component data into Luminovo.\n\nImportant Notes:\n\n- We will update your data once/day.\nFor technical reasons, data sent to this endpoint will be imported only once a day on weekdays (Mon-Fri, early in the morning)\non our side. Hence, newly uploaded data will therefore usually only become available in the product the next day.\nOnly the last uploaded data will be imported, so every new upload to this endpoint will overwrite the previous one from the same day.\n\n- Include all your components in the import.\nComponents with IPNs that were uploaded previously but are not present in a new upload are deleted.\n\nFor best results and most up-to-date component library, we recommend uploading your Components once/day at 11 pm CET.\n",
          "required": true
        },
        "responses": {
          "202": {
            "description": "Accepted response"
          },
          "400": {
            "description": "Bad request"
          }
        },
        "summary": "Import Component Data",
        "tags": [
          "Components"
        ],
        "security": [
          {
            "BearerAuth": []
          }
        ]
      }
    },
    "/offers/import": {
      "post": {
        "operationId": "PostOffers",
        "requestBody": {
          "content": {
            "application/json": {
              "examples": {
                "full-inventory-ipn-offer": {
                  "description": "An inventory offer for an IPN with all fields specified.",
                  "value": [
                    {
                      "availability": {
                        "available_stock": 5626,
                        "lead_time": 254,
                        "on_order": [
                          {
                            "date": "2023-12-24",
                            "quantity": 1000
                          },
                          {
                            "date": "2024-01-08",
                            "quantity": 2000
                          }
                        ],
                        "total_stock": 9386
                      },
                      "customer": {
                        "name": "MyCustomer",
                        "number": "9987"
                      },
                      "notes": "Example notes",
                      "packaging": "Bag",
                      "part": {
                        "internal_part_number": "1000-10"
                      },
                      "prices": [
                        {
                          "moq": 1,
                          "mpq": 10,
                          "unit_price": {
                            "amount": "0.0100",
                            "currency": "EUR"
                          }
                        },
                        {
                          "moq": 100,
                          "mpq": 10,
                          "unit_price": {
                            "amount": "0.0090",
                            "currency": "EUR"
                          }
                        }
                      ],
                      "supplier": {
                        "supplier": "Inventory Site",
                        "supplier_number": "SITE-001",
                        "supplier_part_number": "INV-EXT-SUP-NUMBER",
                        "type": "Internal"
                      },
                      "unit_of_measurement": {
                        "quantity": 0.1,
                        "unit": "Kilogram"
                      },
                      "valid_until": "2030-04-01"
                    }
                  ]
                },
                "full-supplier-part-offer": {
                  "description": "An supplier offer for an off-the-shelf part with all fields specified.",
                  "value": [
                    {
                      "availability": {
                        "available_stock": 5626,
                        "lead_time": 254,
                        "on_order": [
                          {
                            "date": "2023-12-24",
                            "quantity": 1000
                          },
                          {
                            "date": "2024-01-08",
                            "quantity": 2000
                          }
                        ]
                      },
                      "customer": {
                        "name": "MyCustomer",
                        "number": "9987"
                      },
                      "notes": "Example notes",
                      "packaging": "Reel",
                      "part": {
                        "manufacturer": "Panasonic",
                        "manufacturer_part_number": "ERJ-B2BF1R1V"
                      },
                      "price_type": "Contract",
                      "prices": [
                        {
                          "moq": 1,
                          "mpq": 10,
                          "unit_price": {
                            "amount": "0.0100",
                            "currency": "EUR"
                          }
                        },
                        {
                          "moq": 100,
                          "mpq": 10,
                          "unit_price": {
                            "amount": "0.0090",
                            "currency": "EUR"
                          }
                        }
                      ],
                      "supplier": {
                        "stock_location": "USA",
                        "supplier": "Mouser",
                        "supplier_number": "SUP-020",
                        "supplier_part_number": "667-ERJ-B2BF1R1V",
                        "type": "External"
                      },
                      "unit_of_measurement": {
                        "quantity": 1,
                        "unit": "Piece"
                      },
                      "valid_until": "2030-04-01"
                    }
                  ]
                },
                "minimal-inventory-ipn-offer": {
                  "description": "An inventory offer for an IPN with a minimal number of fields specified.",
                  "value": [
                    {
                      "availability": {
                        "available_stock": 251
                      },
                      "part": {
                        "internal_part_number": "1000-10"
                      },
                      "prices": [
                        {
                          "unit_price": {
                            "amount": "0.500",
                            "currency": "EUR"
                          }
                        }
                      ],
                      "supplier": {
                        "type": "Internal"
                      }
                    }
                  ]
                },
                "minimal-supplier-part-offer": {
                  "description": "An supplier offer for an off-the-shelf part with a minimal number of fields specified.",
                  "value": [
                    {
                      "availability": {
                        "available_stock": 251
                      },
                      "part": {
                        "manufacturer": "Panasonic",
                        "manufacturer_part_number": "ERJ-B2BF1R1V"
                      },
                      "prices": [
                        {
                          "unit_price": {
                            "amount": "0.500",
                            "currency": "EUR"
                          }
                        }
                      ],
                      "supplier": {
                        "supplier_number": "SUP-020",
                        "type": "External"
                      }
                    }
                  ]
                }
              },
              "schema": {
                "$ref": "#/components/schemas/OffersImport"
              }
            }
          },
          "description": "This endpoint allows importing of ERP offer and inventory data into Luminovo.\n\n## Types of Offers\nThere are two types of offers that can be imported:\n\n### 1. Inventory Offers\nFor inventory offers (or simply your inventory), set `supplier.type: \"Internal\"`. The supplier field should reference your inventory site location,\nwhich needs to be configured in advance in Luminovo (Settings -> Sites). If no supplier is specified, the default\ninventory site will be used.\n\n### 2. Supplier Offers\nFor supplier offers, set `supplier.type: \"External\"`. The supplier field should reference the actual supplier\n(e.g., \"Mouser\", \"Arrow\", etc.).\n\n## Updating Existing Offers\nWhen importing offers, previously imported offers will be replaced if they are equivalent on the following fields:\n  - `part`: `internal_part_number` or our resolved part through the given `manufacturer` and `manufacturer_part_number`\n  - `supplier`: the resolved internal or external supplier through the given `supplier` or `supplier_number`.\n  - `supplier_part_number`\n  - `customer`: the resolved customer through the given `name` or `number`.\n  - `packaging`\n  - `price_type`\n  - `import_context`\n",
          "required": true
        },
        "responses": {
          "207": {
            "content": {
              "application/json": {
                "examples": {
                  "all-success": {
                    "description": "The standard case when all offer items in the request were parsed and handled successfully.",
                    "value": [
                      {
                        "description": "Created",
                        "part": {
                          "internal_part_number": "1000-10"
                        },
                        "status": 200
                      },
                      {
                        "description": "Created",
                        "part": {
                          "manufacturer": "Panasonic",
                          "manufacturer_part_number": "ERJ-B2BF1R1V"
                        },
                        "status": 200
                      }
                    ]
                  },
                  "unmatched-part": {
                    "description": "A few showcases of error responses when the manufacturer or MPN cannot be matched to a part.",
                    "value": [
                      {
                        "description": "The manufacturer 'ExampleManufacturer' cannot be found. Please contact support if this manufacturer should be added to Luminovo.",
                        "part": {
                          "manufacturer": "ExampleManufacturer",
                          "manufacturer_part_number": "MPN"
                        },
                        "status": 400
                      },
                      {
                        "description": "No part with manufacturer part number 'ExampleMpn' can be found from the manufacturer 'Panasonic'. Please check if the part can be found in Luminovo, and possibly use an alternative part number.",
                        "part": {
                          "manufacturer": "Panasonic",
                          "manufacturer_part_number": "ExampleMpn"
                        },
                        "status": 400
                      }
                    ]
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/PostOffersImportResponse"
                }
              }
            },
            "description": "Response for importing new offer data"
          },
          "400": {
            "description": "Bad request"
          },
          "403": {
            "description": "Not authorized"
          }
        },
        "summary": "Import Offers and Inventory",
        "tags": [
          "Offers and Inventory"
        ],
        "security": [
          {
            "BearerAuth": []
          }
        ]
      }
    },
    "/purchase-orders/{rfq_id}": {
      "get": {
        "deprecated": true,
        "description": "**Deprecated.** This endpoint is deprecated and will not be maintained going forward.\nIf you currently rely on this endpoint and this is a blocker, please reach out to us.\n\nGet all the purchase orders from Luminovo relating to one RfQ.\n",
        "operationId": "GetPurchaseOrders",
        "parameters": [
          {
            "allowEmptyValue": false,
            "description": "The ID of the RfQ",
            "in": "path",
            "name": "rfq_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "description": "The sourcing scenario for which to filter purchase order.\n\nWhen a customer has confirmed an order, meaning they have paid for one of the sourcing scenarios, we can infer the `sourcing_scenario_id`. This is why this parameter is optional.\n\nImportant: if purchase orders have already been created for another sourcing scenario, this endpoint\nwill return an empty list of purchase orders. This is a safety precaution to prevent accidentally ordering two different sourcing scenarios.\n",
            "in": "query",
            "name": "sourcing_scenario_id",
            "required": false,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetPurchaseOrderResponse"
                }
              }
            },
            "description": "Success response"
          },
          "403": {
            "description": "Not authorized"
          }
        },
        "summary": "Get Purchase Orders",
        "tags": [
          "Purchase Orders"
        ],
        "security": [
          {
            "BearerAuth": []
          }
        ]
      },
      "post": {
        "deprecated": true,
        "description": "**Deprecated.** This endpoint is deprecated and will not be maintained going forward.\nIf you currently rely on this endpoint and this is a blocker, please reach out to us.\n\nCreate or update purchase orders corresponding to one RfQ.\nTypically, you first get the purchase orders into your ERP, perform some transformations,\nand send the updated purchase orders to Luminovo.\n",
        "operationId": "CreatePurchaseOrders",
        "parameters": [
          {
            "allowEmptyValue": false,
            "description": "The ID of the RfQ",
            "in": "path",
            "name": "rfq_id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "description": "The sourcing scenario for which we want to create a purchase order.\n\nDefaults to the sourcing scenario that has been paid for by the customer.\nIf no sourcing scenario has been paid for, this parameter is required.\n",
            "in": "query",
            "name": "sourcing_scenario_id",
            "required": false,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreatePurchaseOrdersRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success response"
          },
          "403": {
            "description": "Not authorized"
          }
        },
        "summary": "Create Purchase Orders",
        "tags": [
          "Purchase Orders"
        ],
        "security": [
          {
            "BearerAuth": []
          }
        ]
      }
    },
    "/token": {
      "post": {
        "operationId": "PostToken",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TokenRequest"
              }
            }
          },
          "description": "## Getting an access token\nTo use the Luminovo API you need to get an access token using your authentication token.\nIf you are an API customer, you can create an API token in the API Settings: https://{insert tenant name here}.luminovo.com/settings/organization/api-integration.\nIf you want to upgrade your API package, reach out to your customer success manager.\n\n```curl\ncurl --request POST \\\n  --url https://api.luminovo.com/token  \\\n  --header 'content-type: application/json' \\\n  --data '{\"token\":\"cb7daea2-df5f-44de-99cc-213668e6c991\"}'\n```\n*Response*\n```\neyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c\n```\n### API Request\n\nYou can use this `bearer token` with an `Authorization Header` in your request to obtain authorized access to Luminovo's API.\n```curl\ncurl --request GET \\\n--url https://api.luminovo.com/{endpoint} \\\n--header 'authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c'\n```\n\n### Token expiration\nBear in mind that the access token is only valid for 1 hour. You can always examine the JWT token by decoding it (e.g. using https://jwt.io/) and checking the `exp` claim. When a token expires please acquire a new one using the same method discussed earlier. The rotation of access tokens avoids exposure through token leakage. It is perfectly fine to refresh a token before its expiration!\n\n### Token length\nPlease note that the length of the bearer token can vary over time. Your implementation should not make assumptions about the token length as it may increase or decrease based on future authentication system updates. Always handle the complete token as provided by the API regardless of its size.\n"
        },
        "responses": {
          "200": {
            "content": {
              "text/plain": {
                "schema": {
                  "description": "The JWT access token",
                  "examples": [
                    "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c"
                  ],
                  "type": "string"
                }
              }
            },
            "description": "Success response"
          },
          "401": {
            "description": "Authentication failed"
          }
        },
        "security": [],
        "summary": "Authenticating to the API",
        "tags": [
          "Authentication"
        ]
      }
    },
    "/assemblies": {
      "get": {
        "tags": [
          "Assembly"
        ],
        "summary": "Get Assembly",
        "description": "Queries assembly details given assembly id(s).",
        "operationId": "GetAssembly",
        "parameters": [
          {
            "name": "assembly_ids",
            "in": "query",
            "description": "Assembly ids to retrieve (comma-separated list).",
            "required": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "format": "uuid"
              }
            }
          },
          {
            "name": "Accept",
            "in": "header",
            "description": "Set this to `application/api.luminovo.assembly-v1+json`.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/AssemblyAcceptHeader"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested assemblies.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/types.rfq.v1.AllAssembliesResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "BearerAuth": []
          }
        ]
      },
      "post": {
        "tags": [
          "Assembly"
        ],
        "summary": "Create Assembly",
        "description": "Creates a new assembly under a given RfQ.",
        "operationId": "CreateAssembly",
        "parameters": [
          {
            "name": "Accept",
            "in": "header",
            "description": "Set this to `application/api.luminovo.assembly-v1+json`.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/AssemblyAcceptHeader"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/types.assembly.v1.AssemblyInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Assembly created successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/types.assembly.v1.SimpleAssemblyResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "BearerAuth": []
          }
        ]
      }
    },
    "/assemblies/{assembly_id}/manufacturing-data/export": {
      "get": {
        "tags": [
          "Manufacturing and Calculation"
        ],
        "summary": "Get Manufacturing Costs for an Assembly",
        "description": "Get the complete manufacturing related costs for an assembly. Returns the same data that can be\nexported via excel on Luminovo.",
        "operationId": "get_assembly_manufacturing_data_export_v1",
        "parameters": [
          {
            "name": "assembly_id",
            "in": "path",
            "description": "The ID of the assembly to fetch details for",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Accept",
            "in": "header",
            "description": "Set this to `application/api.luminovo.assembly.manufacturing-data.export-v1+json`.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ManufacturingDataExportAcceptHeader"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Assembly manufacturing cost details",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/types.assembly.assembly_manufacturing_data.export.v1.CustomOrderSelectionOptionInput"
                }
              }
            }
          }
        },
        "security": [
          {
            "BearerAuth": []
          }
        ]
      }
    },
    "/assemblies/{assembly_id}/pcb": {
      "post": {
        "tags": [
          "Assembly"
        ],
        "summary": "Create Assembly PCB",
        "description": "Creates a PCB and links it to an assembly.",
        "operationId": "CreateAssemblyPcb",
        "parameters": [
          {
            "name": "assembly_id",
            "in": "path",
            "description": "ID of the assembly to create a PCB for.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "without_files",
            "in": "query",
            "description": "Whether to create the PCB without files.",
            "required": false,
            "schema": {
              "type": [
                "boolean",
                "null"
              ]
            }
          },
          {
            "name": "Accept",
            "in": "header",
            "description": "Set this to `application/api.luminovo.assembly-pcb-v1+json`.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/types.assembly.v1.CreateAssemblyPcbRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "PCB created successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/types.assembly.v1.CreateAssemblyPcbResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "BearerAuth": []
          }
        ]
      }
    },
    "/calculations/assembly-costs": {
      "get": {
        "tags": [
          "Manufacturing and Calculation"
        ],
        "summary": "Get Calculated Assembly Cost",
        "description": "Query the calculation table for an assembly. Return material and manufacturing cost as well as all additional cost configured in the calculation table.\nThe response includes an is_cost_frozen field that indicates whether the cost is frozen.",
        "operationId": "GetCalculationAssemblyCost",
        "parameters": [
          {
            "name": "Accept",
            "in": "header",
            "description": "Set this to `application/api.luminovo.assembly-cost-v1+json`.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/AssemblyCostAcceptHeader"
            }
          },
          {
            "name": "assembly_id",
            "in": "query",
            "description": "The ID of the assembly for which to get the cost.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Get calculated cost of an assembly.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/types.calculation.calculation_assembly_cost.v1.CalculationAssemblyCostResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "BearerAuth": []
          }
        ]
      }
    },
    "/components/{ipn}/risk": {
      "get": {
        "tags": [
          "Components"
        ],
        "summary": "Get Component Risk",
        "description": "Get compliance and lifecycle of a component.",
        "operationId": "GetComponentRisk",
        "parameters": [
          {
            "name": "ipn",
            "in": "path",
            "description": "The IPN (Internal Part Number) value of the component to fetch details for",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Accept",
            "in": "header",
            "description": "Set this to `application/api.luminovo.component-risk-v1+json`.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ComponentRiskAcceptHeader"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Component risk.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/types.ipn.v1.ComponentRiskResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "BearerAuth": []
          }
        ]
      }
    },
    "/custom-parts/{id}": {
      "get": {
        "tags": [
          "Custom Part"
        ],
        "summary": "Get Custom Part",
        "description": "Get information about a custom part.\nInformation includes the description, part type, and compliance information.",
        "operationId": "GetCustomPart",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "id of the custom part to retrieve",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Accept",
            "in": "header",
            "description": "Set this to `application/api.luminovo.custom-part-v1+json`.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/CustomPartAcceptHeader"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Custom part.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/types.custom_part.v1.CustomPart"
                }
              }
            }
          }
        },
        "security": [
          {
            "BearerAuth": []
          }
        ]
      }
    },
    "/custom-parts/{id}/resources": {
      "get": {
        "tags": [
          "Custom Part"
        ],
        "summary": "Get Custom Part Resources",
        "description": "Retrieves URLs for resources/files attached to the custom part.\nURL to retrieve the actual file is only valid temporarily.\nYou need to call this endpoint again to get a new valid URL after some time.",
        "operationId": "GetCustomPartResources",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "id of the custom part resources should be retrieved from",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Accept",
            "in": "header",
            "description": "Set this to `application/api.luminovo.resource-v1+json`.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/CustomPartResourceAcceptHeader"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "File URL response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/types.resource.v1.ResourceUrlResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "BearerAuth": []
          }
        ]
      }
    },
    "/customers": {
      "get": {
        "tags": [
          "Customer"
        ],
        "summary": "Search or Get All Customers",
        "description": "Queries all customers given a specific filter. Filter is optional. If filter is not set, returns all customers.",
        "operationId": "SearchCustomer",
        "parameters": [
          {
            "name": "customer_number",
            "in": "query",
            "required": false,
            "schema": {
              "type": [
                "string",
                "null"
              ]
            }
          },
          {
            "name": "Accept",
            "in": "header",
            "description": "Set this to `application/api.luminovo.customer-v1+json`.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Customers.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/types.customer.v1.AllCustomerResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "BearerAuth": []
          }
        ]
      },
      "post": {
        "tags": [
          "Customer"
        ],
        "summary": "Create New Customer",
        "description": "Create a new customer.\nIf successful, the customer will be returned in the response with its ID referenced.",
        "operationId": "CreateCustomer",
        "parameters": [
          {
            "name": "Accept",
            "in": "header",
            "description": "Set this to `application/api.luminovo.customer-v1+json`.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/CustomerAcceptHeader"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/types.customer.v1.CustomerInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Customer created.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/types.customer.v1.CustomerResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "BearerAuth": []
          }
        ]
      }
    },
    "/customers/{id}": {
      "get": {
        "tags": [
          "Customer"
        ],
        "summary": "Get Customer",
        "description": "Get a customer based on its ID.",
        "operationId": "GetCustomer",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Accept",
            "in": "header",
            "description": "Set this to `application/api.luminovo.customer-v1+json`.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/CustomerAcceptHeader"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Single customer response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/types.customer.v1.CustomerResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "BearerAuth": []
          }
        ]
      },
      "delete": {
        "tags": [
          "Customer"
        ],
        "summary": "Delete Customer",
        "description": "Delete a customer by its ID.",
        "operationId": "DeleteCustomer",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The ID of the customer to delete",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Accept",
            "in": "header",
            "description": "Set this to `application/api.luminovo.customer-v1+json`.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/CustomerAcceptHeader"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Customer deleted."
          }
        },
        "security": [
          {
            "BearerAuth": []
          }
        ]
      },
      "patch": {
        "tags": [
          "Customer"
        ],
        "summary": "Update Customer",
        "description": "Update a customer by its ID.",
        "operationId": "UpdateCustomer",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The ID of the customer to update",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Accept",
            "in": "header",
            "description": "Set this to `application/api.luminovo.customer-v1+json`.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/CustomerAcceptHeader"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/types.customer.v1.CustomerUpdate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Customer updated.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/types.customer.v1.CustomerResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "BearerAuth": []
          }
        ]
      }
    },
    "/customers/{id}/users": {
      "get": {
        "tags": [
          "Customer"
        ],
        "summary": "Get Customer Users",
        "description": "Returns all users associated with a customer.",
        "operationId": "GetCustomerUsers",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The ID of the customer.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Accept",
            "in": "header",
            "description": "Set this to `application/api.luminovo.customer-user-v1+json`.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/CustomerUserAcceptHeader"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "List of users for the customer.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/types.user.v1.AllUsers"
                }
              }
            }
          }
        },
        "security": [
          {
            "BearerAuth": []
          }
        ]
      },
      "post": {
        "tags": [
          "Customer"
        ],
        "summary": "Invite Customer User",
        "description": "Invite a user to a customer. The user will receive an email invitation to join the customer portal.",
        "operationId": "InviteCustomerUser",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The ID of the customer to invite the user to.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Accept",
            "in": "header",
            "description": "Set this to `application/api.luminovo.customer-user-v1+json`.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/CustomerUserAcceptHeader"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/types.user.v1.UserInviteInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "User invite sent successfully."
          }
        },
        "security": [
          {
            "BearerAuth": []
          }
        ]
      }
    },
    "/customers/{id}/users/{user_id}": {
      "delete": {
        "tags": [
          "Customer"
        ],
        "summary": "Delete Customer User",
        "description": "Delete a user from a customer.",
        "operationId": "DeleteCustomerUser",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The ID of the customer.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "user_id",
            "in": "path",
            "description": "The ID of the user to delete.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Accept",
            "in": "header",
            "description": "Set this to `application/api.luminovo.customer-user-v1+json`.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/CustomerUserAcceptHeader"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "User deleted successfully."
          }
        },
        "security": [
          {
            "BearerAuth": []
          }
        ]
      },
      "patch": {
        "tags": [
          "Customer"
        ],
        "summary": "Update Customer User",
        "description": "Update a user associated with a customer.",
        "operationId": "UpdateCustomerUser",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The ID of the customer.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "user_id",
            "in": "path",
            "description": "The ID of the user to update.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Accept",
            "in": "header",
            "description": "Set this to `application/api.luminovo.customer-user-v1+json`.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/CustomerUserAcceptHeader"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/types.user.v1.UserUpdateInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "User updated successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/types.user.v1.User"
                }
              }
            }
          }
        },
        "security": [
          {
            "BearerAuth": []
          }
        ]
      }
    },
    "/demand/import": {
      "post": {
        "tags": [
          "Demand"
        ],
        "summary": "Create Demand",
        "description": "**Deprecated.** This endpoint is deprecated and will be removed in a future version.\n\nCreate a demand scenario for IPNs. You can create demands for both assemblies and single components.\nIf a demand gets created for an assembly, it gets propagated to the assembly's subassemblies and BOM items.",
        "operationId": "doc_clear_and_create_demands_v1",
        "parameters": [
          {
            "name": "Accept",
            "in": "header",
            "description": "Set this to `application/api.luminovo.demand-v1+json`.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/DemandAcceptHeader"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DemandCreationRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "207": {
            "description": "Demands created."
          }
        },
        "deprecated": true,
        "security": [
          {
            "BearerAuth": []
          }
        ]
      }
    },
    "/flexible-calculation/plans/rfq/{rfq_id}": {
      "get": {
        "tags": [
          "Flexible Calculation"
        ],
        "summary": "Get Calculation Plans by RFQ (v0 - unstable)",
        "description": "Retrieve all flexible calculation plans associated with a given RFQ.\n\n**Note:** This endpoint uses API version v0, which indicates an unstable contract.\nBreaking changes may be introduced without a version bump. Do not rely on the\nexact shape of the response for long-lived integrations until this is promoted to v1.",
        "operationId": "doc_get_plans_by_rfq_v0",
        "parameters": [
          {
            "name": "Accept",
            "in": "header",
            "description": "Set this to `application/api.luminovo.flexible-calculation-v0+json`.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/FlexibleCalculationAcceptHeader"
            }
          },
          {
            "name": "rfq_id",
            "in": "path",
            "description": "The ID of the RFQ.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/types.flexible_calculation.v0.AllCalculationPlansResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized, please check permissions for the token"
          }
        },
        "security": [
          {
            "BearerAuth": []
          }
        ]
      }
    },
    "/flexible-calculation/plans/{id}": {
      "get": {
        "tags": [
          "Flexible Calculation"
        ],
        "summary": "Get Calculation Plan (v0 - unstable)",
        "description": "Retrieve a single flexible calculation plan by its ID.\n\n**Note:** This endpoint uses API version v0, which indicates an unstable contract.\nBreaking changes may be introduced without a version bump. Do not rely on the\nexact shape of the response for long-lived integrations until this is promoted to v1.",
        "operationId": "doc_get_plan_v0",
        "parameters": [
          {
            "name": "Accept",
            "in": "header",
            "description": "Set this to `application/api.luminovo.flexible-calculation-v0+json`.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/FlexibleCalculationAcceptHeader"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "The ID of the calculation plan.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/types.flexible_calculation.v0.CalculationPlanResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized, please check permissions for the token"
          },
          "404": {
            "description": "Not found"
          }
        },
        "security": [
          {
            "BearerAuth": []
          }
        ]
      }
    },
    "/manufacturing/resource": {
      "get": {
        "tags": [
          "Manufacturing and Calculation"
        ],
        "summary": "Get All Resources",
        "description": "Get an array of all resources. Resources represent all machinery and employees relevant to production including their\nhourly rates (e.g. SMT Personnel or Fuji NXT Pick and Place Machine).\n\nResources can be used in activities to get time calculations as well as costs associated with them.",
        "operationId": "get_resource_many_v1",
        "parameters": [
          {
            "name": "Accept",
            "in": "header",
            "description": "Set this to `application/api.luminovo.manufacturing.resource-v1+json`.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ManufacturingResourceAcceptHeader"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/types.manufacturing.resource.v1.ResourceResponse"
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "BearerAuth": []
          }
        ]
      },
      "post": {
        "tags": [
          "Manufacturing and Calculation"
        ],
        "summary": "Create New Resource",
        "description": "Create a new manufacturing resource.",
        "operationId": "doc_post_resource_v1",
        "parameters": [
          {
            "name": "Accept",
            "in": "header",
            "description": "Set this to `application/api.luminovo.manufacturing.resource-v1+json`.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ManufacturingResourceAcceptHeader"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/types.manufacturing.resource.v1.ResourceInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/types.manufacturing.resource.v1.ResourceResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized, please check permissions for the token"
          },
          "422": {
            "description": "Not processable"
          }
        },
        "security": [
          {
            "BearerAuth": []
          }
        ]
      }
    },
    "/manufacturing/resource/{id}": {
      "delete": {
        "tags": [
          "Manufacturing and Calculation"
        ],
        "summary": "Delete Resource",
        "description": "Delete a resource using its ID.",
        "operationId": "doc_delete_resource_v1",
        "parameters": [
          {
            "name": "Accept",
            "in": "header",
            "description": "Set this to `application/api.luminovo.manufacturing.resource-v1+json`.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ManufacturingResourceAcceptHeader"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "The ID of the resource to delete.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response"
          },
          "401": {
            "description": "Unauthorized, please check permissions for the token"
          },
          "404": {
            "description": "Not found"
          }
        },
        "security": [
          {
            "BearerAuth": []
          }
        ]
      },
      "patch": {
        "tags": [
          "Manufacturing and Calculation"
        ],
        "summary": "Update Resource",
        "description": "Update a resource using its ID.",
        "operationId": "doc_patch_resource_v1",
        "parameters": [
          {
            "name": "Accept",
            "in": "header",
            "description": "Set this to `application/api.luminovo.manufacturing.resource-v1+json`.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ManufacturingResourceAcceptHeader"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "The ID of the resource to update.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/types.manufacturing.resource.v1.ResourceUpdate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/types.manufacturing.resource.v1.ResourceResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized, please check permissions for the token"
          },
          "404": {
            "description": "Not found"
          }
        },
        "security": [
          {
            "BearerAuth": []
          }
        ]
      }
    },
    "/offer/custom-part": {
      "post": {
        "tags": [
          "Offers and Inventory"
        ],
        "summary": "Create Custom Part Offer",
        "description": "Creates a new offer for a custom part. Attach the sourcing scenario ID when creating a new custom part offer.",
        "operationId": "CreateCustomPartOffer",
        "parameters": [
          {
            "name": "Accept",
            "in": "header",
            "description": "Set this to `application/api.luminovo.custom-part-offer-v1+json`.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/CustomPartOfferAcceptHeader"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/types.sourcing.offer.custom.v1.CustomPartOfferInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Customer created.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/types.sourcing.offer.custom.v1.CustomPartOffer"
                }
              }
            }
          }
        },
        "security": [
          {
            "BearerAuth": []
          }
        ]
      }
    },
    "/order-management/order-selection": {
      "post": {
        "tags": [
          "Order Management"
        ],
        "summary": "Create Order Selection Options",
        "description": "You can create customized order selection options for your customers at the check-out on the Customer Collaboration Platform.\nDefine custom order batch sizes, lead time, order size, etc.",
        "operationId": "doc_post_order_selection_options_v1",
        "parameters": [
          {
            "name": "Accept",
            "in": "header",
            "description": "Set this to `application/api.luminovo.order-management-v1+json`.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/OrderManagementAcceptHeader"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/types.order_management.order_selection_option.v1.CustomOrderSelectionOptionsRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Order selection options created."
          }
        },
        "security": [
          {
            "BearerAuth": []
          }
        ]
      }
    },
    "/order-management/orders": {
      "get": {
        "tags": [
          "Order Management"
        ],
        "summary": "Get Order Details",
        "description": "Get the details for an order placed on the Customer Collaboration Platform relating to an RfQ.",
        "operationId": "doc_get_orders_v1",
        "parameters": [
          {
            "name": "rfq_id",
            "in": "query",
            "description": "The RfQ ID to fetch order details for.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Accept",
            "in": "header",
            "description": "Set this to `application/api.luminovo.order-management-v1+json`.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/OrderManagementAcceptHeader"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Order details.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/types.order_management.orders.v1.GetOrdersResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "BearerAuth": []
          }
        ]
      }
    },
    "/pnp": {
      "get": {
        "tags": [
          "PnP"
        ],
        "summary": "Get PnP Items",
        "description": "Get a list of PnP items for an assembly.",
        "operationId": "GetPnp",
        "parameters": [
          {
            "name": "assembly_id",
            "in": "query",
            "description": "The assembly ID to get PnP items for.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "Accept",
            "in": "header",
            "description": "Set this to `application/api.luminovo.pnp-v1+json`.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/PnpAcceptHeader"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "PnP items.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/types.pnp.v1.PnpResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "BearerAuth": []
          }
        ]
      }
    },
    "/rfqs": {
      "get": {
        "tags": [
          "RfQ"
        ],
        "summary": "Get all RfQs",
        "description": "Returns all RfQ's in Luminovo.",
        "operationId": "GetAllRfQs",
        "parameters": [
          {
            "name": "Accept",
            "in": "header",
            "description": "Set this to `application/api.luminovo.rfq-overview-v1+json`.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/RfqOverviewAcceptHeader"
            }
          },
          {
            "name": "archived",
            "in": "query",
            "required": false,
            "schema": {
              "type": [
                "boolean",
                "null"
              ]
            }
          },
          {
            "name": "customer_id",
            "in": "query",
            "required": false,
            "schema": {
              "type": [
                "string",
                "null"
              ],
              "format": "uuid"
            }
          },
          {
            "name": "internal_number",
            "in": "query",
            "required": false,
            "schema": {
              "type": [
                "string",
                "null"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Get all existing Rfqs.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/types.rfq.v1.AllRfQsResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "BearerAuth": []
          }
        ]
      },
      "post": {
        "tags": [
          "RfQ"
        ],
        "summary": "Create Rfq",
        "description": "Create a new RfQ either for an existing or a new customer.",
        "operationId": "CreateRfQ",
        "parameters": [
          {
            "name": "Accept",
            "in": "header",
            "description": "Set this to `application/api.luminovo.rfq-v1+json`.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/RfqAcceptHeader"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/types.rfq.v1.RfQCreation"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "RfQ created.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/types.rfq.v1.RfQResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "BearerAuth": []
          }
        ]
      }
    },
    "/rfqs/status-history": {
      "get": {
        "tags": [
          "RfQ"
        ],
        "summary": "Get RfQ status change history",
        "description": "Returns the history of status changes for all RfQs.",
        "operationId": "GetRfqStatusHistory",
        "parameters": [
          {
            "name": "Accept",
            "in": "header",
            "description": "Set this to `application/api.luminovo.rfq-v1+json`.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/RfqAcceptHeader"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "RfQ status history.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/types.rfq.status_history.v1.AllRfqStatusHistory"
                }
              }
            }
          }
        },
        "security": [
          {
            "BearerAuth": []
          }
        ]
      }
    },
    "/rfqs/{id}": {
      "get": {
        "tags": [
          "RfQ"
        ],
        "summary": "Get Rfq",
        "description": "Get one RfQ based on its ID.",
        "operationId": "GetRfQ",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "id of the RfQ to retrieve",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Accept",
            "in": "header",
            "description": "Set this to `application/api.luminovo.rfq-v1+json`.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/RfqAcceptHeader"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Get existing RfQ.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/types.rfq.v1.RfQResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "BearerAuth": []
          }
        ]
      },
      "delete": {
        "tags": [
          "RfQ"
        ],
        "summary": "Delete RfQ",
        "description": "Delete an RfQ based on its ID.",
        "operationId": "DeleteRfQ",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "id of the RfQ to delete",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Accept",
            "in": "header",
            "description": "Set this to `application/api.luminovo.rfq-v1+json`.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/RfqAcceptHeader"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Rfq deleted."
          }
        },
        "security": [
          {
            "BearerAuth": []
          }
        ]
      },
      "patch": {
        "tags": [
          "RfQ"
        ],
        "summary": "Update RfQ",
        "description": "Update an RfQ based on its ID.",
        "operationId": "UpdateRfQ",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "id of the RfQ to update",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Accept",
            "in": "header",
            "description": "Set this to `application/api.luminovo.rfq-v1+json`.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/RfqAcceptHeader"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/types.rfq.v1.RfqUpdate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "RfQ updated.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/types.rfq.v1.RfQResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "BearerAuth": []
          }
        ]
      }
    },
    "/rfqs/{id}/costed-bom": {
      "get": {
        "tags": [
          "BOM"
        ],
        "summary": "Get costed BOM",
        "description": "**Deprecated.** We are actively working on a new version of this endpoint.\nIf anything about the current version is causing problems, we are actively looking\nfor feedback — please reach out to us.\n\nReturns costed BOM for a given RfQ.",
        "operationId": "GetRfqCostedBom",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "id of the RfQ to retrieve the costed bom for",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Accept",
            "in": "header",
            "description": "Set this to `application/api.luminovo.costed-bom-v1+json`.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/CostedBomAcceptHeader"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "RfQ costed BOM.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/types.rfq.costed_bom.v1.CostedBom"
                }
              }
            }
          }
        },
        "deprecated": true,
        "security": [
          {
            "BearerAuth": []
          }
        ]
      }
    },
    "/rfqs/{id}/quotation/upload": {
      "post": {
        "tags": [
          "Quotation"
        ],
        "summary": "Upload Quotation for an RfQ",
        "description": "By sending the request, you will get a URL to upload the quotation corresponding to an RfQ.\n\nThis API is the equivalent of uploading a PDF file in the Quotation section of the frontend.\nUpon successful upload, you can call the `Update RfQ` API to set the RfQ status to `QuotationAvailable`.\n\nUnless you change the status to `QuotationAvailable`, the PDF is still available internally, but\n(if the customer portal is available) the customer will not be notified and will not be able to\ndownload the PDF. This is consistent with the behavior of the quotation upload in the UI, where\nthe status is not updated unless you click the 'Send to customer' button.\n\nUploading is a two-step process:\n1. Call this API to retrieve a URL to upload the file to.\n1. Upload the file contents to the retrieved URL using the `PUT` method.\n   * The `PUT` call must set the `x-ms-blob-type` header to the value `BlockBlob`.\n\nSee the [help page](https://help.luminovo.com/en/articles/235339-customize-the-quotation-purchase-and-payment-flow-in-the-customer-portal-using-the-api)\nfor an explanation of when and how to use this API.",
        "operationId": "UploadQuotation",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "id of the RfQ for which to upload the quotation",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Accept",
            "in": "header",
            "description": "Set this to `application/api.luminovo.quotation-upload-v1+json`.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/QuotationUploadAcceptHeader"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/types.rfq.v1.QuotationUpload"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Generated url for upload.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/types.rfq.v1.SingleFileUrlResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "BearerAuth": []
          }
        ]
      }
    },
    "/rfqs/{id}/tree": {
      "get": {
        "tags": [
          "BOM"
        ],
        "summary": "Get BOM Tree",
        "description": "Get the list of all assemblies included in your RfQ.\nNote: Luminovo creates an assembly for every created RfQ. Hence, the RfQ ID itself is also referenced as an assembly.",
        "operationId": "GetBOMtree",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "id of the RfQ.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Accept",
            "in": "header",
            "description": "Set this to `application/api.luminovo.assembly-ids-v1+json`.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/AssemblyIdsAcceptHeader"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Get BOM tree for RfQ.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/types.assembly.assembly_ids.v1.AssemblyIdsResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "BearerAuth": []
          }
        ]
      }
    },
    "/sourcing-scenarios": {
      "post": {
        "tags": [
          "Sourcing Scenario"
        ],
        "summary": "Create Scenario",
        "description": "**Deprecated.** This endpoint is deprecated and will be removed in a future version.\n\nCreate a new sourcing scenario corresponding to an RfQ.",
        "operationId": "CreateSourcingScenario",
        "parameters": [
          {
            "name": "Accept",
            "in": "header",
            "description": "Set this to `application/api.luminovo.sourcing-scenario-v1+json`.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/SourcingScenarioAcceptHeader"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/types.sourcing.sourcing_scenario.v1.SourcingScenarioInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Scenario created.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/types.sourcing.sourcing_scenario.v1.SourcingScenarioResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad request. The input is invalid."
          },
          "401": {
            "description": "Unauthorized. The Bearer token is missing or invalid."
          },
          "403": {
            "description": "Forbidden. The authenticated user does not have permission."
          }
        },
        "deprecated": true,
        "security": [
          {
            "BearerAuth": []
          }
        ]
      }
    },
    "/sourcing-scenarios/run-selection": {
      "post": {
        "tags": [
          "Sourcing Scenario"
        ],
        "summary": "Run Calculation",
        "description": "Triggers the sourcing selection calculation for the given scenarios.\n\n**Typical usage:**\n- **Run for single scenario**: `{\"type\": \"SourcingScenarios\", \"sourcing_scenario_ids\": [\"scenario-uuid\"]}` - runs selection for one specific scenario\n- **Multiple specific scenarios**: `{\"type\": \"SourcingScenarios\", \"sourcing_scenario_ids\": [\"uuid1\", \"uuid2\", \"uuid3\"]}` - runs selection for multiple scenarios\n\n**Requirements:**\n- An empty `sourcing_scenario_ids` array will return a 400 Bad Request error.\n- **All sourcing scenarios must belong to the same RFQ.** Scenarios from different RFQs will result in an error.",
        "operationId": "RunSourcingCalculation",
        "parameters": [
          {
            "name": "Accept",
            "in": "header",
            "description": "Set this to `application/api.luminovo.sourcing-calculation-v1+json`.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/SourcingCalculationAcceptHeader"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/types.sourcing.calculation.v1.SourcingScenarioCalculationInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Calculation run successfully."
          },
          "400": {
            "description": "Invalid request data."
          },
          "401": {
            "description": "Unauthorized."
          },
          "403": {
            "description": "Forbidden."
          }
        },
        "security": [
          {
            "BearerAuth": []
          }
        ]
      }
    },
    "/sourcing-scenarios/{id}": {
      "get": {
        "tags": [
          "Sourcing Scenario"
        ],
        "summary": "Get Scenario",
        "description": "Returns a sourcing scenario with its associated project, demands, and settings.\n\n**Project**\n\nA sourcing scenario is associated with a project, which is either an **RFQ** (Request for\nQuotation) or a **Negotiation**. The `project` field is a tagged object with a `type`\nfield (`\"Rfq\"` or `\"Negotiation\"`) and an `id` field containing the project's UUID.\n\n**Demands**\n\nEach demand item has a `type` field indicating its kind. Currently only `\"Assembly\"`\ndemands are returned, each with:\n- `id`: the assembly's UUID\n- `name`: the human-readable assembly designator\n- `quantity`: the required quantity with unit of measurement (e.g., `{\"unit\": \"Pieces\", \"quantity\": 1000.0}`)\n\n**Limitation:** Part demands (for off-the-shelf parts and components/IPNs) are not yet\nincluded in this endpoint and will be added as new `type` values in a future update.\nConsumers should gracefully handle or ignore unknown demand types.\n\n**Currency and Exchange Rates**\n\n`settings.currency.base_currency` is the base currency used for all cost calculations in\nthis sourcing scenario. All monetary values are converted to this currency.\n\n`settings.currency.exchange_rates` maps each foreign currency code to its conversion rate.\nRates are expressed as: **1 unit of base currency = `rate` units of foreign currency**.\n\nEach rate has an `is_manual` flag:\n- `true`: the rate was manually overridden by a user and takes precedence over the automatic rate\n- `false`: the rate was automatically fetched from a public exchange rate provider\n\nThe `settings` object is extensible — additional setting groups may be added alongside\n`currency` in the future.\n\n**Versioning**\n\n> **Note:** A legacy v1 version of this endpoint is available by sending\n> `Accept: application/api.luminovo.sourcing-scenario-v1+json`. It is **deprecated** and\n> returns a less detailed response — it omits currency settings, assembly names, and project\n> type information. All new integrations should use v2.",
        "operationId": "GetSourcingScenarioV2",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "UUID of the sourcing scenario to retrieve.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Accept",
            "in": "header",
            "description": "Set this to `application/api.luminovo.sourcing-scenario-v2+json`.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/SourcingScenarioV2AcceptHeader"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Sourcing scenario with project, demands, and settings.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/types.sourcing.sourcing_scenario.v2.SourcingScenarioResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized. The Bearer token is missing or invalid."
          },
          "403": {
            "description": "Forbidden. The authenticated user does not have permission to view sourcing scenarios."
          },
          "404": {
            "description": "Not found. No sourcing scenario with the given ID exists for the authenticated tenant."
          }
        },
        "security": [
          {
            "BearerAuth": []
          }
        ]
      },
      "patch": {
        "tags": [
          "Sourcing Scenario"
        ],
        "summary": "Update Scenario",
        "description": "**Deprecated.** This endpoint is deprecated and will be removed in a future version.\n\nUpdates a sourcing scenario based on its ID. All assemblies relating to the scenario must be\nincluded in the request — only those in the request will be considered for the scenario.",
        "operationId": "UpdateSourcingScenario",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "id of the Sourcing scenario to update",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Accept",
            "in": "header",
            "description": "Set this to `application/api.luminovo.sourcing-scenario-v1+json`.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/SourcingScenarioAcceptHeader"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/types.sourcing.sourcing_scenario.v1.SourcingScenarioUpdateInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Updated scenario.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/types.sourcing.sourcing_scenario.v1.SourcingScenarioResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad request. The input is invalid."
          },
          "401": {
            "description": "Unauthorized. The Bearer token is missing or invalid."
          },
          "403": {
            "description": "Forbidden. The authenticated user does not have permission."
          },
          "404": {
            "description": "Not found. No sourcing scenario with the given ID exists."
          }
        },
        "deprecated": true,
        "security": [
          {
            "BearerAuth": []
          }
        ]
      }
    },
    "/supplier-quote/pcb/{pcb_id}/offer/{offer_id}": {
      "get": {
        "tags": [
          "Offers and Inventory"
        ],
        "summary": "Get PCB Offer from PCB Pricing Console",
        "description": "Get the offer for a PCB, which was created in the PCB pricing console.",
        "operationId": "GetSupplierCustomPartOffer",
        "parameters": [
          {
            "name": "pcb_id",
            "in": "path",
            "description": "Set this to shared PCB id you want to get an offer from.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "offer_id",
            "in": "path",
            "description": "Set this to the offer ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Accept",
            "in": "header",
            "description": "Set this to `application/api.luminovo.custom-part-offer-v1+json`.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/SupplierCustomPartOfferAcceptHeader"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Custom part offer.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/types.sourcing.offer.custom.v1.CustomPartOffer"
                }
              }
            }
          }
        },
        "security": [
          {
            "BearerAuth": []
          }
        ]
      }
    },
    "/suppliers": {
      "get": {
        "tags": [
          "Supplier"
        ],
        "summary": "Get Suppliers",
        "description": "Retrieves supplier information with optional filtering.\n\n## Parameters\n- `ids` (optional): Array of supplier IDs to filter by. If provided, only suppliers matching these IDs will be returned.\n\n## Behavior\n- **With IDs**: Returns only the specified suppliers (bulk retrieval)\n- **Without IDs**: Returns all available suppliers\n\n## Returns\nA list of supplier objects containing their basic information and metadata.\n\n## Example\n```\nGET /suppliers?ids=123,456,789  // Get specific suppliers\nGET /suppliers                  // Get all suppliers\n```",
        "operationId": "GetSuppliers",
        "parameters": [
          {
            "name": "ids",
            "in": "query",
            "description": "The IDs of the suppliers to get. If not provided, all suppliers will be returned.",
            "required": false,
            "schema": {
              "type": [
                "string",
                "null"
              ]
            }
          },
          {
            "name": "Accept",
            "in": "header",
            "description": "Set this to `application/api.luminovo.supplier-v1+json`.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/SupplierAcceptHeader"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Suppliers fetched.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/types.supplier.v1.BulkSuppliersResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "BearerAuth": []
          }
        ]
      },
      "post": {
        "tags": [
          "Supplier"
        ],
        "summary": "Import Suppliers",
        "description": "Import a list of suppliers.",
        "operationId": "ImportSuppliers",
        "parameters": [
          {
            "name": "Accept",
            "in": "header",
            "description": "Set this to `application/api.luminovo.supplier-v1+json`.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/SupplierAcceptHeader"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/types.supplier.v1.ImportSuppliersRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "207": {
            "description": "Suppliers imported.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/types.supplier.v1.ImportSuppliersResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "BearerAuth": []
          }
        ]
      }
    },
    "/suppliers/{id}": {
      "delete": {
        "tags": [
          "Supplier"
        ],
        "summary": "Delete Supplier",
        "description": "Delete a supplier by its ID.\n\nNote: System suppliers cannot be deleted and will return an error if deletion is attempted",
        "operationId": "DeleteSupplier",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The ID of the supplier to delete",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Accept",
            "in": "header",
            "description": "Set this to `application/api.luminovo.supplier-v1+json`.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/SupplierAcceptHeader"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Supplier deleted."
          }
        },
        "security": [
          {
            "BearerAuth": []
          }
        ]
      },
      "patch": {
        "tags": [
          "Supplier"
        ],
        "summary": "Update Supplier",
        "description": "Update a supplier by its ID.\nNote: For system suppliers, only the supplier number & preference can be updated.",
        "operationId": "UpdateSupplier",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The ID of the supplier to update",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Accept",
            "in": "header",
            "description": "Set this to `application/api.luminovo.supplier-v1+json`.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/SupplierAcceptHeader"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/types.supplier.v1.SupplierUpdateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Supplier updated.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/types.supplier.v1.SingleSupplierResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "BearerAuth": []
          }
        ]
      }
    },
    "/users": {
      "get": {
        "tags": [
          "User"
        ],
        "summary": "Get All Users",
        "description": "Returns all users of your system.",
        "operationId": "GetAllUsers",
        "parameters": [
          {
            "name": "Accept",
            "in": "header",
            "description": "Set this to `application/api.luminovo.user-v1+json`.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/UserAcceptHeader"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Get all organization users.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/types.user.v1.AllUsers"
                }
              }
            }
          }
        },
        "security": [
          {
            "BearerAuth": []
          }
        ]
      }
    },
    "/ems/pcb/pcbs": {
      "get": {
        "tags": [
          "PCB"
        ],
        "summary": "Find a PCB using an order ID",
        "description": "Find a PCB using the orderID that was specified during its creation.",
        "parameters": [
          {
            "name": "orderId",
            "in": "query",
            "description": "orderId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "PCB was found",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "allOf": [
                      {
                        "$ref": "#/components/schemas/PCBV2"
                      }
                    ]
                  }
                }
              }
            }
          },
          "404": {
            "description": "PCB was not found",
            "links": {}
          }
        },
        "deprecated": false
      },
      "post": {
        "tags": [
          "PCB"
        ],
        "summary": "Create a new PCB",
        "description": "\nThis endpoint facilitates the creation of a new PCB project.\n\nThe request payload does not take any files, but they can be\nonce the record is created.\n\nIt is possible to use the API without providing any project\nfiles. This means analysis and value extraction will not be\navailable.\n\nIf this PCB belongs to a RfQ and should be linked together, then\nthe `externalReference` and `orderId` fields should be filled\nand the RfQ should be updated with the PCB's UUID.\n\nThe creation of a PCB involves the creation of a specification\nthat can be used to override the default values of the PCB.\n",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/PCBV2Creation"
                  }
                ]
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "PCB was created",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/PCBV2"
                    }
                  ]
                }
              }
            }
          }
        },
        "deprecated": false
      }
    },
    "/ems/pcb/capabilities": {
      "get": {
        "tags": [
          "PCB"
        ],
        "summary": "Get All Capabilities",
        "description": "\nReturns all the available PCB properties and the values available\nfor each of them, as well as the default value.\n\nSome capabilities depend on the values of other capabilities,\nwhich means the list of available values is not complete unless\nthe pcb-specific endpoint is used.\n",
        "responses": {
          "200": {
            "description": "List of PCB capabilities",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/PCBV2SpecificationCapabilities"
                    }
                  ]
                }
              }
            }
          }
        },
        "deprecated": false
      }
    },
    "/ems/pcb/shares/{share}": {
      "get": {
        "tags": [
          "PCB"
        ],
        "summary": "Get a Shared PCB",
        "description": "Find a Shared PCB by its UUID.",
        "parameters": [
          {
            "name": "share",
            "in": "path",
            "description": "share",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "PCB was found",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/PCBV2"
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "PCB was not found",
            "links": {}
          }
        },
        "deprecated": false
      }
    },
    "/ems/pcb/shares/{share}/files/all": {
      "get": {
        "tags": [
          "PCB"
        ],
        "summary": "Get the Shared PCB Files as zip",
        "description": "Downloads PCB files of a shared PCB as a zip folder",
        "parameters": [
          {
            "name": "share",
            "in": "path",
            "description": "share",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "PCB project zip",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/NotUsed"
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "PCB was not found",
            "links": {}
          }
        },
        "deprecated": false
      }
    },
    "/ems/pcb/pcbs/{pcb}": {
      "get": {
        "tags": [
          "PCB"
        ],
        "summary": "Get a PCB",
        "description": "Find a PCB by its UUID.",
        "parameters": [
          {
            "name": "pcb",
            "in": "path",
            "description": "pcb",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "PCB was found",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/PCBV2"
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "PCB was not found",
            "links": {}
          }
        },
        "deprecated": false
      },
      "put": {
        "tags": [
          "PCB"
        ],
        "summary": "Update a PCB",
        "description": "Updates some of the PCB properties that were set during creation.",
        "parameters": [
          {
            "name": "pcb",
            "in": "path",
            "description": "pcb",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/PCBV2Update"
                  }
                ]
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "PCB was updated",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/PCBV2"
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "PCB was not found",
            "links": {}
          }
        },
        "deprecated": false
      },
      "delete": {
        "tags": [
          "PCB"
        ],
        "summary": "Delete a PCB",
        "description": "Find and delete a PCB by its UUID.",
        "parameters": [
          {
            "name": "pcb",
            "in": "path",
            "description": "pcb",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "PCB was deleted",
            "links": {}
          },
          "404": {
            "description": "PCB was not found",
            "links": {}
          }
        },
        "deprecated": false
      }
    },
    "/ems/pcb/pcbs/{pcb}/clone": {
      "post": {
        "tags": [
          "PCB"
        ],
        "summary": "Clone an existing PCB",
        "description": "\nClone an existing PCB.\n\nThis clones the PCB, analysis results, specifications and\nfiles associated.\n\nThis operation returns an error if the PCB's analysis is\nin progress.\n",
        "parameters": [
          {
            "name": "pcb",
            "in": "path",
            "description": "pcb",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/PCBV2Clone"
                  }
                ]
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "PCB was cloned",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/PCBV2Id"
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "PCB to clone was not found",
            "links": {}
          }
        },
        "deprecated": false
      }
    },
    "/ems/pcb/pcbs/{pcb}/files/all": {
      "get": {
        "tags": [
          "PCB"
        ],
        "summary": "Get the PCB Files as zip",
        "description": "Downloads PCB files as a zip folder",
        "parameters": [
          {
            "name": "pcb",
            "in": "path",
            "description": "pcb",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "PCB project zip",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/NotUsed"
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "PCB was not found",
            "links": {}
          }
        },
        "deprecated": false
      }
    },
    "/ems/pcb/pcbs/{pcb}/files/singular/{file}": {
      "get": {
        "tags": [
          "PCB"
        ],
        "summary": "Get a PCB File",
        "description": "Downloads PCB file by name, if it exists.",
        "parameters": [
          {
            "name": "pcb",
            "in": "path",
            "description": "pcb",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "file",
            "in": "path",
            "description": "file",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "PCB project zip",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/NotUsed"
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "PCB or file was not found",
            "links": {}
          }
        },
        "deprecated": false
      }
    },
    "/ems/pcb/pcbs/{pcb}/specifications": {
      "get": {
        "tags": [
          "PCB"
        ],
        "summary": "Get all PCB Specifications",
        "description": "Get all PCB specificationss",
        "parameters": [
          {
            "name": "pcb",
            "in": "path",
            "description": "pcb",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "PCB specifications",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "allOf": [
                      {
                        "$ref": "#/components/schemas/PCBV2Specification"
                      }
                    ]
                  }
                }
              }
            }
          },
          "404": {
            "description": "PCB was not found",
            "links": {}
          }
        },
        "deprecated": false
      },
      "put": {
        "tags": [
          "PCB"
        ],
        "summary": "Create a new PCB Specification",
        "description": "Create anew PCB specifications",
        "parameters": [
          {
            "name": "pcb",
            "in": "path",
            "description": "pcb",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/PCBV2Specification"
                  }
                ]
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "PCB specification created",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/PCBV2Specification"
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "PCB was not found",
            "links": {}
          }
        },
        "deprecated": false
      }
    },
    "/ems/pcb/pcbs/{pcb}/specifications/{specification}": {
      "get": {
        "tags": [
          "PCB"
        ],
        "summary": "Get a PCB Specification",
        "description": "Find PCB specification by name or UUID",
        "parameters": [
          {
            "name": "pcb",
            "in": "path",
            "description": "pcb",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "specification",
            "in": "path",
            "description": "the name or uuid of the specification",
            "required": true,
            "explode": false,
            "schema": {
              "type": "string",
              "description": "the name or uuid of the specification"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "PCB specification",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/PCBV2Specification"
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "PCB or specification was not found",
            "links": {}
          }
        },
        "deprecated": false
      },
      "put": {
        "tags": [
          "PCB"
        ],
        "summary": "Update a PCB Specification",
        "description": "Update a PCB Specifications",
        "parameters": [
          {
            "name": "pcb",
            "in": "path",
            "description": "pcb",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "specification",
            "in": "path",
            "description": "specification",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "removeUndefined",
            "in": "query",
            "description": "removeUndefined",
            "required": false,
            "schema": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/Object"
                }
              ]
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/PCBV2Update"
                  }
                ]
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "PCB specification updated",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/PCBV2Specification"
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "PCB or specification was not found",
            "links": {}
          }
        },
        "deprecated": false
      },
      "delete": {
        "tags": [
          "PCB"
        ],
        "summary": "Delete a PCB Specification",
        "description": "Delete a PCB Specifications",
        "parameters": [
          {
            "name": "pcb",
            "in": "path",
            "description": "pcb",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "specification",
            "in": "path",
            "description": "specification",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "PCB specification deleted",
            "links": {}
          },
          "404": {
            "description": "PCB or specification was not found",
            "links": {}
          }
        },
        "deprecated": false
      }
    },
    "/ems/pcb/pcbs/{pcb}/specifications/{specification}/previews": {
      "get": {
        "tags": [
          "PCB"
        ],
        "summary": "Get a PCB Specification Preview",
        "description": "Find PCB specification by name or UUID",
        "parameters": [
          {
            "name": "pcb",
            "in": "path",
            "description": "pcb",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "specification",
            "in": "path",
            "description": "the name or uuid of the specification",
            "required": true,
            "explode": false,
            "schema": {
              "type": "string",
              "description": "the name or uuid of the specification"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "PCB specification previews",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/PCBPreviews"
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "PCB or specification was not found",
            "links": {}
          }
        },
        "deprecated": false
      }
    },
    "/ems/pcb/pcbs/{pcb}/capabilities": {
      "get": {
        "tags": [
          "PCB"
        ],
        "summary": "Get All Capabilities respecting the currently set values of the specification",
        "description": "\nReturns all the available PCB properties and the values available\nfor each of them, as well as the default value.\n\nSome capabilities depend on the values of other capabilities,\nwhich means the values for certain capabilities change based on\nthe PCB specification.\n\nAn example of this behaviour is the inner copper thickness, which\nrequires the PCB to have at least 4 layers.\n",
        "parameters": [
          {
            "name": "pcb",
            "in": "path",
            "description": "pcb",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "List of PCB capabilities",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/PCBV2SpecificationCapabilities"
                    }
                  ]
                }
              }
            }
          }
        },
        "deprecated": false
      }
    },
    "/files/ems/pcb/pcbs/:pcb/files": {
      "post": {
        "tags": [
          "PCB"
        ],
        "summary": "Upload Files to the PCB",
        "parameters": [],
        "requestBody": {
          "content": {
            "*/*": {
              "schema": {
                "$ref": "#/components/schemas/FileUpload"
              },
              "encoding": {
                "files": {
                  "contentType": "application/pdf, image/png"
                }
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "Files were uploaded",
            "links": {}
          },
          "404": {
            "description": "PCB was not found",
            "links": {}
          }
        },
        "deprecated": false
      }
    }
  },
  "components": {
    "schemas": {
      "Assemblies": {
        "items": {
          "$ref": "#/components/schemas/AssemblyBom"
        },
        "type": "array"
      },
      "AssemblyBom": {
        "properties": {
          "bom_items": {
            "description": "A list of BOM items.\nA BOM item defines the common characteristics of one or more design items (identified by\ndesignators).\n",
            "items": {
              "$ref": "#/components/schemas/BomItem"
            },
            "type": "array"
          },
          "customer_part_numbers": {
            "description": "Your customers' numbers referring to this assembly.\n\nDue to technical restrictions only the first element of this array is considered.\nThat is, only the customer that is named first in this array will be associated\nwith the assembly in the system.\n\nThe customer can also be specified on its own, a customer part number (i.e. the `value` field)\nis not required. If the `revision` field is provided the `value` field must also be populated.\n\nCPNs will be matched to existing customers by their number.\n\nIf a customer name is also given in the input data, the following cases are handled:\n1. if the customer does not yet exist, it will be created with the number and name provided.\n2. if the customer exists but has no name yet, it will be updated with the customer name from the input.\n3. if the customer exists and also has a name, the input customer name is ignored (i.e. the customer's name will not be updated with the input name).\n\nIf only a customer number is given in the input data and a customer by that number does not yet exist, the associated CPN is filtered out and will not be imported.\n",
            "items": {
              "$ref": "#/components/schemas/CPN_2"
            },
            "type": "array"
          },
          "industry": {
            "default": "Other",
            "description": "The industry this assembly belongs to, defaults to `Other`.",
            "enum": [
              "Auto",
              "Medical",
              "Defense",
              "Aero",
              "Rail",
              "Industrial",
              "Construction",
              "Consumer",
              "Other"
            ],
            "examples": [
              "Industrial"
            ],
            "type": "string"
          },
          "internal_part_number": {
            "$ref": "#/components/schemas/InternalPartNumber"
          },
          "name": {
            "description": "The name of the assembly.\nDefaults to `internal_part_number.value - internal_part_number.revision`.\n",
            "examples": [
              "SUB1500"
            ],
            "type": "string"
          },
          "notes": {
            "description": "Notes for the assembly.",
            "examples": [
              "Some notes"
            ],
            "type": "string"
          },
          "subassemblies": {
            "description": "A list of subassemblies referenced by `(internal_part_number.value, internal_part_number.revision)`.\n\nA subassembly is a nested assembly. The same subassemblies may be referenced in multiple\nassemblies. Subassemblies can either be included in the same import request, or reference\nexisting assemblies that were imported via this endpoint earlier.\n\nThis allows splitting large imports into multiple smaller requests by first importing\nleaf assemblies, then importing parent assemblies that reference them.\n\nNote: Only assemblies created via this API endpoint can be referenced across imports.\nManually-created assemblies cannot be used as subassemblies in cross-import references.\n\nNo circular references are permitted. That is, an assembly may not be referenced in any of\nits own subassemblies, including across multiple imports.\n",
            "items": {
              "$ref": "#/components/schemas/Subassembly"
            },
            "type": "array"
          },
          "type": {
            "description": "The type of assembly.",
            "enum": [
              "PCBA",
              "Cable",
              "Box build",
              "System"
            ],
            "examples": [
              "PCBA"
            ],
            "type": "string"
          }
        },
        "required": [
          "internal_part_number",
          "type"
        ],
        "title": "Assembly",
        "type": "object"
      },
      "AssemblyBomResponse": {
        "properties": {
          "description": {
            "description": "Human readable status description and containing additional context information about failures etc.\n",
            "examples": [
              "Human readable status description and containing additional\ncontext information about failures etc.\n"
            ],
            "type": "string"
          },
          "internal_part_number": {
            "$ref": "#/components/schemas/InternalPartNumber"
          },
          "status": {
            "oneOf": [
              {
                "description": "The assembly was successfully imported.",
                "enum": [
                  "Success"
                ],
                "title": "Success",
                "type": "string"
              },
              {
                "description": "The assembly has not been imported because some components referenced as part\noptions are missing.\n\nThat is, they have not yet been uploaded via the components API.\nOnce they have been uploaded via the components API, the assembly import should\nbe performed again so that the previously missing components are successfully referenced.\n",
                "enum": [
                  "MissingComponents"
                ],
                "title": "MissingComponents",
                "type": "string"
              },
              {
                "description": "The assembly has not been imported because some assemblies listed as\nsubassemblies are unknown. They must either be included in the same request,\nor have been previously imported via this endpoint.\n",
                "enum": [
                  "MissingSubassemblies"
                ],
                "title": "MissingSubassemblies",
                "type": "string"
              },
              {
                "description": "The assembly has not been imported because an assembly with the same\n`internal_part_number` and `revision` was included in the request.\n",
                "enum": [
                  "Duplicate"
                ],
                "title": "Duplicate",
                "type": "string"
              },
              {
                "description": "The assembly has not been imported because of a circular reference.\nThat is, the same assembly is referenced as a subassembly.\n",
                "enum": [
                  "CicularReference"
                ],
                "title": "CicularReference",
                "type": "string"
              },
              {
                "description": "The assembly has not been imported because it would create a circular reference\nwith an existing assembly. This assembly is already a descendant of an assembly\nit is trying to reference as a subassembly.\n",
                "enum": [
                  "CircularReferenceWithExistingAssembly"
                ],
                "title": "CircularReferenceWithExistingAssembly",
                "type": "string"
              },
              {
                "description": "The assembly is valid but was not imported because it exists in an invalid path.\nEither all of its parents or subassemblies are invalid.\n",
                "enum": [
                  "ExistsInInvalidPath"
                ],
                "title": "ExistsInInvalidPath",
                "type": "string"
              },
              {
                "description": "The assembly has not been imported because it contains duplicate designators.\n",
                "enum": [
                  "DuplicateDesignators"
                ],
                "title": "DuplicateDesignators",
                "type": "string"
              },
              {
                "description": "The assembly has not been imported because it contains bom items with no designators.\n",
                "enum": [
                  "BomItemsWithNoDesignators"
                ],
                "title": "BomItemsWithNoDesignators",
                "type": "string"
              },
              {
                "description": "The assembly has not been imported because because some of the designators use OffTheShelf and Custom components simultaneously. That is not allowed.\n",
                "enum": [
                  "PartSpecificationTypeContradiction"
                ],
                "title": "PartSpecificationTypeContradiction",
                "type": "string"
              },
              {
                "description": "The assembly has not been imported because a manually created assembly with the same internal_part_number and revision already exists.\n",
                "enum": [
                  "IpnBoundToManualAssembly"
                ],
                "title": "IpnBoundToManualAssembly",
                "type": "string"
              }
            ]
          }
        },
        "type": "object"
      },
      "AssemblyImportResponse": {
        "items": {
          "$ref": "#/components/schemas/AssemblyBomResponse"
        },
        "type": "array"
      },
      "Availability": {
        "description": "Availability of a solution or purchase option, indicating if it is in stock",
        "oneOf": [
          {
            "properties": {
              "type": {
                "enum": [
                  "Stock",
                  "OnOrderWithUnknownLeadTime"
                ],
                "type": "string"
              }
            },
            "required": [
              "type"
            ],
            "type": "object"
          },
          {
            "properties": {
              "days": {
                "format": "integer",
                "type": "integer"
              },
              "type": {
                "enum": [
                  "PriceBreakLeadTimeDays",
                  "OnOrder",
                  "LeadTimeDays"
                ],
                "type": "string"
              }
            },
            "required": [
              "type",
              "days"
            ],
            "type": "object"
          }
        ]
      },
      "BomItem": {
        "properties": {
          "designators": {
            "description": "The designators for the BOM item. Designators must be unique across the entire assembly. At least one designator must be given.",
            "examples": [
              [
                "R1",
                "R2"
              ]
            ],
            "items": {
              "type": "string"
            },
            "minItems": 1,
            "type": "array",
            "uniqueItems": true
          },
          "do_not_place": {
            "default": false,
            "description": "A flag to define if the BOM item should not be placed on the assembly.",
            "examples": [
              false
            ],
            "type": "boolean"
          },
          "notes": {
            "description": "Notes for the BOM item.",
            "examples": [
              "The description of the BOM item"
            ],
            "type": "string"
          },
          "part_options": {
            "description": "A part option defines the components that may be used for the BOM item. All part options\nare considered equal alternatives of one another without any preference. All IPNs in part options of a given BomItem should be of either Custom xor OffTheShelf type, mixing both is not allowed.\n",
            "items": {
              "$ref": "#/components/schemas/PartOption"
            },
            "type": "array"
          },
          "quantity": {
            "description": "The quantity per designator. I.e. the total quantity of the BOM item is `quantity` x `len(designators)`. Can be a fractional value. Can't be zero. Can't be negative. If you want to specify that this BOM item is not needed, please set do_not_place.",
            "examples": [
              1
            ],
            "type": "number"
          },
          "sourced_by": {
            "default": "internal",
            "description": "Defines the consignment, i.e. if the BOM item should be sourced by an\ninternal or external party (e.g. a customer or EMS).\n",
            "enum": [
              "internal",
              "external"
            ],
            "examples": [
              "internal"
            ],
            "type": "string"
          },
          "unit": {
            "description": "The unit the quantity of the BOM item is measured in.",
            "enum": [
              "Pieces",
              "Kg",
              "Meters",
              "Liters"
            ],
            "examples": [
              "Pieces"
            ],
            "type": "string"
          }
        },
        "required": [
          "designators",
          "quantity",
          "unit"
        ],
        "title": "BOM item",
        "type": "object"
      },
      "CPN": {
        "properties": {
          "customer": {
            "$ref": "#/components/schemas/Customer"
          },
          "revision": {
            "description": "The revision of the customer's part number.",
            "examples": [
              "A"
            ],
            "type": "string"
          },
          "value": {
            "description": "The customer's part number.",
            "examples": [
              "123-456"
            ],
            "type": "string"
          }
        },
        "required": [
          "value",
          "customer"
        ],
        "type": "object"
      },
      "CPN_2": {
        "properties": {
          "customer": {
            "$ref": "#/components/schemas/Customer"
          },
          "revision": {
            "description": "The revision of the customer's part number.",
            "examples": [
              "A"
            ],
            "type": "string"
          },
          "value": {
            "description": "The customer's part number.",
            "examples": [
              "123-456"
            ],
            "type": "string"
          }
        },
        "required": [
          "customer"
        ],
        "type": "object"
      },
      "Capacitor": {
        "description": "Defines the specifcation for a capacitor. We only support ceramic capacitors at the moment.",
        "properties": {
          "data": {
            "properties": {
              "capacitance_farads": {
                "examples": [
                  "1e-12"
                ],
                "type": "string"
              },
              "dielectric": {
                "description": "We only support ceramic dielectric materials at the moment.",
                "properties": {
                  "data": {
                    "enum": [
                      "X8R",
                      "C0G",
                      "X7R",
                      "X5R",
                      "X8L",
                      "Y5V",
                      "X6S",
                      "Z5U",
                      "X7S",
                      "NP0",
                      "Y5U",
                      "C0H",
                      "Y5R",
                      "Y5P",
                      "Y5T",
                      "U2J",
                      "Z5V",
                      "Z5P",
                      "K4000",
                      "X6T",
                      "X7T",
                      "Z5F"
                    ],
                    "type": "string"
                  },
                  "type": {
                    "enum": [
                      "Ceramic"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "tolerance_percent": {
                "examples": [
                  "5"
                ],
                "type": "string"
              },
              "voltage_rating_volts": {
                "examples": [
                  "10"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "type": {
            "enum": [
              "Capacitor"
            ],
            "type": "string"
          }
        },
        "required": [
          "type",
          "data"
        ],
        "type": "object"
      },
      "Component": {
        "properties": {
          "category": {
            "description": "The part category as specified in your system of record (e.g. in your ERP or PLM system). The part category can be used on the Luminovo platform to filter your components and parts.\n",
            "type": "string"
          },
          "component": {
            "description": "The component data.\n\nCaution: it is only possible to change the type of the component (i.e. from `OffTheShelf` to `Custom` or vice versa) if\nthe component is not currently used as a part option in any assembly. Otherwise, the update of the affected component is skipped.\n\nIt is important to properly differentiate between `OffTheShelf` and `Custom` components in order to get good data quality in Luminovo.\n- `OffTheShelf` are all electonic components which have a MPN and can be purchased from the electronic parts suppliers.\n- `Custom` are all other non-electronic components, such as screws, packaging materials, lables, etc. Also, custom are all electronic components which are not standartized and don't have an MPN.\n",
            "discriminator": {
              "propertyName": "type"
            },
            "oneOf": [
              {
                "$ref": "#/components/schemas/OffTheShelf"
              },
              {
                "$ref": "#/components/schemas/Custom"
              }
            ],
            "type": "object"
          },
          "customer_part_numbers": {
            "description": "Your customers' numbers referring to this component.\n\nCPNs will be matched to existing customers by their number.\n\nIf a customer name is also given in the input data, the following cases are handled:\n1. if the customer does not yet exist, it will be created with the number and name provided.\n2. if the customer exists but has no name yet, it will be updated with the customer name from the input.\n3. if the customer exists and also has a name, the input customer name is ignored (i.e. the customer's name will not be updated with the input name).\n\nIf only a customer number is given in the input data and a customer by that number does not yet exist, the associated CPN is filtered out and will not be imported.\n",
            "items": {
              "$ref": "#/components/schemas/CPN"
            },
            "type": "array"
          },
          "description": {
            "description": "Describes this component. We try to extract the component's specification from this field as well if given.",
            "examples": [
              "470R0_1%_TK100_250mW 1206"
            ],
            "type": "string"
          },
          "internal_part_number": {
            "$ref": "#/components/schemas/InternalPartNumber"
          },
          "is_preferred": {
            "description": "Whether the component is preferred over other components.\nSetting this flag will add a star icon to the component for easier visibility.\nPreferred components may also get sorted to the top in various places of the product, for example in suggestions.\n",
            "examples": [
              true
            ],
            "type": "boolean"
          },
          "is_restricted_to_customers": {
            "description": "Whether the component is restricted to the customers listed in\n`customer_part_numbers`. Defaults to `false`.\nIf a component is restricted, then it is only visible and available in projects for the listed customers.\nBeware: if you set it to `true` and `customer_part_numbers` is empty you will not be able to use this component in any projects.\n\nRestricting a component is only possible if the component is not currently used in a project by a customer that would violate the new restriction.\n\nI.e. setting this field to `true` for an existing component that is currently not restricted (i.e. `false`) is only allowed if the component is not used at all or only used by customers (defined by their numbers) listed in `customer_part_numbers`.\nIf the component is used in projects of customers that are not listed in `customer_part_numbers`, the entire update of\nthis component is ignored.\n\nSimilarly, for an existing restricted component, the set of customers (defined by their numbers) listed in `customer_part_numbers`\ncan only be reduced in a new update if the component is not used by the customer that is being removed from the list of restricted customers.\nIf the component is still in use in a project by a customer that is to be removed from the `customer_part_numbers` list,\nthe entire update of this component is ignored as well.\n",
            "examples": [
              true
            ],
            "type": "boolean"
          },
          "origin": {
            "description": "The optional origin this component belongs to. This is useful if you want to upload components from different places separately. Subsequent uploads will only override the components in the same origin.\n\nCaution: If two or more distinct origins are specified in the same upload, the import is considered \"full\" and will remove all components not provided in the upload.\n\nCaution: Importing components without an origin works as before and is still expected to contain all components at once.\n",
            "type": "string"
          }
        },
        "required": [
          "internal_part_number",
          "component"
        ],
        "title": "Component",
        "type": "object"
      },
      "ComponentCustomPart": {
        "properties": {
          "description": {
            "examples": [
              "Custom part description"
            ],
            "type": "string"
          },
          "drawing_number": {
            "examples": [
              "ABC-12345-XX-YY-ZZZ"
            ],
            "type": "string"
          },
          "part_type": {
            "enum": [
              "Mechanical",
              "Plastic",
              "Cable",
              "Packaging",
              "Label",
              "Other"
            ],
            "examples": [
              "Label"
            ],
            "type": "string"
          },
          "reach_compliant": {
            "default": "Unknown",
            "enum": [
              "NonCompliant",
              "Unknown",
              "NotRequired",
              "CompliantWithExemption",
              "Compliant"
            ],
            "examples": [
              "Compliant"
            ],
            "type": "string"
          },
          "rohs_compliant": {
            "default": "Unknown",
            "enum": [
              "NonCompliant",
              "Unknown",
              "NotRequired",
              "CompliantWithExemption",
              "Compliant"
            ],
            "examples": [
              "Compliant"
            ],
            "type": "string"
          }
        },
        "required": [
          "part_type"
        ],
        "type": "object"
      },
      "Components": {
        "items": {
          "$ref": "#/components/schemas/Component"
        },
        "type": "array"
      },
      "CreatePurchaseOrdersRequest": {
        "properties": {
          "purchase_order": {
            "$ref": "#/components/schemas/PendingPurchaseOrder"
          }
        },
        "required": [
          "purchase_order"
        ],
        "title": "CreatePurchaseOrdersRequest",
        "type": "object"
      },
      "Currency": {
        "enum": [
          "EUR",
          "MAD",
          "USD",
          "AUD",
          "BGN",
          "BRL",
          "CAD",
          "CHF",
          "CNY",
          "CZK",
          "DKK",
          "GBP",
          "HKD",
          "HRK",
          "HUF",
          "IDR",
          "ILS",
          "INR",
          "ISK",
          "JPY",
          "KRW",
          "MXN",
          "MYR",
          "NOK",
          "NZD",
          "PHP",
          "PLN",
          "RON",
          "RUB",
          "SEK",
          "SGD",
          "THB",
          "TRY",
          "ZAR",
          "TWD",
          "VND",
          "LKR"
        ],
        "type": "string"
      },
      "Custom": {
        "description": "A custom component has a custom part that is specifically made for you (e.g. a Label) and cannot be bought Off-the-shelf.",
        "properties": {
          "data": {
            "properties": {
              "custom_parts": {
                "items": {
                  "$ref": "#/components/schemas/ComponentCustomPart"
                },
                "type": "array"
              }
            },
            "type": "object"
          },
          "type": {
            "enum": [
              "Custom"
            ],
            "type": "string"
          }
        },
        "required": [
          "type",
          "data"
        ],
        "title": "Custom",
        "type": "object"
      },
      "Customer": {
        "properties": {
          "name": {
            "description": "The name of the customer.",
            "examples": [
              "MyOEM"
            ],
            "type": "string"
          },
          "number": {
            "description": "The number of the customer.",
            "examples": [
              "9987"
            ],
            "type": "string"
          }
        },
        "required": [
          "number"
        ],
        "type": "object"
      },
      "Date": {
        "format": "date",
        "type": "string"
      },
      "DateTime": {
        "format": "date-time",
        "type": "string"
      },
      "GetPurchaseOrderResponse": {
        "properties": {
          "created": {
            "items": {
              "$ref": "#/components/schemas/PurchaseOrder"
            },
            "type": "array"
          },
          "pending": {
            "items": {
              "$ref": "#/components/schemas/PendingPurchaseOrderDraft"
            },
            "type": "array"
          }
        },
        "required": [
          "pending",
          "created"
        ],
        "title": "GetPurchaseOrderResponse",
        "type": "object"
      },
      "ImportUnit": {
        "properties": {
          "quantity": {
            "description": "The quantity must be greater than 0.",
            "type": "number"
          },
          "unit": {
            "enum": [
              "Kilogram",
              "Gram",
              "Milligram",
              "Pound",
              "Meter",
              "Centimeter",
              "Millimeter",
              "Foot",
              "Inch",
              "Liter",
              "Centiliter",
              "Milliliter",
              "Ounce",
              "Gallon",
              "Pint",
              "Piece",
              "Pair"
            ],
            "title": "Unit",
            "type": "string"
          }
        },
        "required": [
          "unit",
          "quantity"
        ],
        "type": "object"
      },
      "ImportUnitOfMeasurement": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ImportUnit"
          }
        ],
        "description": "The unit of measurement for the unit price, as well as the quantities provided in available_stock and total_stock. If you do not provide this field then it defaults to 1 piece. If the part in your inventory is better measured in a different unit, you can set the unit of measurement here. For example, if your IPN refers to a cable roll, where each roll has 30 meters of cable, you could provide a quantity of 30 and unit of \"Meter\" for the unit_of_measurement. If you then specify your available_stock as 10, we will know that you have 300 meters of cable available. Additionally, if in this case your provided unit price is 20 EUR, then that would mean 20 EUR per 30 meters of cable.",
        "title": "Unit of measurement"
      },
      "InternalPartNumber": {
        "properties": {
          "revision": {
            "description": "The optional revision for an internal part number. Revisions must be unique for the same `value`.",
            "examples": [
              "rev1"
            ],
            "type": "string"
          },
          "value": {
            "description": "The internal part number value used to reference an assembly in the ERP system, also sometimes referred to as article number. The tuple of (`value`, `revision`) must be unique across all imported assemblies and components.",
            "examples": [
              "1000-0"
            ],
            "type": "string"
          }
        },
        "required": [
          "value"
        ],
        "type": "object"
      },
      "InternalUser": {
        "properties": {
          "email": {
            "description": "The email address of the internal user",
            "examples": [
              "max.mustermann@musterfirma.de"
            ],
            "type": "string"
          },
          "first_name": {
            "description": "The first name of the internal user",
            "examples": [
              "Max"
            ],
            "type": "string"
          },
          "id": {
            "description": "The unique identifier of the internal user",
            "example": "f7182b67-8cef-4bb6-a5de-3dbaf1a89ef5",
            "format": "uuid",
            "type": "string"
          },
          "last_name": {
            "description": "The last name of the internal user",
            "examples": [
              "Mustermann"
            ],
            "type": "string"
          }
        },
        "required": [
          "id",
          "first_name",
          "last_name",
          "email"
        ],
        "type": "object"
      },
      "IpnIdParts": {
        "properties": {
          "revision": {
            "description": "The revision of the internal part number.",
            "type": "string"
          },
          "value": {
            "description": "The internal part number (also known as IPN).",
            "type": "string"
          }
        },
        "required": [
          "value"
        ],
        "type": "object"
      },
      "MonetaryValue": {
        "properties": {
          "amount": {
            "type": "string"
          },
          "currency": {
            "$ref": "#/components/schemas/Currency"
          }
        },
        "required": [
          "amount",
          "currency"
        ],
        "type": "object"
      },
      "NaiveDateTime": {
        "description": "A naive date-time string in the format \"YYYY-MM-DDTHH:MM:SS\", where \"T\" is a literal character separating the date and time components, without a time zone. Example: \"2024-03-31T01:00:00\".\n",
        "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}$",
        "type": "string"
      },
      "OffTheShelf": {
        "description": "Off-the-shelf components refer to components that have parts (or a specification of them) that can be bought Off-the-shelf (and are not custom made to order).",
        "properties": {
          "data": {
            "properties": {
              "parts": {
                "description": "Defines an Off-the-shelf part that can be used for this component. Keep in mind that although no part's fields are required by the spec, either MPN or SPN (but NOT both) MUST be present. A part will be skipped in case it doesnt comply with this.",
                "items": {
                  "$ref": "#/components/schemas/Part"
                },
                "type": "array"
              },
              "specification": {
                "$ref": "#/components/schemas/Specification"
              }
            },
            "type": "object"
          },
          "type": {
            "enum": [
              "OffTheShelf"
            ],
            "type": "string"
          }
        },
        "required": [
          "type",
          "data"
        ],
        "title": "OffTheShelf",
        "type": "object"
      },
      "OfferId": {
        "anyOf": [
          {
            "properties": {
              "offer": {
                "format": "uuid",
                "type": "string"
              },
              "offer_type": {
                "enum": [
                  "Other",
                  "CustomPart",
                  "Consigned"
                ],
                "type": "string"
              }
            },
            "required": [
              "offer_type",
              "offer"
            ],
            "type": "object"
          },
          {
            "properties": {
              "offer": {
                "type": "string"
              },
              "offer_type": {
                "enum": [
                  "Inventory"
                ],
                "type": "string"
              }
            },
            "required": [
              "offer_type",
              "offer"
            ],
            "type": "object"
          }
        ]
      },
      "OfferImport": {
        "description": "Offer import",
        "properties": {
          "availability": {
            "$ref": "#/components/schemas/OfferImportAvailability"
          },
          "customer": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Customer"
              }
            ],
            "description": "This field can be given if an offer or inventory is restricted to a certain customer. If a customer name is also given in the input data, the following cases are handled:\n1. If the customer can be found by number, the customer name will not be updated. 2. If the customer cannot be found by number but it can be found by name, the customer number will be updated to the number provided. 3. If the customer does not yet exist, it will be created only if the number and name are provided."
          },
          "import_context": {
            "description": "Any text for context on the origin of the offer (e.g. a specific ERP). This allows us to more easily find offers from the same import and context.",
            "type": "string"
          },
          "notes": {
            "description": "Notes for the offer.",
            "type": "string"
          },
          "one_time_costs": {
            "allOf": [
              {
                "$ref": "#/components/schemas/OfferImportOneTimeCost"
              }
            ],
            "description": "One-time costs for the offer, e.g. setup costs. This is optional and can be used to provide additional costs that are not covered by the unit price."
          },
          "packaging": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Packaging"
              }
            ],
            "description": "The packaging for a part in an offer or inventory.",
            "title": "Packaging"
          },
          "part": {
            "$ref": "#/components/schemas/OfferImportPart"
          },
          "price_type": {
            "$ref": "#/components/schemas/OfferImportOfferPriceType"
          },
          "prices": {
            "description": "A list of price breaks for a given offer or inventory. At least one price break needs to be given.",
            "items": {
              "$ref": "#/components/schemas/OfferImportPriceBreak"
            },
            "type": "array"
          },
          "supplier": {
            "$ref": "#/components/schemas/OfferImportSupplier"
          },
          "unit_of_measurement": {
            "$ref": "#/components/schemas/ImportUnitOfMeasurement"
          },
          "valid_until": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Date"
              }
            ],
            "description": "A date until which the given offer is valid."
          }
        },
        "required": [
          "part",
          "supplier",
          "prices",
          "availability"
        ],
        "title": "Offer",
        "type": "object"
      },
      "OfferImportAvailability": {
        "description": "The availability of an offer or inventory, giving stock values and lead times.",
        "properties": {
          "available_stock": {
            "description": "The freely available stock in your inventory or at the supplier, that can be used for new projects. This is what will be used for generating solutions in Luminovo.",
            "format": "double",
            "minimum": 0,
            "type": "number"
          },
          "lead_time": {
            "description": "This can be given to provide:\n- For inventory offers, a standard lead time (in days) that it takes to get new parts in stock in your inventory.\n- For offers from suppliers, a factory lead time (in days) that it takes for the supplier to replenish their stock\n  from the manufacturer.",
            "minimum": 0,
            "type": "integer"
          },
          "on_order": {
            "description": "A list of on-order items, which each give a quantity of units that are on order for a given offer or inventory, with an optional arrival date",
            "items": {
              "$ref": "#/components/schemas/OfferImportOnOrder"
            },
            "type": "array"
          },
          "total_stock": {
            "description": "The total stock in your inventory (including stock already assigned to a different project). This won't be used for generating solutions, but only displayed as an additional info in Luminovo. This value is not used for offers from suppliers.",
            "format": "double",
            "minimum": 0,
            "type": "number"
          }
        },
        "required": [
          "available_stock"
        ],
        "title": "Availability",
        "type": "object"
      },
      "OfferImportInternalPartNumber": {
        "properties": {
          "internal_part_number": {
            "description": "The internal part number used to reference an article in your ERP, also sometimes referred to as article number.",
            "examples": [
              "1000-10"
            ],
            "type": "string"
          }
        },
        "required": [
          "internal_part_number"
        ],
        "title": "Internal Part Number",
        "type": "object"
      },
      "OfferImportManufacturerAndManufacturerPartNumber": {
        "properties": {
          "manufacturer": {
            "description": "The manufacturer of the part.",
            "examples": [
              "Panasonic"
            ],
            "type": "string"
          },
          "manufacturer_part_number": {
            "description": "The manufacturer part number (MPN) used to identify the part from the given manufacturer. This will be taken together with the manufacturer to match your offer or inventory to a part. The more accurate this information is the higher the likelihood we will be able to match the part.",
            "examples": [
              "ERJ-B2BF1R1V"
            ],
            "type": "string"
          }
        },
        "required": [
          "manufacturer",
          "manufacturer_part_number"
        ],
        "title": "Manufacturer and Manufacturer Part Number",
        "type": "object"
      },
      "OfferImportOfferPriceType": {
        "description": "The price type of the offer.\nThis field is optional. If not given, then\nin the external supplier case, a list price type is used, and\nin the internal supplier case, a standard price type is used.\n\n**Price Type Meanings:**\n- **List**: Standard list price from the supplier (usually the highest price)\n- **Contract**: Negotiated contract price (usually better than list price)\n- **Quote**: Specific quote price for a particular order or customer\n- **Purchase**: Purchase price (what you actually paid)\n- **Standard**: Standard pricing (default pricing)\n- **CustomerNegotiated**: Price specifically negotiated with a customer\n- **TargetPrice**: Target price to beat or achieve\n",
        "enum": [
          "List",
          "Contract",
          "Quote",
          "Purchase",
          "Standard",
          "CustomerNegotiated",
          "TargetPrice"
        ],
        "title": "Price type",
        "type": "string"
      },
      "OfferImportOnOrder": {
        "properties": {
          "date": {
            "$ref": "#/components/schemas/Date"
          },
          "quantity": {
            "minimum": 0,
            "type": "number"
          }
        },
        "required": [
          "quantity"
        ],
        "title": "OnOrder",
        "type": "object"
      },
      "OfferImportOneTimeCost": {
        "description": "A cost value with description.",
        "properties": {
          "description": {
            "description": "A human-readable description of the cost.",
            "type": "string"
          },
          "price": {
            "allOf": [
              {
                "$ref": "#/components/schemas/MonetaryValue"
              }
            ],
            "description": "The cost value."
          }
        },
        "title": "Cost",
        "type": "object"
      },
      "OfferImportPart": {
        "description": "Specification of the part that a given offer or inventory is for. This can be either:\n- An internal part number (IPN) to identify parts of an ERP component.\n  The IPN and attached component data needs to be uploaded separately through the components API for the offer or inventory to be accessible.\n- A manufacturer and manufacturer part number (MPN) to identify an off-the-shelf part.\n  If no match or no unique match can be found for a given manufacturer and MPN, an error is returned for this offer or inventory item.",
        "oneOf": [
          {
            "$ref": "#/components/schemas/OfferImportInternalPartNumber"
          },
          {
            "$ref": "#/components/schemas/OfferImportManufacturerAndManufacturerPartNumber"
          }
        ],
        "title": "Part"
      },
      "OfferImportPriceBreak": {
        "properties": {
          "moq": {
            "description": "The minimum order quantity (MOQ) for this price break, giving the minimum amount of units that need to be purchased. If not given, 1 is used.",
            "exclusiveMinimum": 0,
            "format": "double",
            "minimum": 0,
            "type": "number"
          },
          "mpq": {
            "description": "The minimum packaging quantity (MPQ) for this price break, giving the number of multiples In which units can be purchased. If not given, 1 is used.",
            "exclusiveMinimum": 0,
            "format": "double",
            "minimum": 0,
            "type": "number"
          },
          "unit_price": {
            "allOf": [
              {
                "$ref": "#/components/schemas/MonetaryValue"
              }
            ],
            "description": "Price per unit"
          }
        },
        "required": [
          "unit_price"
        ],
        "title": "Price break",
        "type": "object"
      },
      "OfferImportSupplier": {
        "description": "The supplier of an offer, which can be either internal for an inventory offer, or external for an offer from a supplier. The location of the offer may be optionally given either through an inventory site or a stock location of a supplier.",
        "properties": {
          "stock_location": {
            "$ref": "#/components/schemas/ThreeLetterStockLocation",
            "description": "The stock location of the external supplier identified by `supplier_number` or `supplier`. It is only required to provide `stock_location` when more than one stock location exists for the supplier, so that the system knows which one to use."
          },
          "supplier": {
            "description": "The name of either the inventory site or the external supplier that offers this part. For external suppliers, this is required if `supplier_number` is not given. If both are provided, `supplier_number` will be prioritized. For internal suppliers, a default inventory site is used if neither `supplier` nor `supplier_number` are given.",
            "examples": [
              "Mouser"
            ],
            "type": "string"
          },
          "supplier_number": {
            "description": "The supplier number can be used to identify an inventory site or an external supplier by an internal number. For external suppliers, this is required if `supplier` is not given.",
            "type": "string"
          },
          "supplier_part_number": {
            "description": "The number used by the supplier as the stock keeping unit (SKU) for this part.",
            "examples": [
              "667-ERJ-B2BF1R1V"
            ],
            "type": "string"
          },
          "type": {
            "description": "The type of the supplier:\n- `Internal`: for inventory offers\n- `External`: for offers from an external supplier",
            "enum": [
              "Internal",
              "External"
            ],
            "type": "string"
          }
        },
        "required": [
          "type"
        ],
        "title": "Supplier",
        "type": "object"
      },
      "OffersImport": {
        "description": "Offers import",
        "items": {
          "$ref": "#/components/schemas/OfferImport"
        },
        "type": "array"
      },
      "Packaging": {
        "enum": [
          "AmmoPack",
          "Bag",
          "Bulk",
          "Reel",
          "ReReel",
          "Tape",
          "Tray",
          "Tube",
          "Carton"
        ],
        "type": "string"
      },
      "Part": {
        "oneOf": [
          {
            "properties": {
              "manufacturer": {
                "description": "The part's manufacturer.",
                "examples": [
                  "Yageo"
                ],
                "type": "string"
              },
              "mpn": {
                "description": "The manufacturer part number of the part. This will be taken together with the manufacturer to match your IPN to a part. The more accurate this information is the higher the likelihood we will be able to match the part.",
                "examples": [
                  "RC1206FR-10470RL"
                ],
                "type": "string"
              }
            },
            "required": [
              "mpn"
            ],
            "title": "MPN and manufacturer"
          },
          {
            "properties": {
              "supplier": {
                "description": "The part's supplier.",
                "examples": [
                  "Arrow"
                ],
                "type": "string"
              },
              "supplier_part_number": {
                "description": "The supplier part number of the part.",
                "examples": [
                  "13-RC1206FR-10470RLTR-ND"
                ],
                "type": "string"
              }
            },
            "required": [
              "supplier_part_number"
            ],
            "title": "SPN and supplier"
          }
        ],
        "type": "object"
      },
      "PartOption": {
        "properties": {
          "internal_part_number": {
            "$ref": "#/components/schemas/InternalPartNumber"
          }
        },
        "required": [
          "internal_part_number"
        ],
        "title": "Part option",
        "type": "object"
      },
      "PendingPurchaseOrder": {
        "properties": {
          "approved_at": {
            "$ref": "#/components/schemas/NaiveDateTime"
          },
          "billing_address": {
            "description": "The billing address as a string. e.g. `\"123 Main St, San Francisco, CA 94105\"`",
            "type": "string"
          },
          "dispatch_method": {
            "description": "Use this to specify how the purchase order should be dispatched.\n",
            "oneOf": [
              {
                "properties": {
                  "type": {
                    "enum": [
                      "None"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "type"
                ],
                "title": "None",
                "type": "object"
              },
              {
                "$ref": "#/components/schemas/PurchaseOrderEmail"
              }
            ],
            "type": "object"
          },
          "expected_delivery_at": {
            "$ref": "#/components/schemas/NaiveDateTime"
          },
          "line_items": {
            "items": {
              "$ref": "#/components/schemas/PendingPurchaseOrderLineItem"
            },
            "type": "array"
          },
          "notes": {
            "description": "Extra notes to be added to the purchase order. This are internal notes and will not be dispatched.",
            "type": "string"
          },
          "purchase_order_number": {
            "description": "The ID of the purchase order inside luminovo. If not supplied, this value is autogenerated and has the format `LUMI-000123`.",
            "type": "string"
          },
          "recipient": {
            "$ref": "#/components/schemas/PendingPurchaseOrderRecipient"
          },
          "sender_id": {
            "description": "The ID of the User that will send the purchase order.\n\nTo obtain a user ID, use this command. You only need to do this once:\n```\ncurl 'https://api.luminovo.ai/users/organization' -H 'authorization: Bearer {{token}}'\n```\n\nNote: this endpoint is not part of the public API, so don't make assumptions about its structure.\n",
            "format": "uuid",
            "type": "string"
          },
          "shipping_address": {
            "description": "Address for the purchase order to be sent",
            "type": "string"
          },
          "shipping_costs": {
            "allOf": [
              {
                "$ref": "#/components/schemas/MonetaryValue"
              }
            ]
          },
          "supplier_purchase_order_number": {
            "description": "If known, enter the supplier purchase order number here. This can be added later.",
            "type": "string"
          }
        },
        "required": [
          "billing_address",
          "recipient",
          "line_items",
          "notes",
          "shipping_address",
          "dispatch_method"
        ],
        "title": "PendingPurchaseOrder",
        "type": "object"
      },
      "PendingPurchaseOrderDraft": {
        "properties": {
          "line_items": {
            "items": {
              "$ref": "#/components/schemas/PendingPurchaseOrderLineItem"
            },
            "type": "array"
          },
          "recipient": {
            "$ref": "#/components/schemas/PendingPurchaseOrderRecipient"
          }
        },
        "required": [
          "line_items",
          "recipient"
        ],
        "title": "Pending purchase order draft",
        "type": "object"
      },
      "PendingPurchaseOrderLineItem": {
        "properties": {
          "availability": {
            "$ref": "#/components/schemas/Availability"
          },
          "expected_unit_price": {
            "allOf": [
              {
                "$ref": "#/components/schemas/MonetaryValue"
              }
            ]
          },
          "ipns": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "linked_part": {
            "$ref": "#/components/schemas/PurchaseOrderLinkedPart"
          },
          "offer_created_at": {
            "$ref": "#/components/schemas/NaiveDateTime"
          },
          "offer_number": {
            "type": "string"
          },
          "packaging": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Packaging"
              }
            ]
          },
          "quantity": {
            "$ref": "#/components/schemas/QuantityUnit"
          },
          "received_at": {
            "$ref": "#/components/schemas/NaiveDateTime"
          },
          "solution_config_id": {
            "description": "The associated solution configuration ID.",
            "format": "uuid",
            "type": "string"
          },
          "supplier_part_number": {
            "description": "Extra note",
            "type": "string"
          },
          "total_price": {
            "allOf": [
              {
                "$ref": "#/components/schemas/MonetaryValue"
              }
            ]
          }
        },
        "required": [
          "expected_unit_price",
          "quantity",
          "solution_config_id",
          "total_price",
          "linked_part"
        ],
        "title": "PendingPurchaseOrderLineItem",
        "type": "object"
      },
      "PendingPurchaseOrderRecipient": {
        "oneOf": [
          {
            "properties": {
              "supplier_and_stock_location_id": {
                "description": "The ID of the supplier-and-stock-location for purchase order",
                "format": "uuid",
                "type": "string"
              },
              "supplier_contact": {
                "$ref": "#/components/schemas/SupplierContact"
              },
              "type": {
                "enum": [
                  "Supplier"
                ],
                "type": "string"
              }
            },
            "required": [
              "type",
              "supplier_and_stock_location_id"
            ],
            "title": "Supplier",
            "type": "object"
          },
          {
            "properties": {
              "internal_user": {
                "$ref": "#/components/schemas/InternalUser"
              },
              "inventory_id": {
                "description": "The ID of the inventory site for purchase order",
                "format": "uuid",
                "type": "string"
              },
              "type": {
                "enum": [
                  "Internal"
                ],
                "type": "string"
              }
            },
            "required": [
              "type",
              "inventory_id"
            ],
            "title": "Internal",
            "type": "object"
          },
          {
            "properties": {
              "type": {
                "enum": [
                  "Customer"
                ],
                "type": "string"
              },
              "user": {
                "$ref": "#/components/schemas/InternalUser"
              }
            },
            "required": [
              "type"
            ],
            "title": "Customer",
            "type": "object"
          },
          {
            "properties": {
              "supplier_contact": {
                "$ref": "#/components/schemas/SupplierContact"
              },
              "supplier_number": {
                "description": "The number of the supplier for purchase order",
                "type": "string"
              },
              "type": {
                "enum": [
                  "SupplierNumber"
                ],
                "type": "string"
              }
            },
            "required": [
              "type",
              "supplier_number"
            ],
            "title": "SupplierNumber",
            "type": "object"
          }
        ],
        "title": "PendingPurchaseOrderRecipient",
        "type": "object"
      },
      "PostOffersImportResponse": {
        "items": {
          "properties": {
            "description": {
              "description": "Human readable status description containing additional context information about the status, e.g. failure description.\n",
              "type": "string"
            },
            "error_code": {
              "description": "Machine-readable error code for categorizing the type of error. Only present when status is not 200.\n",
              "type": "string"
            },
            "key": {
              "description": "Optional key that can be used to track which request item corresponds to which response item. Echoed back from the request.\n",
              "type": "object"
            },
            "part": {
              "$ref": "#/components/schemas/OfferImportPart"
            },
            "status": {
              "description": "Response status value. 200 for successfully created or updated offer or inventory items, 400 for bad requests, 422 for validation errors.\n",
              "enum": [
                200,
                400,
                422
              ],
              "type": "integer"
            }
          },
          "required": [
            "status",
            "description"
          ],
          "type": "object"
        },
        "type": "array"
      },
      "PurchaseOptionResponse": {
        "allOf": [
          {
            "$ref": "#/components/schemas/OfferId"
          },
          {
            "properties": {
              "availability": {
                "$ref": "#/components/schemas/Availability"
              },
              "quantity": {
                "type": "number"
              },
              "signature": {
                "anyOf": [
                  {
                    "type": "null"
                  },
                  {
                    "$ref": "#/components/schemas/Signature"
                  }
                ]
              },
              "unit": {
                "$ref": "#/components/schemas/QuantityUnit"
              },
              "unit_price": {
                "$ref": "#/components/schemas/MonetaryValue"
              }
            },
            "required": [
              "unit",
              "quantity"
            ],
            "type": "object"
          }
        ]
      },
      "PurchaseOrder": {
        "properties": {
          "approved_at": {
            "$ref": "#/components/schemas/NaiveDateTime"
          },
          "billing_address": {
            "description": "Billing address to be used in the Purchase order",
            "type": "string"
          },
          "expected_delivery_at": {
            "$ref": "#/components/schemas/DateTime"
          },
          "id": {
            "description": "Purchase order ID",
            "format": "uuid",
            "type": "string"
          },
          "line_items": {
            "items": {
              "$ref": "#/components/schemas/PurchaseOrderLineItem"
            },
            "type": "array"
          },
          "notes": {
            "description": "Extra notes",
            "type": "string"
          },
          "purchase_order_number": {
            "description": "Purchase order identifier",
            "type": "string"
          },
          "recipient": {
            "$ref": "#/components/schemas/PurchaseOrderRecipient"
          },
          "rfq_id": {
            "format": "uuid",
            "type": "string"
          },
          "sent_at": {
            "$ref": "#/components/schemas/NaiveDateTime"
          },
          "shipping_address": {
            "description": "Address for the purchase order to be sent",
            "type": "string"
          },
          "shipping_costs": {
            "allOf": [
              {
                "$ref": "#/components/schemas/MonetaryValue"
              }
            ]
          },
          "sourcing_scenario_id": {
            "format": "uuid",
            "type": "string"
          },
          "supplier_purchase_order_number": {
            "description": "Supplier purchase order identifier",
            "type": "string"
          }
        },
        "required": [
          "id",
          "approved_at",
          "line_items",
          "billing_address",
          "shipping_address"
        ],
        "title": "Purchase order",
        "type": "object"
      },
      "PurchaseOrderEmail": {
        "description": "Send a purchase order via an email",
        "properties": {
          "body": {
            "type": "string"
          },
          "subject": {
            "type": "string"
          },
          "type": {
            "enum": [
              "Email"
            ],
            "type": "string"
          }
        },
        "required": [
          "type",
          "subject",
          "body"
        ],
        "title": "Email",
        "type": "object"
      },
      "PurchaseOrderLineItem": {
        "properties": {
          "availability": {
            "$ref": "#/components/schemas/Availability"
          },
          "expected_unit_price": {
            "allOf": [
              {
                "$ref": "#/components/schemas/MonetaryValue"
              }
            ]
          },
          "id": {
            "description": "Purchase order line item ID",
            "format": "uuid",
            "type": "string"
          },
          "ipns": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "linked_part": {
            "$ref": "#/components/schemas/PurchaseOrderLinkedPart"
          },
          "offer_created_at": {
            "$ref": "#/components/schemas/DateTime"
          },
          "offer_number": {
            "type": "string"
          },
          "packaging": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Packaging"
              }
            ]
          },
          "quantity": {
            "$ref": "#/components/schemas/QuantityUnit"
          },
          "received_at": {
            "$ref": "#/components/schemas/DateTime"
          },
          "solution_config_id": {
            "description": "Solution configuration ID",
            "format": "uuid",
            "type": "string"
          },
          "supplier_part_number": {
            "description": "Part number for supplier",
            "type": "string"
          },
          "total_price": {
            "allOf": [
              {
                "$ref": "#/components/schemas/MonetaryValue"
              }
            ]
          }
        },
        "required": [
          "id",
          "expected_unit_price",
          "quantity",
          "total_price",
          "linked_part",
          "solution_config_id"
        ],
        "title": "PurchaseOrderLineItem",
        "type": "object"
      },
      "PurchaseOrderLinkedPart": {
        "oneOf": [
          {
            "properties": {
              "part": {
                "format": "uuid",
                "type": "string"
              },
              "type": {
                "enum": [
                  "OffTheShelf",
                  "Custom",
                  "Ipn"
                ],
                "type": "string"
              }
            },
            "required": [
              "type",
              "part"
            ],
            "type": "object"
          },
          {
            "properties": {
              "part_options": {
                "items": {
                  "properties": {
                    "part": {
                      "format": "uuid",
                      "type": "string"
                    },
                    "type": {
                      "enum": [
                        "Custom",
                        "OffTheShelf",
                        "Ipn",
                        "Generic"
                      ],
                      "type": "string"
                    }
                  },
                  "required": [
                    "part",
                    "type"
                  ],
                  "type": "object"
                },
                "type": "array"
              },
              "type": {
                "enum": [
                  "Consigned"
                ],
                "type": "string"
              }
            },
            "required": [
              "type",
              "part_options"
            ],
            "type": "object"
          }
        ],
        "title": "PurchaseOrderLinkedPart",
        "type": "object"
      },
      "PurchaseOrderRecipient": {
        "oneOf": [
          {
            "properties": {
              "supplier_and_stock_location_id": {
                "description": "The ID of the supplier-and-stock-location for purchase order",
                "format": "uuid",
                "type": "string"
              },
              "supplier_contact": {
                "format": "uuid",
                "type": "string"
              },
              "type": {
                "enum": [
                  "Supplier"
                ],
                "type": "string"
              }
            },
            "required": [
              "type",
              "supplier_and_stock_location_id"
            ],
            "type": "object"
          },
          {
            "properties": {
              "internal_user": {
                "format": "uuid",
                "type": "string"
              },
              "inventory_id": {
                "description": "The ID of the inventory site for purchase order",
                "format": "uuid",
                "type": "string"
              },
              "type": {
                "enum": [
                  "Internal"
                ],
                "type": "string"
              }
            },
            "required": [
              "type",
              "inventory_id",
              "internal_user"
            ],
            "type": "object"
          },
          {
            "properties": {
              "type": {
                "enum": [
                  "Customer"
                ],
                "type": "string"
              },
              "user": {
                "format": "uuid",
                "type": "string"
              }
            },
            "required": [
              "type",
              "user"
            ],
            "type": "object"
          },
          {
            "properties": {
              "supplier_contact": {
                "format": "uuid",
                "type": "string"
              },
              "supplier_number": {
                "description": "The number of the supplier for purchase order",
                "type": "string"
              },
              "type": {
                "enum": [
                  "SupplierNumber"
                ],
                "type": "string"
              }
            },
            "required": [
              "type",
              "supplier_number"
            ],
            "title": "SupplierNumber",
            "type": "object"
          }
        ],
        "title": "PurchaseOrderRecipient",
        "type": "object"
      },
      "QuantityUnit": {
        "properties": {
          "quantity": {
            "type": "number"
          },
          "unit": {
            "enum": [
              "Kg",
              "Meters",
              "Liters",
              "Pieces"
            ],
            "type": "string"
          }
        },
        "required": [
          "unit",
          "quantity"
        ],
        "type": "object"
      },
      "Resistor": {
        "description": "Defines the specifcation for a resistor.",
        "properties": {
          "data": {
            "properties": {
              "power_rating_watts": {
                "examples": [
                  "50"
                ],
                "type": "string"
              },
              "resistance_ohms": {
                "examples": [
                  "100"
                ],
                "type": "string"
              },
              "temperature_coefficient_ppmk": {
                "examples": [
                  "200"
                ],
                "type": "string"
              },
              "tolerance_percent": {
                "examples": [
                  "5"
                ],
                "type": "string"
              },
              "voltage_rating_volts": {
                "examples": [
                  "10"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "type": {
            "enum": [
              "Resistor"
            ],
            "type": "string"
          }
        },
        "required": [
          "type",
          "data"
        ],
        "type": "object"
      },
      "Signature": {
        "type": "object"
      },
      "Specification": {
        "description": "Defines the more abstract or technical properties, as well as possible compliance requirements of the component.",
        "properties": {
          "approved_manufacturers": {
            "description": "**This data is not yet supported and is ignored during import.**\nList of manufacturers that are approved for this Generic component. If empty - all manufacturers are approved.\n",
            "items": {
              "examples": [
                "Yageo"
              ],
              "type": "string"
            },
            "type": "array"
          },
          "form_and_fit": {
            "description": "Defines the package for the component. We will try to link a package to this component by `(name, mounting, number_of_pins)` triplet, and if no package would be found, we will try with `(empty name, mounting, number_of_pins)` triplet. The linked package will be used as data for manufacturing.",
            "properties": {
              "mounting": {
                "description": "The package's mounting. At the moment we only support `SMT`, `THT`, `Press Fit` and `Other` as values.",
                "examples": [
                  "SMT"
                ],
                "type": "string"
              },
              "name": {
                "description": "The name of the package. E.g. `0603` We interpret names as imperial per default. If you want to refer to a metric packge the suffix `mm` must be appended. E.g. `0603mm`",
                "examples": [
                  "0603"
                ],
                "type": "string"
              },
              "number_of_pins": {
                "description": "The package's number of pins.\n",
                "examples": [
                  2
                ],
                "minimum": 1,
                "type": "integer"
              }
            },
            "required": [
              "name"
            ],
            "type": "object"
          },
          "function": {
            "description": "Defines the technical function of the component. At the moment we\nonly support defining the function for resistors and ceramic\ncapacitors.\nFor generic components, the function is required for automatic linking of parts.\nIf you do not specify a function, the linking of generic component will not be done automatically.\n\nFor numeric fields such as `resistance_ohms`, `capacitance_farads`, `power_rating_watts`, and `voltage_rating_volts`, the following metric prefixes are supported for deserialization:\n- `p` for pico (10^-12)\n- `n` for nano (10^-9)\n- `u`, `µ` for micro (10^-6)\n- `m` for milli (10^-3)\n- `k` for kilo (10^3)\n- `M` for mega (10^6)\n\nThese prefixes allow for concise representation of values. For example, \"10k\" will be interpreted as 10,000 (ten thousand).\n\nEnsure that values are non-negative, as negative values are not supported for these specifications. Additionally,\nranges (e.g., `+10%-20%`) are not accepted; only single values should be provided for fields like `tolerance_percent`.\nAdditionally, neither scientific (`5.31e5`) nor engineering (`531e3`) notations are supported.\n",
            "oneOf": [
              {
                "$ref": "#/components/schemas/Resistor"
              },
              {
                "$ref": "#/components/schemas/Capacitor"
              }
            ],
            "type": "object"
          },
          "type": {
            "description": "Defaults to `BoundToMPNs`.\n\n`BoundToMPNs`: this means that component specification is not generic, i.e. the selected parts were carefully selected and are binding.\n\n`Generic`: the component is generic. The component is mainly defined either via the\ntechnical properties in the function and form and fit, or the selected\nparts can be extended as long as the original intent is kept intact.\nOptionally restricts which manufacturers can be used. If none are\nrestricted, then all manufacturers are fine. This is also often referred\nto as manufacturer free.\n",
            "enum": [
              "BoundToMPNs",
              "Generic"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "Subassembly": {
        "properties": {
          "internal_part_number": {
            "$ref": "#/components/schemas/InternalPartNumber"
          },
          "quantity": {
            "description": "How often the subassembly is required in the assembly.",
            "examples": [
              1
            ],
            "type": "integer"
          }
        },
        "required": [
          "internal_part_number",
          "quantity"
        ],
        "title": "Subassembly",
        "type": "object"
      },
      "SupplierContact": {
        "properties": {
          "email": {
            "description": "The email address of the supplier contact",
            "examples": [
              "max.mustermann@musterfirma.de"
            ],
            "type": "string"
          },
          "first_name": {
            "description": "The first name of the supplier contact",
            "examples": [
              "Max"
            ],
            "type": "string"
          },
          "id": {
            "description": "the identifier of the supplier contact",
            "example": "1adf4f5f-ec6d-4b80-9da4-9f0d4f876913",
            "format": "uuid",
            "type": "string"
          },
          "is_main_contact": {
            "description": "Determines if this supplier contact will be the main contact. Sets the preselection of this contact",
            "example": true,
            "type": "boolean"
          },
          "is_public": {
            "description": "Determines if this supplier contact will be public.",
            "example": true,
            "type": "boolean"
          },
          "last_name": {
            "description": "The last name of the supplier contact",
            "examples": [
              "Mustermann"
            ],
            "type": "string"
          },
          "position": {
            "description": "Optional job description of the supplier contact",
            "examples": [
              "Key Account Manager"
            ],
            "type": "string"
          },
          "supplier_and_stock_location": {
            "description": "The identifier of the corresponding supplier",
            "example": "0f9b6e20-0f5c-4dd4-9ebf-f14cbece3f71",
            "format": "uuid",
            "type": "string"
          },
          "user_language": {
            "description": "The user language of the supplier contact",
            "enum": [
              "de",
              "en",
              "es",
              "fr"
            ],
            "example": "en",
            "type": "string"
          }
        },
        "required": [
          "id",
          "first_name",
          "last_name",
          "email",
          "user_language",
          "supplier_and_stock_location",
          "is_main_contact",
          "is_public"
        ],
        "type": "object"
      },
      "SupplierContactResponse": {
        "allOf": [
          {
            "$ref": "#/components/schemas/SupplierContact"
          },
          {
            "properties": {
              "id": {
                "description": "The unique identifier of that supplier contact",
                "example": "1adf4f5f-ec6d-4b80-9da4-9f0d4f876913",
                "format": "uuid",
                "type": "string"
              }
            },
            "type": "object"
          }
        ],
        "description": "The supplier contact object",
        "type": "object"
      },
      "ThreeLetterStockLocation": {
        "description": "The stock location for this offer from an external supplier. If not given, just the supplier name with an unknown stock location is used. The stock location can be specified on a country level through ISO 3166-1 alpha-3 codes or on a region level through English region names. The location is not used for internal suppliers, this should be configured through Luminovo.",
        "enum": [
          "World",
          "Africa",
          "Northern Africa",
          "Sub-Saharan Africa",
          "Western Africa",
          "Eastern Africa",
          "Middle Africa",
          "Southern Africa",
          "Americas",
          "Northern America",
          "Latin America and the Caribbean",
          "South America",
          "Central America",
          "Caribbean",
          "Asia",
          "Eastern Asia",
          "Southern Asia",
          "South-eastern Asia",
          "Central Asia",
          "Western Asia",
          "Europe",
          "Southern Europe",
          "Eastern Europe",
          "Northern Europe",
          "Channel Islands",
          "Western Europe",
          "Oceania",
          "Australia and New Zealand",
          "Melanesia",
          "Micronesia",
          "Polynesia",
          "ABW",
          "AFG",
          "AGO",
          "AIA",
          "ALA",
          "ALB",
          "AND",
          "ARE",
          "ARG",
          "ARM",
          "ASM",
          "ATA",
          "ATF",
          "ATG",
          "AUS",
          "AUT",
          "AZE",
          "BDI",
          "BEL",
          "BEN",
          "BES",
          "BFA",
          "BGD",
          "BGR",
          "BHR",
          "BHS",
          "BIH",
          "BLM",
          "BLR",
          "BLZ",
          "BMU",
          "BOL",
          "BRA",
          "BRB",
          "BRN",
          "BTN",
          "BVT",
          "BWA",
          "CAF",
          "CAN",
          "CCK",
          "CHE",
          "CHL",
          "CHN",
          "CIV",
          "CMR",
          "COD",
          "COG",
          "COK",
          "COL",
          "COM",
          "CPV",
          "CRI",
          "CUB",
          "CUW",
          "CXR",
          "CYM",
          "CYP",
          "CZE",
          "DEU",
          "DJI",
          "DMA",
          "DNK",
          "DOM",
          "DZA",
          "ECU",
          "EGY",
          "ERI",
          "ESH",
          "ESP",
          "EST",
          "ETH",
          "FIN",
          "FJI",
          "FLK",
          "FRA",
          "FRO",
          "FSM",
          "GAB",
          "GBR",
          "GEO",
          "GGY",
          "GHA",
          "GIB",
          "GIN",
          "GLP",
          "GMB",
          "GNB",
          "GNQ",
          "GRC",
          "GRD",
          "GRL",
          "GTM",
          "GUF",
          "GUM",
          "GUY",
          "HKG",
          "HMD",
          "HND",
          "HRV",
          "HTI",
          "HUN",
          "IDN",
          "IMN",
          "IND",
          "IOT",
          "IRL",
          "IRN",
          "IRQ",
          "ISL",
          "ISR",
          "ITA",
          "JAM",
          "JEY",
          "JOR",
          "JPN",
          "KAZ",
          "KEN",
          "KGZ",
          "KHM",
          "KIR",
          "KNA",
          "KOR",
          "KWT",
          "LAO",
          "LBN",
          "LBR",
          "LBY",
          "LCA",
          "LIE",
          "LKA",
          "LSO",
          "LTU",
          "LUX",
          "LVA",
          "MAC",
          "MAF",
          "MAR",
          "MCO",
          "MDA",
          "MDG",
          "MDV",
          "MEX",
          "MHL",
          "MKD",
          "MLI",
          "MLT",
          "MMR",
          "MNE",
          "MNG",
          "MNP",
          "MOZ",
          "MRT",
          "MSR",
          "MTQ",
          "MUS",
          "MWI",
          "MYS",
          "MYT",
          "NAM",
          "NCL",
          "NER",
          "NFK",
          "NGA",
          "NIC",
          "NIU",
          "NLD",
          "NOR",
          "NPL",
          "NRU",
          "NZL",
          "OMN",
          "PAK",
          "PAN",
          "PCN",
          "PER",
          "PHL",
          "PLW",
          "PNG",
          "POL",
          "PRI",
          "PRK",
          "PRT",
          "PRY",
          "PSE",
          "PYF",
          "QAT",
          "REU",
          "ROU",
          "RUS",
          "RWA",
          "Sark",
          "SAU",
          "SDN",
          "SEN",
          "SGP",
          "SGS",
          "SHN",
          "SJM",
          "SLB",
          "SLE",
          "SLV",
          "SMR",
          "SOM",
          "SPM",
          "SRB",
          "SSD",
          "STP",
          "SUR",
          "SVK",
          "SVN",
          "SWE",
          "SWZ",
          "SXM",
          "SYC",
          "SYR",
          "TCA",
          "TCD",
          "TGO",
          "THA",
          "TJK",
          "TKL",
          "TKM",
          "TLS",
          "TON",
          "TTO",
          "TUN",
          "TUR",
          "TUV",
          "TWN",
          "TZA",
          "UGA",
          "UKR",
          "UMI",
          "URY",
          "USA",
          "UZB",
          "VAT",
          "VCT",
          "VEN",
          "VGB",
          "VIR",
          "VNM",
          "VUT",
          "WLF",
          "WSM",
          "YEM",
          "ZAF",
          "ZMB",
          "ZWE"
        ],
        "examples": [
          "USA"
        ],
        "title": "Stock location",
        "type": "string"
      },
      "TokenRequest": {
        "properties": {
          "token": {
            "description": "The authentication token to exchange for an access token",
            "examples": [
              "cb7daea2-df5f-44de-99cc-213668e6c991"
            ],
            "type": "string"
          }
        },
        "required": [
          "token"
        ],
        "type": "object"
      },
      "AssemblyAcceptHeader": {
        "type": "string",
        "title": "AssemblyAcceptHeader",
        "enum": [
          "application/api.luminovo.assembly-v1+json"
        ]
      },
      "AssemblyCostAcceptHeader": {
        "type": "string",
        "title": "AssemblyCostAcceptHeader",
        "enum": [
          "application/api.luminovo.assembly-cost-v1+json"
        ]
      },
      "AssemblyId": {
        "type": "string",
        "format": "uuid"
      },
      "AssemblyIdsAcceptHeader": {
        "type": "string",
        "title": "AssemblyIdsAcceptHeader",
        "enum": [
          "application/api.luminovo.assembly-ids-v1+json"
        ]
      },
      "CalculationLineItemId": {
        "type": "string",
        "format": "uuid"
      },
      "CalculationScenarioId": {
        "type": "string",
        "format": "uuid"
      },
      "ComponentRiskAcceptHeader": {
        "type": "string",
        "title": "ComponentRiskAcceptHeader",
        "enum": [
          "application/api.luminovo.component-risk-v1+json"
        ]
      },
      "CostedBomAcceptHeader": {
        "type": "string",
        "title": "CostedBomAcceptHeader",
        "enum": [
          "application/api.luminovo.costed-bom-v1+json"
        ]
      },
      "CustomPartAcceptHeader": {
        "type": "string",
        "title": "CustomPartAcceptHeader",
        "enum": [
          "application/api.luminovo.custom-part-v1+json"
        ]
      },
      "CustomPartOfferAcceptHeader": {
        "type": "string",
        "title": "CustomPartOfferAcceptHeader",
        "enum": [
          "application/api.luminovo.custom-part-offer-v1+json"
        ]
      },
      "CustomPartResourceAcceptHeader": {
        "type": "string",
        "title": "CustomPartResourceAcceptHeader",
        "enum": [
          "application/api.luminovo.resource-v1+json"
        ]
      },
      "CustomerAcceptHeader": {
        "type": "string",
        "title": "CustomerAcceptHeader",
        "enum": [
          "application/api.luminovo.customer-v1+json"
        ]
      },
      "CustomerUserAcceptHeader": {
        "type": "string",
        "title": "CustomerUserAcceptHeader",
        "enum": [
          "application/api.luminovo.customer-user-v1+json"
        ]
      },
      "DemandAcceptHeader": {
        "type": "string",
        "title": "DemandAcceptHeader",
        "enum": [
          "application/api.luminovo.demand-v1+json"
        ]
      },
      "DemandCreationRequest": {
        "type": "object",
        "required": [
          "items",
          "context"
        ],
        "properties": {
          "context": {
            "type": "string",
            "description": "The context field is a string that provides additional information about where the demand originated from or its purpose.\nIt's required for most demand creation requests (except for sourcing scenarios)."
          },
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/types.demand.v1.DemandCreationRequestItem"
            }
          }
        }
      },
      "DesignItemId": {
        "type": "string",
        "format": "uuid"
      },
      "FlexibleCalculationAcceptHeader": {
        "type": "string",
        "title": "FlexibleCalculationAcceptHeader",
        "description": "Accept header for flexible calculation endpoints.\n\nVersion v0 indicates an unstable API contract. Breaking changes may be\nintroduced without a version bump. Once the API stabilises, it will be\npromoted to v1.",
        "enum": [
          "application/api.luminovo.flexible-calculation-v0+json"
        ]
      },
      "GetPnpParams": {
        "type": "object",
        "required": [
          "assembly_id"
        ],
        "properties": {
          "assembly_id": {
            "$ref": "#/components/schemas/AssemblyId",
            "description": "The assembly ID to get PnP items for."
          }
        }
      },
      "HashMap_Option_types.assembly.assembly_manufacturing_data.export.v1.NaiveTime": {
        "type": "object",
        "additionalProperties": {
          "oneOf": [
            {
              "type": "null"
            },
            {
              "type": "string",
              "format": "time"
            }
          ]
        },
        "propertyNames": {
          "type": "integer",
          "format": "int32"
        }
      },
      "HashMap_types.assembly.assembly_manufacturing_data.export.v1.ActivityConfigurationDetailCost": {
        "type": "object",
        "additionalProperties": {
          "type": "object",
          "properties": {
            "effective_cost": {
              "oneOf": [
                {
                  "type": "null"
                },
                {
                  "$ref": "#/components/schemas/types.primitives.monetary_value.v1.FloatingPointMoneyValueExchangePair"
                }
              ]
            },
            "total_cost": {
              "oneOf": [
                {
                  "type": "null"
                },
                {
                  "$ref": "#/components/schemas/types.primitives.monetary_value.v1.FloatingPointMoneyValueExchangePair"
                }
              ]
            }
          }
        },
        "propertyNames": {
          "type": "integer",
          "format": "int32"
        }
      },
      "HashMap_types.assembly.assembly_manufacturing_data.export.v1.ExpenseConfigurationDetailCost": {
        "type": "object",
        "additionalProperties": {
          "type": "object",
          "properties": {
            "fixed_cost": {
              "oneOf": [
                {
                  "type": "null"
                },
                {
                  "$ref": "#/components/schemas/types.primitives.monetary_value.v1.FloatingPointMoneyValue"
                }
              ]
            },
            "total_cost": {
              "oneOf": [
                {
                  "type": "null"
                },
                {
                  "$ref": "#/components/schemas/types.primitives.monetary_value.v1.FloatingPointMoneyValueExchangePair"
                }
              ]
            },
            "variable_cost": {
              "oneOf": [
                {
                  "type": "null"
                },
                {
                  "$ref": "#/components/schemas/types.primitives.monetary_value.v1.FloatingPointMoneyValue"
                }
              ]
            }
          }
        },
        "propertyNames": {
          "type": "integer",
          "format": "int32"
        }
      },
      "HashMap_types.assembly.assembly_manufacturing_data.export.v1.ManufacturingScenarioSummaryBreakdown": {
        "type": "object",
        "additionalProperties": {
          "type": "object",
          "required": [
            "total_unit_time",
            "total_batch_time",
            "total_unit_cost",
            "total_batch_cost",
            "total_project_cost",
            "total_effective_unit_cost",
            "total_effective_batch_cost"
          ],
          "properties": {
            "total_batch_cost": {
              "$ref": "#/components/schemas/types.primitives.monetary_value.v1.FloatingPointMoneyValue"
            },
            "total_batch_time": {
              "$ref": "#/components/schemas/types.assembly.assembly_manufacturing_data.export.v1.NaiveTime"
            },
            "total_effective_batch_cost": {
              "$ref": "#/components/schemas/types.primitives.monetary_value.v1.FloatingPointMoneyValue"
            },
            "total_effective_unit_cost": {
              "$ref": "#/components/schemas/types.primitives.monetary_value.v1.FloatingPointMoneyValue"
            },
            "total_project_cost": {
              "$ref": "#/components/schemas/types.primitives.monetary_value.v1.FloatingPointMoneyValue"
            },
            "total_unit_cost": {
              "$ref": "#/components/schemas/types.primitives.monetary_value.v1.FloatingPointMoneyValue"
            },
            "total_unit_time": {
              "$ref": "#/components/schemas/types.assembly.assembly_manufacturing_data.export.v1.NaiveTime"
            }
          }
        },
        "propertyNames": {
          "type": "integer",
          "format": "int32"
        }
      },
      "ManufacturingDataExportAcceptHeader": {
        "type": "string",
        "title": "ManufacturingDataExportAcceptHeader",
        "enum": [
          "application/api.luminovo.assembly.manufacturing-data.export-v1+json"
        ]
      },
      "ManufacturingResourceAcceptHeader": {
        "type": "string",
        "title": "ManufacturingResourceAcceptHeader",
        "enum": [
          "application/api.luminovo.manufacturing.resource-v1+json"
        ]
      },
      "ManufacturingScenarioTemplateInstanceId": {
        "type": "string",
        "format": "uuid"
      },
      "OrderManagementAcceptHeader": {
        "type": "string",
        "title": "OrderManagementAcceptHeader",
        "enum": [
          "application/api.luminovo.order-management-v1+json"
        ]
      },
      "PnpAcceptHeader": {
        "type": "string",
        "title": "PnpAcceptHeader",
        "enum": [
          "application/api.luminovo.pnp-v1+json"
        ]
      },
      "PnpFileId": {
        "type": "string",
        "format": "uuid"
      },
      "PnpItemId": {
        "type": "string",
        "format": "uuid"
      },
      "QuotationUploadAcceptHeader": {
        "type": "string",
        "title": "QuotationUploadAcceptHeader",
        "enum": [
          "application/api.luminovo.quotation-upload-v1+json"
        ]
      },
      "RfqAcceptHeader": {
        "type": "string",
        "title": "RfqAcceptHeader",
        "enum": [
          "application/api.luminovo.rfq-v1+json"
        ]
      },
      "RfqOverviewAcceptHeader": {
        "type": "string",
        "title": "RfqOverviewAcceptHeader",
        "enum": [
          "application/api.luminovo.rfq-overview-v1+json"
        ]
      },
      "SiteId": {
        "type": "string",
        "format": "uuid"
      },
      "SourcingCalculationAcceptHeader": {
        "type": "string",
        "title": "SourcingCalculationAcceptHeader",
        "enum": [
          "application/api.luminovo.sourcing-calculation-v1+json"
        ]
      },
      "SourcingScenarioAcceptHeader": {
        "type": "string",
        "title": "SourcingScenarioAcceptHeader",
        "enum": [
          "application/api.luminovo.sourcing-scenario-v1+json"
        ]
      },
      "SourcingScenarioV2AcceptHeader": {
        "type": "string",
        "title": "SourcingScenarioV2AcceptHeader",
        "enum": [
          "application/api.luminovo.sourcing-scenario-v2+json"
        ]
      },
      "String": {
        "type": "string"
      },
      "SupplierAcceptHeader": {
        "type": "string",
        "title": "SupplierAcceptHeader",
        "enum": [
          "application/api.luminovo.supplier-v1+json"
        ]
      },
      "SupplierCustomPartOfferAcceptHeader": {
        "type": "string",
        "title": "SupplierCustomPartOfferAcceptHeader",
        "enum": [
          "application/api.luminovo.custom-part-offer-v1+json"
        ]
      },
      "SupplierId": {
        "type": "string",
        "format": "uuid"
      },
      "UserAcceptHeader": {
        "type": "string",
        "title": "UserAcceptHeader",
        "enum": [
          "application/api.luminovo.user-v1+json"
        ]
      },
      "UserId": {
        "type": "string",
        "format": "uuid"
      },
      "types.assembly.assembly_ids.v1.AssemblyIdsResponse": {
        "type": "object",
        "required": [
          "assembly_ids"
        ],
        "properties": {
          "assembly_ids": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            }
          }
        }
      },
      "types.assembly.assembly_industry.v1.AssemblyIndustry": {
        "type": "string",
        "enum": [
          "Auto",
          "Medical",
          "Defense",
          "Aero",
          "Rail",
          "Industrial",
          "Construction",
          "Consumer",
          "Other"
        ]
      },
      "types.assembly.assembly_manufacturing_data.export.v1.ActivityConfigurationDetail": {
        "type": "object",
        "required": [
          "activity_name",
          "resources_details",
          "activity_process",
          "activity_category",
          "activity_level",
          "drivers_detail",
          "resource_cost_per_hour",
          "costs_per_batch_size",
          "times_per_batch_size",
          "rank"
        ],
        "properties": {
          "activity_category": {
            "type": "string"
          },
          "activity_configuration_notes": {
            "type": [
              "string",
              "null"
            ]
          },
          "activity_description": {
            "type": [
              "string",
              "null"
            ]
          },
          "activity_internal_number": {
            "type": [
              "string",
              "null"
            ]
          },
          "activity_level": {
            "type": "string"
          },
          "activity_name": {
            "type": "string"
          },
          "activity_process": {
            "type": "string"
          },
          "costs_per_batch_size": {
            "$ref": "#/components/schemas/HashMap_types.assembly.assembly_manufacturing_data.export.v1.ActivityConfigurationDetailCost"
          },
          "drivers_detail": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/types.assembly.assembly_manufacturing_data.export.v1.DriverDetail"
            },
            "description": "write_number of xlsxwriter expects f64"
          },
          "fixed_time": {
            "type": [
              "string",
              "null"
            ],
            "format": "time"
          },
          "manufacturing_scenario_template_instance_id": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/ManufacturingScenarioTemplateInstanceId"
              }
            ]
          },
          "panel_factor": {
            "type": [
              "number",
              "null"
            ],
            "format": "double",
            "description": "write_number of xlsxwriter expects f64"
          },
          "rank": {
            "type": "integer",
            "format": "int32"
          },
          "resource_cost_per_hour": {
            "$ref": "#/components/schemas/types.primitives.monetary_value.v1.FloatingPointMoneyValue"
          },
          "resources_details": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/types.assembly.assembly_manufacturing_data.export.v1.ActivityResourceDetail"
            }
          },
          "times_per_batch_size": {
            "$ref": "#/components/schemas/HashMap_Option_types.assembly.assembly_manufacturing_data.export.v1.NaiveTime"
          },
          "variable_time": {
            "type": [
              "string",
              "null"
            ],
            "format": "time"
          }
        }
      },
      "types.assembly.assembly_manufacturing_data.export.v1.ActivityConfigurationDetailCost": {
        "type": "object",
        "properties": {
          "effective_cost": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/types.primitives.monetary_value.v1.FloatingPointMoneyValueExchangePair"
              }
            ]
          },
          "total_cost": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/types.primitives.monetary_value.v1.FloatingPointMoneyValueExchangePair"
              }
            ]
          }
        }
      },
      "types.assembly.assembly_manufacturing_data.export.v1.ActivityResourceDetail": {
        "type": "object",
        "required": [
          "multiplier",
          "resource"
        ],
        "properties": {
          "multiplier": {
            "type": "string"
          },
          "resource": {
            "$ref": "#/components/schemas/types.assembly.assembly_manufacturing_data.export.v1.ResourceDetail"
          }
        }
      },
      "types.assembly.assembly_manufacturing_data.export.v1.AssemblySummary": {
        "type": "object",
        "required": [
          "assembly_name"
        ],
        "properties": {
          "assembly_name": {
            "type": "string"
          },
          "assembly_notes": {
            "type": [
              "string",
              "null"
            ]
          }
        }
      },
      "types.assembly.assembly_manufacturing_data.export.v1.CustomOrderSelectionOptionInput": {
        "type": "object",
        "required": [
          "assembly_summary",
          "manufacturing_scenario_summaries",
          "all_batch_sizes"
        ],
        "properties": {
          "all_batch_sizes": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "uniqueItems": true
          },
          "assembly_summary": {
            "$ref": "#/components/schemas/types.assembly.assembly_manufacturing_data.export.v1.AssemblySummary"
          },
          "manufacturing_scenario_summaries": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/types.assembly.assembly_manufacturing_data.export.v1.ManufacturingScenarioExport"
            }
          }
        }
      },
      "types.assembly.assembly_manufacturing_data.export.v1.DriverDetail": {
        "type": "object",
        "required": [
          "driver_name",
          "driver_type"
        ],
        "properties": {
          "driver_count": {
            "type": [
              "number",
              "null"
            ],
            "format": "double",
            "description": "write_number of xlsxwriter expects f64"
          },
          "driver_name": {
            "type": "string"
          },
          "driver_type": {
            "type": "string"
          }
        }
      },
      "types.assembly.assembly_manufacturing_data.export.v1.ExpenseConfigurationDetail": {
        "type": "object",
        "required": [
          "expense_name",
          "process",
          "category",
          "level",
          "drivers_detail",
          "costs_per_batch_size",
          "rank"
        ],
        "properties": {
          "category": {
            "type": "string"
          },
          "costs_per_batch_size": {
            "$ref": "#/components/schemas/HashMap_types.assembly.assembly_manufacturing_data.export.v1.ExpenseConfigurationDetailCost"
          },
          "drivers_detail": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/types.assembly.assembly_manufacturing_data.export.v1.DriverDetail"
            }
          },
          "expense_configuration_notes": {
            "type": [
              "string",
              "null"
            ]
          },
          "expense_description": {
            "type": [
              "string",
              "null"
            ]
          },
          "expense_internal_number": {
            "type": [
              "string",
              "null"
            ]
          },
          "expense_name": {
            "type": "string"
          },
          "level": {
            "type": "string"
          },
          "manufacturing_scenario_template_instance_id": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/ManufacturingScenarioTemplateInstanceId"
              }
            ]
          },
          "process": {
            "type": "string"
          },
          "rank": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "types.assembly.assembly_manufacturing_data.export.v1.ExpenseConfigurationDetailCost": {
        "type": "object",
        "properties": {
          "fixed_cost": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/types.primitives.monetary_value.v1.FloatingPointMoneyValue"
              }
            ]
          },
          "total_cost": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/types.primitives.monetary_value.v1.FloatingPointMoneyValueExchangePair"
              }
            ]
          },
          "variable_cost": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/types.primitives.monetary_value.v1.FloatingPointMoneyValue"
              }
            ]
          }
        }
      },
      "types.assembly.assembly_manufacturing_data.export.v1.ManufacturingScenarioExport": {
        "type": "object",
        "required": [
          "summary",
          "activity_configuration_details",
          "expense_configuration_details"
        ],
        "properties": {
          "activity_configuration_details": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/types.assembly.assembly_manufacturing_data.export.v1.ActivityConfigurationDetail"
            }
          },
          "expense_configuration_details": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/types.assembly.assembly_manufacturing_data.export.v1.ExpenseConfigurationDetail"
            }
          },
          "summary": {
            "$ref": "#/components/schemas/types.assembly.assembly_manufacturing_data.export.v1.ManufacturingScenarioSummary"
          }
        }
      },
      "types.assembly.assembly_manufacturing_data.export.v1.ManufacturingScenarioSummary": {
        "type": "object",
        "required": [
          "manufacturing_scenario_name",
          "activity_count",
          "expense_count",
          "breakdown_per_batch_size"
        ],
        "properties": {
          "activity_count": {
            "type": "number",
            "format": "double"
          },
          "breakdown_per_batch_size": {
            "$ref": "#/components/schemas/HashMap_types.assembly.assembly_manufacturing_data.export.v1.ManufacturingScenarioSummaryBreakdown"
          },
          "expense_count": {
            "type": "number",
            "format": "double"
          },
          "manufacturing_scenario_name": {
            "type": "string"
          },
          "manufacturing_scenario_notes": {
            "type": [
              "string",
              "null"
            ]
          },
          "sourcing_scenario_id": {
            "type": [
              "string",
              "null"
            ],
            "format": "uuid"
          }
        }
      },
      "types.assembly.assembly_manufacturing_data.export.v1.ManufacturingScenarioSummaryBreakdown": {
        "type": "object",
        "required": [
          "total_unit_time",
          "total_batch_time",
          "total_unit_cost",
          "total_batch_cost",
          "total_project_cost",
          "total_effective_unit_cost",
          "total_effective_batch_cost"
        ],
        "properties": {
          "total_batch_cost": {
            "$ref": "#/components/schemas/types.primitives.monetary_value.v1.FloatingPointMoneyValue"
          },
          "total_batch_time": {
            "$ref": "#/components/schemas/types.assembly.assembly_manufacturing_data.export.v1.NaiveTime"
          },
          "total_effective_batch_cost": {
            "$ref": "#/components/schemas/types.primitives.monetary_value.v1.FloatingPointMoneyValue"
          },
          "total_effective_unit_cost": {
            "$ref": "#/components/schemas/types.primitives.monetary_value.v1.FloatingPointMoneyValue"
          },
          "total_project_cost": {
            "$ref": "#/components/schemas/types.primitives.monetary_value.v1.FloatingPointMoneyValue"
          },
          "total_unit_cost": {
            "$ref": "#/components/schemas/types.primitives.monetary_value.v1.FloatingPointMoneyValue"
          },
          "total_unit_time": {
            "$ref": "#/components/schemas/types.assembly.assembly_manufacturing_data.export.v1.NaiveTime"
          }
        }
      },
      "types.assembly.assembly_manufacturing_data.export.v1.NaiveTime": {
        "type": "string",
        "format": "time"
      },
      "types.assembly.assembly_manufacturing_data.export.v1.ResourceDetail": {
        "type": "object",
        "required": [
          "name",
          "resource_type"
        ],
        "properties": {
          "internal_number": {
            "type": [
              "string",
              "null"
            ]
          },
          "name": {
            "type": "string"
          },
          "resource_type": {
            "type": "string"
          }
        }
      },
      "types.assembly.assembly_type.v1.AssemblyType": {
        "type": "string",
        "enum": [
          "Box",
          "Pcba",
          "PcbOnly",
          "Cable",
          "System",
          "BOM"
        ]
      },
      "types.assembly.v1.AssemblyInput": {
        "type": "object",
        "required": [
          "rfq",
          "customer",
          "type",
          "name",
          "industry"
        ],
        "properties": {
          "customer": {
            "type": "string",
            "format": "uuid",
            "description": "The ID of the customer who owns this assembly"
          },
          "industry": {
            "$ref": "#/components/schemas/types.assembly.assembly_industry.v1.AssemblyIndustry",
            "description": "The industry this assembly belongs to"
          },
          "name": {
            "type": "string",
            "description": "A unique name/identifier for the assembly within the RfQ.\nThis name helps identify the assembly in the BOM structure and should be descriptive\n(e.g., \"Main PCB Assembly\", \"Power Supply Module\", \"Display Interface Board\")."
          },
          "notes": {
            "type": [
              "string",
              "null"
            ],
            "description": "Optional notes or description for the assembly"
          },
          "parent_assembly": {
            "type": [
              "string",
              "null"
            ],
            "format": "uuid",
            "description": "Optional parent assembly ID. If provided, this assembly becomes a sub-assembly of the specified parent.\nIf not provided, this assembly becomes a top-level assembly within the RfQ.\nThis allows building hierarchical assembly structures (e.g., a main PCB containing smaller sub-assemblies)."
          },
          "rfq": {
            "type": "string",
            "format": "uuid",
            "description": "The ID of the RfQ (Request for Quote) this assembly belongs to"
          },
          "type": {
            "$ref": "#/components/schemas/types.assembly.assembly_type.v1.AssemblyType",
            "description": "The type of assembly being created"
          }
        }
      },
      "types.assembly.v1.CreateAssemblyPcbRequest": {
        "type": "object"
      },
      "types.assembly.v1.CreateAssemblyPcbResponse": {
        "type": "object",
        "required": [
          "pcb_id",
          "custom_part_specification_id"
        ],
        "properties": {
          "custom_part_specification_id": {
            "type": "string",
            "format": "uuid",
            "description": "The ID of the custom part specification"
          },
          "pcb_id": {
            "type": "string",
            "format": "uuid",
            "description": "The ID of the created PCB"
          }
        }
      },
      "types.assembly.v1.SimpleAssemblyResponse": {
        "type": "object",
        "required": [
          "id",
          "name",
          "type",
          "customer",
          "industry"
        ],
        "properties": {
          "customer": {
            "type": "string",
            "format": "uuid"
          },
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "industry": {
            "$ref": "#/components/schemas/types.assembly.assembly_industry.v1.AssemblyIndustry"
          },
          "name": {
            "type": "string"
          },
          "notes": {
            "type": [
              "string",
              "null"
            ]
          },
          "parent_assembly": {
            "type": [
              "string",
              "null"
            ],
            "format": "uuid"
          },
          "rfq": {
            "type": [
              "string",
              "null"
            ],
            "format": "uuid"
          },
          "type": {
            "$ref": "#/components/schemas/types.assembly.assembly_type.v1.AssemblyType"
          }
        }
      },
      "types.calculation.calculation_assembly_cost.v1.AdditionalCostResponse": {
        "type": "object",
        "required": [
          "other_costs",
          "post_profit_costs",
          "sub_total_cost"
        ],
        "properties": {
          "discount": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/types.calculation.calculation_assembly_cost.v1.DynamicCostCellResponse"
              }
            ]
          },
          "other_costs": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/types.calculation.calculation_assembly_cost.v1.ExtraCostResponse"
            }
          },
          "post_profit_costs": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/types.calculation.calculation_assembly_cost.v1.ExtraCostResponse"
            }
          },
          "profit": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/types.calculation.calculation_assembly_cost.v1.DynamicCostCellResponse"
              }
            ]
          },
          "sub_total_cost": {
            "$ref": "#/components/schemas/types.calculation.calculation_assembly_cost.v1.FixedCostCellResponse",
            "description": "Total of all other costs and post profit costs."
          }
        }
      },
      "types.calculation.calculation_assembly_cost.v1.BatchCostResponse": {
        "type": "object",
        "required": [
          "material_cost",
          "manufacturing_cost",
          "additional_cost",
          "project_cost",
          "summarized_cost",
          "checkout_cost"
        ],
        "properties": {
          "additional_cost": {
            "$ref": "#/components/schemas/types.calculation.calculation_assembly_cost.v1.AdditionalCostResponse"
          },
          "checkout_cost": {
            "$ref": "#/components/schemas/types.calculation.calculation_assembly_cost.v1.CostSummaryResponse",
            "description": "Final cost representing what is displayed at checkout screen.\nIf the project cost is separated (or any other type of cost), it is added to\nthis cost. This is in contrast to `summarized_cost` with excludes separated costs."
          },
          "manufacturing_cost": {
            "$ref": "#/components/schemas/types.calculation.calculation_assembly_cost.v1.ManufacturingCostResponse"
          },
          "material_cost": {
            "$ref": "#/components/schemas/types.calculation.calculation_assembly_cost.v1.MaterialCostResponse"
          },
          "project_cost": {
            "$ref": "#/components/schemas/types.calculation.calculation_assembly_cost.v1.ProjectCostResponse"
          },
          "summarized_cost": {
            "$ref": "#/components/schemas/types.calculation.calculation_assembly_cost.v1.CostSummaryResponse",
            "description": "If the project cost is separated, it isn't added to the summarized cost."
          }
        }
      },
      "types.calculation.calculation_assembly_cost.v1.BatchSizeDataResponse": {
        "type": "object",
        "required": [
          "batch_size",
          "cost"
        ],
        "properties": {
          "batch_size": {
            "type": "integer",
            "format": "int32"
          },
          "cost": {
            "$ref": "#/components/schemas/types.calculation.calculation_assembly_cost.v1.BatchCostResponse"
          }
        }
      },
      "types.calculation.calculation_assembly_cost.v1.CalculationAssemblyCostResponse": {
        "type": "object",
        "required": [
          "id",
          "calculation_assembly_details",
          "costs",
          "created_at",
          "updated_at",
          "is_cost_frozen"
        ],
        "properties": {
          "calculation_assembly_details": {
            "type": "string",
            "format": "uuid"
          },
          "costs": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/types.calculation.calculation_assembly_cost.v1.ScenarioCostResponse"
            }
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "is_cost_frozen": {
            "type": "boolean"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "types.calculation.calculation_assembly_cost.v1.CalculationResult_Option_f64": {
        "oneOf": [
          {
            "type": "object",
            "required": [
              "data",
              "result"
            ],
            "properties": {
              "data": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "type": "number",
                    "format": "double"
                  }
                ]
              },
              "result": {
                "type": "string",
                "enum": [
                  "Ok"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "data",
              "result"
            ],
            "properties": {
              "data": {
                "type": "string"
              },
              "result": {
                "type": "string",
                "enum": [
                  "ScriptError"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "data",
              "result"
            ],
            "properties": {
              "data": {
                "type": "string"
              },
              "result": {
                "type": "string",
                "enum": [
                  "UnknownIdentifier"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "data",
              "result"
            ],
            "properties": {
              "data": {
                "type": "string"
              },
              "result": {
                "type": "string",
                "enum": [
                  "NullValue"
                ]
              }
            }
          }
        ]
      },
      "types.calculation.calculation_assembly_cost.v1.CostSummaryResponse": {
        "type": "object",
        "required": [
          "total_cost",
          "total_profit",
          "total_price"
        ],
        "properties": {
          "total_cost": {
            "$ref": "#/components/schemas/types.calculation.calculation_assembly_cost.v1.FixedCostCellResponse"
          },
          "total_price": {
            "$ref": "#/components/schemas/types.calculation.calculation_assembly_cost.v1.FixedCostCellResponse"
          },
          "total_profit": {
            "$ref": "#/components/schemas/types.calculation.calculation_assembly_cost.v1.FixedCostCellResponse"
          }
        }
      },
      "types.calculation.calculation_assembly_cost.v1.CostTypeResponse": {
        "oneOf": [
          {
            "type": "object",
            "required": [
              "data",
              "type"
            ],
            "properties": {
              "data": {
                "$ref": "#/components/schemas/types.primitives.monetary_value.v1.MonetaryValue"
              },
              "type": {
                "type": "string",
                "enum": [
                  "Fixed"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "data",
              "type"
            ],
            "properties": {
              "data": {
                "type": "string"
              },
              "type": {
                "type": "string",
                "enum": [
                  "Fraction"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "data",
              "type"
            ],
            "properties": {
              "data": {
                "$ref": "#/components/schemas/types.calculation.calculation_assembly_cost.v1.OverridableFormulaResponse"
              },
              "type": {
                "type": "string",
                "enum": [
                  "Formula"
                ]
              }
            }
          }
        ]
      },
      "types.calculation.calculation_assembly_cost.v1.CustomCostResponse": {
        "type": "object",
        "required": [
          "extra_costs"
        ],
        "properties": {
          "discount": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/types.calculation.calculation_assembly_cost.v1.DynamicCostCellResponse"
              }
            ]
          },
          "extra_costs": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/types.calculation.calculation_assembly_cost.v1.ExtraCostResponse"
            }
          },
          "profit": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/types.calculation.calculation_assembly_cost.v1.DynamicCostCellResponse"
              }
            ]
          }
        }
      },
      "types.calculation.calculation_assembly_cost.v1.DynamicCostCellResponse": {
        "type": "object",
        "required": [
          "cost_specification",
          "unit_cost_value",
          "unit_cost_fraction",
          "total_cost_value",
          "is_locked"
        ],
        "properties": {
          "cost_specification": {
            "$ref": "#/components/schemas/types.calculation.calculation_assembly_cost.v1.CostTypeResponse"
          },
          "is_locked": {
            "type": "boolean",
            "description": "Determine if the row is locked. Locked means, that from the template this row originates from it is not supposed to be changed by the user when viewing calculation."
          },
          "total_cost_value": {
            "$ref": "#/components/schemas/types.primitives.monetary_value.v1.MonetaryValue"
          },
          "unit_cost_fraction": {
            "type": "string"
          },
          "unit_cost_value": {
            "$ref": "#/components/schemas/types.primitives.monetary_value.v1.MonetaryValue"
          }
        }
      },
      "types.calculation.calculation_assembly_cost.v1.ExtraCostResponse": {
        "type": "object",
        "required": [
          "name",
          "cost"
        ],
        "properties": {
          "cost": {
            "$ref": "#/components/schemas/types.calculation.calculation_assembly_cost.v1.DynamicCostCellResponse"
          },
          "name": {
            "type": "string"
          }
        }
      },
      "types.calculation.calculation_assembly_cost.v1.FixedCostCellResponse": {
        "type": "object",
        "required": [
          "unit_cost",
          "total_cost"
        ],
        "properties": {
          "total_cost": {
            "$ref": "#/components/schemas/types.primitives.monetary_value.v1.MonetaryValue"
          },
          "unit_cost": {
            "$ref": "#/components/schemas/types.primitives.monetary_value.v1.MonetaryValue"
          }
        }
      },
      "types.calculation.calculation_assembly_cost.v1.FormulaCostType": {
        "oneOf": [
          {
            "type": "object",
            "required": [
              "data",
              "type"
            ],
            "properties": {
              "data": {
                "type": "object",
                "required": [
                  "script",
                  "currency"
                ],
                "properties": {
                  "currency": {
                    "$ref": "#/components/schemas/types.primitives.monetary_value.v1.Currency"
                  },
                  "script": {
                    "type": "string"
                  }
                }
              },
              "type": {
                "type": "string",
                "enum": [
                  "Fixed"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "data",
              "type"
            ],
            "properties": {
              "data": {
                "type": "object",
                "required": [
                  "script"
                ],
                "properties": {
                  "script": {
                    "type": "string"
                  }
                }
              },
              "type": {
                "type": "string",
                "enum": [
                  "Fraction"
                ]
              }
            }
          }
        ]
      },
      "types.calculation.calculation_assembly_cost.v1.ManufacturingCostResponse": {
        "type": "object",
        "required": [
          "base_cost",
          "cost",
          "custom_cost",
          "sub_total_cost",
          "price"
        ],
        "properties": {
          "base_cost": {
            "$ref": "#/components/schemas/types.calculation.calculation_assembly_cost.v1.FixedCostCellResponse",
            "description": "Manufacturing cost excluding additives (e.g. project cost)."
          },
          "cost": {
            "$ref": "#/components/schemas/types.calculation.calculation_assembly_cost.v1.FixedCostCellResponse",
            "description": "Manufacturing cost including additives (e.g. project cost)."
          },
          "custom_cost": {
            "$ref": "#/components/schemas/types.calculation.calculation_assembly_cost.v1.CustomCostResponse"
          },
          "price": {
            "$ref": "#/components/schemas/types.calculation.calculation_assembly_cost.v1.FixedCostCellResponse",
            "description": "Total of all the unit cells for `cost` and `custom_cost`."
          },
          "sub_total_cost": {
            "$ref": "#/components/schemas/types.calculation.calculation_assembly_cost.v1.FixedCostCellResponse",
            "description": "Total of all the costs excluding profits and discount."
          }
        }
      },
      "types.calculation.calculation_assembly_cost.v1.MaterialCostResponse": {
        "type": "object",
        "required": [
          "base_cost",
          "cost",
          "excess_material_cost",
          "custom_cost",
          "sub_total_cost",
          "price"
        ],
        "properties": {
          "base_cost": {
            "$ref": "#/components/schemas/types.calculation.calculation_assembly_cost.v1.FixedCostCellResponse",
            "description": "Material cost excluding additives (e.g. excess material cost)."
          },
          "cost": {
            "$ref": "#/components/schemas/types.calculation.calculation_assembly_cost.v1.FixedCostCellResponse",
            "description": "Material cost including additives (e.g. excess material cost)."
          },
          "custom_cost": {
            "$ref": "#/components/schemas/types.calculation.calculation_assembly_cost.v1.CustomCostResponse"
          },
          "excess_material_cost": {
            "$ref": "#/components/schemas/types.calculation.calculation_assembly_cost.v1.FixedCostCellResponse"
          },
          "price": {
            "$ref": "#/components/schemas/types.calculation.calculation_assembly_cost.v1.FixedCostCellResponse",
            "description": "Total of all the unit cells for `cost` and `custom_cost`."
          },
          "sub_total_cost": {
            "$ref": "#/components/schemas/types.calculation.calculation_assembly_cost.v1.FixedCostCellResponse",
            "description": "Total of all the costs excluding profits and discount."
          }
        }
      },
      "types.calculation.calculation_assembly_cost.v1.OverridableFormula": {
        "oneOf": [
          {
            "type": "object",
            "required": [
              "data",
              "type"
            ],
            "properties": {
              "data": {
                "type": "object",
                "required": [
                  "calculated",
                  "manually_overridden"
                ],
                "properties": {
                  "calculated": {
                    "$ref": "#/components/schemas/types.calculation.calculation_assembly_cost.v1.FormulaCostType"
                  },
                  "manually_overridden": {
                    "type": "string"
                  }
                }
              },
              "type": {
                "type": "string",
                "enum": [
                  "Overridden"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "data",
              "type"
            ],
            "properties": {
              "data": {
                "type": "object",
                "required": [
                  "calculated"
                ],
                "properties": {
                  "calculated": {
                    "$ref": "#/components/schemas/types.calculation.calculation_assembly_cost.v1.FormulaCostType"
                  }
                }
              },
              "type": {
                "type": "string",
                "enum": [
                  "Evaluated"
                ]
              }
            }
          }
        ]
      },
      "types.calculation.calculation_assembly_cost.v1.OverridableFormulaResponse": {
        "type": "object",
        "required": [
          "result",
          "formula"
        ],
        "properties": {
          "formula": {
            "$ref": "#/components/schemas/types.calculation.calculation_assembly_cost.v1.OverridableFormula"
          },
          "result": {
            "$ref": "#/components/schemas/types.calculation.calculation_assembly_cost.v1.CalculationResult_Option_f64"
          }
        }
      },
      "types.calculation.calculation_assembly_cost.v1.ProjectCostResponse": {
        "type": "object",
        "required": [
          "cost",
          "price",
          "activity_costs",
          "expense_costs"
        ],
        "properties": {
          "activity_costs": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/types.calculation.calculation_assembly_cost.v1.ProjectEntityCostCellResponse"
            }
          },
          "cost": {
            "$ref": "#/components/schemas/types.calculation.calculation_assembly_cost.v1.FixedCostCellResponse"
          },
          "expense_costs": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/types.calculation.calculation_assembly_cost.v1.ProjectEntityCostCellResponse"
            }
          },
          "one_time_costs": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/types.calculation.calculation_assembly_cost.v1.FixedCostCellResponse"
              }
            ]
          },
          "price": {
            "$ref": "#/components/schemas/types.calculation.calculation_assembly_cost.v1.FixedCostCellResponse",
            "description": "Total of all the unit cells for `cost` and `profit`."
          },
          "profit": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/types.calculation.calculation_assembly_cost.v1.DynamicCostCellResponse"
              }
            ]
          }
        }
      },
      "types.calculation.calculation_assembly_cost.v1.ProjectEntityCostCellResponse": {
        "type": "object",
        "required": [
          "id",
          "name",
          "cost"
        ],
        "properties": {
          "cost": {
            "$ref": "#/components/schemas/types.calculation.calculation_assembly_cost.v1.FixedCostCellResponse"
          },
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string"
          }
        }
      },
      "types.calculation.calculation_assembly_cost.v1.ScenarioCostResponse": {
        "type": "object",
        "required": [
          "scenario_combination_id",
          "manufacturing_scenario_id",
          "sourcing_scenario_id",
          "order_size",
          "batch_size_costs"
        ],
        "properties": {
          "batch_size_costs": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/types.calculation.calculation_assembly_cost.v1.BatchSizeDataResponse"
            }
          },
          "manufacturing_lead_time": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int32"
          },
          "manufacturing_scenario_id": {
            "type": "string",
            "format": "uuid",
            "description": "The ID of the manufacturing scenario that this scenario cost is associated with. This may be absent for frozen\ncosts which were created before April 3rd, 2025."
          },
          "order_size": {
            "type": "integer",
            "format": "int32"
          },
          "scenario_combination_id": {
            "type": "string",
            "format": "uuid",
            "description": "The ID of the scenario combination that was submitted for calculations."
          },
          "sourcing_scenario_id": {
            "type": "string",
            "format": "uuid",
            "description": "The ID of the sourcing scenario that this scenario cost is associated with. This may be absent for frozen costs\nwhich were created before April 3rd, 2025."
          },
          "sourcing_total_availability": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/types.sourcing.availability.v1.AggregatedAvailabilityIncludingShippingTime"
              }
            ]
          },
          "total_lead_time": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int32"
          }
        }
      },
      "types.compliance.v1.ComplianceStatus": {
        "type": "string",
        "enum": [
          "NonCompliant",
          "Unknown",
          "NotRequired",
          "CompliantWithExemption",
          "Compliant"
        ]
      },
      "types.custom_part.panel.v1.Depanelization": {
        "type": "string",
        "enum": [
          "VCut",
          "Milling",
          "MillingAndVCut"
        ]
      },
      "types.custom_part.panel.v1.Padding": {
        "type": "object",
        "required": [
          "top_in_mm",
          "bottom_in_mm",
          "left_in_mm",
          "right_in_mm"
        ],
        "properties": {
          "bottom_in_mm": {
            "type": "string"
          },
          "left_in_mm": {
            "type": "string"
          },
          "right_in_mm": {
            "type": "string"
          },
          "top_in_mm": {
            "type": "string"
          }
        }
      },
      "types.custom_part.panel.v1.PanelDetails": {
        "type": "object",
        "required": [
          "row_count",
          "column_count",
          "horizontal_spacing_in_mm",
          "vertical_spacing_in_mm",
          "min_milling_distance_in_mm",
          "padding",
          "depanelization",
          "pcb_is_rotated"
        ],
        "properties": {
          "column_count": {
            "type": "integer",
            "format": "int32"
          },
          "depanelization": {
            "$ref": "#/components/schemas/types.custom_part.panel.v1.Depanelization"
          },
          "horizontal_spacing_in_mm": {
            "type": "string"
          },
          "max_x_outs": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int32"
          },
          "min_milling_distance_in_mm": {
            "type": "string"
          },
          "padding": {
            "$ref": "#/components/schemas/types.custom_part.panel.v1.Padding"
          },
          "panel_preference": {
            "type": [
              "string",
              "null"
            ],
            "format": "uuid"
          },
          "pcb_is_rotated": {
            "type": "boolean"
          },
          "row_count": {
            "type": "integer",
            "format": "int32"
          },
          "vertical_spacing_in_mm": {
            "type": "string"
          }
        }
      },
      "types.custom_part.v1.CustomPart": {
        "type": "object",
        "required": [
          "id",
          "part_type",
          "category",
          "reach_compliant",
          "rohs_compliant"
        ],
        "properties": {
          "category": {
            "$ref": "#/components/schemas/types.custom_part.v1.CustomPartCategoryDetails"
          },
          "description": {
            "type": [
              "string",
              "null"
            ]
          },
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "part_type": {
            "$ref": "#/components/schemas/types.custom_part.v1.CustomPartType"
          },
          "reach_compliant": {
            "$ref": "#/components/schemas/types.compliance.v1.ComplianceStatus"
          },
          "rohs_compliant": {
            "$ref": "#/components/schemas/types.compliance.v1.ComplianceStatus"
          }
        }
      },
      "types.custom_part.v1.CustomPartCategory": {
        "type": "object",
        "required": [
          "id",
          "category",
          "origin"
        ],
        "properties": {
          "category": {
            "type": "string"
          },
          "description": {
            "type": [
              "string",
              "null"
            ]
          },
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "identifier": {
            "type": [
              "string",
              "null"
            ]
          },
          "origin": {
            "$ref": "#/components/schemas/types.custom_part.v1.CustomPartCategoryOrigin"
          },
          "parent": {
            "type": [
              "string",
              "null"
            ],
            "format": "uuid"
          }
        }
      },
      "types.custom_part.v1.CustomPartCategoryDetails": {
        "oneOf": [
          {
            "type": "object",
            "required": [
              "PCB"
            ],
            "properties": {
              "PCB": {
                "type": "object",
                "required": [
                  "user_category"
                ],
                "properties": {
                  "pcb_id": {
                    "type": [
                      "string",
                      "null"
                    ],
                    "format": "uuid"
                  },
                  "user_category": {
                    "$ref": "#/components/schemas/types.custom_part.v1.CustomPartCategory"
                  }
                }
              }
            }
          },
          {
            "type": "object",
            "required": [
              "Other"
            ],
            "properties": {
              "Other": {
                "type": "object",
                "required": [
                  "user_category"
                ],
                "properties": {
                  "user_category": {
                    "$ref": "#/components/schemas/types.custom_part.v1.CustomPartCategory"
                  }
                }
              }
            }
          }
        ]
      },
      "types.custom_part.v1.CustomPartCategoryOrigin": {
        "type": "string",
        "enum": [
          "System",
          "User",
          "Import"
        ]
      },
      "types.custom_part.v1.CustomPartType": {
        "oneOf": [
          {
            "type": "object",
            "required": [
              "content",
              "name"
            ],
            "properties": {
              "content": {
                "type": [
                  "string",
                  "null"
                ],
                "format": "uuid"
              },
              "name": {
                "type": "string",
                "enum": [
                  "PCB"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "name"
            ],
            "properties": {
              "name": {
                "type": "string",
                "enum": [
                  "Mechanical"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "name"
            ],
            "properties": {
              "name": {
                "type": "string",
                "enum": [
                  "Plastic"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "name"
            ],
            "properties": {
              "name": {
                "type": "string",
                "enum": [
                  "Cable"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "name"
            ],
            "properties": {
              "name": {
                "type": "string",
                "enum": [
                  "Packaging"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "name"
            ],
            "properties": {
              "name": {
                "type": "string",
                "enum": [
                  "Label"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "name"
            ],
            "properties": {
              "name": {
                "type": "string",
                "enum": [
                  "Other"
                ]
              }
            }
          }
        ]
      },
      "types.customer.v1.AllCustomerResponse": {
        "type": "object",
        "required": [
          "items"
        ],
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/types.customer.v1.CustomerResponse"
            }
          }
        }
      },
      "types.customer.v1.CustomerBillingAddress": {
        "type": "object",
        "properties": {
          "city": {
            "type": [
              "string",
              "null"
            ]
          },
          "country_code": {
            "type": [
              "string",
              "null"
            ]
          },
          "line1": {
            "type": [
              "string",
              "null"
            ],
            "description": "Country code in ISO 3166-1 alpha-2 format."
          },
          "line2": {
            "type": [
              "string",
              "null"
            ]
          },
          "postal_code": {
            "type": [
              "string",
              "null"
            ]
          }
        }
      },
      "types.customer.v1.CustomerBusinessData": {
        "oneOf": [
          {
            "type": "object",
            "required": [
              "customer_type"
            ],
            "properties": {
              "customer_type": {
                "type": "string",
                "enum": [
                  "private"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "customer_type"
            ],
            "properties": {
              "commercial_register_number": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "customer_type": {
                "type": "string",
                "enum": [
                  "business"
                ]
              },
              "vat_id": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "$ref": "#/components/schemas/types.vat.v1.CompleteVatId"
                  }
                ]
              }
            }
          }
        ]
      },
      "types.customer.v1.CustomerInput": {
        "type": "object",
        "required": [
          "name"
        ],
        "properties": {
          "billing_address": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/types.customer.v1.CustomerBillingAddress"
              }
            ]
          },
          "commercial_register_number": {
            "type": [
              "string",
              "null"
            ]
          },
          "customer_number": {
            "type": [
              "string",
              "null"
            ]
          },
          "default_contact_person": {
            "type": [
              "string",
              "null"
            ],
            "format": "uuid"
          },
          "language": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/types.customer.v1.Language"
              }
            ]
          },
          "name": {
            "type": "string"
          },
          "vat_id": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/types.vat.v1.CompleteVatId"
              }
            ]
          }
        }
      },
      "types.customer.v1.CustomerResponse": {
        "type": "object",
        "required": [
          "id",
          "name",
          "language"
        ],
        "properties": {
          "billing_address": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/types.customer.v1.CustomerBillingAddress"
              }
            ]
          },
          "commercial_register_number": {
            "type": [
              "string",
              "null"
            ]
          },
          "customer_number": {
            "type": [
              "string",
              "null"
            ]
          },
          "default_contact_person": {
            "type": [
              "string",
              "null"
            ],
            "format": "uuid"
          },
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "language": {
            "$ref": "#/components/schemas/types.customer.v1.Language"
          },
          "name": {
            "type": "string"
          },
          "vat_id": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/types.vat.v1.CompleteVatId"
              }
            ]
          }
        }
      },
      "types.customer.v1.CustomerUpdate": {
        "type": "object",
        "properties": {
          "billing_address": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/types.customer.v1.CustomerBillingAddress"
              }
            ]
          },
          "business_data": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/types.customer.v1.CustomerBusinessData",
                "description": "If not provided, the customer type will not be updated."
              }
            ]
          },
          "customer_number": {
            "type": [
              "string",
              "null"
            ]
          },
          "default_contact_person": {
            "type": [
              "string",
              "null"
            ],
            "format": "uuid"
          },
          "language": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/types.customer.v1.Language"
              }
            ]
          },
          "name": {
            "type": [
              "string",
              "null"
            ]
          }
        }
      },
      "types.customer.v1.Language": {
        "type": "string",
        "enum": [
          "de",
          "en",
          "es",
          "fr",
          "it",
          "th",
          "zh",
          "ja",
          "hi",
          "cs"
        ]
      },
      "types.demand.v1.DemandCreationRequestItem": {
        "type": "object",
        "required": [
          "type",
          "internal_part_number",
          "quantity",
          "delivery_start_date",
          "delivery_end_date"
        ],
        "properties": {
          "delivery_end_date": {
            "type": "string",
            "format": "date",
            "description": "If not specified, the delivery start date will be used."
          },
          "delivery_start_date": {
            "type": "string",
            "format": "date",
            "description": "The start and end date indicate the time range for which the given quantity is needed.\nE.g. 2025-01-01 for the start date and 2025-12-31 for the end date indicates an annual demand for 2025.\nUsing the same date for start and end date indicates that the given quantity is needed on that specific date."
          },
          "end_customer": {
            "type": [
              "string",
              "null"
            ],
            "description": "The customer number or name for the recipient of the finished good, regardless of any intermediary recipient (like internal or external sites used for assembly)."
          },
          "internal_part_number": {
            "$ref": "#/components/schemas/types.ipn.v1.InternalPartNumberIdentifiers",
            "description": "The internal part number. Can be for an assembly or a component."
          },
          "production_start_date": {
            "type": [
              "string",
              "null"
            ],
            "format": "date",
            "description": "Only used for assembly demands.\nThe production start date will be used as the delivery start date for the calculated demands of components from this assembly (because you need the components a little earlier to finish the assembly and fulfill the delivery start date of the assembly).\nIf no production start date is given, the delivery start date is used for the calculated component demands."
          },
          "quantity": {
            "$ref": "#/components/schemas/types.primitives.quantity_unit.v1.QuantityUnit"
          },
          "ship_to_site": {
            "type": [
              "string",
              "null"
            ],
            "description": "The name or site number of the site that will receive the item. Can be an internal or external (EMS) site."
          },
          "supplier": {
            "type": [
              "string",
              "null"
            ],
            "description": "The name or site number of the site that will supply the item. Only used for assembly demands.\nCan be an internal or external (EMS) site that manufactures the assembly.\nThe supplier site of an assembly will be used as the Ship to site for the calculated component demands (as the site that does the assembly needs to receive the components)."
          },
          "type": {
            "$ref": "#/components/schemas/types.demand.v1.DemandType",
            "description": "\"gross\": Represents gross demand (total demand before considering inventory)\n\"net\": Represents net demand (demand after considering inventory)"
          }
        }
      },
      "types.demand.v1.DemandType": {
        "type": "string",
        "enum": [
          "gross",
          "net"
        ]
      },
      "types.flexible_calculation.v0.AllCalculationPlansResponse": {
        "type": "array",
        "items": {
          "$ref": "#/components/schemas/types.flexible_calculation.v0.CalculationPlanResponse"
        }
      },
      "types.flexible_calculation.v0.AssemblyScenarioConfigurationResponse": {
        "type": "object",
        "required": [
          "assembly_id",
          "sourcing_scenario",
          "manufacturing_scenario",
          "batch_size"
        ],
        "properties": {
          "assembly_id": {
            "type": "string",
            "format": "uuid"
          },
          "batch_size": {
            "type": "integer",
            "format": "int32"
          },
          "manufacturing_scenario": {
            "type": "string",
            "format": "uuid"
          },
          "sourcing_scenario": {
            "type": "string",
            "format": "uuid"
          }
        }
      },
      "types.flexible_calculation.v0.CalculationPlanLineItemResponse": {
        "type": "object",
        "required": [
          "id",
          "name",
          "display_only",
          "value",
          "lock_mode"
        ],
        "properties": {
          "display_only": {
            "type": "boolean"
          },
          "exported_variable_id": {
            "type": [
              "string",
              "null"
            ],
            "format": "uuid"
          },
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "lock_mode": {
            "$ref": "#/components/schemas/types.flexible_calculation.v0.LockModeResponse"
          },
          "name": {
            "type": "string"
          },
          "note": {
            "type": [
              "string",
              "null"
            ]
          },
          "value": {
            "$ref": "#/components/schemas/types.flexible_calculation.v0.LineItemValueResponse"
          }
        }
      },
      "types.flexible_calculation.v0.CalculationPlanResponse": {
        "type": "object",
        "required": [
          "id",
          "name",
          "rfq_id",
          "currency",
          "main_assembly",
          "scenarios",
          "sections",
          "frozen",
          "raw_template",
          "selected_template",
          "created_at",
          "updated_at"
        ],
        "properties": {
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "currency": {
            "type": "string"
          },
          "frozen": {
            "type": "boolean"
          },
          "frozen_result": {},
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "main_assembly": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string"
          },
          "raw_template": {},
          "rfq_id": {
            "type": "string",
            "format": "uuid"
          },
          "scenarios": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/types.flexible_calculation.v0.CalculationScenarioResponse"
            }
          },
          "sections": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/types.flexible_calculation.v0.CalculationPlanSectionResponse"
            }
          },
          "selected_template": {
            "type": "string"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "types.flexible_calculation.v0.CalculationPlanSectionResponse": {
        "type": "object",
        "required": [
          "id",
          "name",
          "line_items",
          "lock_mode"
        ],
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "line_items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/types.flexible_calculation.v0.CalculationPlanLineItemResponse"
            }
          },
          "lock_mode": {
            "$ref": "#/components/schemas/types.flexible_calculation.v0.LockModeResponse"
          },
          "name": {
            "type": "string"
          },
          "note": {
            "type": [
              "string",
              "null"
            ]
          }
        }
      },
      "types.flexible_calculation.v0.CalculationScenarioResponse": {
        "type": "object",
        "required": [
          "id",
          "name",
          "assembly_configurations"
        ],
        "properties": {
          "assembly_configurations": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/types.flexible_calculation.v0.AssemblyScenarioConfigurationResponse"
            }
          },
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string"
          }
        }
      },
      "types.flexible_calculation.v0.ComparisonResponse": {
        "oneOf": [
          {
            "type": "object",
            "required": [
              "left",
              "right",
              "op"
            ],
            "properties": {
              "left": {
                "$ref": "#/components/schemas/types.flexible_calculation.v0.FormulaNodeResponse"
              },
              "op": {
                "type": "string",
                "enum": [
                  "greater_than"
                ]
              },
              "right": {
                "$ref": "#/components/schemas/types.flexible_calculation.v0.FormulaNodeResponse"
              }
            }
          },
          {
            "type": "object",
            "required": [
              "left",
              "right",
              "op"
            ],
            "properties": {
              "left": {
                "$ref": "#/components/schemas/types.flexible_calculation.v0.FormulaNodeResponse"
              },
              "op": {
                "type": "string",
                "enum": [
                  "greater_than_or_equal"
                ]
              },
              "right": {
                "$ref": "#/components/schemas/types.flexible_calculation.v0.FormulaNodeResponse"
              }
            }
          },
          {
            "type": "object",
            "required": [
              "left",
              "right",
              "op"
            ],
            "properties": {
              "left": {
                "$ref": "#/components/schemas/types.flexible_calculation.v0.FormulaNodeResponse"
              },
              "op": {
                "type": "string",
                "enum": [
                  "less_than"
                ]
              },
              "right": {
                "$ref": "#/components/schemas/types.flexible_calculation.v0.FormulaNodeResponse"
              }
            }
          },
          {
            "type": "object",
            "required": [
              "left",
              "right",
              "op"
            ],
            "properties": {
              "left": {
                "$ref": "#/components/schemas/types.flexible_calculation.v0.FormulaNodeResponse"
              },
              "op": {
                "type": "string",
                "enum": [
                  "less_than_or_equal"
                ]
              },
              "right": {
                "$ref": "#/components/schemas/types.flexible_calculation.v0.FormulaNodeResponse"
              }
            }
          },
          {
            "type": "object",
            "required": [
              "left",
              "right",
              "op"
            ],
            "properties": {
              "left": {
                "$ref": "#/components/schemas/types.flexible_calculation.v0.FormulaNodeResponse"
              },
              "op": {
                "type": "string",
                "enum": [
                  "equal"
                ]
              },
              "right": {
                "$ref": "#/components/schemas/types.flexible_calculation.v0.FormulaNodeResponse"
              }
            }
          },
          {
            "type": "object",
            "required": [
              "left",
              "right",
              "op"
            ],
            "properties": {
              "left": {
                "$ref": "#/components/schemas/types.flexible_calculation.v0.FormulaNodeResponse"
              },
              "op": {
                "type": "string",
                "enum": [
                  "not_equal"
                ]
              },
              "right": {
                "$ref": "#/components/schemas/types.flexible_calculation.v0.FormulaNodeResponse"
              }
            }
          },
          {
            "type": "object",
            "required": [
              "left",
              "right",
              "op"
            ],
            "properties": {
              "left": {
                "$ref": "#/components/schemas/types.flexible_calculation.v0.ComparisonResponse"
              },
              "op": {
                "type": "string",
                "enum": [
                  "and"
                ]
              },
              "right": {
                "$ref": "#/components/schemas/types.flexible_calculation.v0.ComparisonResponse"
              }
            }
          },
          {
            "type": "object",
            "required": [
              "left",
              "right",
              "op"
            ],
            "properties": {
              "left": {
                "$ref": "#/components/schemas/types.flexible_calculation.v0.ComparisonResponse"
              },
              "op": {
                "type": "string",
                "enum": [
                  "or"
                ]
              },
              "right": {
                "$ref": "#/components/schemas/types.flexible_calculation.v0.ComparisonResponse"
              }
            }
          }
        ]
      },
      "types.flexible_calculation.v0.CostLevelResponse": {
        "type": "string",
        "enum": [
          "unit",
          "batch",
          "project"
        ]
      },
      "types.flexible_calculation.v0.FixedItemValueResponse": {
        "type": "object",
        "required": [
          "value"
        ],
        "properties": {
          "value": {
            "type": "number",
            "format": "double"
          }
        }
      },
      "types.flexible_calculation.v0.FormulaDisplayUnitResponse": {
        "type": "string",
        "enum": [
          "percentage",
          "number",
          "monetary_value"
        ]
      },
      "types.flexible_calculation.v0.FormulaNodeResponse": {
        "oneOf": [
          {
            "type": "object",
            "required": [
              "value",
              "type"
            ],
            "properties": {
              "type": {
                "type": "string",
                "enum": [
                  "number"
                ]
              },
              "value": {
                "type": "number",
                "format": "double"
              }
            }
          },
          {
            "type": "object",
            "required": [
              "reference",
              "type"
            ],
            "properties": {
              "reference": {
                "type": "string",
                "format": "uuid"
              },
              "type": {
                "type": "string",
                "enum": [
                  "line_item"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "driver",
              "type"
            ],
            "properties": {
              "driver": {},
              "type": {
                "type": "string",
                "enum": [
                  "driver"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "type"
            ],
            "properties": {
              "type": {
                "type": "string",
                "enum": [
                  "batch_size"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "type"
            ],
            "properties": {
              "type": {
                "type": "string",
                "enum": [
                  "order_size"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "left",
              "right",
              "type"
            ],
            "properties": {
              "left": {
                "$ref": "#/components/schemas/types.flexible_calculation.v0.FormulaNodeResponse"
              },
              "right": {
                "$ref": "#/components/schemas/types.flexible_calculation.v0.FormulaNodeResponse"
              },
              "type": {
                "type": "string",
                "enum": [
                  "sum"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "left",
              "right",
              "type"
            ],
            "properties": {
              "left": {
                "$ref": "#/components/schemas/types.flexible_calculation.v0.FormulaNodeResponse"
              },
              "right": {
                "$ref": "#/components/schemas/types.flexible_calculation.v0.FormulaNodeResponse"
              },
              "type": {
                "type": "string",
                "enum": [
                  "subtract"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "left",
              "right",
              "type"
            ],
            "properties": {
              "left": {
                "$ref": "#/components/schemas/types.flexible_calculation.v0.FormulaNodeResponse"
              },
              "right": {
                "$ref": "#/components/schemas/types.flexible_calculation.v0.FormulaNodeResponse"
              },
              "type": {
                "type": "string",
                "enum": [
                  "multiply"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "left",
              "right",
              "type"
            ],
            "properties": {
              "left": {
                "$ref": "#/components/schemas/types.flexible_calculation.v0.FormulaNodeResponse"
              },
              "right": {
                "$ref": "#/components/schemas/types.flexible_calculation.v0.FormulaNodeResponse"
              },
              "type": {
                "type": "string",
                "enum": [
                  "divide"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "test",
              "then",
              "else_",
              "type"
            ],
            "properties": {
              "else_": {
                "$ref": "#/components/schemas/types.flexible_calculation.v0.FormulaNodeResponse"
              },
              "test": {
                "$ref": "#/components/schemas/types.flexible_calculation.v0.ComparisonResponse"
              },
              "then": {
                "$ref": "#/components/schemas/types.flexible_calculation.v0.FormulaNodeResponse"
              },
              "type": {
                "type": "string",
                "enum": [
                  "if"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "operand",
              "decimal_places",
              "type"
            ],
            "properties": {
              "decimal_places": {
                "type": "integer",
                "format": "int32",
                "minimum": 0
              },
              "operand": {
                "$ref": "#/components/schemas/types.flexible_calculation.v0.FormulaNodeResponse"
              },
              "type": {
                "type": "string",
                "enum": [
                  "round"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "operand",
              "type"
            ],
            "properties": {
              "operand": {
                "$ref": "#/components/schemas/types.flexible_calculation.v0.FormulaNodeResponse"
              },
              "type": {
                "type": "string",
                "enum": [
                  "log_e"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "operand",
              "type"
            ],
            "properties": {
              "operand": {
                "$ref": "#/components/schemas/types.flexible_calculation.v0.FormulaNodeResponse"
              },
              "type": {
                "type": "string",
                "enum": [
                  "floor"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "operand",
              "type"
            ],
            "properties": {
              "operand": {
                "$ref": "#/components/schemas/types.flexible_calculation.v0.FormulaNodeResponse"
              },
              "type": {
                "type": "string",
                "enum": [
                  "ceil"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "left",
              "right",
              "type"
            ],
            "properties": {
              "left": {
                "$ref": "#/components/schemas/types.flexible_calculation.v0.FormulaNodeResponse"
              },
              "right": {
                "$ref": "#/components/schemas/types.flexible_calculation.v0.FormulaNodeResponse"
              },
              "type": {
                "type": "string",
                "enum": [
                  "min"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "left",
              "right",
              "type"
            ],
            "properties": {
              "left": {
                "$ref": "#/components/schemas/types.flexible_calculation.v0.FormulaNodeResponse"
              },
              "right": {
                "$ref": "#/components/schemas/types.flexible_calculation.v0.FormulaNodeResponse"
              },
              "type": {
                "type": "string",
                "enum": [
                  "max"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "base",
              "exponent",
              "type"
            ],
            "properties": {
              "base": {
                "$ref": "#/components/schemas/types.flexible_calculation.v0.FormulaNodeResponse"
              },
              "exponent": {
                "$ref": "#/components/schemas/types.flexible_calculation.v0.FormulaNodeResponse"
              },
              "type": {
                "type": "string",
                "enum": [
                  "pow"
                ]
              }
            }
          }
        ]
      },
      "types.flexible_calculation.v0.LineItemValueResponse": {
        "oneOf": [
          {
            "type": "object",
            "required": [
              "level",
              "values",
              "type"
            ],
            "properties": {
              "level": {
                "$ref": "#/components/schemas/types.flexible_calculation.v0.CostLevelResponse"
              },
              "type": {
                "type": "string",
                "enum": [
                  "fixed"
                ]
              },
              "values": {
                "type": "object",
                "additionalProperties": {
                  "$ref": "#/components/schemas/types.flexible_calculation.v0.FixedItemValueResponse"
                },
                "propertyNames": {
                  "type": "string",
                  "format": "uuid"
                }
              }
            }
          },
          {
            "type": "object",
            "required": [
              "reference_items",
              "values",
              "type"
            ],
            "properties": {
              "reference_items": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/CalculationLineItemId"
                },
                "uniqueItems": true
              },
              "type": {
                "type": "string",
                "enum": [
                  "percentage"
                ]
              },
              "values": {
                "type": "object",
                "additionalProperties": {
                  "$ref": "#/components/schemas/types.flexible_calculation.v0.PercentageItemValueResponse"
                },
                "propertyNames": {
                  "type": "string",
                  "format": "uuid"
                }
              }
            }
          },
          {
            "type": "object",
            "required": [
              "reference_item",
              "values",
              "type"
            ],
            "properties": {
              "reference_item": {
                "type": "string",
                "format": "uuid"
              },
              "type": {
                "type": "string",
                "enum": [
                  "reverse_percentage"
                ]
              },
              "values": {
                "type": "object",
                "additionalProperties": {
                  "$ref": "#/components/schemas/types.flexible_calculation.v0.PercentageItemValueResponse"
                },
                "propertyNames": {
                  "type": "string",
                  "format": "uuid"
                }
              }
            }
          },
          {
            "type": "object",
            "required": [
              "scope",
              "range",
              "type"
            ],
            "properties": {
              "range": {
                "$ref": "#/components/schemas/types.flexible_calculation.v0.SubtotalRangeResponse"
              },
              "scope": {
                "$ref": "#/components/schemas/types.flexible_calculation.v0.SubtotalScopeResponse"
              },
              "type": {
                "type": "string",
                "enum": [
                  "subtotal"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "level",
              "formula",
              "display_unit",
              "type"
            ],
            "properties": {
              "assembly": {
                "type": [
                  "string",
                  "null"
                ],
                "format": "uuid"
              },
              "display_unit": {
                "$ref": "#/components/schemas/types.flexible_calculation.v0.FormulaDisplayUnitResponse"
              },
              "formula": {
                "$ref": "#/components/schemas/types.flexible_calculation.v0.FormulaNodeResponse"
              },
              "level": {
                "$ref": "#/components/schemas/types.flexible_calculation.v0.CostLevelResponse"
              },
              "type": {
                "type": "string",
                "enum": [
                  "formula"
                ]
              }
            }
          },
          {
            "allOf": [
              {
                "$ref": "#/components/schemas/types.flexible_calculation.v0.VariableLineItemResponse"
              },
              {
                "type": "object",
                "required": [
                  "type"
                ],
                "properties": {
                  "type": {
                    "type": "string",
                    "enum": [
                      "variable"
                    ]
                  }
                }
              }
            ]
          },
          {
            "type": "object",
            "required": [
              "type"
            ],
            "properties": {
              "type": {
                "type": "string",
                "enum": [
                  "notes"
                ]
              }
            }
          }
        ]
      },
      "types.flexible_calculation.v0.LockModeResponse": {
        "type": "string",
        "enum": [
          "none",
          "partial",
          "full"
        ]
      },
      "types.flexible_calculation.v0.ManufacturingVariableLineItemResponse": {
        "oneOf": [
          {
            "type": "object",
            "required": [
              "assembly_id",
              "show_process_breakdown",
              "variable"
            ],
            "properties": {
              "assembly_id": {
                "type": "string",
                "format": "uuid"
              },
              "show_process_breakdown": {
                "type": "boolean"
              },
              "variable": {
                "type": "string",
                "enum": [
                  "unit_costs"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "assembly_id",
              "show_process_breakdown",
              "variable"
            ],
            "properties": {
              "assembly_id": {
                "type": "string",
                "format": "uuid"
              },
              "show_process_breakdown": {
                "type": "boolean"
              },
              "variable": {
                "type": "string",
                "enum": [
                  "batch_costs"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "assembly_id",
              "show_process_breakdown",
              "variable"
            ],
            "properties": {
              "assembly_id": {
                "type": "string",
                "format": "uuid"
              },
              "show_process_breakdown": {
                "type": "boolean"
              },
              "variable": {
                "type": "string",
                "enum": [
                  "total_cost"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "assembly_id",
              "show_process_breakdown",
              "variable"
            ],
            "properties": {
              "assembly_id": {
                "type": "string",
                "format": "uuid"
              },
              "show_process_breakdown": {
                "type": "boolean"
              },
              "variable": {
                "type": "string",
                "enum": [
                  "project_costs"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "assembly_id",
              "show_process_breakdown",
              "variable"
            ],
            "properties": {
              "assembly_id": {
                "type": "string",
                "format": "uuid"
              },
              "show_process_breakdown": {
                "type": "boolean"
              },
              "variable": {
                "type": "string",
                "enum": [
                  "total_cost_with_project_costs"
                ]
              }
            }
          }
        ]
      },
      "types.flexible_calculation.v0.PercentageItemValueResponse": {
        "type": "object",
        "required": [
          "fractional_value"
        ],
        "properties": {
          "fractional_value": {
            "type": "number",
            "format": "double"
          }
        }
      },
      "types.flexible_calculation.v0.SourcingVariableLineItemResponse": {
        "oneOf": [
          {
            "type": "object",
            "required": [
              "assembly",
              "show_pcb_breakdown",
              "variable"
            ],
            "properties": {
              "assembly": {
                "type": "string",
                "format": "uuid"
              },
              "show_pcb_breakdown": {
                "type": "boolean"
              },
              "variable": {
                "type": "string",
                "enum": [
                  "total_price"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "assembly",
              "show_pcb_breakdown",
              "variable"
            ],
            "properties": {
              "assembly": {
                "type": "string",
                "format": "uuid"
              },
              "show_pcb_breakdown": {
                "type": "boolean"
              },
              "variable": {
                "type": "string",
                "enum": [
                  "unit_price"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "assembly",
              "variable"
            ],
            "properties": {
              "assembly": {
                "type": "string",
                "format": "uuid"
              },
              "variable": {
                "type": "string",
                "enum": [
                  "excess_material_cost"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "assembly",
              "variable"
            ],
            "properties": {
              "assembly": {
                "type": "string",
                "format": "uuid"
              },
              "variable": {
                "type": "string",
                "enum": [
                  "scrap_cost"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "assembly",
              "show_one_time_cost_breakdown",
              "variable"
            ],
            "properties": {
              "assembly": {
                "type": "string",
                "format": "uuid"
              },
              "show_one_time_cost_breakdown": {
                "type": "boolean"
              },
              "variable": {
                "type": "string",
                "enum": [
                  "one_time_cost"
                ]
              }
            }
          }
        ]
      },
      "types.flexible_calculation.v0.SubtotalRangeResponse": {
        "type": "string",
        "enum": [
          "from_previous_subtotal",
          "from_beginning"
        ]
      },
      "types.flexible_calculation.v0.SubtotalScopeResponse": {
        "type": "string",
        "enum": [
          "current_section",
          "all_sections"
        ]
      },
      "types.flexible_calculation.v0.VariableLineItemResponse": {
        "oneOf": [
          {
            "allOf": [
              {
                "$ref": "#/components/schemas/types.flexible_calculation.v0.SourcingVariableLineItemResponse"
              },
              {
                "type": "object",
                "required": [
                  "variable_type"
                ],
                "properties": {
                  "variable_type": {
                    "type": "string",
                    "enum": [
                      "sourcing"
                    ]
                  }
                }
              }
            ]
          },
          {
            "allOf": [
              {
                "$ref": "#/components/schemas/types.flexible_calculation.v0.ManufacturingVariableLineItemResponse"
              },
              {
                "type": "object",
                "required": [
                  "variable_type"
                ],
                "properties": {
                  "variable_type": {
                    "type": "string",
                    "enum": [
                      "manufacturing"
                    ]
                  }
                }
              }
            ]
          },
          {
            "type": "object",
            "required": [
              "calculation",
              "scenario_mapping",
              "exported_variable_id",
              "variable_type"
            ],
            "properties": {
              "calculation": {
                "type": "string",
                "format": "uuid"
              },
              "exported_variable_id": {
                "type": "string",
                "format": "uuid"
              },
              "scenario_mapping": {
                "type": "object",
                "additionalProperties": {
                  "$ref": "#/components/schemas/CalculationScenarioId"
                },
                "propertyNames": {
                  "type": "string",
                  "format": "uuid"
                }
              },
              "variable_type": {
                "type": "string",
                "enum": [
                  "calculation"
                ]
              }
            }
          }
        ]
      },
      "types.ipn.v1.ComponentRiskResponse": {
        "type": "object",
        "required": [
          "components"
        ],
        "properties": {
          "components": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/types.ipn.v1.SingleComponentRiskResponse"
            }
          }
        }
      },
      "types.ipn.v1.InternalPartNumberIdentifiers": {
        "type": "object",
        "required": [
          "value"
        ],
        "properties": {
          "revision": {
            "type": [
              "string",
              "null"
            ]
          },
          "value": {
            "type": "string"
          }
        }
      },
      "types.ipn.v1.SingleComponentRiskResponse": {
        "type": "object",
        "required": [
          "ipn",
          "rohs_compliant",
          "reach_compliant"
        ],
        "properties": {
          "aecq_compliant": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/types.compliance.v1.ComplianceStatus"
              }
            ]
          },
          "ipn": {
            "type": "string"
          },
          "lifecycle_status": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/types.lifecycle.v1.LifecycleEnum"
              }
            ]
          },
          "lifecycle_yteol": {
            "type": [
              "number",
              "null"
            ],
            "format": "double"
          },
          "reach_compliant": {
            "$ref": "#/components/schemas/types.compliance.v1.ComplianceStatus"
          },
          "revision": {
            "type": [
              "string",
              "null"
            ]
          },
          "rohs_compliant": {
            "$ref": "#/components/schemas/types.compliance.v1.ComplianceStatus"
          },
          "std_factory_lead_time": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int64"
          }
        }
      },
      "types.lifecycle.v1.LifecycleEnum": {
        "type": "string",
        "enum": [
          "Unknown",
          "PreRelease",
          "Acquired",
          "Active",
          "NotRecommendedForNewDesigns",
          "EndOfLife",
          "Aftermarket",
          "Obsolete"
        ]
      },
      "types.manufacturing.resource.v1.ResourceInput": {
        "type": "object",
        "required": [
          "name",
          "type",
          "cost_per_hour"
        ],
        "properties": {
          "cost_per_hour": {
            "$ref": "#/components/schemas/types.primitives.monetary_value.v1.MonetaryValue"
          },
          "description": {
            "type": [
              "string",
              "null"
            ]
          },
          "internal_number": {
            "type": [
              "string",
              "null"
            ]
          },
          "name": {
            "type": "string"
          },
          "site_id": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/SiteId"
              }
            ]
          },
          "type": {
            "$ref": "#/components/schemas/types.manufacturing.resource.v1.ResourceType"
          }
        }
      },
      "types.manufacturing.resource.v1.ResourceResponse": {
        "type": "object",
        "required": [
          "id",
          "name",
          "type",
          "cost_per_hour",
          "status"
        ],
        "properties": {
          "cost_per_hour": {
            "$ref": "#/components/schemas/types.primitives.monetary_value.v1.ConvertedMonetaryValue"
          },
          "description": {
            "type": [
              "string",
              "null"
            ]
          },
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "internal_number": {
            "type": [
              "string",
              "null"
            ]
          },
          "name": {
            "type": "string"
          },
          "site_id": {
            "type": [
              "string",
              "null"
            ],
            "format": "uuid"
          },
          "status": {
            "$ref": "#/components/schemas/types.manufacturing.v1.ManufacturingEntityStatus"
          },
          "type": {
            "$ref": "#/components/schemas/types.manufacturing.resource.v1.ResourceType"
          }
        }
      },
      "types.manufacturing.resource.v1.ResourceType": {
        "type": "string",
        "enum": [
          "Machine",
          "Person"
        ]
      },
      "types.manufacturing.resource.v1.ResourceUpdate": {
        "type": "object",
        "properties": {
          "cost_per_hour": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/types.primitives.monetary_value.v1.MonetaryValue"
              }
            ]
          },
          "description": {
            "type": [
              "string",
              "null"
            ]
          },
          "internal_number": {
            "type": [
              "string",
              "null"
            ]
          },
          "name": {
            "type": [
              "string",
              "null"
            ]
          },
          "site_id": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/SiteId"
              }
            ]
          },
          "status": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/types.manufacturing.v1.ManufacturingEntityStatus"
              }
            ]
          },
          "type": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/types.manufacturing.resource.v1.ResourceType"
              }
            ]
          }
        }
      },
      "types.manufacturing.v1.ManufacturingEntityStatus": {
        "type": "string",
        "enum": [
          "Active",
          "Inactive"
        ]
      },
      "types.order_management.order_selection_option.v1.CustomOrderSelectionOptionInput": {
        "type": "object",
        "required": [
          "external_id",
          "order_size",
          "batch_size",
          "price",
          "lead_time_in_days"
        ],
        "properties": {
          "batch_size": {
            "type": "integer",
            "format": "int32"
          },
          "external_id": {
            "type": "string"
          },
          "lead_time_in_days": {
            "type": "integer",
            "format": "int32"
          },
          "order_size": {
            "type": "integer",
            "format": "int32"
          },
          "price": {
            "$ref": "#/components/schemas/types.primitives.monetary_value.v1.MonetaryValue"
          }
        }
      },
      "types.order_management.order_selection_option.v1.CustomOrderSelectionOptionsRequest": {
        "type": "object",
        "required": [
          "rfq",
          "options"
        ],
        "properties": {
          "custom_text": {
            "type": [
              "string",
              "null"
            ]
          },
          "custom_text_header": {
            "type": [
              "string",
              "null"
            ]
          },
          "options": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/types.order_management.order_selection_option.v1.CustomOrderSelectionOptionInput"
            }
          },
          "rfq": {
            "type": "string",
            "format": "uuid"
          },
          "valid_until": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          }
        }
      },
      "types.order_management.orders.v1.GetOrdersResponse": {
        "type": "object",
        "properties": {
          "data": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/types.order_management.orders.v1.OrderOverview"
              }
            ]
          }
        }
      },
      "types.order_management.orders.v1.OrderOverview": {
        "type": "object",
        "required": [
          "id",
          "customer_id",
          "customer_name",
          "order_size",
          "total_price"
        ],
        "properties": {
          "customer_id": {
            "type": "string",
            "format": "uuid"
          },
          "customer_name": {
            "type": "string"
          },
          "customer_number": {
            "type": [
              "string",
              "null"
            ]
          },
          "estimated_lead_time_in_days": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int32"
          },
          "external_id": {
            "type": [
              "string",
              "null"
            ]
          },
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "order_size": {
            "type": "integer",
            "format": "int32"
          },
          "rfq_number": {
            "type": [
              "string",
              "null"
            ]
          },
          "total_price": {
            "$ref": "#/components/schemas/types.primitives.monetary_value.v1.MonetaryValue"
          }
        }
      },
      "types.parts.generic.v1.Dielectric": {
        "oneOf": [
          {
            "type": "object",
            "required": [
              "dielectric",
              "type"
            ],
            "properties": {
              "dielectric": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "$ref": "#/components/schemas/types.parts.generic.v1.DielectricCeramic"
                  }
                ]
              },
              "type": {
                "type": "string",
                "enum": [
                  "Ceramic"
                ]
              }
            }
          }
        ]
      },
      "types.parts.generic.v1.DielectricCeramic": {
        "type": "string",
        "enum": [
          "X8R",
          "C0G",
          "NP0",
          "X7R",
          "X5R",
          "X8L",
          "Y5V",
          "X6S",
          "Z5U",
          "X7S",
          "Y5U",
          "C0H",
          "Y5R",
          "Y5P",
          "Y5T",
          "U2J",
          "Z5V",
          "Z5P",
          "K4000",
          "X6T",
          "X7T",
          "Z5F"
        ]
      },
      "types.pnp.v1.BulkPnpItemsResponse": {
        "type": "object",
        "required": [
          "warnings",
          "items"
        ],
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/types.pnp.v1.PnpItemResponse"
            }
          },
          "warnings": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/types.pnp.v1.Warning"
            }
          }
        }
      },
      "types.pnp.v1.ColumnMapping": {
        "type": "object",
        "properties": {
          "designator": {
            "type": [
              "integer",
              "null"
            ],
            "minimum": 0
          },
          "side": {
            "type": [
              "integer",
              "null"
            ],
            "minimum": 0
          }
        }
      },
      "types.pnp.v1.PnpColumn": {
        "type": "string",
        "enum": [
          "Side",
          "Designator"
        ]
      },
      "types.pnp.v1.PnpFileResponse": {
        "type": "object",
        "required": [
          "id",
          "assembly_id",
          "file_name",
          "state"
        ],
        "properties": {
          "assembly_id": {
            "$ref": "#/components/schemas/AssemblyId"
          },
          "column_mapping": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/types.pnp.v1.ColumnMapping"
              }
            ]
          },
          "file_name": {
            "type": "string"
          },
          "id": {
            "$ref": "#/components/schemas/PnpFileId"
          },
          "state": {
            "$ref": "#/components/schemas/types.pnp.v1.PnpFileState"
          },
          "url": {
            "type": [
              "string",
              "null"
            ]
          }
        }
      },
      "types.pnp.v1.PnpFileState": {
        "type": "string",
        "enum": [
          "Created",
          "Uploaded",
          "Parsed"
        ]
      },
      "types.pnp.v1.PnpItemResponse": {
        "type": "object",
        "required": [
          "id",
          "pnp_file",
          "designator"
        ],
        "properties": {
          "design_item": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/DesignItemId"
              }
            ]
          },
          "designator": {
            "$ref": "#/components/schemas/String"
          },
          "id": {
            "$ref": "#/components/schemas/PnpItemId"
          },
          "mounting": {
            "type": [
              "string",
              "null"
            ]
          },
          "pnp_file": {
            "$ref": "#/components/schemas/PnpFileId"
          },
          "side": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/types.pnp.v1.Side"
              }
            ]
          }
        }
      },
      "types.pnp.v1.PnpResponse": {
        "oneOf": [
          {
            "type": "object",
            "required": [
              "type"
            ],
            "properties": {
              "type": {
                "type": "string",
                "enum": [
                  "PnpNotUploaded"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "type"
            ],
            "properties": {
              "type": {
                "type": "string",
                "enum": [
                  "ColumnMappingNotSubmitted"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "data",
              "type"
            ],
            "properties": {
              "data": {
                "$ref": "#/components/schemas/types.pnp.v1.BulkPnpItemsResponse"
              },
              "type": {
                "type": "string",
                "enum": [
                  "PnpUploaded"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "data",
              "type"
            ],
            "properties": {
              "data": {
                "$ref": "#/components/schemas/types.pnp.v1.PnpFileResponse"
              },
              "type": {
                "type": "string",
                "enum": [
                  "PnpUploadedButNotImported"
                ]
              }
            }
          }
        ]
      },
      "types.pnp.v1.Side": {
        "type": "string",
        "enum": [
          "Top",
          "Bottom"
        ]
      },
      "types.pnp.v1.Warning": {
        "oneOf": [
          {
            "type": "object",
            "required": [
              "data",
              "type"
            ],
            "properties": {
              "data": {
                "type": "object",
                "required": [
                  "column_type",
                  "row",
                  "col"
                ],
                "properties": {
                  "col": {
                    "type": "integer",
                    "minimum": 0
                  },
                  "column_type": {
                    "$ref": "#/components/schemas/types.pnp.v1.PnpColumn"
                  },
                  "row": {
                    "type": "integer",
                    "minimum": 0
                  }
                }
              },
              "type": {
                "type": "string",
                "enum": [
                  "UnableToParseCell"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "data",
              "type"
            ],
            "properties": {
              "data": {
                "type": "integer",
                "minimum": 0
              },
              "type": {
                "type": "string",
                "enum": [
                  "DesignatorMissing"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "data",
              "type"
            ],
            "properties": {
              "data": {
                "$ref": "#/components/schemas/types.pnp.v1.PnpColumn"
              },
              "type": {
                "type": "string",
                "enum": [
                  "ColumnMissing"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "data",
              "type"
            ],
            "properties": {
              "data": {
                "$ref": "#/components/schemas/String"
              },
              "type": {
                "type": "string",
                "enum": [
                  "DuplicateDesignatorData"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "data",
              "type"
            ],
            "properties": {
              "data": {
                "type": "object",
                "required": [
                  "row",
                  "col_count",
                  "expected_col_count"
                ],
                "properties": {
                  "col_count": {
                    "type": "integer",
                    "minimum": 0
                  },
                  "expected_col_count": {
                    "type": "integer",
                    "minimum": 0
                  },
                  "row": {
                    "type": "integer",
                    "minimum": 0
                  }
                }
              },
              "type": {
                "type": "string",
                "enum": [
                  "VaryingColumnNumber"
                ]
              }
            }
          }
        ]
      },
      "types.primitives.monetary_value.v1.ConvertedMonetaryValue": {
        "type": "object",
        "required": [
          "converted_mv"
        ],
        "properties": {
          "converted_mv": {
            "$ref": "#/components/schemas/types.primitives.monetary_value.v1.MonetaryValue"
          }
        }
      },
      "types.primitives.monetary_value.v1.Currency": {
        "type": "string",
        "enum": [
          "EUR",
          "USD",
          "AUD",
          "BGN",
          "BRL",
          "CAD",
          "CHF",
          "CNY",
          "CZK",
          "DKK",
          "GBP",
          "HKD",
          "HRK",
          "HUF",
          "IDR",
          "ILS",
          "INR",
          "ISK",
          "JPY",
          "KRW",
          "MXN",
          "MYR",
          "NOK",
          "NZD",
          "PHP",
          "PLN",
          "RON",
          "RUB",
          "SEK",
          "SGD",
          "THB",
          "TND",
          "TRY",
          "ZAR",
          "TWD",
          "VND",
          "LKR",
          "MAD"
        ]
      },
      "types.primitives.monetary_value.v1.FloatingPointMoneyValue": {
        "type": "object",
        "required": [
          "amount",
          "currency"
        ],
        "properties": {
          "amount": {
            "type": "number",
            "format": "double"
          },
          "currency": {
            "$ref": "#/components/schemas/types.primitives.monetary_value.v1.Currency"
          }
        }
      },
      "types.primitives.monetary_value.v1.FloatingPointMoneyValueExchangePair": {
        "type": "object",
        "required": [
          "converted_mv",
          "original_mv"
        ],
        "properties": {
          "converted_mv": {
            "$ref": "#/components/schemas/types.primitives.monetary_value.v1.FloatingPointMoneyValue"
          },
          "original_mv": {
            "$ref": "#/components/schemas/types.primitives.monetary_value.v1.FloatingPointMoneyValue"
          }
        }
      },
      "types.primitives.monetary_value.v1.MonetaryValue": {
        "type": "object",
        "required": [
          "amount",
          "currency"
        ],
        "properties": {
          "amount": {
            "type": "string"
          },
          "currency": {
            "$ref": "#/components/schemas/types.primitives.monetary_value.v1.Currency"
          }
        }
      },
      "types.primitives.quantity_unit.v1.QuantityUnit": {
        "oneOf": [
          {
            "type": "object",
            "required": [
              "quantity",
              "unit"
            ],
            "properties": {
              "quantity": {
                "type": "number",
                "format": "double"
              },
              "unit": {
                "type": "string",
                "enum": [
                  "Kg"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "quantity",
              "unit"
            ],
            "properties": {
              "quantity": {
                "type": "number",
                "format": "double"
              },
              "unit": {
                "type": "string",
                "enum": [
                  "Meters"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "quantity",
              "unit"
            ],
            "properties": {
              "quantity": {
                "type": "number",
                "format": "double"
              },
              "unit": {
                "type": "string",
                "enum": [
                  "Liters"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "quantity",
              "unit"
            ],
            "properties": {
              "quantity": {
                "type": "number",
                "format": "double"
              },
              "unit": {
                "type": "string",
                "enum": [
                  "Pieces"
                ]
              }
            }
          }
        ]
      },
      "types.primitives.quantity_unit.v1.UnitOfMeasurement": {
        "type": "object",
        "required": [
          "quantity_unit"
        ],
        "properties": {
          "quantity_unit": {
            "$ref": "#/components/schemas/types.primitives.quantity_unit.v1.QuantityUnit"
          }
        }
      },
      "types.resource.v1.ResourceUrlResponse": {
        "type": "object",
        "required": [
          "urls"
        ],
        "properties": {
          "urls": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "types.rfq.costed_bom.v1.BomSupplierInfo": {
        "type": "object",
        "required": [
          "supplier"
        ],
        "properties": {
          "supplier": {
            "type": "string"
          },
          "supplier_number": {
            "type": [
              "string",
              "null"
            ]
          },
          "supplier_part_number": {
            "type": [
              "string",
              "null"
            ]
          }
        }
      },
      "types.rfq.costed_bom.v1.CostedBOMComplianceInfo": {
        "type": "object",
        "required": [
          "rohs_compliant",
          "china_rohs",
          "reach_compliant",
          "svhc_cas_number",
          "prop65",
          "conflict_mineral_status",
          "eccn"
        ],
        "properties": {
          "china_rohs": {
            "type": "string"
          },
          "conflict_mineral_status": {
            "type": "string"
          },
          "eccn": {
            "type": "string"
          },
          "hts_code": {
            "type": [
              "string",
              "null"
            ]
          },
          "prop65": {
            "type": "string"
          },
          "reach_compliant": {
            "type": "string"
          },
          "rohs_compliant": {
            "type": "string"
          },
          "rohs_version": {
            "type": [
              "string",
              "null"
            ]
          },
          "svhc_cas_number": {
            "type": "string"
          }
        }
      },
      "types.rfq.costed_bom.v1.CostedBOMLifecycleInfo": {
        "type": "object",
        "properties": {
          "last_time_buy_date": {
            "type": [
              "string",
              "null"
            ]
          },
          "last_time_delivery_date": {
            "type": [
              "string",
              "null"
            ]
          },
          "lifecycle_yteol": {
            "type": [
              "string",
              "null"
            ]
          },
          "lifecycle_yteol_range": {
            "type": [
              "string",
              "null"
            ]
          }
        }
      },
      "types.rfq.costed_bom.v1.CostedBom": {
        "type": "object",
        "required": [
          "rfq_id",
          "creation_date",
          "top_level_assemblies",
          "sourcing_scenarios"
        ],
        "properties": {
          "creation_date": {
            "type": "string",
            "format": "date-time"
          },
          "rfq_id": {
            "type": "string",
            "format": "uuid"
          },
          "sourcing_scenarios": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/types.rfq.costed_bom.v1.CostedSourcingScenario"
            }
          },
          "top_level_assemblies": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/types.rfq.costed_bom.v1.CostedBomAssembly"
            }
          }
        }
      },
      "types.rfq.costed_bom.v1.CostedBomAssembly": {
        "type": "object",
        "required": [
          "name",
          "type",
          "notes"
        ],
        "properties": {
          "name": {
            "type": "string"
          },
          "notes": {
            "type": "string"
          },
          "type": {
            "type": "string"
          }
        }
      },
      "types.rfq.costed_bom.v1.CostedBomComponent": {
        "type": "object",
        "required": [
          "approved_parts",
          "pending_parts",
          "selected_parts",
          "per_assembly_data",
          "designators",
          "manufacturer_part_number_bom",
          "internal_part_number_bom",
          "customer_part_number_bom",
          "notes",
          "do_not_place",
          "manufacturer_free",
          "consignment"
        ],
        "properties": {
          "approved_parts": {
            "$ref": "#/components/schemas/types.rfq.costed_bom.v1.CostedBomParts"
          },
          "consignment": {
            "type": "boolean"
          },
          "customer_part_number_bom": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "The raw data from the BOMs tagged with `CPN`"
          },
          "designators": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "do_not_place": {
            "type": "boolean"
          },
          "internal_part_number_bom": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "The raw data from the BOMs tagged with `IPN`"
          },
          "manufacturer_free": {
            "type": "string",
            "description": "Possible values: \"Yes\", \"Partially\", \"No\" or empty string"
          },
          "manufacturer_part_number_bom": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "The raw data from the BOMs tagged with `MPN`"
          },
          "notes": {
            "type": "string"
          },
          "pending_parts": {
            "$ref": "#/components/schemas/types.rfq.costed_bom.v1.CostedBomParts"
          },
          "per_assembly_data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/types.rfq.costed_bom.v1.PerAssemblyData"
            }
          },
          "selected_parts": {
            "$ref": "#/components/schemas/types.rfq.costed_bom.v1.SelectedBomParts"
          }
        }
      },
      "types.rfq.costed_bom.v1.CostedBomParts": {
        "oneOf": [
          {
            "type": "object",
            "required": [
              "items",
              "part_type"
            ],
            "properties": {
              "items": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/types.rfq.costed_bom.v1.OTSOrGenericPart"
                }
              },
              "part_type": {
                "type": "string",
                "enum": [
                  "OffTheShelf"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "items",
              "part_type"
            ],
            "properties": {
              "items": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/types.rfq.costed_bom.v1.CustomPart"
                }
              },
              "part_type": {
                "type": "string",
                "enum": [
                  "Custom"
                ]
              }
            }
          }
        ]
      },
      "types.rfq.costed_bom.v1.CostedPrice": {
        "type": "object",
        "required": [
          "one_time_costs"
        ],
        "properties": {
          "currency_exchange_rate": {
            "type": [
              "string",
              "null"
            ]
          },
          "moq": {
            "type": [
              "number",
              "null"
            ],
            "format": "double"
          },
          "mpq": {
            "type": [
              "number",
              "null"
            ],
            "format": "double"
          },
          "one_time_costs": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/types.sourcing.sourcing_scenario.v1.Cost"
            }
          },
          "price_type": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/types.sourcing.sourcing_scenario.v1.PriceType"
              }
            ]
          },
          "unit_price": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/types.primitives.monetary_value.v1.MonetaryValue"
              }
            ]
          },
          "unit_price_original_currency": {
            "type": [
              "string",
              "null"
            ]
          }
        }
      },
      "types.rfq.costed_bom.v1.CostedSourcingScenario": {
        "type": "object",
        "required": [
          "name",
          "solution_preference",
          "summaries",
          "components"
        ],
        "properties": {
          "components": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/types.rfq.costed_bom.v1.CostedBomComponent"
            }
          },
          "name": {
            "type": "string"
          },
          "solution_preference": {
            "$ref": "#/components/schemas/types.sourcing.sourcing_scenario.v1.SolutionPreference"
          },
          "summaries": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/types.rfq.costed_bom.v1.CostedSourcingScenarioSummary"
            }
          }
        }
      },
      "types.rfq.costed_bom.v1.CostedSourcingScenarioSummary": {
        "type": "object",
        "required": [
          "assembly_name",
          "order_size",
          "status_counters"
        ],
        "properties": {
          "assembly_name": {
            "type": "string"
          },
          "one_time_costs": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/types.primitives.monetary_value.v1.MonetaryValue"
              }
            ]
          },
          "order_size": {
            "type": "integer",
            "format": "int32"
          },
          "status_counters": {
            "$ref": "#/components/schemas/types.rfq.costed_bom.v1.SolutionStatusCount"
          },
          "total_excess_material": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/types.primitives.monetary_value.v1.MonetaryValue"
              }
            ]
          },
          "total_price": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/types.primitives.monetary_value.v1.MonetaryValue"
              }
            ]
          },
          "unit_price": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/types.primitives.monetary_value.v1.MonetaryValue"
              }
            ]
          }
        }
      },
      "types.rfq.costed_bom.v1.CustomPart": {
        "type": "object",
        "required": [
          "id",
          "internal_part_numbers",
          "part_description",
          "part_type",
          "reach_compliant",
          "rohs_compliant"
        ],
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "internal_part_numbers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/types.rfq.costed_bom.v1.IpnInfo"
            }
          },
          "part_description": {
            "type": "string"
          },
          "part_type": {
            "type": "string"
          },
          "reach_compliant": {
            "type": "string"
          },
          "rohs_compliant": {
            "type": "string"
          }
        }
      },
      "types.rfq.costed_bom.v1.GenericPart": {
        "type": "object",
        "required": [
          "internal_part_numbers",
          "generic_part_spec"
        ],
        "properties": {
          "generic_part_spec": {
            "$ref": "#/components/schemas/types.rfq.costed_bom.v1.GenericPartSpec"
          },
          "internal_part_numbers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/types.rfq.costed_bom.v1.IpnInfo"
            }
          }
        }
      },
      "types.rfq.costed_bom.v1.GenericPartSpec": {
        "oneOf": [
          {
            "type": "object",
            "required": [
              "resistance_ohms",
              "power_rating_watts",
              "temperature_coefficient_ppmk",
              "tolerance_percent",
              "voltage_rating_volts",
              "type"
            ],
            "properties": {
              "power_rating_watts": {
                "type": "string"
              },
              "resistance_ohms": {
                "type": "string"
              },
              "temperature_coefficient_ppmk": {
                "type": "string"
              },
              "tolerance_percent": {
                "type": "string"
              },
              "type": {
                "type": "string",
                "enum": [
                  "Resistor"
                ]
              },
              "voltage_rating_volts": {
                "type": "string"
              }
            }
          },
          {
            "type": "object",
            "required": [
              "capacitance_farads",
              "tolerance_percent",
              "voltage_rating_volts",
              "dielectric",
              "type"
            ],
            "properties": {
              "capacitance_farads": {
                "type": "string"
              },
              "dielectric": {
                "$ref": "#/components/schemas/types.parts.generic.v1.Dielectric"
              },
              "tolerance_percent": {
                "type": "string"
              },
              "type": {
                "type": "string",
                "enum": [
                  "Capacitor"
                ]
              },
              "voltage_rating_volts": {
                "type": "string"
              }
            }
          }
        ]
      },
      "types.rfq.costed_bom.v1.IpnInfo": {
        "type": "object",
        "required": [
          "value",
          "revision"
        ],
        "properties": {
          "revision": {
            "type": "string"
          },
          "value": {
            "type": "string"
          }
        }
      },
      "types.rfq.costed_bom.v1.OTSOrGenericPart": {
        "oneOf": [
          {
            "type": "object",
            "required": [
              "bound_to_mpn"
            ],
            "properties": {
              "bound_to_mpn": {
                "$ref": "#/components/schemas/types.rfq.costed_bom.v1.OTSPart"
              }
            }
          },
          {
            "type": "object",
            "required": [
              "generic"
            ],
            "properties": {
              "generic": {
                "$ref": "#/components/schemas/types.rfq.costed_bom.v1.GenericPart"
              }
            }
          }
        ]
      },
      "types.rfq.costed_bom.v1.OTSPart": {
        "type": "object",
        "required": [
          "internal_part_numbers",
          "manufacturer_part_number",
          "manufacturer"
        ],
        "properties": {
          "internal_part_numbers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/types.rfq.costed_bom.v1.IpnInfo"
            }
          },
          "manufacturer": {
            "type": "string"
          },
          "manufacturer_part_number": {
            "type": "string"
          }
        }
      },
      "types.rfq.costed_bom.v1.OfferId": {
        "oneOf": [
          {
            "type": "object",
            "required": [
              "offer",
              "offer_type"
            ],
            "properties": {
              "offer": {
                "type": "string",
                "format": "uuid"
              },
              "offer_type": {
                "type": "string",
                "enum": [
                  "Other"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "offer",
              "offer_type"
            ],
            "properties": {
              "offer": {
                "type": "string",
                "format": "uuid"
              },
              "offer_type": {
                "type": "string",
                "enum": [
                  "CustomPart"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "offer",
              "offer_type"
            ],
            "properties": {
              "offer": {
                "type": "string",
                "format": "uuid"
              },
              "offer_type": {
                "type": "string",
                "enum": [
                  "Inventory"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "offer",
              "offer_type"
            ],
            "properties": {
              "offer": {
                "type": "string",
                "format": "uuid"
              },
              "offer_type": {
                "type": "string",
                "enum": [
                  "CustomPartInventory"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "offer",
              "offer_type"
            ],
            "properties": {
              "offer": {
                "type": "string",
                "format": "uuid"
              },
              "offer_type": {
                "type": "string",
                "enum": [
                  "Consigned"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "offer",
              "offer_type"
            ],
            "properties": {
              "offer": {
                "type": "string",
                "format": "uuid"
              },
              "offer_type": {
                "type": "string",
                "enum": [
                  "Aggregated"
                ]
              }
            }
          }
        ]
      },
      "types.rfq.costed_bom.v1.PartInfo": {
        "type": "object",
        "required": [
          "package",
          "mounting",
          "category",
          "compliance",
          "lifecycle",
          "description",
          "datasheet_url",
          "part_warnings",
          "country_of_origin",
          "type"
        ],
        "properties": {
          "category": {
            "type": "string"
          },
          "compliance": {
            "$ref": "#/components/schemas/types.rfq.costed_bom.v1.CostedBOMComplianceInfo"
          },
          "country_of_origin": {
            "type": "string"
          },
          "datasheet_url": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "lifecycle": {
            "$ref": "#/components/schemas/types.rfq.costed_bom.v1.CostedBOMLifecycleInfo"
          },
          "mounting": {
            "type": "string"
          },
          "package": {
            "type": "string"
          },
          "part_warnings": {
            "type": "string"
          },
          "pins": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int32"
          },
          "type": {
            "type": "string"
          }
        }
      },
      "types.rfq.costed_bom.v1.PerAssemblyData": {
        "type": "object",
        "required": [
          "assembly_name",
          "designators",
          "quantity"
        ],
        "properties": {
          "assembly_name": {
            "type": "string"
          },
          "designators": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "excess_material_quantity": {
            "type": [
              "number",
              "null"
            ],
            "format": "double"
          },
          "quantity": {
            "type": "number",
            "format": "double"
          }
        }
      },
      "types.rfq.costed_bom.v1.PurchaseInfo": {
        "type": "object",
        "required": [
          "quantity",
          "offer_id",
          "scrap_quantity",
          "aggregated_quantity",
          "solution_warnings",
          "sourcing_notes",
          "excess_material",
          "purchase_options"
        ],
        "properties": {
          "aggregated_quantity": {
            "$ref": "#/components/schemas/types.primitives.quantity_unit.v1.QuantityUnit"
          },
          "excess_material": {
            "$ref": "#/components/schemas/types.rfq.costed_bom.v1.PurchaseInfoExcess"
          },
          "offer_id": {
            "$ref": "#/components/schemas/types.rfq.costed_bom.v1.OfferId"
          },
          "purchase_options": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/types.rfq.costed_bom.v1.PurchaseOption"
            }
          },
          "quantity": {
            "type": "number",
            "format": "double",
            "description": "Offer volume.\n\nNumber of units to be purchased."
          },
          "scrap_quantity": {
            "type": "number",
            "format": "double"
          },
          "solution_warnings": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "sourcing_notes": {
            "type": "string"
          }
        }
      },
      "types.rfq.costed_bom.v1.PurchaseInfoExcess": {
        "type": "object",
        "properties": {
          "costs": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/types.primitives.monetary_value.v1.MonetaryValue"
              }
            ]
          },
          "quantity": {
            "type": [
              "number",
              "null"
            ],
            "format": "double"
          }
        }
      },
      "types.rfq.costed_bom.v1.PurchaseOption": {
        "type": "object",
        "required": [
          "offer_id",
          "purchase_quantity",
          "supplier",
          "ncnr",
          "price",
          "last_updated"
        ],
        "properties": {
          "availability": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/types.sourcing.availability.v1.AvailabilityWithShippingTime"
              }
            ]
          },
          "factory_quantity": {
            "type": [
              "number",
              "null"
            ],
            "format": "double"
          },
          "last_updated": {
            "type": "string",
            "format": "date-time"
          },
          "ncnr": {
            "type": "boolean"
          },
          "offer_id": {
            "$ref": "#/components/schemas/types.rfq.costed_bom.v1.OfferId"
          },
          "offer_notes": {
            "type": [
              "string",
              "null"
            ]
          },
          "offer_number": {
            "type": [
              "string",
              "null"
            ]
          },
          "origin": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/types.sourcing.offer.v1.OfferOrigin"
              }
            ]
          },
          "packaging": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/types.sourcing.sourcing_scenario.v1.Packaging"
              }
            ]
          },
          "price": {
            "$ref": "#/components/schemas/types.rfq.costed_bom.v1.CostedPrice"
          },
          "purchase_quantity": {
            "type": "number",
            "format": "double"
          },
          "supplier": {
            "$ref": "#/components/schemas/types.rfq.costed_bom.v1.BomSupplierInfo"
          },
          "valid_until": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          }
        }
      },
      "types.rfq.costed_bom.v1.SelectedBomParts": {
        "oneOf": [
          {
            "type": "object",
            "required": [
              "items",
              "part_type"
            ],
            "properties": {
              "items": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/types.rfq.costed_bom.v1.SelectedOtsPart"
                }
              },
              "part_type": {
                "type": "string",
                "enum": [
                  "OffTheShelf"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "items",
              "part_type"
            ],
            "properties": {
              "items": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/types.rfq.costed_bom.v1.SelectedCustomPart"
                }
              },
              "part_type": {
                "type": "string",
                "enum": [
                  "Custom"
                ]
              }
            }
          }
        ]
      },
      "types.rfq.costed_bom.v1.SelectedCustomPart": {
        "type": "object",
        "required": [
          "customer_part_numbers",
          "internal_part_numbers",
          "internal_part_number_description",
          "description",
          "part_type",
          "reach_compliant",
          "rohs_compliant",
          "valid_solutions",
          "warning_solutions",
          "error_solutions"
        ],
        "properties": {
          "customer_part_numbers": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "description": {
            "type": "string"
          },
          "error_solutions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/types.rfq.costed_bom.v1.ValidSolution"
            }
          },
          "internal_part_number_description": {
            "type": "string"
          },
          "internal_part_numbers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/types.rfq.costed_bom.v1.IpnInfo"
            }
          },
          "part_type": {
            "type": "string"
          },
          "purchase_info": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/types.rfq.costed_bom.v1.PurchaseInfo"
              }
            ]
          },
          "reach_compliant": {
            "type": "string"
          },
          "rohs_compliant": {
            "type": "string"
          },
          "valid_solutions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/types.rfq.costed_bom.v1.ValidSolution"
            }
          },
          "warning_solutions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/types.rfq.costed_bom.v1.ValidSolution"
            }
          }
        }
      },
      "types.rfq.costed_bom.v1.SelectedOtsPart": {
        "type": "object",
        "required": [
          "customer_part_numbers",
          "internal_part_numbers",
          "internal_part_number_description",
          "manufacturer_part_number",
          "manufacturer",
          "valid_solutions",
          "warning_solutions",
          "error_solutions"
        ],
        "properties": {
          "customer_part_numbers": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "error_solutions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/types.rfq.costed_bom.v1.ValidSolution"
            }
          },
          "internal_part_number_description": {
            "type": "string"
          },
          "internal_part_numbers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/types.rfq.costed_bom.v1.IpnInfo"
            }
          },
          "manufacturer": {
            "type": "string"
          },
          "manufacturer_part_number": {
            "type": "string"
          },
          "part_info": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/types.rfq.costed_bom.v1.PartInfo"
              }
            ]
          },
          "purchase_info": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/types.rfq.costed_bom.v1.PurchaseInfo"
              }
            ]
          },
          "valid_solutions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/types.rfq.costed_bom.v1.ValidSolution"
            }
          },
          "warning_solutions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/types.rfq.costed_bom.v1.ValidSolution"
            }
          }
        }
      },
      "types.rfq.costed_bom.v1.SolutionStatusCount": {
        "type": "object",
        "required": [
          "number_of_ok",
          "number_of_warning",
          "number_of_error"
        ],
        "properties": {
          "number_of_error": {
            "type": "integer",
            "format": "int32",
            "minimum": 0
          },
          "number_of_ok": {
            "type": "integer",
            "format": "int32",
            "minimum": 0
          },
          "number_of_warning": {
            "type": "integer",
            "format": "int32",
            "minimum": 0
          }
        }
      },
      "types.rfq.costed_bom.v1.ValidSolution": {
        "type": "object",
        "required": [
          "quantity",
          "offer_id",
          "scrap_quantity",
          "aggregated_quantity"
        ],
        "properties": {
          "aggregated_quantity": {
            "$ref": "#/components/schemas/types.primitives.quantity_unit.v1.QuantityUnit"
          },
          "offer_id": {
            "$ref": "#/components/schemas/types.rfq.costed_bom.v1.OfferId"
          },
          "quantity": {
            "type": "number",
            "format": "double"
          },
          "scrap_quantity": {
            "type": "number",
            "format": "double"
          }
        }
      },
      "types.rfq.overview.v1.CustomerOverview": {
        "type": "object",
        "required": [
          "customer_name"
        ],
        "properties": {
          "customer_name": {
            "type": "string"
          },
          "customer_number": {
            "type": [
              "string",
              "null"
            ]
          }
        }
      },
      "types.rfq.overview.v1.SingleRfQOverview": {
        "type": "object",
        "required": [
          "id",
          "name",
          "customer",
          "creation_date",
          "status",
          "currency",
          "is_archived"
        ],
        "properties": {
          "created_by": {
            "type": [
              "string",
              "null"
            ],
            "format": "uuid"
          },
          "creation_date": {
            "type": "string",
            "format": "date-time"
          },
          "currency": {
            "$ref": "#/components/schemas/types.primitives.monetary_value.v1.Currency"
          },
          "customer": {
            "$ref": "#/components/schemas/types.rfq.overview.v1.CustomerOverview"
          },
          "due_date": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "internal_number": {
            "type": [
              "string",
              "null"
            ]
          },
          "is_archived": {
            "type": "boolean"
          },
          "name": {
            "type": "string"
          },
          "status": {
            "$ref": "#/components/schemas/types.rfq.status.v1.RfQStatus"
          }
        }
      },
      "types.rfq.status.v1.RfQStatus": {
        "type": "string",
        "enum": [
          "RequestInDraft",
          "QuotationInProgress",
          "QuotationAvailable",
          "NoQuotation",
          "NoOrder",
          "OrderPlaced",
          "OrderConfirmed",
          "PaymentFailed",
          "OrderInProcurement",
          "OrderInProduction",
          "OrderShipped"
        ]
      },
      "types.rfq.status_history.v1.AllRfqStatusHistory": {
        "type": "object",
        "required": [
          "items"
        ],
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/types.rfq.status_history.v1.RfqStatusHistory"
            }
          }
        }
      },
      "types.rfq.status_history.v1.RfqStatusChange": {
        "type": "object",
        "required": [
          "updated_at",
          "new_status"
        ],
        "properties": {
          "new_status": {
            "$ref": "#/components/schemas/types.rfq.status.v1.RfQStatus"
          },
          "previous_status": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/types.rfq.status.v1.RfQStatus"
              }
            ]
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          },
          "updated_by": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/UserId"
              }
            ]
          }
        }
      },
      "types.rfq.status_history.v1.RfqStatusHistory": {
        "type": "object",
        "required": [
          "rfq_id",
          "status_changes"
        ],
        "properties": {
          "rfq_id": {
            "type": "string",
            "format": "uuid"
          },
          "status_changes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/types.rfq.status_history.v1.RfqStatusChange"
            }
          }
        }
      },
      "types.rfq.v1.AllAssembliesResponse": {
        "type": "object",
        "required": [
          "items"
        ],
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/types.assembly.v1.SimpleAssemblyResponse"
            }
          }
        }
      },
      "types.rfq.v1.AllRfQsResponse": {
        "type": "object",
        "required": [
          "items"
        ],
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/types.rfq.overview.v1.SingleRfQOverview"
            }
          }
        }
      },
      "types.rfq.v1.CustomerInfo": {
        "oneOf": [
          {
            "type": "object",
            "description": "If creating RfQ for an existing customer provide customer id here",
            "required": [
              "data",
              "type"
            ],
            "properties": {
              "data": {
                "type": "string",
                "format": "uuid",
                "description": "If creating RfQ for an existing customer provide customer id here"
              },
              "type": {
                "type": "string",
                "enum": [
                  "ExistingCustomer"
                ]
              }
            }
          },
          {
            "type": "object",
            "description": "If creating RfQ for a new customer, provide customer name",
            "required": [
              "data",
              "type"
            ],
            "properties": {
              "data": {
                "type": "string",
                "description": "If creating RfQ for a new customer, provide customer name"
              },
              "type": {
                "type": "string",
                "enum": [
                  "NewCustomer"
                ]
              }
            }
          }
        ]
      },
      "types.rfq.v1.QuotationUpload": {
        "type": "object",
        "required": [
          "filename"
        ],
        "properties": {
          "filename": {
            "type": "string",
            "description": "Filename including extension.\n\nNote that this is the name of the file as the customer will be able to download it for the RfQ.\nThis name does not have to be related to the name of the file whose contents you want to upload\nto the URL given in the response payload.",
            "examples": [
              "example_quotation.pdf"
            ]
          },
          "replace_existing_quotation": {
            "type": "boolean",
            "description": "Optional property specifying whether the operation should replace the current quotation if it\nexists. If set to false and a quotation already exists, the operation will fail.\n\nDefault: false"
          }
        }
      },
      "types.rfq.v1.RfQCreation": {
        "type": "object",
        "description": "Describes the Rfq being created",
        "required": [
          "customer",
          "name",
          "currency"
        ],
        "properties": {
          "assembly_type": {
            "$ref": "#/components/schemas/types.assembly.assembly_type.v1.AssemblyType"
          },
          "contributors": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Users which contribute to this Rfq, can be empty"
          },
          "currency": {
            "$ref": "#/components/schemas/types.primitives.monetary_value.v1.Currency",
            "description": "This RfQs currency"
          },
          "customer": {
            "$ref": "#/components/schemas/types.rfq.v1.CustomerInfo",
            "description": "Customer which this RfQ is for"
          },
          "due_date": {
            "type": [
              "string",
              "null"
            ],
            "format": "date",
            "description": "Date when this Rfq must be finished (if any)"
          },
          "ems_internal_number": {
            "type": [
              "string",
              "null"
            ],
            "description": "Internal identifier (if any)"
          },
          "industry": {
            "$ref": "#/components/schemas/types.assembly.assembly_industry.v1.AssemblyIndustry"
          },
          "internal_notes": {
            "type": [
              "string",
              "null"
            ]
          },
          "name": {
            "type": "string",
            "description": "Name of the RfQ"
          },
          "notes": {
            "type": [
              "string",
              "null"
            ]
          },
          "source_assembly_ipn_revision": {
            "type": [
              "string",
              "null"
            ]
          },
          "source_assembly_ipn_value": {
            "type": [
              "string",
              "null"
            ],
            "description": "If present, the RfQ is created from an existing assembly identified by this IPN value and revision."
          },
          "volume_estimate": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/types.rfq.volume_estimate.v1.VolumeEstimate"
              }
            ]
          }
        }
      },
      "types.rfq.v1.RfQResponse": {
        "type": "object",
        "required": [
          "id",
          "customer",
          "name",
          "creation_date",
          "due_date",
          "status",
          "sourcing_scenarios",
          "design_items_count",
          "assemblies_count",
          "currency",
          "is_archived",
          "industry"
        ],
        "properties": {
          "assemblies_count": {
            "type": "integer",
            "minimum": 0
          },
          "created_by": {
            "type": [
              "string",
              "null"
            ],
            "format": "uuid"
          },
          "creation_date": {
            "type": "string",
            "format": "date-time"
          },
          "currency": {
            "$ref": "#/components/schemas/types.primitives.monetary_value.v1.Currency"
          },
          "customer": {
            "type": "string",
            "format": "uuid"
          },
          "design_items_count": {
            "type": "integer",
            "minimum": 0
          },
          "due_date": {
            "type": "string",
            "format": "date"
          },
          "ems_internal_number": {
            "type": [
              "string",
              "null"
            ],
            "description": "Internal reference"
          },
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "industry": {
            "$ref": "#/components/schemas/types.assembly.assembly_industry.v1.AssemblyIndustry"
          },
          "internal_notes": {
            "type": [
              "string",
              "null"
            ]
          },
          "is_archived": {
            "type": "boolean"
          },
          "name": {
            "type": "string"
          },
          "notes": {
            "type": [
              "string",
              "null"
            ]
          },
          "sourcing_scenarios": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            }
          },
          "status": {
            "$ref": "#/components/schemas/types.rfq.status.v1.RfQStatus"
          }
        }
      },
      "types.rfq.v1.RfqUpdate": {
        "type": "object",
        "properties": {
          "currency": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/types.primitives.monetary_value.v1.Currency"
              }
            ]
          },
          "due_date": {
            "type": [
              "string",
              "null"
            ],
            "format": "date"
          },
          "internal_notes": {
            "type": [
              "string",
              "null"
            ]
          },
          "internal_number": {
            "type": [
              "string",
              "null"
            ]
          },
          "name": {
            "type": [
              "string",
              "null"
            ]
          },
          "notes": {
            "type": [
              "string",
              "null"
            ]
          },
          "shipping_tracking_link": {
            "type": [
              "string",
              "null"
            ],
            "description": "Shipping tracking link should be present only if the status is OrderShipped."
          },
          "status": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/types.rfq.status.v1.RfQStatus"
              }
            ]
          },
          "volume_estimate": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/types.rfq.volume_estimate.v1.VolumeEstimate"
              }
            ]
          }
        }
      },
      "types.rfq.v1.SingleFileUrlResponse": {
        "type": "object",
        "required": [
          "url"
        ],
        "properties": {
          "url": {
            "type": "string",
            "examples": [
              "https://lumiquoteprod.blob.core.windows.net/luminovo/quotation/ee824cad-d7a6-4f48-87dc-e8461a9201c4/example_quotation.pdf?sv=2018-11-09&ss=b&srt=o"
            ]
          }
        }
      },
      "types.rfq.volume_estimate.v1.VolumeEstimate": {
        "type": "object",
        "required": [
          "currency"
        ],
        "properties": {
          "currency": {
            "$ref": "#/components/schemas/types.primitives.monetary_value.v1.Currency"
          },
          "lower": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "upper": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          }
        }
      },
      "types.sourcing.availability.v1.AggregatedAvailabilityIncludingShippingTime": {
        "oneOf": [
          {
            "type": "object",
            "description": "There is sufficient stock for the required quantity.",
            "required": [
              "type"
            ],
            "properties": {
              "type": {
                "type": "string",
                "enum": [
                  "Stock"
                ]
              }
            }
          },
          {
            "type": "object",
            "description": "There is not sufficient stock, but enough stock with on order quantities\nby the given lead time in days.",
            "required": [
              "days",
              "type"
            ],
            "properties": {
              "days": {
                "type": "integer",
                "format": "int64",
                "description": "There is not sufficient stock, but enough stock with on order quantities\nby the given lead time in days.",
                "minimum": 0
              },
              "type": {
                "type": "string",
                "enum": [
                  "OnOrder"
                ]
              }
            }
          },
          {
            "type": "object",
            "description": "There is not sufficient stock, but enough stock with on order quantities\nwithout a given date or lead time",
            "required": [
              "type"
            ],
            "properties": {
              "type": {
                "type": "string",
                "enum": [
                  "OnOrderWithUnknownLeadTime"
                ]
              }
            }
          },
          {
            "type": "object",
            "description": "There is not sufficient stock, even with on order quantities, but there is a given\nfactory lead time by which the required quantity can be obtained.",
            "required": [
              "days",
              "type"
            ],
            "properties": {
              "days": {
                "type": "integer",
                "format": "int64",
                "description": "There is not sufficient stock, even with on order quantities, but there is a given\nfactory lead time by which the required quantity can be obtained.",
                "minimum": 0
              },
              "type": {
                "type": "string",
                "enum": [
                  "LeadTimeDays"
                ]
              }
            }
          }
        ],
        "description": "Availability of a solution or purchase option, indicating if it is in stock\nor the method and number of days until the required quantity is obtained."
      },
      "types.sourcing.availability.v1.Availability": {
        "oneOf": [
          {
            "type": "object",
            "description": "There is sufficient stock for the required quantity.",
            "required": [
              "type"
            ],
            "properties": {
              "type": {
                "type": "string",
                "enum": [
                  "Stock"
                ]
              }
            }
          },
          {
            "type": "object",
            "description": "There is not sufficient stock, but enough stock with on order quantities\nby the given lead time in days.",
            "required": [
              "days",
              "type"
            ],
            "properties": {
              "days": {
                "type": "integer",
                "format": "int64",
                "description": "There is not sufficient stock, but enough stock with on order quantities\nby the given lead time in days.",
                "minimum": 0
              },
              "type": {
                "type": "string",
                "enum": [
                  "OnOrder"
                ]
              }
            }
          },
          {
            "type": "object",
            "description": "There is not sufficient stock, but enough stock with on order quantities\nwithout a given date or lead time",
            "required": [
              "type"
            ],
            "properties": {
              "type": {
                "type": "string",
                "enum": [
                  "OnOrderWithUnknownLeadTime"
                ]
              }
            }
          },
          {
            "type": "object",
            "description": "There is not sufficient stock, even with on order quantities, but there is a given\nfactory lead time by which the required quantity can be obtained.",
            "required": [
              "days",
              "type"
            ],
            "properties": {
              "days": {
                "type": "integer",
                "format": "int64",
                "description": "There is not sufficient stock, even with on order quantities, but there is a given\nfactory lead time by which the required quantity can be obtained.",
                "minimum": 0
              },
              "type": {
                "type": "string",
                "enum": [
                  "LeadTimeDays"
                ]
              }
            }
          }
        ],
        "description": "Availability of a solution or purchase option, indicating if it is in stock\nor the method and number of days until the required quantity is obtained."
      },
      "types.sourcing.availability.v1.AvailabilityWithShippingTime": {
        "allOf": [
          {
            "$ref": "#/components/schemas/types.sourcing.availability.v1.Availability"
          },
          {
            "type": "object",
            "properties": {
              "shipping_time_in_days": {
                "type": [
                  "integer",
                  "null"
                ],
                "format": "int64",
                "minimum": 0
              }
            }
          }
        ]
      },
      "types.sourcing.calculation.v1.SourcingScenarioCalculationInput": {
        "allOf": [
          {
            "$ref": "#/components/schemas/types.sourcing.calculation.v1.SourcingScenarioCalculationInputKind"
          },
          {
            "type": "object"
          }
        ]
      },
      "types.sourcing.calculation.v1.SourcingScenarioCalculationInputKind": {
        "oneOf": [
          {
            "type": "object",
            "title": "Rfq",
            "required": [
              "rfq_id",
              "type"
            ],
            "properties": {
              "rfq_id": {
                "type": "string",
                "format": "uuid"
              },
              "type": {
                "type": "string",
                "enum": [
                  "Rfq"
                ]
              }
            }
          },
          {
            "type": "object",
            "title": "SourcingScenarios",
            "required": [
              "sourcing_scenario_ids",
              "type"
            ],
            "properties": {
              "sourcing_scenario_ids": {
                "type": "array",
                "items": {
                  "type": "string",
                  "format": "uuid"
                }
              },
              "type": {
                "type": "string",
                "enum": [
                  "SourcingScenarios"
                ]
              }
            }
          }
        ]
      },
      "types.sourcing.offer.custom.v1.CostInput": {
        "type": "object",
        "required": [
          "amount"
        ],
        "properties": {
          "amount": {
            "type": "string"
          },
          "description": {
            "type": [
              "string",
              "null"
            ]
          }
        }
      },
      "types.sourcing.offer.custom.v1.CustomLinkedPart": {
        "oneOf": [
          {
            "type": "object",
            "required": [
              "id",
              "type"
            ],
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid"
              },
              "type": {
                "type": "string",
                "enum": [
                  "CustomPart"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "id",
              "type"
            ],
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid"
              },
              "type": {
                "type": "string",
                "enum": [
                  "CustomComponent"
                ]
              }
            }
          }
        ]
      },
      "types.sourcing.offer.custom.v1.CustomPartOffer": {
        "type": "object",
        "required": [
          "id",
          "origin",
          "supplier_and_stock_location",
          "unit_of_measurement",
          "price_points",
          "valid_until",
          "one_time_costs",
          "creation_date",
          "has_order_files",
          "price_breaks"
        ],
        "properties": {
          "creation_date": {
            "type": "string",
            "format": "date-time"
          },
          "has_order_files": {
            "type": "boolean"
          },
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "notes": {
            "type": [
              "string",
              "null"
            ]
          },
          "offer_number": {
            "type": [
              "string",
              "null"
            ]
          },
          "offer_url": {
            "type": [
              "string",
              "null"
            ]
          },
          "one_time_costs": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/types.sourcing.sourcing_scenario.v1.Cost"
            }
          },
          "origin": {
            "$ref": "#/components/schemas/types.sourcing.offer.v1.OfferOrigin"
          },
          "price_breaks": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/types.sourcing.offer.custom.v1.CustomPartPriceBreak"
            }
          },
          "price_points": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/types.sourcing.offer.custom.v1.PricePoint"
            }
          },
          "price_type": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/types.sourcing.offer.custom.v1.CustomPriceType"
              }
            ]
          },
          "sourcing_batch_size": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int32"
          },
          "sourcing_scenario_id": {
            "type": [
              "string",
              "null"
            ],
            "format": "uuid"
          },
          "specification": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/types.sourcing.offer.custom.v1.CustomPartOfferSpecificationResponse"
              }
            ]
          },
          "supplier_and_stock_location": {
            "type": "string",
            "format": "uuid"
          },
          "total_offered_quantity": {
            "type": [
              "number",
              "null"
            ],
            "format": "double"
          },
          "unit_of_measurement": {
            "$ref": "#/components/schemas/types.primitives.quantity_unit.v1.UnitOfMeasurement"
          },
          "valid_until": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "types.sourcing.offer.custom.v1.CustomPartOfferInput": {
        "type": "object",
        "required": [
          "linked_part",
          "supplier_and_stock_location",
          "unit_of_measurement",
          "currency",
          "price_points",
          "valid_until",
          "valid_from",
          "one_time_costs"
        ],
        "properties": {
          "cancellation_window_in_days": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int32"
          },
          "currency": {
            "$ref": "#/components/schemas/types.primitives.monetary_value.v1.Currency"
          },
          "linked_part": {
            "$ref": "#/components/schemas/types.sourcing.offer.custom.v1.CustomLinkedPart"
          },
          "notes": {
            "type": [
              "string",
              "null"
            ]
          },
          "offer_number": {
            "type": [
              "string",
              "null"
            ]
          },
          "offer_url": {
            "type": [
              "string",
              "null"
            ]
          },
          "one_time_costs": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/types.sourcing.offer.custom.v1.CostInput"
            }
          },
          "payment_terms": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/types.sourcing.offer.v1.OfferPaymentTermsInput"
              }
            ]
          },
          "price_points": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/types.sourcing.offer.custom.v1.PricePointInput"
            }
          },
          "price_type": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/types.sourcing.offer.custom.v1.CustomPriceType"
              }
            ]
          },
          "sourcing_batch_size": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int32"
          },
          "sourcing_scenario_id": {
            "type": [
              "string",
              "null"
            ],
            "format": "uuid",
            "description": "The sourcing scenario this offer is part of. Please supply this information!"
          },
          "specification": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/types.sourcing.offer.custom.v1.CustomPartOfferSpecification"
              }
            ]
          },
          "supplier_and_stock_location": {
            "type": "string",
            "format": "uuid"
          },
          "total_offered_quantity": {
            "type": [
              "number",
              "null"
            ],
            "format": "double"
          },
          "unit_of_measurement": {
            "$ref": "#/components/schemas/types.primitives.quantity_unit.v1.QuantityUnit"
          },
          "valid_from": {
            "type": "string",
            "format": "date-time"
          },
          "valid_until": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "types.sourcing.offer.custom.v1.CustomPartOfferSpecification": {
        "oneOf": [
          {
            "type": "object",
            "required": [
              "data",
              "type"
            ],
            "properties": {
              "data": {
                "type": "object",
                "required": [
                  "panel"
                ],
                "properties": {
                  "panel": {
                    "$ref": "#/components/schemas/types.custom_part.panel.v1.PanelDetails"
                  }
                }
              },
              "type": {
                "type": "string",
                "enum": [
                  "Pcb"
                ]
              }
            }
          }
        ]
      },
      "types.sourcing.offer.custom.v1.CustomPartOfferSpecificationResponse": {
        "oneOf": [
          {
            "type": "object",
            "required": [
              "data",
              "type"
            ],
            "properties": {
              "data": {
                "type": "object",
                "required": [
                  "panel"
                ],
                "properties": {
                  "panel": {
                    "$ref": "#/components/schemas/types.custom_part.panel.v1.PanelDetails"
                  },
                  "pcb": {
                    "type": [
                      "string",
                      "null"
                    ],
                    "format": "uuid"
                  }
                }
              },
              "type": {
                "type": "string",
                "enum": [
                  "Pcb"
                ]
              }
            }
          }
        ]
      },
      "types.sourcing.offer.custom.v1.CustomPartPriceBreak": {
        "type": "object",
        "required": [
          "minimum_order_quantity",
          "price_per_measurement",
          "availability"
        ],
        "properties": {
          "availability": {
            "$ref": "#/components/schemas/types.sourcing.offer.custom.v1.PricePointAvailability"
          },
          "description": {
            "type": [
              "string",
              "null"
            ]
          },
          "minimum_order_quantity": {
            "type": "number",
            "format": "double"
          },
          "price_per_measurement": {
            "$ref": "#/components/schemas/types.primitives.monetary_value.v1.MonetaryValue"
          }
        }
      },
      "types.sourcing.offer.custom.v1.CustomPriceType": {
        "type": "string",
        "enum": [
          "ListPrice",
          "QuotePrice",
          "ContractPrice",
          "CustomerNegotiatedPrice"
        ]
      },
      "types.sourcing.offer.custom.v1.PricePoint": {
        "type": "object",
        "required": [
          "quantity",
          "unit_price",
          "availability"
        ],
        "properties": {
          "availability": {
            "$ref": "#/components/schemas/types.sourcing.offer.custom.v1.PricePointAvailability"
          },
          "quantity": {
            "type": "number",
            "format": "double"
          },
          "unit_price": {
            "$ref": "#/components/schemas/types.primitives.monetary_value.v1.MonetaryValue"
          }
        }
      },
      "types.sourcing.offer.custom.v1.PricePointAvailability": {
        "oneOf": [
          {
            "type": "object",
            "required": [
              "type"
            ],
            "properties": {
              "type": {
                "type": "string",
                "enum": [
                  "Stock"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "days",
              "type"
            ],
            "properties": {
              "days": {
                "type": "integer",
                "format": "int64",
                "minimum": 0
              },
              "type": {
                "type": "string",
                "enum": [
                  "LeadTimeDays"
                ]
              }
            }
          }
        ]
      },
      "types.sourcing.offer.custom.v1.PricePointInput": {
        "type": "object",
        "required": [
          "quantity",
          "amount"
        ],
        "properties": {
          "amount": {
            "type": "string"
          },
          "lead_time_days": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int64",
            "minimum": 0
          },
          "quantity": {
            "type": "number",
            "format": "double"
          }
        }
      },
      "types.sourcing.offer.v1.OfferOrigin": {
        "oneOf": [
          {
            "type": "object",
            "required": [
              "origin"
            ],
            "properties": {
              "origin": {
                "type": "string",
                "enum": [
                  "Manual"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "origin"
            ],
            "properties": {
              "context": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "origin": {
                "type": "string",
                "enum": [
                  "Import"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "origin"
            ],
            "properties": {
              "negotiation_id": {
                "type": [
                  "integer",
                  "null"
                ],
                "format": "int32"
              },
              "origin": {
                "type": "string",
                "enum": [
                  "QuoteRequest"
                ]
              },
              "quote_request_id": {
                "type": [
                  "string",
                  "null"
                ],
                "format": "uuid"
              },
              "quote_request_line_item_id": {
                "type": [
                  "integer",
                  "null"
                ],
                "format": "int32"
              },
              "quote_tracking_id": {
                "type": [
                  "string",
                  "null"
                ],
                "format": "uuid"
              }
            }
          },
          {
            "type": "object",
            "required": [
              "origin"
            ],
            "properties": {
              "origin": {
                "type": "string",
                "enum": [
                  "Consigned"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "id",
              "origin"
            ],
            "properties": {
              "id": {
                "type": "string"
              },
              "origin": {
                "type": "string",
                "enum": [
                  "Octopart"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "id",
              "origin"
            ],
            "properties": {
              "id": {
                "type": "string"
              },
              "origin": {
                "type": "string",
                "enum": [
                  "Nexar"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "id",
              "public",
              "origin"
            ],
            "properties": {
              "id": {
                "type": "string"
              },
              "origin": {
                "type": "string",
                "enum": [
                  "TrustedParts"
                ]
              },
              "public": {
                "type": "boolean"
              }
            }
          },
          {
            "type": "object",
            "required": [
              "id",
              "origin"
            ],
            "properties": {
              "id": {
                "type": "string"
              },
              "origin": {
                "type": "string",
                "enum": [
                  "Sourcengine"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "id",
              "origin"
            ],
            "properties": {
              "id": {
                "type": "string"
              },
              "origin": {
                "type": "string",
                "enum": [
                  "Farnell"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "id",
              "origin"
            ],
            "properties": {
              "id": {
                "type": "string"
              },
              "origin": {
                "type": "string",
                "enum": [
                  "Newark"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "id",
              "origin"
            ],
            "properties": {
              "id": {
                "type": "string"
              },
              "origin": {
                "type": "string",
                "enum": [
                  "Element14"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "id",
              "origin"
            ],
            "properties": {
              "id": {
                "type": "string"
              },
              "origin": {
                "type": "string",
                "enum": [
                  "Buerklin"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "id",
              "origin"
            ],
            "properties": {
              "id": {
                "type": "string"
              },
              "origin": {
                "type": "string",
                "enum": [
                  "Mouser"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "id",
              "origin"
            ],
            "properties": {
              "id": {
                "type": "string"
              },
              "origin": {
                "type": "string",
                "enum": [
                  "Future"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "id",
              "origin"
            ],
            "properties": {
              "id": {
                "type": "string"
              },
              "origin": {
                "type": "string",
                "enum": [
                  "Schukat"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "id",
              "origin"
            ],
            "properties": {
              "id": {
                "type": "string"
              },
              "origin": {
                "type": "string",
                "enum": [
                  "Digikey"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "id",
              "origin"
            ],
            "properties": {
              "id": {
                "type": "string"
              },
              "origin": {
                "type": "string",
                "enum": [
                  "MyArrow"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "id",
              "origin"
            ],
            "properties": {
              "id": {
                "type": "string"
              },
              "origin": {
                "type": "string",
                "enum": [
                  "Gudeco"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "id",
              "origin"
            ],
            "properties": {
              "id": {
                "type": "string"
              },
              "origin": {
                "type": "string",
                "enum": [
                  "Rutronik"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "id",
              "origin"
            ],
            "properties": {
              "id": {
                "type": "string"
              },
              "origin": {
                "type": "string",
                "enum": [
                  "Tme"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "id",
              "origin"
            ],
            "properties": {
              "id": {
                "type": "string"
              },
              "origin": {
                "type": "string",
                "enum": [
                  "Weltron"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "id",
              "origin"
            ],
            "properties": {
              "id": {
                "type": "string"
              },
              "origin": {
                "type": "string",
                "enum": [
                  "AvnetAbacus"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "id",
              "origin"
            ],
            "properties": {
              "id": {
                "type": "string"
              },
              "origin": {
                "type": "string",
                "enum": [
                  "AvnetApac"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "id",
              "origin"
            ],
            "properties": {
              "id": {
                "type": "string"
              },
              "origin": {
                "type": "string",
                "enum": [
                  "AvnetSilica"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "id",
              "origin"
            ],
            "properties": {
              "id": {
                "type": "string"
              },
              "origin": {
                "type": "string",
                "enum": [
                  "AvnetEbv"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "id",
              "origin"
            ],
            "properties": {
              "id": {
                "type": "string"
              },
              "origin": {
                "type": "string",
                "enum": [
                  "AvnetUsa"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "id",
              "origin"
            ],
            "properties": {
              "id": {
                "type": "string"
              },
              "origin": {
                "type": "string",
                "enum": [
                  "Arrow"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "id",
              "origin"
            ],
            "properties": {
              "id": {
                "type": "string"
              },
              "origin": {
                "type": "string",
                "enum": [
                  "WuerthEisos"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "id",
              "datasource_name",
              "origin"
            ],
            "properties": {
              "datasource_name": {
                "type": "string"
              },
              "id": {
                "type": "string"
              },
              "origin": {
                "type": "string",
                "enum": [
                  "Orbweaver"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "origin"
            ],
            "properties": {
              "origin": {
                "type": "string",
                "enum": [
                  "Wuerth"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "origin"
            ],
            "properties": {
              "origin": {
                "type": "string",
                "enum": [
                  "BetaLayout"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "origin"
            ],
            "properties": {
              "origin": {
                "type": "string",
                "enum": [
                  "SafePcb"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "origin"
            ],
            "properties": {
              "origin": {
                "type": "string",
                "enum": [
                  "IBRRingler"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "origin"
            ],
            "properties": {
              "origin": {
                "type": "string",
                "enum": [
                  "APCT"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "origin"
            ],
            "properties": {
              "origin": {
                "type": "string",
                "enum": [
                  "Gatema"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "origin"
            ],
            "properties": {
              "origin": {
                "type": "string",
                "enum": [
                  "Alba"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "origin"
            ],
            "properties": {
              "origin": {
                "type": "string",
                "enum": [
                  "MultiCB"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "team",
              "origin"
            ],
            "properties": {
              "origin": {
                "type": "string",
                "enum": [
                  "Stackrate"
                ]
              },
              "team": {
                "type": "string"
              }
            }
          },
          {
            "type": "object",
            "required": [
              "id",
              "origin"
            ],
            "properties": {
              "id": {
                "type": "string"
              },
              "origin": {
                "type": "string",
                "enum": [
                  "Lcsc"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "id",
              "origin"
            ],
            "properties": {
              "id": {
                "type": "string"
              },
              "origin": {
                "type": "string",
                "enum": [
                  "Tti"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "id",
              "origin"
            ],
            "properties": {
              "id": {
                "type": "string"
              },
              "origin": {
                "type": "string",
                "enum": [
                  "Eve"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "id",
              "origin"
            ],
            "properties": {
              "id": {
                "type": "string"
              },
              "origin": {
                "type": "string",
                "enum": [
                  "Samtec"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "id",
              "origin"
            ],
            "properties": {
              "id": {
                "type": "string"
              },
              "origin": {
                "type": "string",
                "enum": [
                  "Ti"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "id",
              "origin"
            ],
            "properties": {
              "id": {
                "type": "string"
              },
              "origin": {
                "type": "string",
                "enum": [
                  "Blume"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "id",
              "origin"
            ],
            "properties": {
              "id": {
                "type": "string"
              },
              "origin": {
                "type": "string",
                "enum": [
                  "Heilind"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "id",
              "origin"
            ],
            "properties": {
              "id": {
                "type": "string"
              },
              "origin": {
                "type": "string",
                "enum": [
                  "Master"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "id",
              "origin"
            ],
            "properties": {
              "id": {
                "type": "string"
              },
              "origin": {
                "type": "string",
                "enum": [
                  "Onlinecomponents"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "id",
              "origin"
            ],
            "properties": {
              "id": {
                "type": "string"
              },
              "origin": {
                "type": "string",
                "enum": [
                  "AlElektronik"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "id",
              "origin"
            ],
            "properties": {
              "id": {
                "type": "string"
              },
              "origin": {
                "type": "string",
                "enum": [
                  "Unikey"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "id",
              "origin"
            ],
            "properties": {
              "id": {
                "type": "string"
              },
              "origin": {
                "type": "string",
                "enum": [
                  "Corestaff"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "id",
              "origin"
            ],
            "properties": {
              "id": {
                "type": "string"
              },
              "origin": {
                "type": "string",
                "enum": [
                  "RsComponents"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "id",
              "origin"
            ],
            "properties": {
              "id": {
                "type": "string"
              },
              "origin": {
                "type": "string",
                "enum": [
                  "Sos"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "id",
              "origin"
            ],
            "properties": {
              "id": {
                "type": "string"
              },
              "origin": {
                "type": "string",
                "enum": [
                  "Venkel"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "id",
              "origin"
            ],
            "properties": {
              "id": {
                "type": "string"
              },
              "origin": {
                "type": "string",
                "enum": [
                  "Rochester"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "id",
              "origin"
            ],
            "properties": {
              "id": {
                "type": "string"
              },
              "origin": {
                "type": "string",
                "enum": [
                  "QuestComponents"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "id",
              "origin"
            ],
            "properties": {
              "id": {
                "type": "string"
              },
              "origin": {
                "type": "string",
                "enum": [
                  "ChipCart"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "id",
              "origin"
            ],
            "properties": {
              "id": {
                "type": "string"
              },
              "origin": {
                "type": "string",
                "enum": [
                  "WinSource"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "id",
              "origin"
            ],
            "properties": {
              "id": {
                "type": "string"
              },
              "origin": {
                "type": "string",
                "enum": [
                  "IcHub"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "id",
              "origin"
            ],
            "properties": {
              "id": {
                "type": "string"
              },
              "origin": {
                "type": "string",
                "enum": [
                  "Ecomal"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "id",
              "origin"
            ],
            "properties": {
              "id": {
                "type": "string"
              },
              "origin": {
                "type": "string",
                "enum": [
                  "RmComponents"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "id",
              "origin"
            ],
            "properties": {
              "id": {
                "type": "string"
              },
              "origin": {
                "type": "string",
                "enum": [
                  "Wittig"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "id",
              "origin"
            ],
            "properties": {
              "id": {
                "type": "string"
              },
              "origin": {
                "type": "string",
                "enum": [
                  "Telcona"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "id",
              "origin"
            ],
            "properties": {
              "id": {
                "type": "string"
              },
              "origin": {
                "type": "string",
                "enum": [
                  "RapidElectronics"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "id",
              "origin"
            ],
            "properties": {
              "id": {
                "type": "string"
              },
              "origin": {
                "type": "string",
                "enum": [
                  "Hexachip"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "id",
              "origin"
            ],
            "properties": {
              "id": {
                "type": "string"
              },
              "origin": {
                "type": "string",
                "enum": [
                  "Alfatec"
                ]
              }
            }
          }
        ]
      },
      "types.sourcing.offer.v1.OfferPaymentTermsInput": {
        "oneOf": [
          {
            "type": "object",
            "required": [
              "net_payment_due_days",
              "type"
            ],
            "properties": {
              "net_payment_due_days": {
                "type": "integer",
                "format": "int32",
                "minimum": 0
              },
              "type": {
                "type": "string",
                "enum": [
                  "net_payment"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "net_payment_due_days",
              "early_payment_due_days",
              "early_payment_discount",
              "type"
            ],
            "properties": {
              "early_payment_discount": {
                "type": "string"
              },
              "early_payment_due_days": {
                "type": "integer",
                "format": "int32",
                "minimum": 0
              },
              "net_payment_due_days": {
                "type": "integer",
                "format": "int32",
                "minimum": 0
              },
              "type": {
                "type": "string",
                "enum": [
                  "net_with_early_payment"
                ]
              }
            }
          }
        ]
      },
      "types.sourcing.sourcing_scenario.v1.AssemblyWithQuantity": {
        "type": "object",
        "required": [
          "assembly",
          "quantity"
        ],
        "properties": {
          "assembly": {
            "type": "string",
            "format": "uuid"
          },
          "quantity": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "types.sourcing.sourcing_scenario.v1.Cost": {
        "type": "object",
        "required": [
          "price"
        ],
        "properties": {
          "description": {
            "type": [
              "string",
              "null"
            ]
          },
          "price": {
            "$ref": "#/components/schemas/types.primitives.monetary_value.v1.MonetaryValue"
          }
        }
      },
      "types.sourcing.sourcing_scenario.v1.ExcessPreferences": {
        "type": "object",
        "properties": {
          "max_ratio_percent": {
            "type": [
              "number",
              "null"
            ],
            "format": "float"
          },
          "minimum_savings": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/types.primitives.monetary_value.v1.MonetaryValue"
              }
            ]
          }
        }
      },
      "types.sourcing.sourcing_scenario.v1.InventoryPreference": {
        "type": "string",
        "enum": [
          "PreferInventory",
          "Neutral",
          "PreferMarketOffers"
        ]
      },
      "types.sourcing.sourcing_scenario.v1.LeadTimePreference": {
        "oneOf": [
          {
            "type": "object",
            "title": "BestPrice",
            "required": [
              "type"
            ],
            "properties": {
              "type": {
                "type": "string",
                "enum": [
                  "BestPrice"
                ]
              }
            }
          },
          {
            "type": "object",
            "title": "Fastest",
            "required": [
              "type"
            ],
            "properties": {
              "type": {
                "type": "string",
                "enum": [
                  "Fastest"
                ]
              }
            }
          },
          {
            "type": "object",
            "title": "BestPriceBy",
            "required": [
              "target",
              "type"
            ],
            "properties": {
              "target": {
                "type": "string",
                "format": "date"
              },
              "type": {
                "type": "string",
                "enum": [
                  "BestPriceBy"
                ]
              }
            }
          }
        ]
      },
      "types.sourcing.sourcing_scenario.v1.Limit": {
        "oneOf": [
          {
            "type": "object",
            "title": "Never",
            "required": [
              "type"
            ],
            "properties": {
              "type": {
                "type": "string",
                "enum": [
                  "Never"
                ]
              }
            }
          },
          {
            "type": "object",
            "title": "Days",
            "required": [
              "number",
              "type"
            ],
            "properties": {
              "number": {
                "type": "integer",
                "format": "int64",
                "minimum": 0
              },
              "type": {
                "type": "string",
                "enum": [
                  "Days"
                ]
              }
            }
          }
        ]
      },
      "types.sourcing.sourcing_scenario.v1.OfferAgeLimit": {
        "type": "object",
        "required": [
          "expiring_before_validity_date",
          "expired_after_validity_date",
          "old_after_update",
          "outdated_after_update"
        ],
        "properties": {
          "expired_after_validity_date": {
            "$ref": "#/components/schemas/types.sourcing.sourcing_scenario.v1.Limit"
          },
          "expiring_before_validity_date": {
            "$ref": "#/components/schemas/types.sourcing.sourcing_scenario.v1.Limit"
          },
          "old_after_update": {
            "$ref": "#/components/schemas/types.sourcing.sourcing_scenario.v1.Limit"
          },
          "outdated_after_update": {
            "$ref": "#/components/schemas/types.sourcing.sourcing_scenario.v1.Limit"
          }
        }
      },
      "types.sourcing.sourcing_scenario.v1.Packaging": {
        "type": "string",
        "enum": [
          "AmmoPack",
          "Bag",
          "Bulk",
          "Reel",
          "ReReel",
          "Tape",
          "Tray",
          "Tube",
          "Carton"
        ]
      },
      "types.sourcing.sourcing_scenario.v1.PriceType": {
        "type": "string",
        "enum": [
          "PurchasePrice",
          "ListPrice",
          "ContractPrice",
          "QuotePrice",
          "StandardPrice",
          "CustomerNegotiatedPrice",
          "TargetPrice"
        ]
      },
      "types.sourcing.sourcing_scenario.v1.SolutionPreference": {
        "type": "object",
        "required": [
          "lead_time_preference",
          "preferred_suppliers_and_stock_locations",
          "approved_suppliers_and_stock_locations",
          "excess_preference",
          "offer_age_limit",
          "low_stock_warning_factor",
          "packaging_preference",
          "prefer_direct_api_integrations",
          "excluded_price_types",
          "inventory_preference",
          "preferred_inventory_sites",
          "approved_inventory_sites",
          "use_unit_price",
          "exclude_mismatched_price_points",
          "prioritize_preferred_manufacturers"
        ],
        "properties": {
          "approved_inventory_sites": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            }
          },
          "approved_suppliers_and_stock_locations": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            }
          },
          "excess_preference": {
            "$ref": "#/components/schemas/types.sourcing.sourcing_scenario.v1.ExcessPreferences"
          },
          "exclude_mismatched_price_points": {
            "type": "boolean"
          },
          "excluded_price_types": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/types.sourcing.sourcing_scenario.v1.PriceType"
            }
          },
          "inventory_preference": {
            "$ref": "#/components/schemas/types.sourcing.sourcing_scenario.v1.InventoryPreference"
          },
          "lead_time_preference": {
            "$ref": "#/components/schemas/types.sourcing.sourcing_scenario.v1.LeadTimePreference"
          },
          "low_stock_warning_factor": {
            "type": "number",
            "format": "double"
          },
          "offer_age_limit": {
            "$ref": "#/components/schemas/types.sourcing.sourcing_scenario.v1.OfferAgeLimit"
          },
          "packaging_preference": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/types.sourcing.sourcing_scenario.v1.Packaging"
            }
          },
          "prefer_customer_negotiated_prices": {
            "type": "boolean"
          },
          "prefer_direct_api_integrations": {
            "type": "boolean"
          },
          "preferred_inventory_sites": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            }
          },
          "preferred_suppliers_and_stock_locations": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            }
          },
          "prioritize_preferred_manufacturers": {
            "type": "boolean"
          },
          "use_unit_price": {
            "type": "boolean",
            "description": "If true, the unit price is used for sorting instead of the total price"
          }
        }
      },
      "types.sourcing.sourcing_scenario.v1.SourcingScenarioInput": {
        "type": "object",
        "required": [
          "rfq",
          "name",
          "assembly_quantities"
        ],
        "properties": {
          "assembly_quantities": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/types.sourcing.sourcing_scenario.v1.AssemblyWithQuantity"
            }
          },
          "name": {
            "type": "string"
          },
          "rfq": {
            "type": "string",
            "format": "uuid"
          },
          "solution_preference": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/types.sourcing.sourcing_scenario.v1.SolutionPreference"
              }
            ]
          }
        }
      },
      "types.sourcing.sourcing_scenario.v1.SourcingScenarioResponse": {
        "type": "object",
        "required": [
          "id",
          "rfq",
          "name",
          "solution_preference",
          "assembly_quantities"
        ],
        "properties": {
          "assembly_quantities": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/types.sourcing.sourcing_scenario.v1.AssemblyWithQuantity"
            }
          },
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string"
          },
          "rfq": {
            "type": "string",
            "format": "uuid"
          },
          "solution_preference": {
            "$ref": "#/components/schemas/types.sourcing.sourcing_scenario.v1.SolutionPreference"
          }
        }
      },
      "types.sourcing.sourcing_scenario.v1.SourcingScenarioUpdateInput": {
        "type": "object",
        "properties": {
          "assembly_quantities": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/types.sourcing.sourcing_scenario.v1.AssemblyWithQuantity"
            }
          },
          "name": {
            "type": [
              "string",
              "null"
            ]
          },
          "solution_preference": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/types.sourcing.sourcing_scenario.v1.SolutionPreference"
              }
            ]
          }
        }
      },
      "types.sourcing.sourcing_scenario.v2.CurrencySettingsDto": {
        "type": "object",
        "description": "Currency and exchange rate settings for a sourcing scenario.\n\nAll costs in a sourcing scenario are converted to the `base_currency` using the\nprovided exchange rates. Each rate represents how many units of the foreign currency\nequal one unit of the base currency.",
        "required": [
          "base_currency",
          "exchange_rates"
        ],
        "properties": {
          "base_currency": {
            "$ref": "#/components/schemas/types.primitives.monetary_value.v1.Currency",
            "description": "The base currency used for all cost calculations in this sourcing scenario.\nAll monetary values are converted to this currency."
          },
          "exchange_rates": {
            "type": "object",
            "description": "Exchange rates for converting foreign currencies to the base currency.\n\nEach key is a currency code (e.g., `\"USD\"`, `\"CNY\"`), and the value contains\nthe conversion rate and whether it was manually set.\nRates are expressed as: 1 unit of base currency = `rate` units of foreign currency.",
            "additionalProperties": {
              "$ref": "#/components/schemas/types.sourcing.sourcing_scenario.v2.ExchangeRateDto"
            },
            "propertyNames": {
              "type": "string"
            }
          }
        }
      },
      "types.sourcing.sourcing_scenario.v2.DemandDto": {
        "oneOf": [
          {
            "type": "object",
            "description": "Demand for an assembly (e.g., a PCB or sub-assembly).",
            "required": [
              "id",
              "name",
              "quantity",
              "type"
            ],
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid",
                "description": "Unique identifier of the assembly."
              },
              "name": {
                "type": "string",
                "description": "Human-readable name of the assembly (the assembly designator)."
              },
              "quantity": {
                "$ref": "#/components/schemas/types.primitives.quantity_unit.v1.QuantityUnit",
                "description": "The required quantity for this assembly demand, including the unit of measurement."
              },
              "type": {
                "type": "string",
                "enum": [
                  "Assembly"
                ]
              }
            }
          }
        ],
        "description": "A demand associated with a sourcing scenario.\n\nEach demand has a `type` field discriminator indicating its kind. Currently only\n`\"Assembly\"` demands are supported. Part and Component demand types will be added\nin a future update without breaking this API version."
      },
      "types.sourcing.sourcing_scenario.v2.ExchangeRateDto": {
        "type": "object",
        "description": "An exchange rate for a single foreign currency relative to the base currency.",
        "required": [
          "rate",
          "is_manual"
        ],
        "properties": {
          "is_manual": {
            "type": "boolean",
            "description": "Whether this exchange rate was manually set by a user (`true`) or automatically\nfetched from a public exchange rate API (`false`).\nManual rates take precedence over automatic rates for all cost conversions."
          },
          "rate": {
            "type": "number",
            "format": "double",
            "description": "The conversion rate. When `is_manual` is `true`, this is the manually overridden rate.\nOtherwise, it is the automatically fetched rate from a public exchange rate provider."
          }
        }
      },
      "types.sourcing.sourcing_scenario.v2.ProjectDto": {
        "oneOf": [
          {
            "type": "object",
            "title": "Rfq",
            "description": "The sourcing scenario belongs to an RFQ.",
            "required": [
              "id",
              "type"
            ],
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid",
                "description": "The sourcing scenario belongs to an RFQ."
              },
              "type": {
                "type": "string",
                "enum": [
                  "Rfq"
                ]
              }
            }
          },
          {
            "type": "object",
            "title": "Negotiation",
            "description": "The sourcing scenario belongs to a Negotiation.",
            "required": [
              "id",
              "type"
            ],
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid",
                "description": "The sourcing scenario belongs to a Negotiation."
              },
              "type": {
                "type": "string",
                "enum": [
                  "Negotiation"
                ]
              }
            }
          }
        ],
        "description": "The project a sourcing scenario is associated with.\n\nA project is either an RFQ (Request for Quotation) or a Negotiation.\nThe `type` field indicates which kind."
      },
      "types.sourcing.sourcing_scenario.v2.SourcingScenarioResponse": {
        "type": "object",
        "description": "A sourcing scenario with its associated project, demands, and settings.\n\nA sourcing scenario defines what needs to be sourced (demands), which project it belongs to,\nand the currency/exchange rate settings used for cost calculations.",
        "required": [
          "id",
          "name",
          "project",
          "demands",
          "settings"
        ],
        "properties": {
          "demands": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/types.sourcing.sourcing_scenario.v2.DemandDto"
            },
            "description": "The demands associated with this sourcing scenario.\n\nEach demand has a `type` field indicating its kind. Currently only `\"Assembly\"` demands\nare returned. Additional demand types (Part, Component) will be added in future versions.\nConsumers should gracefully handle or ignore unknown demand types."
          },
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "Unique identifier of the sourcing scenario."
          },
          "name": {
            "type": "string",
            "description": "Human-readable name of the sourcing scenario."
          },
          "project": {
            "$ref": "#/components/schemas/types.sourcing.sourcing_scenario.v2.ProjectDto",
            "description": "The project this sourcing scenario belongs to."
          },
          "settings": {
            "$ref": "#/components/schemas/types.sourcing.sourcing_scenario.v2.SourcingScenarioSettingsDto",
            "description": "Settings for this sourcing scenario, including currency and exchange rate configuration."
          }
        }
      },
      "types.sourcing.sourcing_scenario.v2.SourcingScenarioSettingsDto": {
        "type": "object",
        "description": "Sourcing scenario settings.\n\nContains configuration that controls how sourcing is performed.\nThis object is extensible — additional setting groups may be added alongside\n`currency` in the future.",
        "required": [
          "currency"
        ],
        "properties": {
          "currency": {
            "$ref": "#/components/schemas/types.sourcing.sourcing_scenario.v2.CurrencySettingsDto",
            "description": "Currency and exchange rate settings used for cost calculations."
          }
        }
      },
      "types.supplier.v1.BulkSupplierRequest": {
        "type": "object",
        "required": [
          "ids"
        ],
        "properties": {
          "ids": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            }
          }
        }
      },
      "types.supplier.v1.BulkSuppliersResponse": {
        "type": "object",
        "required": [
          "items"
        ],
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/types.supplier.v1.SupplierResponse"
            }
          }
        }
      },
      "types.supplier.v1.ImportSuppliersRequest": {
        "type": "object",
        "required": [
          "items"
        ],
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/types.supplier.v1.SupplierImportInput"
            }
          }
        }
      },
      "types.supplier.v1.ImportSuppliersResponse": {
        "type": "object",
        "required": [
          "items"
        ],
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/types.supplier.v1.SupplierImportResultResponse"
            }
          }
        }
      },
      "types.supplier.v1.SingleSupplierResponse": {
        "type": "object",
        "required": [
          "data"
        ],
        "properties": {
          "data": {
            "$ref": "#/components/schemas/types.supplier.v1.SupplierResponse"
          }
        }
      },
      "types.supplier.v1.SupplierImportInput": {
        "type": "object",
        "required": [
          "supplier_number",
          "name",
          "supplier_part_type",
          "supplier_type"
        ],
        "properties": {
          "name": {
            "type": "string"
          },
          "origin": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/types.supplier.v1.SupplierOriginInput"
              }
            ]
          },
          "supplier_number": {
            "type": "string"
          },
          "supplier_part_type": {
            "$ref": "#/components/schemas/types.supplier.v1.SupplierPartTypeInput"
          },
          "supplier_preference": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/types.supplier.v1.SupplierPreferenceInput",
                "description": "When specified, applies this preference to all supplier stock-locations\non the default sourcing template for the imported supplier"
              }
            ]
          },
          "supplier_type": {
            "$ref": "#/components/schemas/types.supplier.v1.SupplierTypeInput"
          }
        }
      },
      "types.supplier.v1.SupplierImportResultResponse": {
        "type": "object",
        "required": [
          "index",
          "success",
          "status",
          "description"
        ],
        "properties": {
          "description": {
            "type": "string"
          },
          "index": {
            "type": "integer",
            "minimum": 0
          },
          "status": {
            "type": "integer",
            "format": "int32",
            "minimum": 0
          },
          "success": {
            "type": "boolean"
          },
          "supplier_id": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/SupplierId"
              }
            ]
          }
        }
      },
      "types.supplier.v1.SupplierOrigin": {
        "type": "string",
        "enum": [
          "System",
          "Erp",
          "Manual"
        ]
      },
      "types.supplier.v1.SupplierOriginInput": {
        "type": "string",
        "enum": [
          "Erp",
          "Manual"
        ]
      },
      "types.supplier.v1.SupplierPartType": {
        "type": "string",
        "enum": [
          "OffTheShelf",
          "Pcb",
          "Custom",
          "Assembly"
        ]
      },
      "types.supplier.v1.SupplierPartTypeInput": {
        "type": "string",
        "enum": [
          "OffTheShelf",
          "Pcb",
          "Custom"
        ]
      },
      "types.supplier.v1.SupplierPreferenceInput": {
        "type": "string",
        "enum": [
          "NotApproved",
          "Approved",
          "Preferred",
          "Excluded"
        ]
      },
      "types.supplier.v1.SupplierResponse": {
        "type": "object",
        "required": [
          "id",
          "name",
          "alternative_names",
          "manually_added",
          "supplier_part_type",
          "supplier_type",
          "origin"
        ],
        "properties": {
          "alternative_names": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "manually_added": {
            "type": "boolean"
          },
          "name": {
            "type": "string"
          },
          "origin": {
            "$ref": "#/components/schemas/types.supplier.v1.SupplierOrigin"
          },
          "supplier_number": {
            "type": [
              "string",
              "null"
            ]
          },
          "supplier_part_type": {
            "$ref": "#/components/schemas/types.supplier.v1.SupplierPartType"
          },
          "supplier_type": {
            "$ref": "#/components/schemas/types.supplier.v1.SupplierType"
          }
        }
      },
      "types.supplier.v1.SupplierType": {
        "type": "string",
        "enum": [
          "Distributor",
          "Manufacturer",
          "Ems"
        ]
      },
      "types.supplier.v1.SupplierTypeInput": {
        "type": "string",
        "enum": [
          "Distributor",
          "Manufacturer",
          "Ems"
        ]
      },
      "types.supplier.v1.SupplierUpdateRequest": {
        "type": "object",
        "properties": {
          "name": {
            "type": [
              "string",
              "null"
            ]
          },
          "origin": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/types.supplier.v1.SupplierOriginInput"
              }
            ]
          },
          "supplier_number": {
            "type": [
              "string",
              "null"
            ]
          },
          "supplier_part_type": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/types.supplier.v1.SupplierPartTypeInput"
              }
            ]
          },
          "supplier_preference": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/types.supplier.v1.SupplierPreferenceInput",
                "description": "When specified, applies this preference to all supplier stock-locations\non the default sourcing template for the updated supplier"
              }
            ]
          },
          "supplier_type": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/types.supplier.v1.SupplierTypeInput"
              }
            ]
          }
        }
      },
      "types.user.v1.AllUsers": {
        "type": "object",
        "required": [
          "items"
        ],
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/types.user.v1.User"
            }
          }
        }
      },
      "types.user.v1.User": {
        "type": "object",
        "required": [
          "id",
          "first_name",
          "last_name",
          "email",
          "user_language"
        ],
        "properties": {
          "customer": {
            "type": [
              "string",
              "null"
            ],
            "format": "uuid"
          },
          "email": {
            "type": "string"
          },
          "first_name": {
            "type": "string"
          },
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "last_name": {
            "type": "string"
          },
          "phone_number": {
            "type": [
              "string",
              "null"
            ]
          },
          "position": {
            "type": [
              "string",
              "null"
            ]
          },
          "user_language": {
            "type": "string"
          }
        }
      },
      "types.user.v1.UserInviteInput": {
        "type": "object",
        "required": [
          "email",
          "first_name",
          "last_name"
        ],
        "properties": {
          "email": {
            "type": "string",
            "description": "The email address of the user to invite."
          },
          "first_name": {
            "type": "string",
            "description": "The first name of the user to invite."
          },
          "host": {
            "type": [
              "string",
              "null"
            ],
            "description": "Optional hostname for the invite link (e.g., \"portal.tenant.com\").\nMust be a valid hostname configured for your tenant. If not specified, a default\nhostname for your tenant will be used."
          },
          "language": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/types.customer.v1.Language",
                "description": "The language of the user. Defaults to English if not specified."
              }
            ]
          },
          "last_name": {
            "type": "string",
            "description": "The last name of the user to invite."
          },
          "user_role": {
            "$ref": "#/components/schemas/types.user.v1.UserRole",
            "description": "The role of the user. Defaults to Member if not specified."
          }
        }
      },
      "types.user.v1.UserRole": {
        "type": "string",
        "enum": [
          "member",
          "admin"
        ]
      },
      "types.user.v1.UserUpdateInput": {
        "type": "object",
        "properties": {
          "first_name": {
            "type": [
              "string",
              "null"
            ],
            "description": "The first name of the user."
          },
          "last_name": {
            "type": [
              "string",
              "null"
            ],
            "description": "The last name of the user."
          },
          "phone_number": {
            "type": [
              "string",
              "null"
            ],
            "description": "The phone number of the user."
          },
          "position": {
            "type": [
              "string",
              "null"
            ],
            "description": "The position of the user within the organization."
          }
        }
      },
      "types.vat.v1.CompleteVatId": {
        "type": "object",
        "required": [
          "id",
          "id_type"
        ],
        "properties": {
          "id": {
            "type": "string",
            "description": "actual VAT ID"
          },
          "id_type": {
            "$ref": "#/components/schemas/types.vat.v1.VatIdType",
            "description": "country / entity of issuance of that particular ID"
          }
        }
      },
      "types.vat.v1.VatIdType": {
        "type": "string",
        "description": "The type of the VAT ID.\n\nYou can read more on the [Stripe docs](https://stripe.com/docs/billing/customer/tax-ids).",
        "enum": [
          "ad_nrt",
          "ae_trn",
          "ar_cuit",
          "au_abn",
          "au_arn",
          "bg_uic",
          "bo_tin",
          "br_cnpj",
          "br_cpf",
          "ca_bn",
          "ca_gst_hst",
          "ca_pst_bc",
          "ca_pst_mb",
          "ca_pst_sk",
          "ca_qst",
          "cl_tin",
          "cn_tin",
          "co_nit",
          "cr_tin",
          "do_rcn",
          "ec_ruc",
          "eg_tin",
          "sv_nit",
          "es_cif",
          "eu_oss_vat",
          "eu_vat",
          "ge_vat",
          "hk_br",
          "hu_tin",
          "id_npwp",
          "il_vat",
          "in_gst",
          "is_vat",
          "jp_cn",
          "jp_rn",
          "jp_trn",
          "ke_pin",
          "li_uid",
          "mx_rfc",
          "my_frp",
          "my_itn",
          "my_sst",
          "no_vat",
          "nz_gst",
          "pe_ruc",
          "ph_tin",
          "ro_tin",
          "ru_kpp",
          "rs_pib",
          "kr_brn",
          "ch_vat",
          "ru_inn",
          "sa_vat",
          "sg_gst",
          "sg_uen",
          "si_tin",
          "za_vat",
          "tw_vat",
          "th_vat",
          "tr_tin",
          "ua_vat",
          "gb_vat",
          "us_ein",
          "uy_ruc",
          "ve_rif",
          "vn_tin"
        ]
      },
      "PCB": {
        "required": [
          "assembly",
          "files",
          "holes",
          "specifications",
          "version"
        ],
        "type": "object",
        "properties": {
          "assembly": {
            "type": "string",
            "format": "uuid"
          },
          "version": {
            "type": "string",
            "format": "uuid"
          },
          "outline": {
            "allOf": [
              {
                "$ref": "#/components/schemas/APIOutline"
              }
            ]
          },
          "holes": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "files": {
            "type": "array",
            "items": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/LayerFile"
                }
              ]
            }
          },
          "metaInfo": {
            "allOf": [
              {
                "$ref": "#/components/schemas/MetaInfo"
              }
            ]
          },
          "specifications": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            }
          },
          "defaultSpecification": {
            "type": "string",
            "format": "uuid"
          },
          "drillSets": {
            "type": "array",
            "items": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/DrillSet"
                }
              ]
            }
          },
          "netList": {
            "allOf": [
              {
                "$ref": "#/components/schemas/NetList"
              }
            ]
          }
        }
      },
      "HoleList": {
        "required": [
          "tools"
        ],
        "type": "object",
        "properties": {
          "from": {
            "type": "number"
          },
          "to": {
            "type": "number"
          },
          "tools": {
            "type": "array",
            "items": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/Tool"
                }
              ]
            }
          },
          "scaling": {
            "type": "number"
          },
          "fileUnit": {
            "type": "string"
          }
        }
      },
      "CollectedPCB": {
        "required": [
          "assembly",
          "pcb"
        ],
        "type": "object",
        "properties": {
          "assembly": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Assembly"
              }
            ]
          },
          "pcb": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PCB"
              }
            ]
          },
          "layerstack": {
            "allOf": [
              {
                "$ref": "#/components/schemas/LayerStackAPI"
              }
            ]
          },
          "panels": {
            "type": "array",
            "items": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/CustomerPanelAPI"
                }
              ]
            }
          }
        }
      },
      "PCBUpdate": {
        "type": "object",
        "properties": {
          "defaultSpecification": {
            "type": "string",
            "format": "uuid"
          }
        }
      },
      "SetOutline": {
        "required": [
          "candidate"
        ],
        "type": "object",
        "properties": {
          "candidate": {
            "type": "string",
            "format": "uuid"
          },
          "userChoice": {
            "type": "boolean"
          }
        }
      },
      "APIOutline": {
        "required": [
          "id",
          "metaInfo",
          "userChoice"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "file": {
            "type": "string",
            "format": "uuid"
          },
          "preview": {
            "type": "string"
          },
          "userChoice": {
            "type": "boolean"
          },
          "metaInfo": {
            "allOf": [
              {
                "$ref": "#/components/schemas/MetaInfo"
              }
            ]
          },
          "graphic": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Graphic"
              }
            ]
          },
          "score": {
            "type": "number"
          },
          "width": {
            "allOf": [
              {
                "$ref": "#/components/schemas/LengthWithUnit"
              }
            ]
          },
          "height": {
            "allOf": [
              {
                "$ref": "#/components/schemas/LengthWithUnit"
              }
            ]
          }
        }
      },
      "Object": {
        "type": "object"
      },
      "Graphic": {
        "required": [
          "count",
          "defs",
          "format",
          "paths",
          "viewbox"
        ],
        "type": "object",
        "properties": {
          "viewbox": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Dimension"
              }
            ]
          },
          "format": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Format"
              }
            ]
          },
          "count": {
            "type": "number"
          },
          "paths": {
            "type": "array",
            "items": {
              "type": "array",
              "items": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/GraphicElement"
                  }
                ]
              }
            }
          },
          "defs": {
            "type": "array",
            "items": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/GraphicDefinition"
                }
              ]
            }
          }
        }
      },
      "LayerFileUpdate": {
        "type": "object",
        "properties": {
          "inverted": {
            "type": "boolean"
          }
        }
      },
      "LayerFile": {
        "required": [
          "inverted",
          "metaInfo"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string"
          },
          "data": {
            "type": "string"
          },
          "format": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Format"
              }
            ]
          },
          "fileType": {
            "allOf": [
              {
                "$ref": "#/components/schemas/FileType"
              }
            ]
          },
          "metaInfo": {
            "allOf": [
              {
                "$ref": "#/components/schemas/MetaInfo"
              }
            ]
          },
          "inverted": {
            "type": "boolean"
          }
        }
      },
      "MetaInfo": {
        "required": [
          "bitmap$0",
          "logger",
          "properties"
        ],
        "type": "object",
        "properties": {
          "properties": {
            "type": "object",
            "additionalProperties": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/Property"
                }
              ]
            },
            "description": "The Map of properties"
          },
          "logger": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Logger"
              }
            ]
          },
          "bitmap$0": {
            "type": "boolean"
          }
        }
      },
      "PCBStreamMessage": {
        "required": [
          "m",
          "t"
        ],
        "type": "object",
        "properties": {
          "t": {
            "type": "string"
          },
          "m": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Message"
              }
            ]
          },
          "ref": {
            "allOf": [
              {
                "$ref": "#/components/schemas/AssemblyReference"
              }
            ]
          }
        }
      },
      "PCBSpecificationApi": {
        "required": [
          "previews",
          "spec"
        ],
        "type": "object",
        "properties": {
          "spec": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PCBSpecification"
              }
            ]
          },
          "previews": {
            "allOf": [
              {
                "$ref": "#/components/schemas/SpecificationPreviews"
              }
            ]
          }
        }
      },
      "PCBSpecificationCreation": {
        "required": [
          "alias"
        ],
        "type": "object",
        "properties": {
          "alias": {
            "type": "string"
          },
          "template": {
            "type": "string",
            "format": "uuid"
          }
        }
      },
      "PCBSpecificationUpdate": {
        "type": "object",
        "properties": {
          "dfm": {
            "type": "array",
            "items": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/Property"
                }
              ]
            }
          },
          "settings": {
            "type": "array",
            "items": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/Property"
                }
              ]
            }
          },
          "user": {
            "type": "array",
            "items": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/Property"
                }
              ]
            }
          }
        }
      },
      "byte[]": {
        "type": "object"
      },
      "PCBV2Creation": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Name of the PCB\n\nThe name of the PCB.\nThe PCBs GID is generated based on this name\n"
          },
          "customer": {
            "type": "string",
            "description": "The ID of the Customer for this PCB",
            "format": "uuid"
          },
          "contact": {
            "type": "string",
            "description": "The ID of the Contact for this PCB",
            "format": "uuid"
          },
          "orderId": {
            "type": "string",
            "description": "The External ID od the RFQ/Order"
          },
          "description": {
            "type": "string",
            "description": "The description for the PCB"
          },
          "externalReference": {
            "description": "The External ID of the RFQ/Order",
            "allOf": [
              {
                "$ref": "#/components/schemas/LqReference"
              }
            ]
          },
          "withoutFiles": {
            "type": "boolean",
            "description": "Set this to true if the PCB will not contain initial files"
          }
        }
      },
      "PCBV2": {
        "required": [
          "assembly",
          "created",
          "filesLocked",
          "id",
          "lifecycles",
          "projectType",
          "properties",
          "specifications"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The ID of the PCB",
            "format": "uuid"
          },
          "name": {
            "type": "string",
            "description": "The Name of the PCB"
          },
          "assembly": {
            "type": "string",
            "description": "\nThe Name of the PCB\nThis property exists to help identify the corresponding assembly if needed.\n",
            "format": "uuid"
          },
          "description": {
            "type": "string",
            "description": "The description for the PCB"
          },
          "created": {
            "type": "string",
            "description": "The creation date of the PCB",
            "format": "date"
          },
          "files": {
            "type": "array",
            "description": "The files the PCB",
            "items": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/PCBV2File"
                }
              ]
            }
          },
          "filesLocked": {
            "type": "boolean",
            "description": "The Lock-Status of the files"
          },
          "lifecycles": {
            "type": "array",
            "description": "The Lifecycles of the PCB",
            "items": {
              "description": "The Lifecycles of the PCB",
              "allOf": [
                {
                  "$ref": "#/components/schemas/AssemblyLifecycleStage"
                }
              ]
            }
          },
          "projectType": {
            "description": "Type of PCB Project",
            "allOf": [
              {
                "$ref": "#/components/schemas/ProjectType"
              }
            ]
          },
          "orderId": {
            "type": "string",
            "description": "The External ID od the RFQ/Order"
          },
          "outline": {
            "type": "string",
            "description": "The name of the file used for the outline"
          },
          "specifications": {
            "type": "array",
            "description": "The Specifications of the PCB",
            "items": {
              "description": "The Specifications of the PCB",
              "allOf": [
                {
                  "$ref": "#/components/schemas/PCBV2Specification"
                }
              ]
            }
          },
          "properties": {
            "description": "The Properties of the PCB determined by stackrate",
            "allOf": [
              {
                "$ref": "#/components/schemas/PCBV2Properties"
              }
            ]
          },
          "customer": {
            "type": "string",
            "description": "The ID of the Customer for this PCB",
            "format": "uuid"
          }
        }
      },
      "PCBV2SpecificationCapabilities": {
        "required": [
          "board",
          "layerStack",
          "markings",
          "mechanical",
          "miscellaneous",
          "reports"
        ],
        "type": "object",
        "properties": {
          "board": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PCBV2BoardCapabilities"
              }
            ]
          },
          "layerStack": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PCBV2LayerStackCapabilities"
              }
            ]
          },
          "mechanical": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PCBV2MechanicalCapabilities"
              }
            ]
          },
          "reports": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PCBV2ReportsCapabilities"
              }
            ]
          },
          "markings": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PCBV2MarkingsCapabilities"
              }
            ]
          },
          "miscellaneous": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PCBV2MiscellaneousCapabilities"
              }
            ]
          }
        }
      },
      "NotUsed": {
        "type": "object"
      },
      "DuplicatePcb": {
        "required": [
          "exactFiles",
          "fileMatchScore",
          "gid",
          "pcb",
          "propertyMatchScore",
          "propertyMatches",
          "totalScore"
        ],
        "type": "object",
        "properties": {
          "pcb": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PCBV2"
              }
            ]
          },
          "gid": {
            "type": "string"
          },
          "propertyMatches": {
            "type": "array",
            "items": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/PropertyMatch"
                }
              ]
            }
          },
          "propertyMatchScore": {
            "type": "number",
            "format": "double"
          },
          "exactFiles": {
            "type": "array",
            "items": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/PCBV2File"
                }
              ]
            }
          },
          "fileMatchScore": {
            "type": "number",
            "format": "double"
          },
          "totalScore": {
            "type": "number",
            "format": "double"
          }
        }
      },
      "PCBV2Clone": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Name of the PCB\n\nThe name of the PCB.\nThe PCBs GID is generated based on this name\n"
          },
          "externalReference": {
            "description": "The External ID od the RFQ/Order",
            "allOf": [
              {
                "$ref": "#/components/schemas/LqReference"
              }
            ]
          }
        }
      },
      "PCBV2Id": {
        "required": [
          "id"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          }
        }
      },
      "PCBV2Update": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "settings": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PCBV2PropertiesUpdate"
              }
            ]
          }
        }
      },
      "TokenResponse": {
        "required": [
          "authToken"
        ],
        "type": "object",
        "properties": {
          "authToken": {
            "type": "string"
          },
          "refreshToken": {
            "type": "string"
          }
        }
      },
      "PCBV2StreamMessage": {
        "required": [
          "m",
          "t"
        ],
        "type": "object",
        "properties": {
          "t": {
            "type": "string"
          },
          "m": {
            "allOf": [
              {
                "$ref": "#/components/schemas/MessageV2"
              }
            ]
          },
          "ref": {
            "allOf": [
              {
                "$ref": "#/components/schemas/AssemblyReference"
              }
            ]
          }
        }
      },
      "AssemblyLifecycleStage": {
        "required": [
          "name",
          "status"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "enum": [
              "main",
              "composition",
              "dfmanalysis",
              "customer-panel",
              "dfm",
              "reconciliation",
              "analysis",
              "files",
              "fileanalysis",
              "layerstack",
              "render",
              "specification-render",
              "reconciled_specification-render",
              "initialization",
              "production-analysis"
            ]
          },
          "status": {
            "allOf": [
              {
                "$ref": "#/components/schemas/LifecycleStageStatus"
              }
            ]
          },
          "history": {
            "type": "array",
            "items": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/HistoricLifecycleState"
                }
              ]
            }
          }
        }
      },
      "PCBV2Specification": {
        "required": [
          "hash",
          "id",
          "name",
          "previews",
          "settings"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "\nID of the Specification\n\nUnique for this PCB",
            "format": "uuid"
          },
          "name": {
            "type": "string",
            "description": "\nName of the Specification\n\nUnique for this PCB"
          },
          "previews": {
            "description": "The PCB Previews",
            "allOf": [
              {
                "$ref": "#/components/schemas/PCBPreviews"
              }
            ]
          },
          "settings": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PCBV2Properties"
              }
            ]
          },
          "hash": {
            "type": "string",
            "description": "A Hash of the Specification"
          },
          "status": {
            "description": "The status of the Specification",
            "allOf": [
              {
                "$ref": "#/components/schemas/SpecificationStatus"
              }
            ]
          },
          "changes": {
            "type": "array",
            "items": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/SpecificationChange"
                }
              ]
            }
          }
        }
      },
      "PCBPreviews": {
        "type": "object",
        "properties": {
          "front": {
            "allOf": [
              {
                "$ref": "#/components/schemas/FileAccess"
              }
            ]
          },
          "rear": {
            "allOf": [
              {
                "$ref": "#/components/schemas/FileAccess"
              }
            ]
          }
        }
      },
      "DrillSet": {
        "required": [
          "layers"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "filename": {
            "type": "string"
          },
          "layers": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "NetList": {
        "required": [
          "nets"
        ],
        "type": "object",
        "properties": {
          "nets": {
            "type": "array",
            "items": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/Net"
                }
              ]
            }
          }
        }
      },
      "Tool": {
        "required": [
          "diameter",
          "drillType",
          "drills",
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "drillType": {
            "type": "string"
          },
          "diameter": {
            "type": "number"
          },
          "drills": {
            "type": "array",
            "items": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/DrillHit"
                }
              ]
            }
          },
          "slots": {
            "allOf": [
              {
                "$ref": "#/components/schemas/SlotFeatures"
              }
            ]
          }
        }
      },
      "Assembly": {
        "required": [
          "created",
          "creator",
          "features",
          "gid",
          "id",
          "information",
          "name",
          "status",
          "team"
        ],
        "type": "object",
        "properties": {
          "team": {
            "type": "string"
          },
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "gid": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "creator": {
            "type": "string"
          },
          "created": {
            "type": "string",
            "format": "date"
          },
          "information": {
            "allOf": [
              {
                "$ref": "#/components/schemas/AssemblyInformation"
              }
            ]
          },
          "features": {
            "type": "array",
            "items": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/AssemblyFeature"
                }
              ]
            }
          },
          "status": {
            "allOf": [
              {
                "$ref": "#/components/schemas/AssemblyStatus"
              }
            ]
          },
          "currentVersion": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Version"
              }
            ]
          },
          "preview": {
            "type": "string"
          },
          "mail": {
            "type": "string"
          },
          "template": {
            "allOf": [
              {
                "$ref": "#/components/schemas/AssemblyReference"
              }
            ]
          },
          "externalReference": {
            "allOf": [
              {
                "$ref": "#/components/schemas/LqReference"
              }
            ]
          }
        }
      },
      "LayerStackAPI": {
        "required": [
          "assembly",
          "definition",
          "stacks",
          "unmatchedFiles"
        ],
        "type": "object",
        "properties": {
          "assembly": {
            "allOf": [
              {
                "$ref": "#/components/schemas/AbstractAssemblyReference"
              }
            ]
          },
          "definition": {
            "allOf": [
              {
                "$ref": "#/components/schemas/LayerstackDefinitionAPI"
              }
            ]
          },
          "stacks": {
            "type": "array",
            "items": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/SubStackAPI"
                }
              ]
            }
          },
          "unmatchedFiles": {
            "type": "array",
            "items": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/LayerFile"
                }
              ]
            }
          }
        }
      },
      "CustomerPanelAPI": {
        "required": [
          "elements",
          "isExistingPanel",
          "name",
          "spacing"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "externalId": {
            "type": "string"
          },
          "sourcingScenario": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string"
          },
          "elements": {
            "type": "array",
            "items": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/CustomerPanelElement"
                }
              ]
            }
          },
          "description": {
            "type": "string"
          },
          "preview": {
            "type": "string"
          },
          "spacing": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Spacing"
              }
            ]
          },
          "working": {
            "type": "array",
            "items": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/WorkingPanelUsageAPI"
                }
              ]
            }
          },
          "selected": {
            "type": "string",
            "format": "uuid"
          },
          "bestYield": {
            "type": "string",
            "format": "uuid"
          },
          "width": {
            "type": "number"
          },
          "height": {
            "type": "number"
          },
          "weight": {
            "type": "number"
          },
          "isExistingPanel": {
            "type": "boolean"
          }
        }
      },
      "LengthWithUnit": {
        "required": [
          "unit",
          "value"
        ],
        "type": "object",
        "properties": {
          "value": {
            "type": "number"
          },
          "unit": {
            "type": "string",
            "enum": [
              "Micrometer",
              "Inch",
              "Mil",
              "Millimeter",
              "Microinch"
            ]
          }
        }
      },
      "Dimension": {
        "required": [
          "max",
          "min"
        ],
        "type": "object",
        "properties": {
          "min": {
            "allOf": [
              {
                "$ref": "#/components/schemas/BigPoint"
              }
            ]
          },
          "max": {
            "allOf": [
              {
                "$ref": "#/components/schemas/BigPoint"
              }
            ]
          }
        }
      },
      "Format": {
        "required": [
          "resolution",
          "unit"
        ],
        "type": "object",
        "properties": {
          "unit": {
            "type": "string"
          },
          "resolution": {
            "type": "number"
          },
          "dimension": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Dimension"
              }
            ]
          },
          "complexity": {
            "type": "integer",
            "format": "int32"
          },
          "scaling": {
            "type": "number",
            "format": "double"
          },
          "gerberscale": {
            "type": "number",
            "format": "double"
          }
        }
      },
      "GraphicElement": {
        "type": "object",
        "properties": {
          "path": {
            "type": "string"
          },
          "tag": {
            "type": "string"
          },
          "use": {
            "allOf": [
              {
                "$ref": "#/components/schemas/GraphicUsage"
              }
            ]
          },
          "attributes": {
            "type": "object",
            "additionalProperties": {
              "type": "array",
              "items": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/A"
                  }
                ]
              }
            }
          },
          "elementIds": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "trace": {
            "type": "string"
          },
          "orientation": {
            "allOf": [
              {
                "$ref": "#/components/schemas/FlashOrientation"
              }
            ]
          }
        }
      },
      "GraphicDefinition": {
        "required": [
          "id",
          "path"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "path": {
            "type": "string"
          }
        }
      },
      "FileType": {
        "required": [
          "fileType",
          "productionFile",
          "service"
        ],
        "type": "object",
        "properties": {
          "service": {
            "type": "string"
          },
          "category": {
            "type": "string"
          },
          "fileType": {
            "type": "string"
          },
          "productionFile": {
            "type": "boolean"
          },
          "mimeType": {
            "type": "string"
          },
          "index": {
            "type": "integer",
            "format": "int32"
          },
          "from": {
            "type": "integer",
            "format": "int32"
          },
          "to": {
            "type": "integer",
            "format": "int32"
          },
          "matchedByLLM": {
            "type": "boolean"
          }
        }
      },
      "Property": {
        "type": "object"
      },
      "Logger": {
        "required": [
          "bitmap$0",
          "logger",
          "modeLoggerCache",
          "play$api$Logger$$isEnabled",
          "underlyingLogger"
        ],
        "type": "object",
        "properties": {
          "logger": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Logger"
              }
            ]
          },
          "play$api$Logger$$isEnabled": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Function0"
              }
            ]
          },
          "modeLoggerCache": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Map"
              }
            ]
          },
          "underlyingLogger": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Logger"
              }
            ]
          },
          "bitmap$0": {
            "type": "boolean"
          }
        }
      },
      "Message": {
        "type": "object"
      },
      "AssemblyReference": {
        "required": [
          "id",
          "team",
          "version"
        ],
        "type": "object",
        "properties": {
          "team": {
            "type": "string",
            "description": "\nThe team of the Assembly\n\nWill always be set when retrieving data.\nWhen Posting data, this is generally ignored in favor of the current logged-in team "
          },
          "id": {
            "type": "string",
            "description": "\n The Assembly UUID\n\n This ID is universally unique and will not change for any given assembly",
            "format": "uuid"
          },
          "gid": {
            "type": "string",
            "description": "\n The Assembly GID (human readable ID)\n\n This ID is unique inside its team, and will not change for any given assembly"
          },
          "version": {
            "type": "string",
            "description": "\n The Version ID\n\n  This ID is universally unique and will not change for any given version",
            "format": "uuid"
          }
        }
      },
      "PCBSpecification": {
        "required": [
          "alias",
          "assembly",
          "dfm",
          "id",
          "settings",
          "status",
          "technology"
        ],
        "type": "object",
        "properties": {
          "assembly": {
            "allOf": [
              {
                "$ref": "#/components/schemas/AssemblyReference"
              }
            ]
          },
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "alias": {
            "type": "string"
          },
          "dfm": {
            "allOf": [
              {
                "$ref": "#/components/schemas/MetaInfo"
              }
            ]
          },
          "settings": {
            "allOf": [
              {
                "$ref": "#/components/schemas/MetaInfo"
              }
            ]
          },
          "user": {
            "allOf": [
              {
                "$ref": "#/components/schemas/MetaInfo"
              }
            ]
          },
          "status": {
            "allOf": [
              {
                "$ref": "#/components/schemas/SpecificationStatus"
              }
            ]
          },
          "technology": {
            "type": "string"
          },
          "base": {
            "allOf": [
              {
                "$ref": "#/components/schemas/MetaInfo"
              }
            ]
          },
          "preview": {
            "allOf": [
              {
                "$ref": "#/components/schemas/FilePath"
              }
            ]
          },
          "previewRear": {
            "allOf": [
              {
                "$ref": "#/components/schemas/FilePath"
              }
            ]
          },
          "changes": {
            "type": "array",
            "items": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/SpecificationChange"
                }
              ]
            }
          }
        }
      },
      "SpecificationPreviews": {
        "type": "object",
        "properties": {
          "front": {
            "type": "string"
          },
          "rear": {
            "type": "string"
          }
        }
      },
      "LqReference": {
        "type": "object",
        "properties": {
          "rfqId": {
            "type": "string",
            "format": "uuid"
          },
          "assemblyId": {
            "type": "string",
            "format": "uuid"
          },
          "customPartSpecificationId": {
            "type": "string",
            "format": "uuid"
          }
        }
      },
      "PCBV2File": {
        "required": [
          "fileType",
          "id",
          "lifecycles",
          "name"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string"
          },
          "fileType": {
            "allOf": [
              {
                "$ref": "#/components/schemas/FileType"
              }
            ]
          },
          "preview": {
            "type": "string"
          },
          "path": {
            "type": "string"
          },
          "lifecycles": {
            "type": "array",
            "items": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/FileLifecycleStage"
                }
              ]
            }
          }
        }
      },
      "ProjectType": {
        "type": "object"
      },
      "PCBV2Properties": {
        "required": [
          "board",
          "layerStack",
          "markings",
          "mechanical",
          "miscellaneous",
          "reports"
        ],
        "type": "object",
        "properties": {
          "board": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PCBV2BoardProperties"
              }
            ]
          },
          "layerStack": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PCBV2LayerStackProperties"
              }
            ]
          },
          "mechanical": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PCBV2MechanicalProperties"
              }
            ]
          },
          "reports": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PCBV2ReportsProperties"
              }
            ]
          },
          "markings": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PCBV2MarkingsProperties"
              }
            ]
          },
          "miscellaneous": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PCBV2MiscellaneousProperties"
              }
            ]
          }
        }
      },
      "PCBV2BoardCapabilities": {
        "required": [
          "applicationType",
          "boardHeight",
          "boardWidth",
          "captonTape",
          "carbonPrint",
          "carbonPrintSide",
          "copperClearance",
          "ctiClass",
          "eTest",
          "ecobond",
          "edgeMetalization",
          "enigThickness",
          "exposedCopperArea",
          "exposedCopperAreaBottom",
          "exposedCopperAreaTop",
          "flammabilityRating",
          "halfCutPlatedVias",
          "halogenFree",
          "hardGold",
          "hardGoldArea",
          "hardGoldThickness",
          "impedanceTested",
          "impedanceTolerance",
          "innerCopperClearance",
          "innerTraceWidth",
          "ipc600Class",
          "itar",
          "maxXOutsAllowed",
          "numberOfLines",
          "outerCopperClearance",
          "outerTraceWidth",
          "peelableMask",
          "placementSide",
          "plcClass",
          "pressFit",
          "pressFitTechnology",
          "reports",
          "silkscreenColor",
          "silkscreenSide",
          "soldermaskClearance",
          "soldermaskColor",
          "soldermaskDam",
          "soldermaskSide",
          "surfaceFinish",
          "traceWidth"
        ],
        "type": "object",
        "properties": {
          "boardHeight": {
            "allOf": [
              {
                "$ref": "#/components/schemas/LengthSpecificationCapability"
              }
            ]
          },
          "boardWidth": {
            "allOf": [
              {
                "$ref": "#/components/schemas/LengthSpecificationCapability"
              }
            ]
          },
          "silkscreenColor": {
            "allOf": [
              {
                "$ref": "#/components/schemas/EnumSpecificationCapability"
              }
            ]
          },
          "silkscreenSide": {
            "allOf": [
              {
                "$ref": "#/components/schemas/EnumSpecificationCapability"
              }
            ]
          },
          "surfaceFinish": {
            "allOf": [
              {
                "$ref": "#/components/schemas/EnumSpecificationCapability"
              }
            ]
          },
          "enigThickness": {
            "allOf": [
              {
                "$ref": "#/components/schemas/LengthSpecificationCapability"
              }
            ]
          },
          "applicationType": {
            "allOf": [
              {
                "$ref": "#/components/schemas/EnumSpecificationCapability"
              }
            ]
          },
          "hardGold": {
            "allOf": [
              {
                "$ref": "#/components/schemas/BooleanSpecificationCapability"
              }
            ]
          },
          "hardGoldArea": {
            "allOf": [
              {
                "$ref": "#/components/schemas/NumericAreaSpecificationCapability"
              }
            ]
          },
          "hardGoldThickness": {
            "allOf": [
              {
                "$ref": "#/components/schemas/LengthSpecificationCapability"
              }
            ]
          },
          "exposedCopperArea": {
            "allOf": [
              {
                "$ref": "#/components/schemas/NumericAreaSpecificationCapability"
              }
            ]
          },
          "exposedCopperAreaTop": {
            "allOf": [
              {
                "$ref": "#/components/schemas/NumericAreaSpecificationCapability"
              }
            ]
          },
          "exposedCopperAreaBottom": {
            "allOf": [
              {
                "$ref": "#/components/schemas/NumericAreaSpecificationCapability"
              }
            ]
          },
          "traceWidth": {
            "allOf": [
              {
                "$ref": "#/components/schemas/LengthSpecificationCapability"
              }
            ]
          },
          "outerTraceWidth": {
            "allOf": [
              {
                "$ref": "#/components/schemas/LengthSpecificationCapability"
              }
            ]
          },
          "innerTraceWidth": {
            "allOf": [
              {
                "$ref": "#/components/schemas/LengthSpecificationCapability"
              }
            ]
          },
          "copperClearance": {
            "allOf": [
              {
                "$ref": "#/components/schemas/LengthSpecificationCapability"
              }
            ]
          },
          "outerCopperClearance": {
            "allOf": [
              {
                "$ref": "#/components/schemas/LengthSpecificationCapability"
              }
            ]
          },
          "innerCopperClearance": {
            "allOf": [
              {
                "$ref": "#/components/schemas/LengthSpecificationCapability"
              }
            ]
          },
          "soldermaskColor": {
            "allOf": [
              {
                "$ref": "#/components/schemas/EnumSpecificationCapability"
              }
            ]
          },
          "soldermaskSide": {
            "allOf": [
              {
                "$ref": "#/components/schemas/EnumSpecificationCapability"
              }
            ]
          },
          "soldermaskDam": {
            "allOf": [
              {
                "$ref": "#/components/schemas/LengthSpecificationCapability"
              }
            ]
          },
          "soldermaskClearance": {
            "allOf": [
              {
                "$ref": "#/components/schemas/LengthSpecificationCapability"
              }
            ]
          },
          "ipc600Class": {
            "allOf": [
              {
                "$ref": "#/components/schemas/EnumSpecificationCapability"
              }
            ]
          },
          "eTest": {
            "allOf": [
              {
                "$ref": "#/components/schemas/BooleanSpecificationCapability"
              }
            ]
          },
          "pressFit": {
            "allOf": [
              {
                "$ref": "#/components/schemas/BooleanSpecificationCapability"
              }
            ]
          },
          "pressFitTechnology": {
            "allOf": [
              {
                "$ref": "#/components/schemas/EnumSpecificationCapability"
              }
            ]
          },
          "impedanceTested": {
            "allOf": [
              {
                "$ref": "#/components/schemas/BooleanSpecificationCapability"
              }
            ]
          },
          "impedanceTolerance": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CountSpecificationCapability"
              }
            ]
          },
          "peelableMask": {
            "allOf": [
              {
                "$ref": "#/components/schemas/EnumSpecificationCapability"
              }
            ]
          },
          "captonTape": {
            "allOf": [
              {
                "$ref": "#/components/schemas/EnumSpecificationCapability"
              }
            ]
          },
          "reports": {
            "allOf": [
              {
                "$ref": "#/components/schemas/EnumSpecificationCapability"
              }
            ]
          },
          "itar": {
            "allOf": [
              {
                "$ref": "#/components/schemas/BooleanSpecificationCapability"
              }
            ]
          },
          "carbonPrint": {
            "allOf": [
              {
                "$ref": "#/components/schemas/BooleanSpecificationCapability"
              }
            ]
          },
          "carbonPrintSide": {
            "allOf": [
              {
                "$ref": "#/components/schemas/EnumSpecificationCapability"
              }
            ]
          },
          "edgeMetalization": {
            "allOf": [
              {
                "$ref": "#/components/schemas/BooleanSpecificationCapability"
              }
            ]
          },
          "flammabilityRating": {
            "allOf": [
              {
                "$ref": "#/components/schemas/EnumSpecificationCapability"
              }
            ]
          },
          "ctiClass": {
            "allOf": [
              {
                "$ref": "#/components/schemas/EnumSpecificationCapability"
              }
            ]
          },
          "plcClass": {
            "allOf": [
              {
                "$ref": "#/components/schemas/EnumSpecificationCapability"
              }
            ]
          },
          "maxXOutsAllowed": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CountSpecificationCapability"
              }
            ]
          },
          "halogenFree": {
            "allOf": [
              {
                "$ref": "#/components/schemas/BooleanSpecificationCapability"
              }
            ]
          },
          "placementSide": {
            "allOf": [
              {
                "$ref": "#/components/schemas/EnumSpecificationCapability"
              }
            ]
          },
          "ecobond": {
            "allOf": [
              {
                "$ref": "#/components/schemas/BooleanSpecificationCapability"
              }
            ]
          },
          "numberOfLines": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CountSpecificationCapability"
              }
            ]
          },
          "halfCutPlatedVias": {
            "allOf": [
              {
                "$ref": "#/components/schemas/BooleanSpecificationCapability"
              }
            ]
          }
        }
      },
      "PCBV2MiscellaneousCapabilities": {
        "required": [
          "manufacturingInformation"
        ],
        "type": "object",
        "properties": {
          "manufacturingInformation": {
            "allOf": [
              {
                "$ref": "#/components/schemas/StringSpecificationCapability"
              }
            ]
          }
        }
      },
      "PCBV2MechanicalCapabilities": {
        "required": [
          "aspectRatio",
          "blindVias",
          "buriedVias",
          "chamfering",
          "microVias",
          "minViaDiameter",
          "nphCount",
          "nphMaxSize",
          "nphMinSize",
          "nphToolCount",
          "phAnnularRing",
          "phCount",
          "phMaxSize",
          "phMinSize",
          "phSurfaceArea",
          "phToolCount",
          "totalDrillCount",
          "viaFilling"
        ],
        "type": "object",
        "properties": {
          "minViaDiameter": {
            "allOf": [
              {
                "$ref": "#/components/schemas/LengthSpecificationCapability"
              }
            ]
          },
          "viaFilling": {
            "allOf": [
              {
                "$ref": "#/components/schemas/EnumSpecificationCapability"
              }
            ]
          },
          "blindVias": {
            "allOf": [
              {
                "$ref": "#/components/schemas/BooleanSpecificationCapability"
              }
            ]
          },
          "buriedVias": {
            "allOf": [
              {
                "$ref": "#/components/schemas/BooleanSpecificationCapability"
              }
            ]
          },
          "chamfering": {
            "allOf": [
              {
                "$ref": "#/components/schemas/EnumSpecificationCapability"
              }
            ]
          },
          "aspectRatio": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CountSpecificationCapability"
              }
            ]
          },
          "totalDrillCount": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CountSpecificationCapability"
              }
            ]
          },
          "microVias": {
            "allOf": [
              {
                "$ref": "#/components/schemas/BooleanSpecificationCapability"
              }
            ]
          },
          "phCount": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CountSpecificationCapability"
              }
            ]
          },
          "phToolCount": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CountSpecificationCapability"
              }
            ]
          },
          "nphCount": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CountSpecificationCapability"
              }
            ]
          },
          "phMinSize": {
            "allOf": [
              {
                "$ref": "#/components/schemas/LengthSpecificationCapability"
              }
            ]
          },
          "nphMaxSize": {
            "allOf": [
              {
                "$ref": "#/components/schemas/LengthSpecificationCapability"
              }
            ]
          },
          "phMaxSize": {
            "allOf": [
              {
                "$ref": "#/components/schemas/LengthSpecificationCapability"
              }
            ]
          },
          "nphToolCount": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CountSpecificationCapability"
              }
            ]
          },
          "phAnnularRing": {
            "allOf": [
              {
                "$ref": "#/components/schemas/LengthSpecificationCapability"
              }
            ]
          },
          "nphMinSize": {
            "allOf": [
              {
                "$ref": "#/components/schemas/LengthSpecificationCapability"
              }
            ]
          },
          "phSurfaceArea": {
            "allOf": [
              {
                "$ref": "#/components/schemas/NumericAreaSpecificationCapability"
              }
            ]
          }
        }
      },
      "PCBV2LayerStackCapabilities": {
        "required": [
          "baseMaterial",
          "finalThickness",
          "innerCopperThickness",
          "layercount",
          "layerstackThicknessTolerance",
          "layerstackType",
          "minInnerLayerStructure",
          "minOuterLayerStructure",
          "numberOfLaminationCycles",
          "numberOfPrepregs",
          "outerCopperThickness",
          "rohsCompilant",
          "tgValue",
          "ulLayerStack",
          "ulMarkingType"
        ],
        "type": "object",
        "properties": {
          "layerstackType": {
            "allOf": [
              {
                "$ref": "#/components/schemas/EnumSpecificationCapability"
              }
            ]
          },
          "layerstackThicknessTolerance": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CountSpecificationCapability"
              }
            ]
          },
          "ulLayerStack": {
            "allOf": [
              {
                "$ref": "#/components/schemas/BooleanSpecificationCapability"
              }
            ]
          },
          "ulMarkingType": {
            "allOf": [
              {
                "$ref": "#/components/schemas/EnumSpecificationCapability"
              }
            ]
          },
          "layercount": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CountSpecificationCapability"
              }
            ]
          },
          "finalThickness": {
            "allOf": [
              {
                "$ref": "#/components/schemas/LengthSpecificationCapability"
              }
            ]
          },
          "baseMaterial": {
            "allOf": [
              {
                "$ref": "#/components/schemas/EnumSpecificationCapability"
              }
            ]
          },
          "outerCopperThickness": {
            "allOf": [
              {
                "$ref": "#/components/schemas/LengthSpecificationCapability"
              }
            ]
          },
          "innerCopperThickness": {
            "allOf": [
              {
                "$ref": "#/components/schemas/LengthSpecificationCapability"
              }
            ]
          },
          "minOuterLayerStructure": {
            "allOf": [
              {
                "$ref": "#/components/schemas/LengthSpecificationCapability"
              }
            ]
          },
          "minInnerLayerStructure": {
            "allOf": [
              {
                "$ref": "#/components/schemas/LengthSpecificationCapability"
              }
            ]
          },
          "rohsCompilant": {
            "allOf": [
              {
                "$ref": "#/components/schemas/BooleanSpecificationCapability"
              }
            ]
          },
          "tgValue": {
            "allOf": [
              {
                "$ref": "#/components/schemas/TemperatureSpecificationCapability"
              }
            ]
          },
          "numberOfPrepregs": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CountSpecificationCapability"
              }
            ]
          },
          "numberOfLaminationCycles": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CountSpecificationCapability"
              }
            ]
          }
        }
      },
      "PCBV2ReportsCapabilities": {
        "required": [
          "certificateOfConformance",
          "crossSection",
          "firstArticleInspection",
          "xRayMeasurement",
          "xRayMeasurementPoints"
        ],
        "type": "object",
        "properties": {
          "crossSection": {
            "allOf": [
              {
                "$ref": "#/components/schemas/BooleanSpecificationCapability"
              }
            ]
          },
          "xRayMeasurement": {
            "allOf": [
              {
                "$ref": "#/components/schemas/BooleanSpecificationCapability"
              }
            ]
          },
          "xRayMeasurementPoints": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CountSpecificationCapability"
              }
            ]
          },
          "firstArticleInspection": {
            "allOf": [
              {
                "$ref": "#/components/schemas/BooleanSpecificationCapability"
              }
            ]
          },
          "certificateOfConformance": {
            "allOf": [
              {
                "$ref": "#/components/schemas/BooleanSpecificationCapability"
              }
            ]
          }
        }
      },
      "PCBV2MarkingsCapabilities": {
        "required": [
          "datamatrixCode",
          "dateCode",
          "fabricatorLogo"
        ],
        "type": "object",
        "properties": {
          "dateCode": {
            "allOf": [
              {
                "$ref": "#/components/schemas/EnumSpecificationCapability"
              }
            ]
          },
          "fabricatorLogo": {
            "allOf": [
              {
                "$ref": "#/components/schemas/BooleanSpecificationCapability"
              }
            ]
          },
          "datamatrixCode": {
            "allOf": [
              {
                "$ref": "#/components/schemas/BooleanSpecificationCapability"
              }
            ]
          }
        }
      },
      "PropertyMatch": {
        "required": [
          "property"
        ],
        "type": "object",
        "properties": {
          "property": {
            "allOf": [
              {
                "$ref": "#/components/schemas/MatchablePcbProperty"
              }
            ]
          }
        }
      },
      "MessageV2": {
        "type": "object"
      },
      "LifecycleStageStatus": {
        "required": [
          "endState",
          "messages",
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "enum": [
              "unknown",
              "waiting",
              "progress",
              "error",
              "success",
              "timeout"
            ]
          },
          "messages": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "percent": {
            "type": "integer",
            "format": "int32"
          },
          "duration": {
            "type": "number",
            "format": "long",
            "deprecated": true
          },
          "deadline": {
            "allOf": [
              {
                "$ref": "#/components/schemas/DeadlineDoc"
              }
            ]
          },
          "endState": {
            "type": "boolean"
          }
        }
      },
      "HistoricLifecycleState": {
        "required": [
          "name",
          "start"
        ],
        "type": "object",
        "properties": {
          "name": {
            "allOf": [
              {
                "$ref": "#/components/schemas/StageStatusName"
              }
            ]
          },
          "start": {
            "type": "number",
            "format": "long"
          },
          "end": {
            "type": "number",
            "format": "long"
          }
        }
      },
      "SpecificationStatus": {
        "type": "object"
      },
      "SpecificationChange": {
        "required": [
          "newValue",
          "previousValue",
          "timestamp",
          "userId"
        ],
        "type": "object",
        "properties": {
          "userId": {
            "type": "string"
          },
          "timestamp": {
            "type": "string",
            "format": "date"
          },
          "previousValue": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PCBSpecificationValues"
              }
            ]
          },
          "newValue": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PCBSpecificationValues"
              }
            ]
          }
        }
      },
      "FileAccess": {
        "required": [
          "key",
          "path"
        ],
        "type": "object",
        "properties": {
          "path": {
            "type": "string",
            "description": "the relative path to this file"
          },
          "key": {
            "type": "string",
            "description": "a signed token allowing access to this file\n\n  can be used as a query parameter `?k=<key>` (for instance for `<img>` tags)\n  with this key a shareable link to protected files can be created without\n  sharing the full token.\n"
          }
        }
      },
      "PCBV2PropertiesUpdate": {
        "type": "object",
        "properties": {
          "board": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PCBV2BoardPropertiesUpdate"
              }
            ]
          },
          "layerStack": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PCBV2LayerStackPropertiesUpdate"
              }
            ]
          },
          "mechanical": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PCBV2MechanicalPropertiesUpdate"
              }
            ]
          },
          "reports": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PCBV2ReportsPropertiesUpdate"
              }
            ]
          },
          "markings": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PCBV2MarkingsPropertiesUpdate"
              }
            ]
          },
          "miscellaneous": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PCBV2MiscellaneousPropertiesUpdate"
              }
            ]
          }
        }
      },
      "Net": {
        "required": [
          "drills",
          "traces"
        ],
        "type": "object",
        "properties": {
          "traces": {
            "type": "array",
            "items": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/NetTrace"
                }
              ]
            }
          },
          "drills": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "DrillHit": {
        "required": [
          "id",
          "x",
          "y"
        ],
        "type": "object",
        "properties": {
          "x": {
            "type": "number"
          },
          "y": {
            "type": "number"
          },
          "id": {
            "type": "string"
          },
          "coverage": {
            "allOf": [
              {
                "$ref": "#/components/schemas/DrillCoverage"
              }
            ]
          }
        }
      },
      "SlotFeatures": {
        "required": [
          "slots"
        ],
        "type": "object",
        "properties": {
          "slots": {
            "type": "array",
            "items": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/Tuple2"
                }
              ]
            }
          }
        }
      },
      "AssemblyInformation": {
        "required": [
          "uiStatus"
        ],
        "type": "object",
        "properties": {
          "customer": {
            "type": "string",
            "format": "uuid"
          },
          "orderId": {
            "type": "string"
          },
          "assignee": {
            "type": "string",
            "format": "uuid"
          },
          "itemNo": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "uiStatus": {
            "allOf": [
              {
                "$ref": "#/components/schemas/UIStatus"
              }
            ]
          },
          "project": {
            "type": "string",
            "format": "uuid"
          }
        }
      },
      "AssemblyFeature": {
        "required": [
          "feature",
          "service"
        ],
        "type": "object",
        "properties": {
          "service": {
            "type": "string"
          },
          "feature": {
            "type": "string"
          }
        }
      },
      "Version": {
        "required": [
          "created",
          "filesLocked",
          "id",
          "lifecycles",
          "projectType"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string"
          },
          "created": {
            "type": "string",
            "format": "date"
          },
          "released": {
            "type": "string",
            "format": "date"
          },
          "files": {
            "type": "array",
            "items": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/File"
                }
              ]
            }
          },
          "filesLocked": {
            "type": "boolean"
          },
          "lifecycles": {
            "type": "array",
            "items": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/AssemblyLifecycleStage"
                }
              ]
            }
          },
          "projectType": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ProjectType"
              }
            ]
          }
        }
      },
      "AssemblyStatus": {
        "type": "object"
      },
      "AbstractAssemblyReference": {
        "type": "object"
      },
      "LayerstackDefinitionAPI": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "team": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "stacks": {
            "type": "array",
            "items": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/SubStackDefinition"
                }
              ]
            }
          },
          "price": {
            "type": "number"
          },
          "metaInfo": {
            "allOf": [
              {
                "$ref": "#/components/schemas/MetaInfo"
              }
            ]
          },
          "creation": {
            "type": "string",
            "format": "date"
          },
          "image": {
            "type": "string"
          },
          "default": {
            "type": "boolean"
          }
        }
      },
      "SubStackAPI": {
        "required": [
          "definition",
          "layers",
          "metaInfo"
        ],
        "type": "object",
        "properties": {
          "definition": {
            "allOf": [
              {
                "$ref": "#/components/schemas/SubStackDefinition"
              }
            ]
          },
          "layers": {
            "type": "array",
            "items": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/LayerAPI"
                }
              ]
            }
          },
          "metaInfo": {
            "allOf": [
              {
                "$ref": "#/components/schemas/MetaInfo"
              }
            ]
          }
        }
      },
      "CustomerPanelElement": {
        "type": "object"
      },
      "Spacing": {
        "type": "object",
        "properties": {
          "topPadding": {
            "type": "number"
          },
          "rightPadding": {
            "type": "number"
          },
          "leftPadding": {
            "type": "number"
          },
          "bottomPadding": {
            "type": "number"
          },
          "verticalSpacing": {
            "type": "number"
          },
          "horizontalSpacing": {
            "type": "number"
          }
        }
      },
      "WorkingPanelUsageAPI": {
        "required": [
          "customerBoards",
          "customerPanels",
          "panelYield",
          "workingPanel"
        ],
        "type": "object",
        "properties": {
          "workingPanel": {
            "type": "string",
            "format": "uuid"
          },
          "customerPanels": {
            "type": "integer",
            "format": "int32"
          },
          "customerBoards": {
            "type": "integer",
            "format": "int32"
          },
          "panelYield": {
            "type": "number",
            "format": "double"
          },
          "preview": {
            "type": "string"
          }
        }
      },
      "LengthUnit": {
        "type": "object"
      },
      "BigPoint": {
        "required": [
          "x",
          "y"
        ],
        "type": "object",
        "properties": {
          "x": {
            "type": "number"
          },
          "y": {
            "type": "number"
          }
        }
      },
      "GraphicUsage": {
        "required": [
          "location",
          "reference"
        ],
        "type": "object",
        "properties": {
          "reference": {
            "type": "string"
          },
          "location": {
            "allOf": [
              {
                "$ref": "#/components/schemas/BigPoint"
              }
            ]
          }
        }
      },
      "A": {
        "type": "object"
      },
      "FlashOrientation": {
        "required": [
          "degrees",
          "mirror"
        ],
        "type": "object",
        "properties": {
          "degrees": {
            "type": "number",
            "format": "double"
          },
          "mirror": {
            "type": "boolean"
          }
        }
      },
      "FilePath": {
        "required": [
          "base",
          "filename",
          "fsroot",
          "logger",
          "resource",
          "team"
        ],
        "type": "object",
        "properties": {
          "fsroot": {
            "type": "string"
          },
          "team": {
            "type": "string"
          },
          "resource": {
            "type": "string"
          },
          "base": {
            "type": "string"
          },
          "subPath": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "filename": {
            "type": "string"
          },
          "logger": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Logger"
              }
            ]
          }
        }
      },
      "FileLifecycleStage": {
        "required": [
          "name",
          "status"
        ],
        "type": "object",
        "properties": {
          "name": {
            "allOf": [
              {
                "$ref": "#/components/schemas/FileLifecycleStageName"
              }
            ]
          },
          "status": {
            "allOf": [
              {
                "$ref": "#/components/schemas/LifecycleStageStatus"
              }
            ]
          },
          "history": {
            "type": "array",
            "items": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/HistoricLifecycleState"
                }
              ]
            }
          }
        }
      },
      "PCBV2LayerStackProperties": {
        "type": "object",
        "properties": {
          "layerstackType": {
            "type": "string",
            "description": "The technology or type of materials used to build the layerstack",
            "enum": [
              "rigid",
              "flex",
              "ims",
              "rigid-flex"
            ]
          },
          "layerstackThicknessTolerance": {
            "type": "number",
            "description": "Thickness tolerance of the final pcb thickness in %"
          },
          "ulLayerStack": {
            "type": "boolean"
          },
          "ulMarkingType": {
            "type": "string",
            "description": "The UL Marking setting",
            "enum": [
              "no-marking",
              "default-marking",
              "custom-marking"
            ]
          },
          "layercount": {
            "type": "number",
            "description": "The amount of copper layers"
          },
          "finalThickness": {
            "allOf": [
              {
                "$ref": "#/components/schemas/LengthWithUnit"
              }
            ]
          },
          "baseMaterial": {
            "type": "string",
            "description": "The base material used to build up the layer stack",
            "enum": [
              "FR-2",
              "FR-3",
              "FR-4",
              "CEM1",
              "CEM2",
              "CEM3",
              "polyimide"
            ]
          },
          "outerCopperThickness": {
            "description": "The finished copper thickness on outer layers",
            "allOf": [
              {
                "$ref": "#/components/schemas/LengthWithUnit"
              }
            ]
          },
          "innerCopperThickness": {
            "description": "The finished copper thickness on inner layers",
            "allOf": [
              {
                "$ref": "#/components/schemas/LengthWithUnit"
              }
            ]
          },
          "minOuterLayerStructure": {
            "allOf": [
              {
                "$ref": "#/components/schemas/LengthWithUnit"
              }
            ]
          },
          "minInnerLayerStructure": {
            "allOf": [
              {
                "$ref": "#/components/schemas/LengthWithUnit"
              }
            ]
          },
          "rohsCompilant": {
            "type": "boolean",
            "description": "Indicates if the product must be compliant with RoHS"
          },
          "tgValue": {
            "description": "The minimum Tg value of the base material in C°",
            "allOf": [
              {
                "$ref": "#/components/schemas/TemperatureWithUnit"
              }
            ]
          },
          "numberOfPrepregs": {
            "type": "number",
            "description": "The number of prepreg layers"
          },
          "numberOfLaminationCycles": {
            "type": "number",
            "description": "The number of lamination cycles"
          }
        }
      },
      "PCBV2MarkingsProperties": {
        "type": "object",
        "properties": {
          "dateCode": {
            "type": "string",
            "description": "Code indicating the manufacturing date of the PCB",
            "enum": [
              "none",
              "default",
              "custom"
            ]
          },
          "fabricatorLogo": {
            "type": "boolean",
            "description": "Logo of the PCB fabricator printed on the board"
          },
          "datamatrixCode": {
            "type": "boolean",
            "description": "Unique datamatrix code for tracking and identification"
          }
        }
      },
      "PCBV2ReportsProperties": {
        "type": "object",
        "properties": {
          "crossSection": {
            "type": "boolean",
            "description": "Report of a cross-sectional analysis of the PCB layers"
          },
          "xRayMeasurement": {
            "type": "boolean",
            "description": "Report about a X-ray inspection of the PCB"
          },
          "xRayMeasurementPoints": {
            "type": "number",
            "description": "Number of measured points during the X-ray inspection"
          },
          "firstArticleInspection": {
            "type": "boolean",
            "description": "Initial inspection report verifying all specifications"
          },
          "certificateOfConformance": {
            "type": "boolean",
            "description": "Requires and official document certifying compliance with quality standards"
          }
        }
      },
      "PCBV2BoardProperties": {
        "type": "object",
        "properties": {
          "boardHeight": {
            "description": "The height of a single PCB",
            "allOf": [
              {
                "$ref": "#/components/schemas/LengthWithUnit"
              }
            ]
          },
          "boardWidth": {
            "description": "The width of a single PCB",
            "allOf": [
              {
                "$ref": "#/components/schemas/LengthWithUnit"
              }
            ]
          },
          "silkscreenColor": {
            "type": "string",
            "description": "Specifies the silkscreen color",
            "enum": [
              "white",
              "black",
              "yellow",
              "red",
              "green",
              "blue"
            ]
          },
          "silkscreenSide": {
            "type": "string",
            "description": "Specifies on which side the silkscreen should be printed on",
            "enum": [
              "none",
              "top",
              "bottom",
              "both"
            ]
          },
          "surfaceFinish": {
            "type": "string",
            "description": "Specifies the type of surface finish that will be applied on the PCB surface",
            "enum": [
              "none",
              "hal-pb",
              "hal-pb-free",
              "enig",
              "enipig",
              "is",
              "it",
              "osp"
            ]
          },
          "enigThickness": {
            "description": "ENIG thickness",
            "allOf": [
              {
                "$ref": "#/components/schemas/LengthWithUnit"
              }
            ]
          },
          "applicationType": {
            "type": "string",
            "description": "The type of application the PCB will be used for",
            "enum": [
              "Industrial",
              "Military",
              "Automotive",
              "Medical",
              "Consumer",
              "Aerospace"
            ]
          },
          "notes": {
            "type": "string"
          },
          "hardGold": {
            "type": "boolean",
            "description": "Defines whether galvanic hard gold is required"
          },
          "hardGoldArea": {
            "description": "Define the area for galvanic hard gold",
            "allOf": [
              {
                "$ref": "#/components/schemas/AreaWithUnit"
              }
            ]
          },
          "hardGoldThickness": {
            "description": "Define the thickness for galvanic hard gold in micrometer",
            "allOf": [
              {
                "$ref": "#/components/schemas/LengthWithUnit"
              }
            ]
          },
          "exposedCopperArea": {
            "description": "The total exposed copper area in mm² (exposed_copper_area_top + exposed_copper_area_bottom)",
            "allOf": [
              {
                "$ref": "#/components/schemas/AreaWithUnit"
              }
            ]
          },
          "exposedCopperAreaTop": {
            "description": "Exposed copper area on the top side",
            "allOf": [
              {
                "$ref": "#/components/schemas/AreaWithUnit"
              }
            ]
          },
          "exposedCopperAreaBottom": {
            "description": "Exposed copper area on the bottom side",
            "allOf": [
              {
                "$ref": "#/components/schemas/AreaWithUnit"
              }
            ]
          },
          "traceWidth": {
            "description": "The width of the trace",
            "allOf": [
              {
                "$ref": "#/components/schemas/LengthWithUnit"
              }
            ]
          },
          "outerTraceWidth": {
            "description": "The width of the outer trace",
            "allOf": [
              {
                "$ref": "#/components/schemas/LengthWithUnit"
              }
            ]
          },
          "innerTraceWidth": {
            "description": "The width of the inner trace",
            "allOf": [
              {
                "$ref": "#/components/schemas/LengthWithUnit"
              }
            ]
          },
          "copperClearance": {
            "description": "The copper clearance",
            "allOf": [
              {
                "$ref": "#/components/schemas/LengthWithUnit"
              }
            ]
          },
          "outerCopperClearance": {
            "description": "The outer copper clearance",
            "allOf": [
              {
                "$ref": "#/components/schemas/LengthWithUnit"
              }
            ]
          },
          "innerCopperClearance": {
            "description": "The inner copper clearance",
            "allOf": [
              {
                "$ref": "#/components/schemas/LengthWithUnit"
              }
            ]
          },
          "soldermaskColor": {
            "type": "string",
            "description": "The color of the soldermask"
          },
          "soldermaskSide": {
            "type": "string",
            "description": "The side of the soldermask",
            "enum": [
              "none",
              "top",
              "bottom",
              "both"
            ]
          },
          "pasteSide": {
            "type": "string",
            "description": "The side of the paste",
            "enum": [
              "none",
              "top",
              "bottom",
              "both"
            ]
          },
          "soldermaskDam": {
            "description": "The dam of the soldermask",
            "allOf": [
              {
                "$ref": "#/components/schemas/LengthWithUnit"
              }
            ]
          },
          "soldermaskClearance": {
            "description": "The clearance of the soldermask",
            "allOf": [
              {
                "$ref": "#/components/schemas/LengthWithUnit"
              }
            ]
          },
          "ipc600Class": {
            "type": "string",
            "description": "Product quality acceptance according to IPC-A-600",
            "enum": [
              "ipcnone",
              "ipc1",
              "ipc2",
              "ipc2+",
              "ipc3",
              "ipc3a"
            ]
          },
          "eTest": {
            "type": "boolean",
            "description": "Specifies if E-Test is required"
          },
          "pressFit": {
            "type": "boolean",
            "description": "Specifies whether press-fit components will be used"
          },
          "pressFitTechnology": {
            "description": "Specifies the press-fit technology",
            "allOf": [
              {
                "$ref": "#/components/schemas/PressFitTechnology"
              }
            ]
          },
          "impedanceTested": {
            "type": "boolean",
            "description": "Specifies whether an impedance control is required"
          },
          "impedanceTolerance": {
            "type": "number",
            "description": "The tolerance of the impedance testing in %"
          },
          "peelableMask": {
            "type": "string",
            "description": "Defines whether a peelable solder mask is required",
            "enum": [
              "none",
              "top",
              "bottom",
              "both"
            ]
          },
          "captonTape": {
            "type": "string",
            "description": "Defines whether capton tape is required",
            "enum": [
              "none",
              "top",
              "bottom",
              "both"
            ]
          },
          "reports": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "cross_section_report",
                "first_sample_test_report",
                "impedance_report",
                "coc_report"
              ]
            }
          },
          "itar": {
            "type": "boolean"
          },
          "carbonPrint": {
            "type": "boolean",
            "description": "Defines whether carbon print is required"
          },
          "carbonPrintSide": {
            "type": "string",
            "description": "Defines which sides of the PCB should be carbon printed",
            "enum": [
              "none",
              "top",
              "bottom",
              "both"
            ]
          },
          "edgeMetalization": {
            "type": "boolean",
            "description": "Metalization of the PCB edges with copper and the final finish"
          },
          "flammabilityRating": {
            "type": "string",
            "description": "The flammability rating of the base material according to UL 94",
            "enum": [
              "none",
              "V-0",
              "V-1",
              "V-2"
            ]
          },
          "ctiClass": {
            "type": "string",
            "description": "Describes the electrical breakdown product class according to IEC 60601-1:2005",
            "enum": [
              "none",
              "i",
              "ii",
              "iiia",
              "iiib"
            ]
          },
          "plcClass": {
            "type": "string",
            "description": "Describes the Performance Level Category for electrical performance of base material",
            "enum": [
              "none",
              "plc0",
              "plc1",
              "plc2",
              "plc3"
            ]
          },
          "maxXOutsAllowed": {
            "type": "number",
            "description": "The number of accepted X-outs per delivery/customer panel"
          },
          "halogenFree": {
            "type": "boolean",
            "description": "Defines whether the PCB is halogen-free"
          },
          "placementSide": {
            "type": "string",
            "description": "Defines which side of the PCB should be placed on",
            "enum": [
              "none",
              "top",
              "bottom",
              "both"
            ]
          },
          "ecobond": {
            "type": "boolean",
            "description": "Defines whether ecobond is required"
          },
          "numberOfLines": {
            "type": "number",
            "description": "The number of lines on the PCB"
          },
          "halfCutPlatedVias": {
            "type": "boolean",
            "description": "Defines whether half-cutted plated vias are required"
          }
        }
      },
      "PCBV2MechanicalProperties": {
        "type": "object",
        "properties": {
          "minViaDiameter": {
            "description": "The minimum via diameter",
            "allOf": [
              {
                "$ref": "#/components/schemas/LengthWithUnit"
              }
            ]
          },
          "viaFilling": {
            "type": "string",
            "description": "Via filling type according to IPC-4761",
            "enum": [
              "none",
              "Ia",
              "Ib",
              "IIb",
              "IIIa",
              "IIIb",
              "IVa",
              "IVb",
              "V",
              "VI",
              "VII"
            ]
          },
          "blindVias": {
            "type": "boolean",
            "description": "Indicates whether the PCB has blind vias or not"
          },
          "blindViaCount": {
            "type": "integer",
            "description": "The number of blind vias",
            "format": "int32"
          },
          "buriedVias": {
            "type": "boolean",
            "description": "Indicates whether the PCB has buried vias or not"
          },
          "buriedViaCount": {
            "type": "integer",
            "description": "The number of buried vias",
            "format": "int32"
          },
          "chamfering": {
            "type": "string",
            "description": "Describes the type of chamfering",
            "enum": [
              "none",
              "20-PCI",
              "45-ISA"
            ]
          },
          "outlineLength": {
            "description": "The length of the outline path ",
            "allOf": [
              {
                "$ref": "#/components/schemas/LengthWithUnit"
              }
            ]
          },
          "aspectRatio": {
            "type": "number",
            "description": "The smallest aspect-ratio found on the PCB"
          },
          "totalDrillCount": {
            "type": "number",
            "description": "The total number of drills"
          },
          "microVias": {
            "type": "boolean",
            "description": "Indicates whether the PCB has micro vias or not"
          },
          "phCount": {
            "type": "number",
            "description": "The amount of plated holes (vias)"
          },
          "phToolCount": {
            "type": "number",
            "description": "The amount of different tools used for plated holes"
          },
          "nphCount": {
            "type": "number",
            "description": "The amount of non-plated holes (drills)"
          },
          "phMinSize": {
            "description": "The smallest non-plated hole diameter",
            "allOf": [
              {
                "$ref": "#/components/schemas/LengthWithUnit"
              }
            ]
          },
          "nphMaxSize": {
            "description": "The largest non-plated hole diameter",
            "allOf": [
              {
                "$ref": "#/components/schemas/LengthWithUnit"
              }
            ]
          },
          "phMaxSize": {
            "description": "The largest plated hole diameter",
            "allOf": [
              {
                "$ref": "#/components/schemas/LengthWithUnit"
              }
            ]
          },
          "nphToolCount": {
            "type": "number",
            "description": "The amount of different tools used for non-plated holes"
          },
          "phAnnularRing": {
            "description": "The smallest annular ring between plated holes and copper, found on all layers of the PCB",
            "allOf": [
              {
                "$ref": "#/components/schemas/LengthWithUnit"
              }
            ]
          },
          "nphMinSize": {
            "description": "The smallest non-plated hole diameter",
            "allOf": [
              {
                "$ref": "#/components/schemas/LengthWithUnit"
              }
            ]
          },
          "phSurfaceArea": {
            "type": "number",
            "description": "The surface area of the inside of all plated holes"
          }
        }
      },
      "PCBV2MiscellaneousProperties": {
        "type": "object",
        "properties": {
          "manufacturingInformation": {
            "type": "string",
            "description": "General information that might be required in form of a free text"
          }
        }
      },
      "EnumSpecificationCapability": {
        "required": [
          "allowed",
          "default"
        ],
        "type": "object",
        "properties": {
          "allowed": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "default": {
            "type": "string"
          }
        }
      },
      "CountSpecificationCapability": {
        "required": [
          "disabled"
        ],
        "type": "object",
        "properties": {
          "min": {
            "type": "number"
          },
          "max": {
            "type": "number"
          },
          "allowed": {
            "type": "array",
            "items": {
              "type": "number"
            }
          },
          "default": {
            "type": "number"
          },
          "disabled": {
            "type": "boolean"
          }
        }
      },
      "NumericAreaSpecificationCapability": {
        "required": [
          "defaultUnit",
          "disabled"
        ],
        "type": "object",
        "properties": {
          "min": {
            "type": "number"
          },
          "max": {
            "type": "number"
          },
          "allowed": {
            "type": "array",
            "items": {
              "type": "number"
            }
          },
          "default": {
            "type": "number"
          },
          "disabled": {
            "type": "boolean"
          },
          "defaultUnit": {
            "type": "string",
            "enum": [
              "SquareMillimeter",
              "SquareInch"
            ]
          }
        }
      },
      "LengthSpecificationCapability": {
        "required": [
          "defaultUnit",
          "disabled"
        ],
        "type": "object",
        "properties": {
          "min": {
            "type": "number"
          },
          "max": {
            "type": "number"
          },
          "allowed": {
            "type": "array",
            "items": {
              "type": "number"
            }
          },
          "default": {
            "type": "number"
          },
          "disabled": {
            "type": "boolean"
          },
          "defaultUnit": {
            "type": "string",
            "enum": [
              "Micrometer",
              "Inch",
              "Mil",
              "Millimeter",
              "Microinch"
            ]
          }
        }
      },
      "BooleanSpecificationCapability": {
        "required": [
          "allowed",
          "default"
        ],
        "type": "object",
        "properties": {
          "allowed": {
            "type": "array",
            "items": {
              "type": "boolean"
            }
          },
          "default": {
            "type": "boolean"
          }
        }
      },
      "StringSpecificationCapability": {
        "type": "object",
        "properties": {
          "allowed": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "default": {
            "type": "string"
          }
        }
      },
      "TemperatureSpecificationCapability": {
        "required": [
          "defaultUnit",
          "disabled"
        ],
        "type": "object",
        "properties": {
          "min": {
            "type": "number"
          },
          "max": {
            "type": "number"
          },
          "allowed": {
            "type": "array",
            "items": {
              "type": "number"
            }
          },
          "default": {
            "type": "number"
          },
          "disabled": {
            "type": "boolean"
          },
          "defaultUnit": {
            "type": "string",
            "enum": [
              "Celsius",
              "Fahrenheit"
            ]
          }
        }
      },
      "MatchablePcbProperty": {
        "type": "object"
      },
      "DeadlineDoc": {
        "required": [
          "length",
          "unit"
        ],
        "type": "object",
        "properties": {
          "length": {
            "type": "number",
            "format": "long"
          },
          "unit": {
            "type": "string",
            "enum": [
              "NANOSECONDS",
              "MICROSECONDS",
              "MILLISECONDS",
              "SECONDS",
              "MINUTES",
              "HOURS",
              "DAYS"
            ]
          }
        }
      },
      "StageStatusName": {
        "type": "object"
      },
      "PCBSpecificationValues": {
        "type": "object",
        "properties": {
          "base": {
            "allOf": [
              {
                "$ref": "#/components/schemas/MetaInfo"
              }
            ]
          },
          "status": {
            "allOf": [
              {
                "$ref": "#/components/schemas/SpecificationStatus"
              }
            ]
          }
        }
      },
      "PCBV2ReportsPropertiesUpdate": {
        "type": "object",
        "properties": {
          "crossSection": {
            "type": "boolean"
          },
          "xRayMeasurement": {
            "type": "boolean"
          },
          "xRayMeasurementPoints": {
            "type": "number"
          },
          "firstArticleInspection": {
            "type": "boolean"
          },
          "certificateOfConformance": {
            "type": "boolean"
          }
        }
      },
      "PCBV2BoardPropertiesUpdate": {
        "type": "object",
        "properties": {
          "boardHeight": {
            "allOf": [
              {
                "$ref": "#/components/schemas/LengthWithUnit"
              }
            ]
          },
          "boardWidth": {
            "allOf": [
              {
                "$ref": "#/components/schemas/LengthWithUnit"
              }
            ]
          },
          "silkscreenColor": {
            "type": "string",
            "enum": [
              "white",
              "black",
              "yellow",
              "red",
              "green",
              "blue"
            ]
          },
          "silkscreenSide": {
            "type": "string",
            "enum": [
              "none",
              "top",
              "bottom",
              "both"
            ]
          },
          "surfaceFinish": {
            "type": "string",
            "enum": [
              "none",
              "hal-pb",
              "hal-pb-free",
              "enig",
              "enipig",
              "is",
              "it",
              "osp"
            ]
          },
          "enigThickness": {
            "allOf": [
              {
                "$ref": "#/components/schemas/LengthWithUnit"
              }
            ]
          },
          "applicationType": {
            "type": "string",
            "enum": [
              "Industrial",
              "Military",
              "Automotive",
              "Medical",
              "Consumer",
              "Aerospace"
            ]
          },
          "notes": {
            "type": "string"
          },
          "hardGold": {
            "type": "boolean"
          },
          "hardGoldArea": {
            "allOf": [
              {
                "$ref": "#/components/schemas/AreaWithUnit"
              }
            ]
          },
          "hardGoldThickness": {
            "allOf": [
              {
                "$ref": "#/components/schemas/LengthWithUnit"
              }
            ]
          },
          "exposedCopperArea": {
            "allOf": [
              {
                "$ref": "#/components/schemas/AreaWithUnit"
              }
            ]
          },
          "exposedCopperAreaTop": {
            "allOf": [
              {
                "$ref": "#/components/schemas/AreaWithUnit"
              }
            ]
          },
          "exposedCopperAreaBottom": {
            "allOf": [
              {
                "$ref": "#/components/schemas/AreaWithUnit"
              }
            ]
          },
          "traceWidth": {
            "allOf": [
              {
                "$ref": "#/components/schemas/LengthWithUnit"
              }
            ]
          },
          "outerTraceWidth": {
            "allOf": [
              {
                "$ref": "#/components/schemas/LengthWithUnit"
              }
            ]
          },
          "innerTraceWidth": {
            "allOf": [
              {
                "$ref": "#/components/schemas/LengthWithUnit"
              }
            ]
          },
          "copperClearance": {
            "allOf": [
              {
                "$ref": "#/components/schemas/LengthWithUnit"
              }
            ]
          },
          "outerCopperClearance": {
            "allOf": [
              {
                "$ref": "#/components/schemas/LengthWithUnit"
              }
            ]
          },
          "innerCopperClearance": {
            "allOf": [
              {
                "$ref": "#/components/schemas/LengthWithUnit"
              }
            ]
          },
          "soldermaskColor": {
            "type": "string"
          },
          "soldermaskSide": {
            "type": "string",
            "enum": [
              "none",
              "top",
              "bottom",
              "both"
            ]
          },
          "pasteSide": {
            "type": "string",
            "enum": [
              "none",
              "top",
              "bottom",
              "both"
            ]
          },
          "soldermaskDam": {
            "allOf": [
              {
                "$ref": "#/components/schemas/LengthWithUnit"
              }
            ]
          },
          "soldermaskClearance": {
            "allOf": [
              {
                "$ref": "#/components/schemas/LengthWithUnit"
              }
            ]
          },
          "ipc600Class": {
            "type": "string",
            "enum": [
              "ipcnone",
              "ipc1",
              "ipc2",
              "ipc2+",
              "ipc3",
              "ipc3a"
            ]
          },
          "eTest": {
            "type": "boolean"
          },
          "pressFit": {
            "type": "boolean"
          },
          "pressFitTechnology": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PressFitTechnology"
              }
            ]
          },
          "impedanceTested": {
            "type": "boolean"
          },
          "impedanceTolerance": {
            "type": "number"
          },
          "peelableMask": {
            "type": "string",
            "enum": [
              "none",
              "top",
              "bottom",
              "both"
            ]
          },
          "captonTape": {
            "type": "string",
            "enum": [
              "none",
              "top",
              "bottom",
              "both"
            ]
          },
          "reports": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "cross_section_report",
                "first_sample_test_report",
                "impedance_report",
                "coc_report"
              ]
            }
          },
          "itar": {
            "type": "boolean"
          },
          "carbonPrint": {
            "type": "boolean"
          },
          "carbonPrintSide": {
            "type": "string",
            "enum": [
              "none",
              "top",
              "bottom",
              "both"
            ]
          },
          "edgeMetalization": {
            "type": "boolean"
          },
          "flammabilityRating": {
            "type": "string",
            "enum": [
              "none",
              "V-0",
              "V-1",
              "V-2"
            ]
          },
          "ctiClass": {
            "type": "string",
            "enum": [
              "none",
              "i",
              "ii",
              "iiia",
              "iiib"
            ]
          },
          "plcClass": {
            "type": "string",
            "enum": [
              "none",
              "plc0",
              "plc1",
              "plc2",
              "plc3"
            ]
          },
          "maxXOutsAllowed": {
            "type": "number"
          },
          "halogenFree": {
            "type": "boolean"
          },
          "placementSide": {
            "type": "string",
            "enum": [
              "none",
              "top",
              "bottom",
              "both"
            ]
          },
          "ecobond": {
            "type": "boolean"
          },
          "numberOfLines": {
            "type": "number"
          },
          "halfCutPlatedVias": {
            "type": "boolean"
          }
        }
      },
      "PCBV2LayerStackPropertiesUpdate": {
        "type": "object",
        "properties": {
          "layerstackType": {
            "type": "string",
            "enum": [
              "rigid",
              "flex",
              "ims",
              "rigid-flex"
            ]
          },
          "layerstackThicknessTolerance": {
            "type": "number"
          },
          "ulLayerStack": {
            "type": "boolean"
          },
          "ulMarkingType": {
            "type": "string",
            "enum": [
              "no-marking",
              "default-marking",
              "custom-marking"
            ]
          },
          "layercount": {
            "type": "number"
          },
          "finalThickness": {
            "allOf": [
              {
                "$ref": "#/components/schemas/LengthWithUnit"
              }
            ]
          },
          "baseMaterial": {
            "type": "string",
            "enum": [
              "FR-2",
              "FR-3",
              "FR-4",
              "CEM1",
              "CEM2",
              "CEM3",
              "polyimide"
            ]
          },
          "outerCopperThickness": {
            "allOf": [
              {
                "$ref": "#/components/schemas/LengthWithUnit"
              }
            ]
          },
          "innerCopperThickness": {
            "allOf": [
              {
                "$ref": "#/components/schemas/LengthWithUnit"
              }
            ]
          },
          "minOuterLayerStructure": {
            "allOf": [
              {
                "$ref": "#/components/schemas/LengthWithUnit"
              }
            ]
          },
          "minInnerLayerStructure": {
            "allOf": [
              {
                "$ref": "#/components/schemas/LengthWithUnit"
              }
            ]
          },
          "rohsCompilant": {
            "type": "boolean"
          },
          "tgValue": {
            "allOf": [
              {
                "$ref": "#/components/schemas/TemperatureWithUnit"
              }
            ]
          },
          "numberOfPrepregs": {
            "type": "number"
          },
          "numberOfLaminationCycles": {
            "type": "number"
          }
        }
      },
      "PCBV2MechanicalPropertiesUpdate": {
        "type": "object",
        "properties": {
          "minViaDiameter": {
            "allOf": [
              {
                "$ref": "#/components/schemas/LengthWithUnit"
              }
            ]
          },
          "viaFilling": {
            "type": "string",
            "enum": [
              "none",
              "Ia",
              "Ib",
              "IIb",
              "IIIa",
              "IIIb",
              "IVa",
              "IVb",
              "V",
              "VI",
              "VII"
            ]
          },
          "blindVias": {
            "type": "boolean"
          },
          "blindViaCount": {
            "type": "integer",
            "format": "int32"
          },
          "buriedVias": {
            "type": "boolean"
          },
          "buriedViaCount": {
            "type": "integer",
            "format": "int32"
          },
          "chamfering": {
            "type": "string",
            "enum": [
              "none",
              "20-PCI",
              "45-ISA"
            ]
          },
          "outlineLength": {
            "allOf": [
              {
                "$ref": "#/components/schemas/LengthWithUnit"
              }
            ]
          },
          "aspectRatio": {
            "type": "number"
          },
          "totalDrillCount": {
            "type": "number"
          },
          "microVias": {
            "type": "boolean"
          },
          "phCount": {
            "type": "number"
          },
          "phToolCount": {
            "type": "number"
          },
          "nphCount": {
            "type": "number"
          },
          "phMinSize": {
            "allOf": [
              {
                "$ref": "#/components/schemas/LengthWithUnit"
              }
            ]
          },
          "nphMaxSize": {
            "allOf": [
              {
                "$ref": "#/components/schemas/LengthWithUnit"
              }
            ]
          },
          "phMaxSize": {
            "allOf": [
              {
                "$ref": "#/components/schemas/LengthWithUnit"
              }
            ]
          },
          "nphToolCount": {
            "type": "number"
          },
          "phAnnularRing": {
            "allOf": [
              {
                "$ref": "#/components/schemas/LengthWithUnit"
              }
            ]
          },
          "nphMinSize": {
            "allOf": [
              {
                "$ref": "#/components/schemas/LengthWithUnit"
              }
            ]
          },
          "phSurfaceArea": {
            "type": "number"
          }
        }
      },
      "PCBV2MiscellaneousPropertiesUpdate": {
        "type": "object",
        "properties": {
          "manufacturingInformation": {
            "type": "string"
          }
        }
      },
      "PCBV2MarkingsPropertiesUpdate": {
        "type": "object",
        "properties": {
          "dateCode": {
            "type": "string",
            "enum": [
              "none",
              "default",
              "custom"
            ]
          },
          "fabricatorLogo": {
            "type": "boolean"
          },
          "datamatrixCode": {
            "type": "boolean"
          }
        }
      },
      "NetTrace": {
        "required": [
          "elements",
          "id"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "elements": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "DrillCoverage": {
        "type": "object",
        "properties": {
          "soldermaskTop": {
            "type": "boolean"
          },
          "soldermaskBottom": {
            "type": "boolean"
          }
        }
      },
      "Tuple2": {
        "required": [
          "_1",
          "_2"
        ],
        "type": "object",
        "properties": {
          "_1": {
            "allOf": [
              {
                "$ref": "#/components/schemas/T1"
              }
            ]
          },
          "_2": {
            "allOf": [
              {
                "$ref": "#/components/schemas/T2"
              }
            ]
          }
        }
      },
      "UIStatus": {
        "required": [
          "status"
        ],
        "type": "object",
        "properties": {
          "status": {
            "type": "string"
          },
          "progress": {
            "type": "integer",
            "format": "int32"
          },
          "messages": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "File": {
        "required": [
          "created",
          "detectedTypes",
          "fType",
          "id",
          "lifecycles",
          "name"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string"
          },
          "subPath": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "fType": {
            "allOf": [
              {
                "$ref": "#/components/schemas/FileType"
              }
            ]
          },
          "detectedTypes": {
            "type": "array",
            "items": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/FileType"
                }
              ]
            }
          },
          "created": {
            "type": "string",
            "format": "date"
          },
          "preview": {
            "type": "string"
          },
          "lifecycles": {
            "type": "array",
            "items": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/FileLifecycleStage"
                }
              ]
            }
          },
          "hash": {
            "type": "string"
          }
        }
      },
      "SubStackDefinition": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "layers": {
            "type": "array",
            "items": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/LayerDefinition"
                }
              ]
            }
          },
          "stackType": {
            "type": "string"
          },
          "drills": {
            "type": "array",
            "items": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/DrillSupport"
                }
              ]
            }
          },
          "offset": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "LayerAPI": {
        "required": [
          "definition",
          "metaInfo"
        ],
        "type": "object",
        "properties": {
          "definition": {
            "allOf": [
              {
                "$ref": "#/components/schemas/LayerDefinition"
              }
            ]
          },
          "files": {
            "type": "array",
            "items": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/LayerFile"
                }
              ]
            }
          },
          "metaInfo": {
            "allOf": [
              {
                "$ref": "#/components/schemas/MetaInfo"
              }
            ]
          }
        }
      },
      "FileLifecycleStageName": {
        "type": "object"
      },
      "TemperatureWithUnit": {
        "required": [
          "unit",
          "value"
        ],
        "type": "object",
        "properties": {
          "value": {
            "type": "number"
          },
          "unit": {
            "type": "string",
            "enum": [
              "Celsius",
              "Fahrenheit"
            ]
          }
        }
      },
      "AreaWithUnit": {
        "required": [
          "unit",
          "value"
        ],
        "type": "object",
        "properties": {
          "value": {
            "type": "number"
          },
          "unit": {
            "type": "string",
            "enum": [
              "SquareMillimeter",
              "SquareInch"
            ]
          }
        }
      },
      "PressFitTechnology": {
        "required": [
          "value"
        ],
        "type": "object",
        "properties": {
          "value": {
            "type": "string"
          }
        }
      },
      "T1": {
        "type": "object"
      },
      "T2": {
        "type": "object"
      },
      "LayerDefinition": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "layerType": {
            "type": "string"
          },
          "meta": {
            "allOf": [
              {
                "$ref": "#/components/schemas/MetaInfo"
              }
            ]
          },
          "materialRef": {
            "type": "string"
          },
          "material": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Material"
              }
            ]
          }
        }
      },
      "DrillSupport": {
        "required": [
          "drillType",
          "from",
          "to"
        ],
        "type": "object",
        "properties": {
          "from": {
            "type": "integer",
            "format": "int32"
          },
          "to": {
            "type": "integer",
            "format": "int32"
          },
          "col": {
            "type": "integer",
            "format": "int32"
          },
          "drillType": {
            "type": "string"
          }
        }
      },
      "Function0": {
        "type": "object"
      },
      "Map": {
        "type": "object"
      },
      "Material": {
        "type": "object",
        "properties": {
          "team": {
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "meta": {
            "allOf": [
              {
                "$ref": "#/components/schemas/MetaInfo"
              }
            ]
          },
          "materialType": {
            "type": "string"
          }
        }
      },
      "FileUpload": {
        "type": "object"
      }
    },
    "securitySchemes": {
      "BearerAuth": {
        "bearerFormat": "JWT",
        "scheme": "bearer",
        "type": "http"
      }
    }
  }
}