{
  "openapi": "3.1.1",
  "info": {
    "title": "AMD Machines Agent Quote Request API",
    "version": "1.0.0",
    "summary": "Scope an automation project and request a quote from AMD Machines. Returns no prices or quotes.",
    "description": "- This service requests a quote. It returns no prices or quotes; AMD Machines replies by email.\n- Ask the export-control question first. On yes, maybe or unknown, send only the product id, the contact fields and that answer (and how and in which language to reply).\n- Show the human the brief from check and get their approval before submit.\n- Say the request was sent only when submit returns forwarded: true and an AGT- reference id.\n- If you cannot send POST requests, read https://amdmachines.com/agents/questions.txt, run the interview and give the human the finished request text to paste into https://amdmachines.com/contact/ or to email to sales@amdmachines.com.\n- Send a descriptive User-Agent, for example ExampleAgent/1.0.\n- Files cannot be uploaded here; they follow by email after AMD replies.\n- Rate limits are best-effort: about 120 calls a minute per network, and 10 submits an hour per network and email address (30 per network). On 429, wait for Retry-After or use https://amdmachines.com/contact/.",
    "contact": {
      "name": "AMD Machines",
      "url": "https://amdmachines.com/agents/",
      "email": "sales@amdmachines.com"
    }
  },
  "servers": [
    {
      "url": "https://amdmachines.com"
    }
  ],
  "externalDocs": {
    "url": "https://amdmachines.com/agents/"
  },
  "x-amd-versions": {
    "questionnaire": "2026-11-02.1",
    "catalog": "3fd91e481142"
  },
  "paths": {
    "/api/agent-quote/v1/": {
      "get": {
        "operationId": "getApiIndex",
        "summary": "Start here: endpoints, documents, rules and published facts",
        "description": "The endpoint URLs, the documents for agents, the rules every agent follows, and AMD Machines' published facts on replies, next steps, lead time, files and ITAR. Returns no prices or quotes.",
        "responses": {
          "200": {
            "description": "The API index.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "ok"
                  ],
                  "properties": {
                    "ok": {
                      "type": "boolean"
                    },
                    "api_version": {
                      "type": "string"
                    },
                    "service": {
                      "type": "string"
                    },
                    "endpoints": {
                      "type": "object",
                      "additionalProperties": {
                        "type": "string"
                      }
                    },
                    "docs": {
                      "type": "object",
                      "additionalProperties": {
                        "type": "string"
                      }
                    },
                    "rules": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "facts": {
                      "type": "object",
                      "additionalProperties": {
                        "$ref": "#/components/schemas/Fact"
                      }
                    },
                    "error": {
                      "type": "object"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "https_required: Use https.",
            "x-amd-error-codes": [
              "https_required"
            ],
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "rate_limited: Too many requests from this network. Wait for Retry-After, or use https://amdmachines.com/contact/.",
            "x-amd-error-codes": [
              "rate_limited"
            ],
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before trying again.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          },
          "500": {
            "description": "internal_error: Something went wrong. Please try again, or use https://amdmachines.com/contact/.",
            "x-amd-error-codes": [
              "internal_error"
            ],
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/agent-quote/v1/health": {
      "get": {
        "operationId": "getHealth",
        "summary": "Check that the service is up",
        "description": "Liveness and versions: API, questionnaire and catalog versions, the number of products, whether forwarding is switched on (only amdmachines.com forwards; other hosts answer dry runs only), and the MCP protocol versions. Calls nothing else.",
        "responses": {
          "200": {
            "description": "The service is up.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Health"
                }
              }
            }
          },
          "400": {
            "description": "https_required: Use https.",
            "x-amd-error-codes": [
              "https_required"
            ],
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "rate_limited: Too many requests from this network. Wait for Retry-After, or use https://amdmachines.com/contact/.",
            "x-amd-error-codes": [
              "rate_limited"
            ],
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before trying again.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          },
          "500": {
            "description": "internal_error: Something went wrong. Please try again, or use https://amdmachines.com/contact/.",
            "x-amd-error-codes": [
              "internal_error"
            ],
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/agent-quote/v1/products": {
      "get": {
        "operationId": "listProducts",
        "summary": "List the products an AI agent can scope with AMD Machines",
        "description": "Every automation solution and application on amdmachines.com, plus build-to-print machines and machined parts, with the product ids that getQuestions takes. Filter by offering. No prices.",
        "x-amd-mcp-tool": "list_products",
        "parameters": [
          {
            "name": "offering",
            "in": "query",
            "required": false,
            "description": "Optional: custom_machine, build_to_print_machine or machined_parts. Default: the product's first suggested offering. Any offering may be combined with any product.",
            "schema": {
              "type": "string",
              "enum": [
                "custom_machine",
                "build_to_print_machine",
                "machined_parts"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The offerings and the products (components.schemas.Product).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductsResult"
                }
              }
            }
          },
          "400": {
            "description": "invalid_offering: Unknown offering. Use custom_machine, build_to_print_machine or machined_parts. https_required: Use https.",
            "x-amd-error-codes": [
              "invalid_offering",
              "https_required"
            ],
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "rate_limited: Too many requests from this network. Wait for Retry-After, or use https://amdmachines.com/contact/.",
            "x-amd-error-codes": [
              "rate_limited"
            ],
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before trying again.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          },
          "500": {
            "description": "internal_error: Something went wrong. Please try again, or use https://amdmachines.com/contact/.",
            "x-amd-error-codes": [
              "internal_error"
            ],
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/agent-quote/v1/questions": {
      "get": {
        "operationId": "getQuestions",
        "summary": "Get AMD Machines' questions for one product",
        "description": "The questions in interview batches with the export-control question first, the required and high-value ids, and the inputs for a budgetary quote. Use mode=quick for a first pass. Every non-required question also accepts \"unknown\".",
        "x-amd-mcp-tool": "get_quote_questions",
        "parameters": [
          {
            "name": "product",
            "in": "query",
            "required": true,
            "description": "A product id from listProducts, for example robotic-welding-cells.",
            "schema": {
              "type": "string",
              "enum": [
                "assembly",
                "bin-picking",
                "custom-automation",
                "deburring",
                "dispensing",
                "grinding-polishing",
                "heat-treatment-automation",
                "laser-applications",
                "machine-tending",
                "machine-vision",
                "marking-traceability",
                "material-handling",
                "materials-testing-automation",
                "packaging",
                "palletizing",
                "robotic-cells",
                "screwdriving",
                "servo-pressing",
                "test-systems",
                "thermal-processing",
                "vacuum-automation",
                "welding",
                "automated-dispensing-systems",
                "automated-functional-test-stations",
                "automated-labeling-stations",
                "automated-leak-test-stations",
                "automated-pick-and-place-systems",
                "custom-assembly-machines",
                "end-of-line-test-systems",
                "flexible-feeding-systems",
                "machine-vision-inspection-stations",
                "part-marking-traceability-systems",
                "robotic-bin-picking-systems",
                "robotic-deburring-grinding-cells",
                "robotic-machine-tending-cells",
                "robotic-palletizing-cells",
                "robotic-polishing-buffing-cells",
                "robotic-screwdriving-systems",
                "robotic-welding-cells",
                "servo-press-assembly-stations",
                "laboratory-parts",
                "machined-parts",
                "tooling"
              ]
            }
          },
          {
            "name": "offering",
            "in": "query",
            "required": false,
            "description": "Optional: custom_machine, build_to_print_machine or machined_parts. Default: the product's first suggested offering. Any offering may be combined with any product.",
            "schema": {
              "type": "string",
              "enum": [
                "custom_machine",
                "build_to_print_machine",
                "machined_parts"
              ]
            }
          },
          {
            "name": "mode",
            "in": "query",
            "required": false,
            "description": "full (default) or quick: only the required and high-value questions, for a first pass.",
            "schema": {
              "type": "string",
              "enum": [
                "full",
                "quick"
              ],
              "default": "full"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The product, its questions (components.schemas.PublicQuestion) and interview batches.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QuestionsResult"
                }
              }
            }
          },
          "400": {
            "description": "product_required: Give a product id from the products list. unknown_product: Unknown product id. See did_you_mean, or the products list. invalid_offering: Unknown offering. Use custom_machine, build_to_print_machine or machined_parts. invalid_mode: mode must be full or quick. https_required: Use https.",
            "x-amd-error-codes": [
              "product_required",
              "unknown_product",
              "invalid_offering",
              "invalid_mode",
              "https_required"
            ],
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "rate_limited: Too many requests from this network. Wait for Retry-After, or use https://amdmachines.com/contact/.",
            "x-amd-error-codes": [
              "rate_limited"
            ],
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before trying again.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          },
          "500": {
            "description": "internal_error: Something went wrong. Please try again, or use https://amdmachines.com/contact/.",
            "x-amd-error-codes": [
              "internal_error"
            ],
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/agent-quote/v1/recommendations": {
      "get": {
        "operationId": "getRecommendations",
        "summary": "Get AMD Machines' published recommendations",
        "description": "Published recommendations for a product, or for one question, to offer the human when they are unsure or have no preference. Offer one only when its when condition holds. They are not commitments, prices or quotes.",
        "x-amd-mcp-tool": "get_amd_recommendations",
        "parameters": [
          {
            "name": "product",
            "in": "query",
            "required": true,
            "description": "A product id from listProducts, for example robotic-welding-cells.",
            "schema": {
              "type": "string",
              "enum": [
                "assembly",
                "bin-picking",
                "custom-automation",
                "deburring",
                "dispensing",
                "grinding-polishing",
                "heat-treatment-automation",
                "laser-applications",
                "machine-tending",
                "machine-vision",
                "marking-traceability",
                "material-handling",
                "materials-testing-automation",
                "packaging",
                "palletizing",
                "robotic-cells",
                "screwdriving",
                "servo-pressing",
                "test-systems",
                "thermal-processing",
                "vacuum-automation",
                "welding",
                "automated-dispensing-systems",
                "automated-functional-test-stations",
                "automated-labeling-stations",
                "automated-leak-test-stations",
                "automated-pick-and-place-systems",
                "custom-assembly-machines",
                "end-of-line-test-systems",
                "flexible-feeding-systems",
                "machine-vision-inspection-stations",
                "part-marking-traceability-systems",
                "robotic-bin-picking-systems",
                "robotic-deburring-grinding-cells",
                "robotic-machine-tending-cells",
                "robotic-palletizing-cells",
                "robotic-polishing-buffing-cells",
                "robotic-screwdriving-systems",
                "robotic-welding-cells",
                "servo-press-assembly-stations",
                "laboratory-parts",
                "machined-parts",
                "tooling"
              ]
            }
          },
          {
            "name": "offering",
            "in": "query",
            "required": false,
            "description": "Optional: custom_machine, build_to_print_machine or machined_parts. Default: the product's first suggested offering. Any offering may be combined with any product.",
            "schema": {
              "type": "string",
              "enum": [
                "custom_machine",
                "build_to_print_machine",
                "machined_parts"
              ]
            }
          },
          {
            "name": "question",
            "in": "query",
            "required": false,
            "description": "Optional question id, for example equipment.plc: only the recommendations for that question.",
            "schema": {
              "type": "string",
              "pattern": "^[a-z][a-z0-9_]*\\.[a-z0-9_]+$"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The recommendations (components.schemas.Recommendation).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RecommendationsResult"
                }
              }
            }
          },
          "400": {
            "description": "product_required: Give a product id from the products list. unknown_product: Unknown product id. See did_you_mean, or the products list. invalid_offering: Unknown offering. Use custom_machine, build_to_print_machine or machined_parts. unknown_question: Unknown question id for this product. https_required: Use https.",
            "x-amd-error-codes": [
              "product_required",
              "unknown_product",
              "invalid_offering",
              "unknown_question",
              "https_required"
            ],
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "rate_limited: Too many requests from this network. Wait for Retry-After, or use https://amdmachines.com/contact/.",
            "x-amd-error-codes": [
              "rate_limited"
            ],
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before trying again.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          },
          "500": {
            "description": "internal_error: Something went wrong. Please try again, or use https://amdmachines.com/contact/.",
            "x-amd-error-codes": [
              "internal_error"
            ],
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/agent-quote/v1/check": {
      "post": {
        "operationId": "checkQuoteRequest",
        "summary": "Check a draft quote request (sends nothing)",
        "description": "Validates a draft and returns errors, ready_to_submit, completeness, missing answers, next_batch (the next questions to ask), recommendations, budgetary readiness and the masked brief AMD would receive (brief_preview.masking says exactly what is masked). Show the brief to the human.",
        "x-amd-mcp-tool": "check_quote_request",
        "x-openai-isConsequential": false,
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/QuoteRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The check report, also when the draft is not valid yet.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CheckResult"
                }
              }
            }
          },
          "400": {
            "description": "invalid_json: The body is not valid JSON. invalid_body: The body must be a JSON object. too_deep: The request is nested too deeply or has too many items. https_required: Use https.",
            "x-amd-error-codes": [
              "invalid_json",
              "invalid_body",
              "too_deep",
              "https_required"
            ],
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "413": {
            "description": "body_too_large: The request is too large.",
            "x-amd-error-codes": [
              "body_too_large"
            ],
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "415": {
            "description": "unsupported_media_type: Send Content-Type: application/json.",
            "x-amd-error-codes": [
              "unsupported_media_type"
            ],
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "rate_limited: Too many requests from this network. Wait for Retry-After, or use https://amdmachines.com/contact/.",
            "x-amd-error-codes": [
              "rate_limited"
            ],
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before trying again.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          },
          "500": {
            "description": "internal_error: Something went wrong. Please try again, or use https://amdmachines.com/contact/.",
            "x-amd-error-codes": [
              "internal_error"
            ],
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/agent-quote/v1/submit": {
      "post": {
        "operationId": "submitQuoteRequest",
        "summary": "Submit a quote request to AMD Machines",
        "description": "Emails the request to AMD's sales team. Call it only after checkQuoteRequest reports ready_to_submit and the human approved the brief; set consent.contact_ok to true then. Sent only when forwarded is true with an AGT- id. dry_run: true sends nothing.",
        "x-amd-mcp-tool": "submit_quote_request",
        "x-openai-isConsequential": true,
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SubmitRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Forwarded, a duplicate of a request already sent, or a dry run.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SubmitResult"
                }
              }
            }
          },
          "400": {
            "description": "invalid_json: The body is not valid JSON. invalid_body: The body must be a JSON object. too_deep: The request is nested too deeply or has too many items. invalid_email: The email address was not accepted. Confirm it with the buyer. email_blocked: This email address cannot be used here. Ask the buyer for another address, or have them email sales@amdmachines.com. https_required: Use https.",
            "x-amd-error-codes": [
              "invalid_json",
              "invalid_body",
              "too_deep",
              "invalid_email",
              "email_blocked",
              "https_required"
            ],
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "origin_not_allowed: Call this from a server or through MCP, not from another website. forwarding_disabled: This host does not send requests. Nothing was sent. Use https://amdmachines.com/api/agent-quote/v1/submit.",
            "x-amd-error-codes": [
              "origin_not_allowed",
              "forwarding_disabled"
            ],
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "413": {
            "description": "body_too_large: The request is too large.",
            "x-amd-error-codes": [
              "body_too_large"
            ],
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "415": {
            "description": "unsupported_media_type: Send Content-Type: application/json.",
            "x-amd-error-codes": [
              "unsupported_media_type"
            ],
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "validation_failed: Some fields need attention. Fix the fields listed in details and send again.",
            "x-amd-error-codes": [
              "validation_failed"
            ],
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "rate_limited: Too many requests from this network. Wait for Retry-After, or use https://amdmachines.com/contact/.",
            "x-amd-error-codes": [
              "rate_limited"
            ],
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before trying again.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          },
          "500": {
            "description": "internal_error: Something went wrong. Please try again, or use https://amdmachines.com/contact/.",
            "x-amd-error-codes": [
              "internal_error"
            ],
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "502": {
            "description": "forwarding_rejected: The request could not be delivered. Nothing more can be done here; use the contact_fallback.",
            "x-amd-error-codes": [
              "forwarding_rejected"
            ],
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "upstream_unavailable: AMD's request system did not confirm receipt, so the request may not have arrived. Retry once in a minute with the same idempotency_key (AMD Machines sees the same key on a repeated request), or use the contact_fallback. temporarily_unavailable: Requests cannot be sent right now. Nothing was sent. Use the contact_fallback.",
            "x-amd-error-codes": [
              "upstream_unavailable",
              "temporarily_unavailable"
            ],
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before trying again.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "QuoteRequest": {
        "type": "object",
        "properties": {
          "product": {
            "type": "string",
            "pattern": "^[a-z0-9-]{2,64}$",
            "description": "Product id from list_products.",
            "enum": [
              "assembly",
              "bin-picking",
              "custom-automation",
              "deburring",
              "dispensing",
              "grinding-polishing",
              "heat-treatment-automation",
              "laser-applications",
              "machine-tending",
              "machine-vision",
              "marking-traceability",
              "material-handling",
              "materials-testing-automation",
              "packaging",
              "palletizing",
              "robotic-cells",
              "screwdriving",
              "servo-pressing",
              "test-systems",
              "thermal-processing",
              "vacuum-automation",
              "welding",
              "automated-dispensing-systems",
              "automated-functional-test-stations",
              "automated-labeling-stations",
              "automated-leak-test-stations",
              "automated-pick-and-place-systems",
              "custom-assembly-machines",
              "end-of-line-test-systems",
              "flexible-feeding-systems",
              "machine-vision-inspection-stations",
              "part-marking-traceability-systems",
              "robotic-bin-picking-systems",
              "robotic-deburring-grinding-cells",
              "robotic-machine-tending-cells",
              "robotic-palletizing-cells",
              "robotic-polishing-buffing-cells",
              "robotic-screwdriving-systems",
              "robotic-welding-cells",
              "servo-press-assembly-stations",
              "laboratory-parts",
              "machined-parts",
              "tooling"
            ]
          },
          "offering": {
            "type": "string",
            "enum": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ],
            "description": "Optional; default: the product's first suggested offering. Any offering may be combined with any product."
          },
          "contact": {
            "type": "object",
            "properties": {
              "first_name": {
                "type": "string",
                "maxLength": 100
              },
              "last_name": {
                "type": "string",
                "maxLength": 100
              },
              "email": {
                "type": "string",
                "maxLength": 254
              },
              "company": {
                "type": "string",
                "maxLength": 200
              },
              "phone": {
                "type": "string",
                "maxLength": 40
              },
              "job_title": {
                "type": "string",
                "maxLength": 120
              },
              "company_website": {
                "type": "string",
                "maxLength": 200
              }
            }
          },
          "consent": {
            "type": "object",
            "properties": {
              "contact_ok": {
                "type": "boolean",
                "description": "True only if the person reviewed this request and agreed that AMD Machines may contact them."
              }
            }
          },
          "answers": {
            "type": "object",
            "maxProperties": 150,
            "description": "Question id -> answer. Ids, types and allowed values come from get_quote_questions (HTTP: GET /questions; the OpenAPI document also lists every question in components.schemas.Answers). Use \"unknown\" when the human does not know; use \"no_preference\" where the question accepts it.",
            "additionalProperties": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 4000
                },
                {
                  "type": "number"
                },
                {
                  "type": "boolean"
                },
                {
                  "type": "array",
                  "maxItems": 20,
                  "items": {
                    "type": "string",
                    "maxLength": 64
                  }
                }
              ]
            }
          },
          "accepted_recommendations": {
            "type": "array",
            "maxItems": 30,
            "items": {
              "type": "string",
              "maxLength": 64
            }
          },
          "agent": {
            "type": "object",
            "properties": {
              "name": {
                "type": "string",
                "maxLength": 100
              },
              "operator": {
                "type": "string",
                "maxLength": 100
              },
              "version": {
                "type": "string",
                "maxLength": 50
              }
            }
          },
          "idempotency_key": {
            "type": "string",
            "pattern": "^[A-Za-z0-9._:-]{8,64}$",
            "description": "Create a new random key (8 to 64 letters, digits or . _ : -; a UUID works) for each new or corrected request, and reuse it only to retry that same request."
          },
          "supersedes": {
            "type": "string",
            "pattern": "^AGT-[0-9A-HJKMNP-TV-Z]{5}-[0-9A-HJKMNP-TV-Z]{5}$",
            "description": "The reference id of an earlier request that this one corrects."
          },
          "dry_run": {
            "type": "boolean",
            "description": "submit only: true validates and builds the message without sending anything."
          }
        }
      },
      "SubmitRequest": {
        "type": "object",
        "properties": {
          "product": {
            "type": "string",
            "pattern": "^[a-z0-9-]{2,64}$",
            "description": "Product id from list_products.",
            "enum": [
              "assembly",
              "bin-picking",
              "custom-automation",
              "deburring",
              "dispensing",
              "grinding-polishing",
              "heat-treatment-automation",
              "laser-applications",
              "machine-tending",
              "machine-vision",
              "marking-traceability",
              "material-handling",
              "materials-testing-automation",
              "packaging",
              "palletizing",
              "robotic-cells",
              "screwdriving",
              "servo-pressing",
              "test-systems",
              "thermal-processing",
              "vacuum-automation",
              "welding",
              "automated-dispensing-systems",
              "automated-functional-test-stations",
              "automated-labeling-stations",
              "automated-leak-test-stations",
              "automated-pick-and-place-systems",
              "custom-assembly-machines",
              "end-of-line-test-systems",
              "flexible-feeding-systems",
              "machine-vision-inspection-stations",
              "part-marking-traceability-systems",
              "robotic-bin-picking-systems",
              "robotic-deburring-grinding-cells",
              "robotic-machine-tending-cells",
              "robotic-palletizing-cells",
              "robotic-polishing-buffing-cells",
              "robotic-screwdriving-systems",
              "robotic-welding-cells",
              "servo-press-assembly-stations",
              "laboratory-parts",
              "machined-parts",
              "tooling"
            ]
          },
          "offering": {
            "type": "string",
            "enum": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ],
            "description": "Optional; default: the product's first suggested offering. Any offering may be combined with any product."
          },
          "contact": {
            "type": "object",
            "properties": {
              "first_name": {
                "type": "string",
                "maxLength": 100
              },
              "last_name": {
                "type": "string",
                "maxLength": 100
              },
              "email": {
                "type": "string",
                "maxLength": 254
              },
              "company": {
                "type": "string",
                "maxLength": 200
              },
              "phone": {
                "type": "string",
                "maxLength": 40
              },
              "job_title": {
                "type": "string",
                "maxLength": 120
              },
              "company_website": {
                "type": "string",
                "maxLength": 200
              }
            }
          },
          "consent": {
            "type": "object",
            "properties": {
              "contact_ok": {
                "type": "boolean",
                "description": "True only if the person reviewed this request and agreed that AMD Machines may contact them."
              }
            }
          },
          "answers": {
            "type": "object",
            "maxProperties": 150,
            "description": "Question id -> answer. Ids, types and allowed values come from get_quote_questions (HTTP: GET /questions; the OpenAPI document also lists every question in components.schemas.Answers). Use \"unknown\" when the human does not know; use \"no_preference\" where the question accepts it.",
            "additionalProperties": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 4000
                },
                {
                  "type": "number"
                },
                {
                  "type": "boolean"
                },
                {
                  "type": "array",
                  "maxItems": 20,
                  "items": {
                    "type": "string",
                    "maxLength": 64
                  }
                }
              ]
            }
          },
          "accepted_recommendations": {
            "type": "array",
            "maxItems": 30,
            "items": {
              "type": "string",
              "maxLength": 64
            }
          },
          "agent": {
            "type": "object",
            "properties": {
              "name": {
                "type": "string",
                "maxLength": 100
              },
              "operator": {
                "type": "string",
                "maxLength": 100
              },
              "version": {
                "type": "string",
                "maxLength": 50
              }
            }
          },
          "idempotency_key": {
            "type": "string",
            "pattern": "^[A-Za-z0-9._:-]{8,64}$",
            "description": "Create a new random key (8 to 64 letters, digits or . _ : -; a UUID works) for each new or corrected request, and reuse it only to retry that same request."
          },
          "supersedes": {
            "type": "string",
            "pattern": "^AGT-[0-9A-HJKMNP-TV-Z]{5}-[0-9A-HJKMNP-TV-Z]{5}$",
            "description": "The reference id of an earlier request that this one corrects."
          },
          "dry_run": {
            "type": "boolean",
            "description": "submit only: true validates and builds the message without sending anything."
          }
        },
        "required": [
          "product",
          "contact",
          "consent",
          "answers"
        ]
      },
      "Answers": {
        "type": "object",
        "description": "Every question id a QuoteRequest answers object can hold, with its type and every value id; a value listed in x-amd-value-offerings is accepted only for those offerings (getQuestions lists a branch's own values). No operation uses it, so importers keep QuoteRequest.answers compact; getQuestions gives one product's questions and interview order.",
        "properties": {
          "compliance.export_control": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "no",
                  "yes_or_maybe"
                ]
              },
              {
                "type": "string",
                "enum": [
                  "unknown"
                ]
              }
            ],
            "description": "Does the project involve ITAR-controlled, export-controlled, classified or CUI information, or might it? Ask this before any technical question.",
            "x-amd-label": "Export control",
            "x-amd-priority": "high",
            "x-amd-section": "compliance",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "project.description": {
            "type": "string",
            "maxLength": 4000,
            "description": "Describe the project in the buyer's words: the part or product, what the machine (or part) must do, and what should improve.",
            "x-amd-label": "Description",
            "x-amd-priority": "required",
            "x-amd-section": "project",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "project.problem_today": {
            "type": "string",
            "maxLength": 1500,
            "description": "What is wrong with the current process: bottleneck, scrap or rework, safety, labor, quality escapes?",
            "x-amd-label": "Problem today",
            "x-amd-priority": "high",
            "x-amd-section": "project",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine"
            ]
          },
          "project.current_state": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "manual",
                  "semi_automatic",
                  "existing_machine",
                  "new_process"
                ]
              },
              {
                "type": "string",
                "enum": [
                  "unknown"
                ]
              }
            ],
            "description": "How is this done today?",
            "x-amd-label": "Today",
            "x-amd-priority": "high",
            "x-amd-section": "project",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine"
            ]
          },
          "project.existing_equipment": {
            "type": "string",
            "maxLength": 1000,
            "description": "For the machines or cell involved today (robot, machines, controls): make, model, and what must change.",
            "x-amd-label": "Existing equipment",
            "x-amd-priority": "normal",
            "x-amd-section": "project",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine"
            ]
          },
          "project.automation_level": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "operator_loaded",
                  "fully_automatic"
                ]
              },
              {
                "type": "string",
                "enum": [
                  "unknown",
                  "no_preference"
                ]
              }
            ],
            "description": "Should an operator load and unload while the machine does the process, or should parts arrive and leave automatically?",
            "x-amd-label": "Automation level",
            "x-amd-priority": "high",
            "x-amd-section": "project",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine"
            ]
          },
          "project.robot": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "yes",
                  "no"
                ]
              },
              {
                "type": "string",
                "enum": [
                  "unknown",
                  "no_preference"
                ]
              }
            ],
            "description": "Will the machine use a robot or a cobot? AMD can decide.",
            "x-amd-label": "Robot",
            "x-amd-priority": "normal",
            "x-amd-section": "project",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine"
            ]
          },
          "project.industry": {
            "type": "string",
            "maxLength": 100,
            "description": "Industry or end market of the parts (for example automotive, appliances, heavy equipment, electronics, research laboratory).",
            "x-amd-label": "Industry",
            "x-amd-priority": "normal",
            "x-amd-section": "project",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "project.scope_notes": {
            "type": "string",
            "maxLength": 1500,
            "description": "Anything else in or out of scope: equipment before or after the machine, conveyors, guarding, data, software.",
            "x-amd-label": "Scope notes",
            "x-amd-priority": "normal",
            "x-amd-section": "project",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine"
            ]
          },
          "project.other_quotes": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "yes",
                  "no"
                ]
              },
              {
                "type": "string",
                "enum": [
                  "unknown"
                ]
              }
            ],
            "description": "Is the buyer also getting quotes from other builders?",
            "x-amd-label": "Other quotes",
            "x-amd-priority": "normal",
            "x-amd-section": "project",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "parts.part_description": {
            "type": "string",
            "maxLength": 300,
            "description": "What part or product family is this for: the part the machine handles, or the part to be made? A generic name is fine if it is confidential.",
            "x-amd-label": "Part",
            "x-amd-priority": "high",
            "x-amd-section": "parts",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "parts.material": {
            "type": "string",
            "maxLength": 200,
            "description": "Part material and grade (for example 6061-T6 aluminum, 304 stainless, glass-filled nylon).",
            "x-amd-label": "Material",
            "x-amd-priority": "normal",
            "x-amd-section": "parts",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine"
            ]
          },
          "parts.size_range": {
            "type": "string",
            "maxLength": 200,
            "description": "Size of the smallest and largest part (L x W x H), in inches, or mm if the drawings are metric.",
            "x-amd-label": "Size range",
            "x-amd-priority": "high",
            "x-amd-section": "parts",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "parts.max_weight_lb": {
            "anyOf": [
              {
                "type": "number",
                "minimum": 0.001,
                "maximum": 100000
              },
              {
                "type": "string",
                "enum": [
                  "unknown"
                ]
              }
            ],
            "description": "Weight of the heaviest part, in pounds (1 kg = 2.2 lb).",
            "x-amd-label": "Heaviest part (lb)",
            "x-amd-priority": "normal",
            "x-amd-section": "parts",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine"
            ]
          },
          "parts.variant_count": {
            "anyOf": [
              {
                "type": "integer",
                "minimum": 1,
                "maximum": 10000
              },
              {
                "type": "string",
                "enum": [
                  "unknown"
                ]
              }
            ],
            "description": "How many part numbers, models or variants must the machine run?",
            "x-amd-label": "Variants",
            "x-amd-priority": "high",
            "x-amd-section": "parts",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine"
            ]
          },
          "parts.future_variants": {
            "type": "string",
            "maxLength": 300,
            "description": "Variants or new models planned for this machine later (the product roadmap), if known.",
            "x-amd-label": "Future variants",
            "x-amd-priority": "normal",
            "x-amd-section": "parts",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine"
            ]
          },
          "parts.changeover": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "rarely",
                  "weekly",
                  "daily",
                  "per_shift",
                  "mixed"
                ]
              },
              {
                "type": "string",
                "enum": [
                  "unknown"
                ]
              }
            ],
            "description": "How often does the model change?",
            "x-amd-label": "Changeover",
            "x-amd-priority": "normal",
            "x-amd-section": "parts",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine"
            ]
          },
          "parts.critical_features": {
            "type": "string",
            "maxLength": 1000,
            "description": "Critical dimensions, tolerances, or surfaces that must not be damaged or touched.",
            "x-amd-label": "Critical features",
            "x-amd-priority": "normal",
            "x-amd-section": "parts",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine"
            ]
          },
          "parts.files_available": {
            "anyOf": [
              {
                "type": "array",
                "items": {
                  "type": "string",
                  "enum": [
                    "cad_3d",
                    "drawings_2d",
                    "photos",
                    "video",
                    "samples",
                    "specifications",
                    "none_yet"
                  ]
                },
                "uniqueItems": true,
                "maxItems": 7
              },
              {
                "type": "string",
                "enum": [
                  "unknown"
                ]
              }
            ],
            "description": "Which of these can the buyer send after AMD replies?",
            "x-amd-label": "Files",
            "x-amd-priority": "high",
            "x-amd-section": "files",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "files.notes": {
            "type": "string",
            "maxLength": 300,
            "description": "Anything about the files: revision, format, confidentiality.",
            "x-amd-label": "File notes",
            "x-amd-priority": "normal",
            "x-amd-section": "files",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "production.annual_volume": {
            "anyOf": [
              {
                "type": "integer",
                "minimum": 1,
                "maximum": 1000000000
              },
              {
                "type": "string",
                "enum": [
                  "unknown"
                ]
              }
            ],
            "description": "About how many parts per year, all variants together?",
            "x-amd-label": "Annual volume",
            "x-amd-priority": "high",
            "x-amd-section": "production",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine"
            ]
          },
          "production.cycle_time_s": {
            "anyOf": [
              {
                "type": "number",
                "minimum": 0.1,
                "maximum": 86400
              },
              {
                "type": "string",
                "enum": [
                  "unknown"
                ]
              }
            ],
            "description": "Target cycle time per part, in seconds.",
            "x-amd-label": "Cycle time (s)",
            "x-amd-priority": "normal",
            "x-amd-section": "production",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine"
            ]
          },
          "production.parts_per_hour": {
            "anyOf": [
              {
                "type": "number",
                "minimum": 0.01,
                "maximum": 1000000
              },
              {
                "type": "string",
                "enum": [
                  "unknown"
                ]
              }
            ],
            "description": "Or the target rate in parts per hour.",
            "x-amd-label": "Parts per hour",
            "x-amd-priority": "normal",
            "x-amd-section": "production",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine"
            ]
          },
          "production.line_takt_s": {
            "anyOf": [
              {
                "type": "number",
                "minimum": 0.1,
                "maximum": 86400
              },
              {
                "type": "string",
                "enum": [
                  "unknown"
                ]
              }
            ],
            "description": "If the machine feeds an existing line: the line takt time, in seconds.",
            "x-amd-label": "Line takt (s)",
            "x-amd-priority": "normal",
            "x-amd-section": "production",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine"
            ]
          },
          "production.slowest_operation": {
            "type": "string",
            "maxLength": 300,
            "description": "The slowest operation (a test, cure, press or joining time) and its duration in seconds, if known.",
            "x-amd-label": "Slowest operation",
            "x-amd-priority": "normal",
            "x-amd-section": "production",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine"
            ]
          },
          "production.shifts_per_day": {
            "anyOf": [
              {
                "type": "integer",
                "minimum": 1,
                "maximum": 3
              },
              {
                "type": "string",
                "enum": [
                  "unknown"
                ]
              }
            ],
            "description": "Shifts per day the machine will run.",
            "x-amd-label": "Shifts",
            "x-amd-priority": "high",
            "x-amd-section": "production",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine"
            ]
          },
          "production.hours_per_shift": {
            "anyOf": [
              {
                "type": "number",
                "minimum": 1,
                "maximum": 12
              },
              {
                "type": "string",
                "enum": [
                  "unknown"
                ]
              }
            ],
            "description": "Hours per shift.",
            "x-amd-label": "Hours per shift",
            "x-amd-priority": "normal",
            "x-amd-section": "production",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine"
            ]
          },
          "production.days_per_week": {
            "anyOf": [
              {
                "type": "integer",
                "minimum": 1,
                "maximum": 7
              },
              {
                "type": "string",
                "enum": [
                  "unknown"
                ]
              }
            ],
            "description": "Working days per week.",
            "x-amd-label": "Days per week",
            "x-amd-priority": "normal",
            "x-amd-section": "production",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine"
            ]
          },
          "production.operators": {
            "anyOf": [
              {
                "type": "integer",
                "minimum": 0,
                "maximum": 20
              },
              {
                "type": "string",
                "enum": [
                  "unknown"
                ]
              }
            ],
            "description": "Operators available per shift to run the machine (0 if none).",
            "x-amd-label": "Operators",
            "x-amd-priority": "normal",
            "x-amd-section": "production",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine"
            ]
          },
          "production.loading": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "by_hand",
                  "conveyor",
                  "bins",
                  "trays",
                  "other_machine"
                ]
              },
              {
                "type": "string",
                "enum": [
                  "unknown",
                  "no_preference"
                ]
              }
            ],
            "description": "How do parts reach the machine?",
            "x-amd-label": "Loading",
            "x-amd-priority": "normal",
            "x-amd-section": "production",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine"
            ]
          },
          "production.in_line": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "standalone",
                  "in_line"
                ]
              },
              {
                "type": "string",
                "enum": [
                  "unknown"
                ]
              }
            ],
            "description": "Does the machine stand alone or sit in a line?",
            "x-amd-label": "In line",
            "x-amd-priority": "normal",
            "x-amd-section": "production",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine"
            ]
          },
          "production.line_interface": {
            "type": "string",
            "maxLength": 300,
            "description": "Equipment before and after the machine (conveyors, pallets or carriers, transfer height) and the line signals it must exchange.",
            "x-amd-label": "Line interface",
            "x-amd-priority": "normal",
            "x-amd-section": "production",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine"
            ]
          },
          "production.notes": {
            "type": "string",
            "maxLength": 300,
            "description": "Ramp-up, peaks or expected growth.",
            "x-amd-label": "Volume notes",
            "x-amd-priority": "normal",
            "x-amd-section": "production",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine"
            ]
          },
          "quality.requirements": {
            "type": "string",
            "maxLength": 1500,
            "description": "Inspection points, tolerances, torque, finish, leak rate or other acceptance specs.",
            "x-amd-label": "Quality requirements",
            "x-amd-priority": "high",
            "x-amd-section": "quality",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine"
            ]
          },
          "quality.traceability": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "none",
                  "serial",
                  "lot",
                  "serial_and_components",
                  "mes_erp"
                ]
              },
              {
                "type": "string",
                "enum": [
                  "unknown"
                ]
              }
            ],
            "description": "What must be recorded for each part?",
            "x-amd-label": "Traceability",
            "x-amd-priority": "high",
            "x-amd-section": "quality",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine"
            ]
          },
          "quality.data_destination": {
            "type": "string",
            "maxLength": 300,
            "description": "Where must the records go (MES, ERP, SQL database, files), and over which protocol if known?",
            "x-amd-label": "Data destination",
            "x-amd-priority": "normal",
            "x-amd-section": "quality",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine"
            ]
          },
          "quality.standards": {
            "anyOf": [
              {
                "type": "array",
                "items": {
                  "type": "string",
                  "enum": [
                    "iatf_16949",
                    "as9100",
                    "iso_9001",
                    "ppap",
                    "fai",
                    "none"
                  ]
                },
                "uniqueItems": true,
                "maxItems": 6
              },
              {
                "type": "string",
                "enum": [
                  "unknown"
                ]
              }
            ],
            "description": "Which quality system or deliverables apply?",
            "x-amd-label": "Quality system",
            "x-amd-priority": "normal",
            "x-amd-section": "quality",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ],
            "x-amd-value-offerings": {
              "fai": [
                "custom_machine",
                "build_to_print_machine"
              ]
            }
          },
          "quality.acceptance": {
            "type": "string",
            "maxLength": 1000,
            "description": "How will the buyer accept the machine (cycle time, capability study, run at rate, gauge R&R, uptime or OEE target)?",
            "x-amd-label": "Acceptance",
            "x-amd-priority": "normal",
            "x-amd-section": "quality",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine"
            ]
          },
          "quality.masters": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "good_and_bad",
                  "good_only",
                  "not_yet"
                ]
              },
              {
                "type": "string",
                "enum": [
                  "unknown"
                ]
              }
            ],
            "description": "Can the buyer supply known-good and known-bad master parts to prove the checks before shipment?",
            "x-amd-label": "Master parts",
            "x-amd-priority": "normal",
            "x-amd-section": "quality",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine"
            ]
          },
          "standards.plant_spec": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "yes",
                  "no"
                ]
              },
              {
                "type": "string",
                "enum": [
                  "unknown"
                ]
              }
            ],
            "description": "Does the plant have its own machine specification (controls, safety, fabrication, paint)?",
            "x-amd-label": "Plant machine standard",
            "x-amd-priority": "high",
            "x-amd-section": "standards",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine"
            ]
          },
          "standards.electrical": {
            "anyOf": [
              {
                "type": "array",
                "items": {
                  "type": "string",
                  "enum": [
                    "ul_508a",
                    "nfpa_79",
                    "csa",
                    "iec_60204_1",
                    "plant_spec"
                  ]
                },
                "uniqueItems": true,
                "maxItems": 5
              },
              {
                "type": "string",
                "enum": [
                  "unknown",
                  "no_preference"
                ]
              }
            ],
            "description": "Electrical standards the machine must meet.",
            "x-amd-label": "Electrical standards",
            "x-amd-priority": "normal",
            "x-amd-section": "standards",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine"
            ]
          },
          "standards.safety": {
            "anyOf": [
              {
                "type": "array",
                "items": {
                  "type": "string",
                  "enum": [
                    "ansi_r15_06",
                    "ansi_b11",
                    "osha_subpart_o",
                    "iso_13849",
                    "plant_spec"
                  ]
                },
                "uniqueItems": true,
                "maxItems": 5
              },
              {
                "type": "string",
                "enum": [
                  "unknown",
                  "no_preference"
                ]
              }
            ],
            "description": "Safety standards the machine must meet.",
            "x-amd-label": "Safety standards",
            "x-amd-priority": "normal",
            "x-amd-section": "standards",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine"
            ]
          },
          "standards.hardware": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "inch",
                  "metric",
                  "plant_spec"
                ]
              },
              {
                "type": "string",
                "enum": [
                  "unknown",
                  "no_preference"
                ]
              }
            ],
            "description": "Fasteners and hardware on the machine: inch, metric, or the plant specification?",
            "x-amd-label": "Hardware standard",
            "x-amd-priority": "normal",
            "x-amd-section": "standards",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine"
            ]
          },
          "equipment.brand_flexibility": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "strict",
                  "preferred",
                  "flexible"
                ]
              },
              {
                "type": "string",
                "enum": [
                  "unknown",
                  "no_preference"
                ]
              }
            ],
            "description": "Must the machine use plant-mandated brands, or may AMD use equivalent in-stock components?",
            "x-amd-label": "Brand flexibility",
            "x-amd-priority": "high",
            "x-amd-section": "standards",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine"
            ]
          },
          "equipment.mandated_brands": {
            "type": "string",
            "maxLength": 300,
            "description": "Which brands the plant mandates or prefers, for example for the PLC, HMI, robot, process equipment (such as the dispensing system, welding power source, screwdriving spindles or servo press), safety devices, sensors and pneumatics.",
            "x-amd-label": "Mandated or preferred brands",
            "x-amd-priority": "normal",
            "x-amd-section": "standards",
            "x-amd-offerings": [
              "custom_machine"
            ]
          },
          "equipment.plc": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "allen_bradley",
                  "siemens",
                  "omron",
                  "beckhoff",
                  "b_and_r",
                  "other"
                ]
              },
              {
                "type": "string",
                "enum": [
                  "unknown",
                  "no_preference"
                ]
              }
            ],
            "description": "Preferred PLC platform.",
            "x-amd-label": "PLC",
            "x-amd-priority": "normal",
            "x-amd-section": "standards",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine"
            ]
          },
          "equipment.hmi": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "panelview",
                  "siemens_panel",
                  "other"
                ]
              },
              {
                "type": "string",
                "enum": [
                  "unknown",
                  "no_preference"
                ]
              }
            ],
            "description": "Preferred operator panel.",
            "x-amd-label": "HMI",
            "x-amd-priority": "normal",
            "x-amd-section": "standards",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine"
            ]
          },
          "equipment.network": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "ethernet_ip",
                  "profinet",
                  "ethercat",
                  "modbus_tcp",
                  "other"
                ]
              },
              {
                "type": "string",
                "enum": [
                  "unknown",
                  "no_preference"
                ]
              }
            ],
            "description": "Plant network protocol for machines.",
            "x-amd-label": "Plant network",
            "x-amd-priority": "normal",
            "x-amd-section": "standards",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine"
            ]
          },
          "equipment.vision": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "cognex",
                  "keyence",
                  "other"
                ]
              },
              {
                "type": "string",
                "enum": [
                  "unknown",
                  "no_preference"
                ]
              }
            ],
            "description": "Preferred vision brand, if the machine inspects or locates parts.",
            "x-amd-label": "Vision brand",
            "x-amd-priority": "normal",
            "x-amd-section": "standards",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine"
            ]
          },
          "equipment.pneumatics": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "smc",
                  "festo",
                  "other"
                ]
              },
              {
                "type": "string",
                "enum": [
                  "unknown",
                  "no_preference"
                ]
              }
            ],
            "description": "Preferred pneumatics brand.",
            "x-amd-label": "Pneumatics brand",
            "x-amd-priority": "normal",
            "x-amd-section": "standards",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine"
            ]
          },
          "equipment.buyer_supplied": {
            "type": "string",
            "maxLength": 800,
            "description": "Equipment the buyer will supply (robot, process heads, fixtures, conveyors), with make and model.",
            "x-amd-label": "Buyer-supplied equipment",
            "x-amd-priority": "normal",
            "x-amd-section": "standards",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine"
            ]
          },
          "equipment.other_brands": {
            "type": "string",
            "maxLength": 800,
            "description": "Other preferred brands: sensors, safety devices, servo drives, process equipment.",
            "x-amd-label": "Other brands",
            "x-amd-priority": "normal",
            "x-amd-section": "standards",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine"
            ]
          },
          "equipment.robot": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "fanuc",
                  "abb",
                  "yaskawa",
                  "kuka",
                  "universal_robots",
                  "kawasaki",
                  "other"
                ]
              },
              {
                "type": "string",
                "enum": [
                  "unknown",
                  "no_preference"
                ]
              }
            ],
            "description": "Which robot brand does the plant prefer, if any?",
            "x-amd-label": "Robot brand",
            "x-amd-priority": "normal",
            "x-amd-section": "standards",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine"
            ]
          },
          "site.country": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "us",
                  "mexico",
                  "canada",
                  "other"
                ]
              },
              {
                "type": "string",
                "enum": [
                  "unknown"
                ]
              }
            ],
            "description": "Where will the machine, or the parts, be used?",
            "x-amd-label": "Installation country",
            "x-amd-priority": "high",
            "x-amd-section": "site",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "site.region": {
            "type": "string",
            "maxLength": 100,
            "description": "State or region of the plant.",
            "x-amd-label": "State or region",
            "x-amd-priority": "normal",
            "x-amd-section": "site",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "site.floor_space": {
            "type": "string",
            "maxLength": 200,
            "description": "Available floor space (L x W in feet) and overhead clearance (feet).",
            "x-amd-label": "Floor space",
            "x-amd-priority": "normal",
            "x-amd-section": "site",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine"
            ]
          },
          "site.power": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "480v_3ph_60hz",
                  "208v_3ph_60hz",
                  "240v_3ph_60hz",
                  "600v_3ph_60hz",
                  "other"
                ]
              },
              {
                "type": "string",
                "enum": [
                  "unknown"
                ]
              }
            ],
            "description": "Supply voltage, phase and frequency at the drop (the plant electrician knows).",
            "x-amd-label": "Power",
            "x-amd-priority": "normal",
            "x-amd-section": "site",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine"
            ]
          },
          "site.utilities_notes": {
            "type": "string",
            "maxLength": 400,
            "description": "Compressed air (psi), other voltages, water or exhaust, and the plant's network or IT rules for machines.",
            "x-amd-label": "Utilities",
            "x-amd-priority": "normal",
            "x-amd-section": "site",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine"
            ]
          },
          "site.environment": {
            "type": "string",
            "maxLength": 300,
            "description": "Temperature, washdown, dust, cleanroom or outdoor conditions.",
            "x-amd-label": "Environment",
            "x-amd-priority": "normal",
            "x-amd-section": "site",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine"
            ]
          },
          "timeline.target_date": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^\\d{4}-(0[1-9]|1[0-2])(-(0[1-9]|[12]\\d|3[01]))?$"
              },
              {
                "type": "string",
                "enum": [
                  "unknown"
                ]
              }
            ],
            "description": "When must the machine be producing, or the parts delivered?",
            "x-amd-label": "Production start",
            "x-amd-priority": "high",
            "x-amd-section": "timeline",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "timeline.quote_needed_by": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^\\d{4}-(0[1-9]|1[0-2])(-(0[1-9]|[12]\\d|3[01]))?$"
              },
              {
                "type": "string",
                "enum": [
                  "unknown"
                ]
              }
            ],
            "description": "By when does the buyer need the budgetary number or quote?",
            "x-amd-label": "Number needed by",
            "x-amd-priority": "high",
            "x-amd-section": "timeline",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "timeline.decision_date": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^\\d{4}-(0[1-9]|1[0-2])(-(0[1-9]|[12]\\d|3[01]))?$"
              },
              {
                "type": "string",
                "enum": [
                  "unknown"
                ]
              }
            ],
            "description": "When will the buyer choose a supplier?",
            "x-amd-label": "Supplier decision",
            "x-amd-priority": "normal",
            "x-amd-section": "timeline",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "timeline.funding": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "approved",
                  "capital_request",
                  "exploring"
                ]
              },
              {
                "type": "string",
                "enum": [
                  "unknown"
                ]
              }
            ],
            "description": "Is the budget approved, in a capital request, or still being explored?",
            "x-amd-label": "Funding",
            "x-amd-priority": "normal",
            "x-amd-section": "timeline",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "timeline.budget_range": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "under_100k",
                  "100k_250k",
                  "250k_500k",
                  "500k_1m",
                  "over_1m",
                  "not_set"
                ]
              },
              {
                "type": "string",
                "enum": [
                  "unknown"
                ]
              }
            ],
            "description": "Is there a target budget range? (optional; the buyer may decline)",
            "x-amd-label": "Budget range",
            "x-amd-priority": "normal",
            "x-amd-section": "timeline",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine"
            ]
          },
          "delivery.first_step": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "feasibility_and_budgetary",
                  "firm_quote",
                  "call_first",
                  "parts_quote"
                ]
              },
              {
                "type": "string",
                "enum": [
                  "unknown",
                  "no_preference"
                ]
              }
            ],
            "description": "What does the buyer want first?",
            "x-amd-label": "First step",
            "x-amd-priority": "high",
            "x-amd-section": "delivery",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ],
            "x-amd-value-offerings": {
              "feasibility_and_budgetary": [
                "custom_machine",
                "build_to_print_machine"
              ],
              "firm_quote": [
                "custom_machine",
                "build_to_print_machine"
              ],
              "parts_quote": [
                "machined_parts"
              ]
            }
          },
          "delivery.reply_channel": {
            "anyOf": [
              {
                "type": "array",
                "items": {
                  "type": "string",
                  "enum": [
                    "email",
                    "phone",
                    "video_call"
                  ]
                },
                "uniqueItems": true,
                "maxItems": 3
              },
              {
                "type": "string",
                "enum": [
                  "unknown"
                ]
              }
            ],
            "description": "How should AMD reply?",
            "x-amd-label": "Reply by",
            "x-amd-priority": "normal",
            "x-amd-section": "delivery",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "delivery.call_windows": {
            "type": "string",
            "maxLength": 200,
            "description": "Good times for a call, with the time zone.",
            "x-amd-label": "Call windows",
            "x-amd-priority": "normal",
            "x-amd-section": "delivery",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "delivery.nda": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "amd_nda",
                  "buyer_nda",
                  "not_needed"
                ]
              },
              {
                "type": "string",
                "enum": [
                  "unknown"
                ]
              }
            ],
            "description": "Does the buyer need an NDA before sharing drawings?",
            "x-amd-label": "NDA",
            "x-amd-priority": "high",
            "x-amd-section": "delivery",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "delivery.language": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "english",
                  "spanish"
                ]
              },
              {
                "type": "string",
                "enum": [
                  "unknown"
                ]
              }
            ],
            "description": "Preferred language for AMD's reply and the machine's documentation.",
            "x-amd-label": "Language",
            "x-amd-priority": "normal",
            "x-amd-section": "delivery",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "delivery.quote_includes": {
            "anyOf": [
              {
                "type": "array",
                "items": {
                  "type": "string",
                  "enum": [
                    "freight",
                    "installation",
                    "commissioning",
                    "training",
                    "documentation",
                    "spares",
                    "import"
                  ]
                },
                "uniqueItems": true,
                "maxItems": 7
              },
              {
                "type": "string",
                "enum": [
                  "unknown",
                  "no_preference"
                ]
              }
            ],
            "description": "What should the quote include besides the machine?",
            "x-amd-label": "Quote includes",
            "x-amd-priority": "normal",
            "x-amd-section": "delivery",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine"
            ]
          },
          "delivery.quote_format": {
            "anyOf": [
              {
                "type": "array",
                "items": {
                  "type": "string",
                  "enum": [
                    "pdf_proposal",
                    "line_item_spreadsheet",
                    "structured_summary",
                    "call_walkthrough"
                  ]
                },
                "uniqueItems": true,
                "maxItems": 4
              },
              {
                "type": "string",
                "enum": [
                  "unknown",
                  "no_preference"
                ]
              }
            ],
            "description": "In what form would the buyer like AMD's reply? AMD Machines confirms what it can provide.",
            "x-amd-label": "Quote format",
            "x-amd-priority": "normal",
            "x-amd-section": "delivery",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "delivery.site_visit": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "yes",
                  "remote_only"
                ]
              },
              {
                "type": "string",
                "enum": [
                  "unknown"
                ]
              }
            ],
            "description": "Would the buyer welcome an AMD visit to the plant?",
            "x-amd-label": "Site visit",
            "x-amd-priority": "normal",
            "x-amd-section": "delivery",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine"
            ]
          },
          "delivery.fat": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "attend",
                  "not_attend"
                ]
              },
              {
                "type": "string",
                "enum": [
                  "unknown"
                ]
              }
            ],
            "description": "Will the buyer attend the factory acceptance test at AMD's facility in Querétaro, Mexico?",
            "x-amd-label": "Factory acceptance test",
            "x-amd-priority": "normal",
            "x-amd-section": "delivery",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine"
            ]
          },
          "delivery.decision_role": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "decision_maker",
                  "engineer_specifying",
                  "purchasing",
                  "integrator_for_customer"
                ]
              },
              {
                "type": "string",
                "enum": [
                  "unknown"
                ]
              }
            ],
            "description": "The requester's role in the decision.",
            "x-amd-label": "Decision role",
            "x-amd-priority": "normal",
            "x-amd-section": "delivery",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "delivery.notes": {
            "type": "string",
            "maxLength": 300,
            "description": "Anything else about how the quote should be delivered (format, options priced separately, a review call).",
            "x-amd-label": "Delivery notes",
            "x-amd-priority": "normal",
            "x-amd-section": "delivery",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "general.process_steps": {
            "type": "string",
            "maxLength": 1500,
            "description": "The steps the machine must perform, in order.",
            "x-amd-label": "Process steps",
            "x-amd-priority": "high",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "general.similar_equipment": {
            "type": "string",
            "maxLength": 300,
            "description": "Any similar machine the buyer has seen, described generically.",
            "x-amd-label": "Similar equipment",
            "x-amd-priority": "normal",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "general.why_no_product": {
            "type": "string",
            "maxLength": 500,
            "description": "If none of AMD Machines' products fits, what is needed and why?",
            "x-amd-label": "No product fits",
            "x-amd-priority": "normal",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "assembly.components": {
            "type": "string",
            "maxLength": 1000,
            "description": "Components joined, and how many of each per assembly.",
            "x-amd-label": "Components",
            "x-amd-priority": "high",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "assembly.operations": {
            "anyOf": [
              {
                "type": "array",
                "items": {
                  "type": "string",
                  "enum": [
                    "press_fit",
                    "screwdriving",
                    "riveting_forming",
                    "thermal_joining",
                    "dispensing",
                    "welding",
                    "clip_insertion",
                    "marking",
                    "testing",
                    "inspection",
                    "other"
                  ]
                },
                "uniqueItems": true,
                "maxItems": 11
              },
              {
                "type": "string",
                "enum": [
                  "unknown"
                ]
              }
            ],
            "description": "Which operations are involved?",
            "x-amd-label": "Operations",
            "x-amd-priority": "high",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "assembly.sequence": {
            "type": "string",
            "maxLength": 1500,
            "description": "Assembly sequence, step by step, if known.",
            "x-amd-label": "Sequence",
            "x-amd-priority": "normal",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "assembly.error_proofing": {
            "type": "string",
            "maxLength": 800,
            "description": "Checks needed at each step: part presence, orientation, force or torque, vision.",
            "x-amd-label": "Error proofing",
            "x-amd-priority": "normal",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "assembly.component_feeding": {
            "type": "string",
            "maxLength": 800,
            "description": "How components arrive (bulk, trays, reels, by hand) and whether automatic feeding is wanted.",
            "x-amd-label": "Component feeding",
            "x-amd-priority": "normal",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "fastening.fastener_spec": {
            "type": "string",
            "maxLength": 300,
            "description": "Screw or nut type, size and thread (inch or metric).",
            "x-amd-label": "Fastener",
            "x-amd-priority": "high",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "fastening.count": {
            "type": "string",
            "maxLength": 200,
            "description": "Number of fasteners per part, and their pattern.",
            "x-amd-label": "Fasteners per part",
            "x-amd-priority": "high",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "fastening.fastener_types": {
            "anyOf": [
              {
                "type": "integer",
                "minimum": 1,
                "maximum": 50
              },
              {
                "type": "string",
                "enum": [
                  "unknown"
                ]
              }
            ],
            "description": "How many different screw types or lengths go into one part?",
            "x-amd-label": "Fastener types",
            "x-amd-priority": "normal",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "fastening.torque": {
            "type": "string",
            "maxLength": 200,
            "description": "Torque target and tolerance (in·lb, or N·m), and whether angle is monitored.",
            "x-amd-label": "Torque",
            "x-amd-priority": "high",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "fastening.joint_class": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "class_a",
                  "class_b",
                  "class_c",
                  "class_d"
                ]
              },
              {
                "type": "string",
                "enum": [
                  "unknown"
                ]
              }
            ],
            "description": "VDI 2862 fastening class of the critical joints (A safety-critical through D non-critical), if the program specifies one.",
            "x-amd-label": "Fastening class",
            "x-amd-priority": "normal",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "fastening.feeding": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "by_hand",
                  "automatic"
                ]
              },
              {
                "type": "string",
                "enum": [
                  "unknown",
                  "no_preference"
                ]
              }
            ],
            "description": "Should screws be placed by hand or fed automatically?",
            "x-amd-label": "Screw feeding",
            "x-amd-priority": "normal",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "fastening.joint_notes": {
            "type": "string",
            "maxLength": 800,
            "description": "Part thickness, screw length, what the screw clamps, and whether seating or flushness must be checked.",
            "x-amd-label": "Joint details",
            "x-amd-priority": "normal",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "fastening.brand": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "atlas_copco",
                  "desoutter",
                  "weber",
                  "other"
                ]
              },
              {
                "type": "string",
                "enum": [
                  "unknown",
                  "no_preference"
                ]
              }
            ],
            "description": "Preferred nutrunner or screwdriver brand.",
            "x-amd-label": "Fastening brand",
            "x-amd-priority": "normal",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "pressing.operation": {
            "type": "string",
            "maxLength": 300,
            "description": "What is pressed into what (bearing, bushing, pin, seal), and how it is retained.",
            "x-amd-label": "Press operation",
            "x-amd-priority": "high",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "pressing.force_lbf": {
            "anyOf": [
              {
                "type": "number",
                "minimum": 1,
                "maximum": 1000000
              },
              {
                "type": "string",
                "enum": [
                  "unknown"
                ]
              }
            ],
            "description": "Press force needed, in pounds-force (1 kN = 225 lbf).",
            "x-amd-label": "Press force (lbf)",
            "x-amd-priority": "high",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "pressing.stroke": {
            "type": "string",
            "maxLength": 100,
            "description": "Press stroke length, in inches (or mm if the drawings are metric).",
            "x-amd-label": "Press stroke",
            "x-amd-priority": "high",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "pressing.position_tolerance": {
            "type": "string",
            "maxLength": 200,
            "description": "Final position or seating-depth tolerance, in inches (or mm), if specified.",
            "x-amd-label": "Position tolerance",
            "x-amd-priority": "normal",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "pressing.monitoring": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "force_position",
                  "force_only",
                  "none"
                ]
              },
              {
                "type": "string",
                "enum": [
                  "unknown",
                  "no_preference"
                ]
              }
            ],
            "description": "Must force and position be monitored on every press?",
            "x-amd-label": "Press monitoring",
            "x-amd-priority": "normal",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "pressing.brand": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "kistler",
                  "promess",
                  "tox",
                  "other"
                ]
              },
              {
                "type": "string",
                "enum": [
                  "unknown",
                  "no_preference"
                ]
              }
            ],
            "description": "Preferred servo press brand.",
            "x-amd-label": "Press brand",
            "x-amd-priority": "normal",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "thermal_joining.process": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "ultrasonic_welding",
                  "hot_plate",
                  "heat_staking",
                  "ultrasonic_staking",
                  "vibration_welding",
                  "spin_welding",
                  "other"
                ]
              },
              {
                "type": "string",
                "enum": [
                  "unknown",
                  "no_preference"
                ]
              }
            ],
            "description": "Which joining process?",
            "x-amd-label": "Joining process",
            "x-amd-priority": "high",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "thermal_joining.materials": {
            "type": "string",
            "maxLength": 300,
            "description": "Plastics of the part and of each joined component (grade if known).",
            "x-amd-label": "Plastics",
            "x-amd-priority": "high",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "thermal_joining.joint_count": {
            "anyOf": [
              {
                "type": "integer",
                "minimum": 1,
                "maximum": 1000
              },
              {
                "type": "string",
                "enum": [
                  "unknown"
                ]
              }
            ],
            "description": "Number of welds, poles or stakes per part.",
            "x-amd-label": "Joints per part",
            "x-amd-priority": "normal",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "thermal_joining.requirements": {
            "type": "string",
            "maxLength": 500,
            "description": "Strength, leak-tightness or appearance requirements of the joint.",
            "x-amd-label": "Joint requirements",
            "x-amd-priority": "normal",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "dispensing.material": {
            "type": "string",
            "maxLength": 300,
            "description": "Adhesive or sealant type and product name; AMD will need its data sheet and safety data sheet.",
            "x-amd-label": "Dispensed material",
            "x-amd-priority": "high",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "dispensing.viscosity": {
            "type": "string",
            "maxLength": 200,
            "description": "One-part or two-part material (with the mix ratio and pot life), and its viscosity in cP, if known.",
            "x-amd-label": "Viscosity and mix",
            "x-amd-priority": "high",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "dispensing.pattern": {
            "type": "string",
            "maxLength": 800,
            "description": "Bead, dot or spray pattern, where it goes, and its size and tolerance.",
            "x-amd-label": "Pattern",
            "x-amd-priority": "high",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "dispensing.pretreatment": {
            "type": "string",
            "maxLength": 200,
            "description": "Surface pretreatment needed before dispensing (plasma or wipe), if any.",
            "x-amd-label": "Pretreatment",
            "x-amd-priority": "normal",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "dispensing.part_motion": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "stationary",
                  "moving"
                ]
              },
              {
                "type": "string",
                "enum": [
                  "unknown"
                ]
              }
            ],
            "description": "Is the part stationary or moving while it is dispensed?",
            "x-amd-label": "Part motion",
            "x-amd-priority": "normal",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "dispensing.existing_dispenser": {
            "type": "string",
            "maxLength": 200,
            "description": "Make and model of any dispenser to reuse.",
            "x-amd-label": "Existing dispenser",
            "x-amd-priority": "normal",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "dispensing.cure_and_inspection": {
            "type": "string",
            "maxLength": 300,
            "description": "Cure method, and whether the bead must be inspected.",
            "x-amd-label": "Cure and inspection",
            "x-amd-priority": "normal",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "dispensing.booth": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "in_scope",
                  "existing",
                  "not_needed"
                ]
              },
              {
                "type": "string",
                "enum": [
                  "unknown"
                ]
              }
            ],
            "description": "Is a spray booth or exhaust in AMD's scope?",
            "x-amd-label": "Booth and exhaust",
            "x-amd-priority": "normal",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "welding.process": {
            "anyOf": [
              {
                "type": "array",
                "items": {
                  "type": "string",
                  "enum": [
                    "mig_mag",
                    "tig",
                    "spot",
                    "laser",
                    "plasma",
                    "other"
                  ]
                },
                "uniqueItems": true,
                "maxItems": 6
              },
              {
                "type": "string",
                "enum": [
                  "unknown",
                  "no_preference"
                ]
              }
            ],
            "description": "Which welding processes?",
            "x-amd-label": "Weld process",
            "x-amd-priority": "high",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "welding.material": {
            "type": "string",
            "maxLength": 200,
            "description": "Alloy and temper (for example mild steel, 304 stainless, 6061-T6 aluminum).",
            "x-amd-label": "Material",
            "x-amd-priority": "high",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "welding.thickness": {
            "type": "string",
            "maxLength": 100,
            "description": "Material thickness range, in inches (or mm).",
            "x-amd-label": "Thickness",
            "x-amd-priority": "high",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "welding.joints": {
            "type": "string",
            "maxLength": 800,
            "description": "Joint types, number of welds per part, and total weld length per part (inches).",
            "x-amd-label": "Joints",
            "x-amd-priority": "high",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "welding.fit_up": {
            "type": "string",
            "maxLength": 300,
            "description": "Largest gap measured on production parts, and how consistent the parts are.",
            "x-amd-label": "Fit-up",
            "x-amd-priority": "normal",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "welding.quality": {
            "type": "string",
            "maxLength": 800,
            "description": "Weld size, penetration, spatter, burn-through and appearance requirements, and any weld code (for example AWS D1.1).",
            "x-amd-label": "Weld quality",
            "x-amd-priority": "high",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "welding.distortion": {
            "type": "string",
            "maxLength": 300,
            "description": "Distortion or flatness limits after welding, and any straightening done today.",
            "x-amd-label": "Distortion limits",
            "x-amd-priority": "normal",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "welding.fixturing": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "two_station",
                  "single_station",
                  "positioner"
                ]
              },
              {
                "type": "string",
                "enum": [
                  "unknown",
                  "no_preference"
                ]
              }
            ],
            "description": "Should an operator load one fixture while the robot welds another?",
            "x-amd-label": "Fixturing",
            "x-amd-priority": "normal",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "welding.parts_per_fixture": {
            "anyOf": [
              {
                "type": "integer",
                "minimum": 1,
                "maximum": 100
              },
              {
                "type": "string",
                "enum": [
                  "unknown"
                ]
              }
            ],
            "description": "Parts loaded in one fixture.",
            "x-amd-label": "Parts per fixture",
            "x-amd-priority": "normal",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "welding.power_source": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "lincoln",
                  "miller",
                  "fronius",
                  "other"
                ]
              },
              {
                "type": "string",
                "enum": [
                  "unknown",
                  "no_preference"
                ]
              }
            ],
            "description": "Preferred welding power source.",
            "x-amd-label": "Power source",
            "x-amd-priority": "normal",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "laser.safety_owner": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "amd_enclosure",
                  "plant_program"
                ]
              },
              {
                "type": "string",
                "enum": [
                  "unknown"
                ]
              }
            ],
            "description": "Who owns laser safety: an AMD enclosure, or the plant's own laser safety program?",
            "x-amd-label": "Laser safety",
            "x-amd-priority": "normal",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "welding.laser_filler": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "with_filler",
                  "autogenous"
                ]
              },
              {
                "type": "string",
                "enum": [
                  "unknown"
                ]
              }
            ],
            "description": "Laser welding with filler wire, or without?",
            "x-amd-label": "Filler wire",
            "x-amd-priority": "normal",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "welding.fume_extraction": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "in_scope",
                  "existing",
                  "not_needed"
                ]
              },
              {
                "type": "string",
                "enum": [
                  "unknown"
                ]
              }
            ],
            "description": "Is fume extraction in scope?",
            "x-amd-label": "Fume extraction",
            "x-amd-priority": "normal",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "laser.process": {
            "anyOf": [
              {
                "type": "array",
                "items": {
                  "type": "string",
                  "enum": [
                    "welding",
                    "cutting",
                    "marking",
                    "cleaning",
                    "other"
                  ]
                },
                "uniqueItems": true,
                "maxItems": 5
              },
              {
                "type": "string",
                "enum": [
                  "unknown"
                ]
              }
            ],
            "description": "Which laser processes?",
            "x-amd-label": "Laser process",
            "x-amd-priority": "high",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "laser.work_per_part": {
            "type": "string",
            "maxLength": 800,
            "description": "What the laser must do on each part: cut path or weld length, mark content and size, area to clean.",
            "x-amd-label": "Laser work per part",
            "x-amd-priority": "normal",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "test.types": {
            "anyOf": [
              {
                "type": "array",
                "items": {
                  "type": "string",
                  "enum": [
                    "leak",
                    "functional",
                    "end_of_line",
                    "electrical",
                    "dimensional",
                    "vision",
                    "marking",
                    "other"
                  ]
                },
                "uniqueItems": true,
                "maxItems": 8
              },
              {
                "type": "string",
                "enum": [
                  "unknown"
                ]
              }
            ],
            "description": "Which tests should the system run? Select each one; an end-of-line station usually combines several.",
            "x-amd-label": "Test types",
            "x-amd-priority": "high",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "test.dimensional": {
            "type": "string",
            "maxLength": 300,
            "description": "Features to gauge (the critical GD&T features) and their tolerances.",
            "x-amd-label": "Dimensional checks",
            "x-amd-priority": "normal",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "test.marking": {
            "type": "string",
            "maxLength": 300,
            "description": "What the station marks and verifies: code type, content and method (laser or dot peen).",
            "x-amd-label": "Marking checks",
            "x-amd-priority": "normal",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "leak_test.spec": {
            "type": "string",
            "maxLength": 300,
            "description": "Leak limit from the part specification (for example 1 sccm at 30 psi), or \"find where it leaks\".",
            "x-amd-label": "Leak limit",
            "x-amd-priority": "high",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "leak_test.method": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "pressure_decay",
                  "mass_flow",
                  "helium",
                  "bubble",
                  "hydrogen",
                  "other"
                ]
              },
              {
                "type": "string",
                "enum": [
                  "unknown",
                  "no_preference"
                ]
              }
            ],
            "description": "Preferred test method.",
            "x-amd-label": "Test method",
            "x-amd-priority": "normal",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "leak_test.pressure_psi": {
            "anyOf": [
              {
                "type": "number",
                "minimum": -14.7,
                "maximum": 15000
              },
              {
                "type": "string",
                "enum": [
                  "unknown"
                ]
              }
            ],
            "description": "Test pressure in psi; a negative value for vacuum.",
            "x-amd-label": "Test pressure (psi)",
            "x-amd-priority": "high",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "leak_test.volume": {
            "type": "string",
            "maxLength": 100,
            "description": "Internal volume of the part (cubic inches or cc), if known.",
            "x-amd-label": "Internal volume",
            "x-amd-priority": "normal",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "leak_test.part_temperature": {
            "type": "string",
            "maxLength": 200,
            "description": "Part temperature at the test, and whether parts arrive warm (from a washer or an oven).",
            "x-amd-label": "Part temperature",
            "x-amd-priority": "normal",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "leak_test.openings": {
            "anyOf": [
              {
                "type": "integer",
                "minimum": 0,
                "maximum": 200
              },
              {
                "type": "string",
                "enum": [
                  "unknown"
                ]
              }
            ],
            "description": "Number of openings that must be sealed for the test.",
            "x-amd-label": "Openings to seal",
            "x-amd-priority": "high",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "leak_test.positions": {
            "anyOf": [
              {
                "type": "integer",
                "minimum": 1,
                "maximum": 32
              },
              {
                "type": "string",
                "enum": [
                  "unknown"
                ]
              }
            ],
            "description": "Parts tested at once (test positions or nests).",
            "x-amd-label": "Test positions",
            "x-amd-priority": "normal",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "leak_test.result": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "automatic",
                  "operator"
                ]
              },
              {
                "type": "string",
                "enum": [
                  "unknown"
                ]
              }
            ],
            "description": "Should the machine give an automatic pass/fail, or does an operator judge the leak?",
            "x-amd-label": "Pass/fail",
            "x-amd-priority": "normal",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "leak_test.after_test": {
            "type": "string",
            "maxLength": 300,
            "description": "What happens to good and rejected parts (marking, reject bin, data record)?",
            "x-amd-label": "After the test",
            "x-amd-priority": "normal",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "functional_test.tests": {
            "type": "string",
            "maxLength": 1500,
            "description": "What must be tested: functions, signals, measurements and limits (or say a test plan will follow).",
            "x-amd-label": "Tests",
            "x-amd-priority": "high",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "functional_test.release_spec": {
            "type": "string",
            "maxLength": 300,
            "description": "Pass/fail release specification or test standard.",
            "x-amd-label": "Release spec",
            "x-amd-priority": "high",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "functional_test.electrical_standard": {
            "type": "string",
            "maxLength": 200,
            "description": "The IEC or UL standard the product is certified against, for hipot or dielectric tests.",
            "x-amd-label": "Electrical test standard",
            "x-amd-priority": "normal",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "functional_test.connections": {
            "type": "string",
            "maxLength": 500,
            "description": "Connections to the part (connectors, ports, drives) and the power it needs.",
            "x-amd-label": "Connections",
            "x-amd-priority": "normal",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "functional_test.data": {
            "type": "string",
            "maxLength": 300,
            "description": "Test data to record, and where it goes.",
            "x-amd-label": "Test data",
            "x-amd-priority": "normal",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "functional_test.instruments": {
            "type": "string",
            "maxLength": 300,
            "description": "Preferred test instruments or software, if any.",
            "x-amd-label": "Instruments",
            "x-amd-priority": "normal",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "functional_test.test_plan": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "yes",
                  "draft",
                  "no"
                ]
              },
              {
                "type": "string",
                "enum": [
                  "unknown"
                ]
              }
            ],
            "description": "Is there a test plan?",
            "x-amd-label": "Test plan",
            "x-amd-priority": "normal",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "machine_tending.machines": {
            "type": "string",
            "maxLength": 800,
            "description": "Machines to tend: make, model and control of each.",
            "x-amd-label": "Machines",
            "x-amd-priority": "high",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "machine_tending.machine_count": {
            "anyOf": [
              {
                "type": "integer",
                "minimum": 1,
                "maximum": 20
              },
              {
                "type": "string",
                "enum": [
                  "unknown"
                ]
              }
            ],
            "description": "How many machines will the cell tend?",
            "x-amd-label": "Machines tended",
            "x-amd-priority": "high",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "machine_tending.layout": {
            "type": "string",
            "maxLength": 300,
            "description": "How the machines to tend are laid out (side by side, facing each other or in a line), with the distance between them.",
            "x-amd-label": "Machine layout",
            "x-amd-priority": "normal",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "machine_tending.machine_cycle_s": {
            "anyOf": [
              {
                "type": "number",
                "minimum": 1,
                "maximum": 86400
              },
              {
                "type": "string",
                "enum": [
                  "unknown"
                ]
              }
            ],
            "description": "Machine cycle time per part, in seconds.",
            "x-amd-label": "Machine cycle (s)",
            "x-amd-priority": "high",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "machine_tending.doors_workholding": {
            "type": "string",
            "maxLength": 300,
            "description": "Door (manual or automatic) and workholding (vise, chuck, fixture; manual or automatic).",
            "x-amd-label": "Doors and workholding",
            "x-amd-priority": "normal",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "machine_tending.presentation": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "drawers_trays",
                  "conveyor",
                  "bins",
                  "pallets"
                ]
              },
              {
                "type": "string",
                "enum": [
                  "unknown",
                  "no_preference"
                ]
              }
            ],
            "description": "How should raw and finished parts be presented?",
            "x-amd-label": "Part presentation",
            "x-amd-priority": "high",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "machine_tending.unattended_hours": {
            "anyOf": [
              {
                "type": "number",
                "minimum": 0,
                "maximum": 168
              },
              {
                "type": "string",
                "enum": [
                  "unknown"
                ]
              }
            ],
            "description": "How many hours in a row the cell must run with no operator present (for example, an unattended night shift).",
            "x-amd-label": "Unattended hours",
            "x-amd-priority": "high",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "machine_tending.secondary_ops": {
            "type": "string",
            "maxLength": 300,
            "description": "Extra steps: washing, deburring, gauging, marking.",
            "x-amd-label": "Secondary steps",
            "x-amd-priority": "normal",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "machine_tending.chips_coolant": {
            "type": "string",
            "maxLength": 300,
            "description": "Chips and coolant on the part at unload: dry or wet machining, the kind of chips, and any wash or blow-off needed before the next step.",
            "x-amd-label": "Chips and coolant",
            "x-amd-priority": "high",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "machine_tending.signals": {
            "type": "string",
            "maxLength": 300,
            "description": "Signals the machine can exchange with a robot (robot interface option, I/O, Ethernet).",
            "x-amd-label": "Machine signals",
            "x-amd-priority": "normal",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "machine_tending.shortfall": {
            "type": "string",
            "maxLength": 300,
            "description": "If a robot cell already tends these machines: where it falls short (cycle time, uptime, handling).",
            "x-amd-label": "Shortfall today",
            "x-amd-priority": "normal",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "vision.tasks": {
            "anyOf": [
              {
                "type": "array",
                "items": {
                  "type": "string",
                  "enum": [
                    "presence",
                    "measurement",
                    "surface_defects",
                    "code_reading",
                    "robot_guidance",
                    "print_color"
                  ]
                },
                "uniqueItems": true,
                "maxItems": 6
              },
              {
                "type": "string",
                "enum": [
                  "unknown"
                ]
              }
            ],
            "description": "What must the vision system do?",
            "x-amd-label": "Vision tasks",
            "x-amd-priority": "high",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "vision.defects": {
            "type": "string",
            "maxLength": 1000,
            "description": "Defects or features to check, with the smallest size that must be caught (inches or mm).",
            "x-amd-label": "Defects to catch",
            "x-amd-priority": "high",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "vision.views": {
            "type": "string",
            "maxLength": 300,
            "description": "Where on the part, and how many views or sides.",
            "x-amd-label": "Views",
            "x-amd-priority": "normal",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "vision.field_of_view": {
            "type": "string",
            "maxLength": 200,
            "description": "The area each camera view must cover (the field of view), in inches or mm.",
            "x-amd-label": "Field of view",
            "x-amd-priority": "normal",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "vision.presentation": {
            "type": "string",
            "maxLength": 300,
            "description": "How the part reaches the camera (stopped in a nest, or moving past it, and at what line speed), and the lighting around the station.",
            "x-amd-label": "At the camera",
            "x-amd-priority": "normal",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "vision.examples": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "samples",
                  "photos",
                  "none"
                ]
              },
              {
                "type": "string",
                "enum": [
                  "unknown"
                ]
              }
            ],
            "description": "Can the buyer send good and bad sample parts, or photos of defects?",
            "x-amd-label": "Examples",
            "x-amd-priority": "normal",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "vision.method": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "rule_based",
                  "deep_learning"
                ]
              },
              {
                "type": "string",
                "enum": [
                  "unknown",
                  "no_preference"
                ]
              }
            ],
            "description": "Rule-based or deep-learning inspection?",
            "x-amd-label": "Inspection method",
            "x-amd-priority": "normal",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "vision.rejects": {
            "type": "string",
            "maxLength": 300,
            "description": "What happens to rejected parts.",
            "x-amd-label": "Rejects",
            "x-amd-priority": "normal",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "marking.content": {
            "type": "string",
            "maxLength": 300,
            "description": "What is marked or printed: the code and its content (serial, date, part number), text or logo.",
            "x-amd-label": "Mark content",
            "x-amd-priority": "high",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "marking.method": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "fiber_laser",
                  "co2_laser",
                  "uv_laser",
                  "dot_peen",
                  "inkjet",
                  "label"
                ]
              },
              {
                "type": "string",
                "enum": [
                  "unknown",
                  "no_preference"
                ]
              }
            ],
            "description": "Preferred marking method.",
            "x-amd-label": "Marking method",
            "x-amd-priority": "normal",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "marking.symbology": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "data_matrix",
                  "qr",
                  "barcode_1d",
                  "text_only"
                ]
              },
              {
                "type": "string",
                "enum": [
                  "unknown",
                  "no_preference"
                ]
              }
            ],
            "description": "Which code type?",
            "x-amd-label": "Code type",
            "x-amd-priority": "normal",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "marking.surface": {
            "type": "string",
            "maxLength": 200,
            "description": "Surface and material where the mark goes, and whether it is later painted, blasted or heat treated.",
            "x-amd-label": "Mark surface",
            "x-amd-priority": "high",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "marking.surface_geometry": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "flat",
                  "curved",
                  "irregular"
                ]
              },
              {
                "type": "string",
                "enum": [
                  "unknown"
                ]
              }
            ],
            "description": "Is the mark surface flat, curved (cylindrical or spherical) or irregular?",
            "x-amd-label": "Mark surface shape",
            "x-amd-priority": "normal",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "marking.verification": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "required",
                  "not_required"
                ]
              },
              {
                "type": "string",
                "enum": [
                  "unknown",
                  "no_preference"
                ]
              }
            ],
            "description": "Must every mark or label be read back and verified?",
            "x-amd-label": "Verification",
            "x-amd-priority": "normal",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "marking.grade": {
            "type": "string",
            "maxLength": 200,
            "description": "The code grade the mark must still meet after coating or finishing (for example ISO/IEC 15415 Grade B), or the marking standard the customer requires (for example AIAG B-17).",
            "x-amd-label": "Mark grade or standard",
            "x-amd-priority": "normal",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "marking.label_spec": {
            "type": "string",
            "maxLength": 300,
            "description": "Label size, material, data and placement tolerance, and the surface the label goes on.",
            "x-amd-label": "Label spec",
            "x-amd-priority": "normal",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "labeling.applied_to": {
            "anyOf": [
              {
                "type": "array",
                "items": {
                  "type": "string",
                  "enum": [
                    "part",
                    "carton",
                    "pallet"
                  ]
                },
                "uniqueItems": true,
                "maxItems": 3
              },
              {
                "type": "string",
                "enum": [
                  "unknown"
                ]
              }
            ],
            "description": "Where the label goes: on the part, on the carton or case, or on the pallet.",
            "x-amd-label": "Label goes on",
            "x-amd-priority": "normal",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "labeling.application": {
            "anyOf": [
              {
                "type": "array",
                "items": {
                  "type": "string",
                  "enum": [
                    "print_and_apply",
                    "apply_only",
                    "robotic"
                  ]
                },
                "uniqueItems": true,
                "maxItems": 3
              },
              {
                "type": "string",
                "enum": [
                  "unknown",
                  "no_preference"
                ]
              }
            ],
            "description": "How the labels are applied: print and apply, apply pre-printed labels, robotic labeling (select each that applies).",
            "x-amd-label": "Labeling method",
            "x-amd-priority": "normal",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "labeling.standard": {
            "type": "string",
            "maxLength": 300,
            "description": "The label standard the buyer's customers or auditors require (for example GS1-128, SSCC-18 or AIAG B-10), or the customer's own label specification.",
            "x-amd-label": "Label standard",
            "x-amd-priority": "normal",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "marking.data": {
            "type": "string",
            "maxLength": 300,
            "description": "Where the codes and records go (MES, ERP, database).",
            "x-amd-label": "Mark data",
            "x-amd-priority": "normal",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "handling.task": {
            "anyOf": [
              {
                "type": "array",
                "items": {
                  "type": "string",
                  "enum": [
                    "pick_and_place",
                    "bin_picking",
                    "flexible_feeding",
                    "palletizing",
                    "depalletizing",
                    "case_packing",
                    "cartoning",
                    "tray_loading",
                    "conveyor_transfer",
                    "other"
                  ]
                },
                "uniqueItems": true,
                "maxItems": 10
              },
              {
                "type": "string",
                "enum": [
                  "unknown"
                ]
              }
            ],
            "description": "What must be handled?",
            "x-amd-label": "Handling task",
            "x-amd-priority": "high",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "handling.items": {
            "type": "string",
            "maxLength": 300,
            "description": "Parts, cases or bags handled, with their size and weight range.",
            "x-amd-label": "Items handled",
            "x-amd-priority": "high",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "handling.pick_rate_per_min": {
            "anyOf": [
              {
                "type": "number",
                "minimum": 0.01,
                "maximum": 1000
              },
              {
                "type": "string",
                "enum": [
                  "unknown"
                ]
              }
            ],
            "description": "Target picks per minute.",
            "x-amd-label": "Pick rate (per min)",
            "x-amd-priority": "normal",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "handling.placement_tolerance": {
            "type": "string",
            "maxLength": 100,
            "description": "Placement accuracy needed (inches or mm).",
            "x-amd-label": "Placement tolerance",
            "x-amd-priority": "normal",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "handling.sku_count": {
            "anyOf": [
              {
                "type": "integer",
                "minimum": 1,
                "maximum": 100000
              },
              {
                "type": "string",
                "enum": [
                  "unknown"
                ]
              }
            ],
            "description": "Number of SKUs or part types handled.",
            "x-amd-label": "SKUs",
            "x-amd-priority": "normal",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "handling.presentation": {
            "type": "string",
            "maxLength": 300,
            "description": "How items arrive (random in bins, layered, on a belt), with the container size.",
            "x-amd-label": "Presentation",
            "x-amd-priority": "normal",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "bin_picking.part_surface": {
            "type": "string",
            "maxLength": 200,
            "description": "Surface of the parts as they lie in the bin: shiny or machined, oily, scaled or dark.",
            "x-amd-label": "Part surface",
            "x-amd-priority": "high",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "bin_picking.part_mix": {
            "type": "string",
            "maxLength": 300,
            "description": "How many part types share one bin, and whether one gripper must hold them all or an automatic tool change is acceptable.",
            "x-amd-label": "Part types per bin",
            "x-amd-priority": "high",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "bin_picking.nesting": {
            "type": "string",
            "maxLength": 200,
            "description": "Do the parts nest, tangle or interlock in the bin (springs, clips, hooked brackets)?",
            "x-amd-label": "Nesting and tangling",
            "x-amd-priority": "normal",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "handling.pallet_pattern": {
            "type": "string",
            "maxLength": 300,
            "description": "Pallet size, pattern, layers, slip sheets, stretch wrap and labels.",
            "x-amd-label": "Pallet pattern",
            "x-amd-priority": "normal",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "handling.mixed_pallets": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "single_sku",
                  "mixed_sku"
                ]
              },
              {
                "type": "string",
                "enum": [
                  "unknown"
                ]
              }
            ],
            "description": "Does each pallet carry one SKU, or mixed SKUs (rainbow pallets)?",
            "x-amd-label": "Pallet mix",
            "x-amd-priority": "normal",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "handling.pack_pattern": {
            "type": "string",
            "maxLength": 300,
            "description": "Products per case or carton, the pack pattern, and whether case erecting and sealing are in scope.",
            "x-amd-label": "Pack pattern",
            "x-amd-priority": "normal",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "handling.line_interfaces": {
            "type": "string",
            "maxLength": 300,
            "description": "Equipment before and after (conveyors, packaging machines, wrappers).",
            "x-amd-label": "Before and after",
            "x-amd-priority": "normal",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "robot_cell.task": {
            "type": "string",
            "maxLength": 800,
            "description": "What the robot does, step by step.",
            "x-amd-label": "Robot task",
            "x-amd-priority": "high",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "robot_cell.guarding": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "collaborative",
                  "fenced"
                ]
              },
              {
                "type": "string",
                "enum": [
                  "unknown",
                  "no_preference"
                ]
              }
            ],
            "description": "Will people work alongside the robot without hard guarding, or is a fenced cell fine?",
            "x-amd-label": "Guarding",
            "x-amd-priority": "normal",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "robot_cell.robot_source": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "amd",
                  "buyer"
                ]
              },
              {
                "type": "string",
                "enum": [
                  "unknown"
                ]
              }
            ],
            "description": "Who supplies the robot?",
            "x-amd-label": "Robot supplied by",
            "x-amd-priority": "normal",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "robot_cell.tooling": {
            "type": "string",
            "maxLength": 300,
            "description": "Gripper or tool needs (vacuum, mechanical, tool changer).",
            "x-amd-label": "End-of-arm tooling",
            "x-amd-priority": "normal",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "finishing.operations": {
            "anyOf": [
              {
                "type": "array",
                "items": {
                  "type": "string",
                  "enum": [
                    "deburring",
                    "edge_break",
                    "grinding",
                    "polishing",
                    "buffing",
                    "deslagging",
                    "other"
                  ]
                },
                "uniqueItems": true,
                "maxItems": 7
              },
              {
                "type": "string",
                "enum": [
                  "unknown"
                ]
              }
            ],
            "description": "Which operations?",
            "x-amd-label": "Finishing operations",
            "x-amd-priority": "high",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "finishing.areas": {
            "type": "string",
            "maxLength": 800,
            "description": "Where the burr, slag or finish area is (photos can follow).",
            "x-amd-label": "Areas",
            "x-amd-priority": "high",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "finishing.burr_type": {
            "type": "string",
            "maxLength": 300,
            "description": "Burr or flash type and size: machining burrs, casting or molding flash, stamping burrs or weld spatter, with the burr height if known.",
            "x-amd-label": "Burr type",
            "x-amd-priority": "high",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "finishing.target": {
            "type": "string",
            "maxLength": 200,
            "description": "Finish or edge target: Ra in microinches (or µm), edge radius, or a visual standard.",
            "x-amd-label": "Finish target",
            "x-amd-priority": "high",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "finishing.incoming_condition": {
            "type": "string",
            "maxLength": 200,
            "description": "Surface condition as the part arrives (as cast, machined, ground or welded), with its starting Ra if known.",
            "x-amd-label": "Incoming surface",
            "x-amd-priority": "high",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "finishing.gloss_target": {
            "type": "string",
            "maxLength": 100,
            "description": "Gloss target in gloss units, if the finish is accepted by a gloss reading rather than an Ra value.",
            "x-amd-label": "Gloss target",
            "x-amd-priority": "normal",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "finishing.no_touch": {
            "type": "string",
            "maxLength": 300,
            "description": "Areas that must stay untouched, and the allowable material removal.",
            "x-amd-label": "No-touch areas",
            "x-amd-priority": "normal",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "finishing.today": {
            "type": "string",
            "maxLength": 300,
            "description": "Tools and media used today, and parts per operator per hour.",
            "x-amd-label": "Finishing today",
            "x-amd-priority": "normal",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "finishing.wet_dry": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "dry",
                  "wet"
                ]
              },
              {
                "type": "string",
                "enum": [
                  "unknown"
                ]
              }
            ],
            "description": "Is the finishing dry, or wet with coolant?",
            "x-amd-label": "Wet or dry",
            "x-amd-priority": "normal",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "lab.process": {
            "type": "string",
            "maxLength": 1000,
            "description": "The process to automate, and where the handling problem is.",
            "x-amd-label": "Lab process",
            "x-amd-priority": "high",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "lab.instruments": {
            "type": "string",
            "maxLength": 1000,
            "description": "Each instrument involved: make, model, controller and software version (test frame, furnace, chamber, reader).",
            "x-amd-label": "Instruments",
            "x-amd-priority": "high",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "lab.specimens": {
            "type": "string",
            "maxLength": 800,
            "description": "Specimens or samples: geometry, material, mass, condition when handled (hot, brittle), surfaces not to touch, and how they are identified.",
            "x-amd-label": "Specimens",
            "x-amd-priority": "high",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "lab.throughput": {
            "type": "string",
            "maxLength": 300,
            "description": "Samples per batch, batches per day or week, and unattended hours.",
            "x-amd-label": "Throughput",
            "x-amd-priority": "high",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "lab.sequence": {
            "type": "string",
            "maxLength": 500,
            "description": "The steps a person performs today, in order, with any dwell, transfer or timing limits.",
            "x-amd-label": "Sequence",
            "x-amd-priority": "high",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "lab.temperatures": {
            "type": "string",
            "maxLength": 300,
            "description": "Sample temperature where it is picked, and the furnace atmosphere or vacuum.",
            "x-amd-label": "Handling conditions",
            "x-amd-priority": "normal",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "lab.vacuum_system": {
            "type": "string",
            "maxLength": 1000,
            "description": "Chamber or vacuum furnace (make, model, size, door or load lock), pumps, valves and gauges, the pressure regime with its unit, and process gases.",
            "x-amd-label": "Vacuum system",
            "x-amd-priority": "normal",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "lab.data": {
            "type": "string",
            "maxLength": 500,
            "description": "Signals, network, file exports or databases; where records must end up; any IT or cybersecurity approval.",
            "x-amd-label": "Lab data",
            "x-amd-priority": "normal",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "lab.site_rules": {
            "type": "string",
            "maxLength": 500,
            "description": "Floor space, utilities, who works nearby, EHS, cleanliness or fume-hood rules, and when each instrument can be taken out of service.",
            "x-amd-label": "Lab site rules",
            "x-amd-priority": "normal",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "lab.purchasing": {
            "type": "string",
            "maxLength": 300,
            "description": "Domestic content, export control, supplier registration.",
            "x-amd-label": "Purchasing rules",
            "x-amd-priority": "normal",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "lab.robot_owned": {
            "type": "string",
            "maxLength": 200,
            "description": "Any robot the lab already owns.",
            "x-amd-label": "Robot owned",
            "x-amd-priority": "normal",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine",
              "machined_parts"
            ]
          },
          "machined_parts.kind": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "production",
                  "laboratory",
                  "fixture",
                  "tooling",
                  "replacement",
                  "other"
                ]
              },
              {
                "type": "string",
                "enum": [
                  "unknown"
                ]
              }
            ],
            "description": "What kind of part?",
            "x-amd-label": "Part kind",
            "x-amd-priority": "high",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "machined_parts"
            ]
          },
          "machined_parts.drawing_status": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "drawing_with_revision",
                  "model_only",
                  "sample_only",
                  "requirement_only"
                ]
              },
              {
                "type": "string",
                "enum": [
                  "unknown"
                ]
              }
            ],
            "description": "What defines the part?",
            "x-amd-label": "Drawing",
            "x-amd-priority": "high",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "machined_parts"
            ]
          },
          "machined_parts.material_grade": {
            "type": "string",
            "maxLength": 200,
            "description": "Exact material grade, for example 6061-T6 aluminum, 316L stainless or PEEK, not just \"aluminum\".",
            "x-amd-label": "Material grade",
            "x-amd-priority": "high",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "machined_parts"
            ]
          },
          "machined_parts.quantity": {
            "type": "string",
            "maxLength": 200,
            "description": "Quantity now, and the repeat quantity expected.",
            "x-amd-label": "Quantity",
            "x-amd-priority": "high",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "machined_parts"
            ]
          },
          "machined_parts.tool_life": {
            "type": "string",
            "maxLength": 300,
            "description": "How many parts or uses the tool or fixture must last (a one-off research fixture: say so), and for production tooling the volume and cycle time it must support.",
            "x-amd-label": "Tool life",
            "x-amd-priority": "high",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "machined_parts"
            ]
          },
          "machined_parts.tolerances": {
            "type": "string",
            "maxLength": 400,
            "description": "Critical dimensions, datums and tightest tolerances (inches); ASME Y14.5 practice on US drawings.",
            "x-amd-label": "Critical dimensions",
            "x-amd-priority": "high",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "machined_parts"
            ]
          },
          "machined_parts.finish": {
            "type": "string",
            "maxLength": 300,
            "description": "Surface finish (Ra), plating or anodizing, heat treatment and cleaning.",
            "x-amd-label": "Finish and coating",
            "x-amd-priority": "normal",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "machined_parts"
            ]
          },
          "machined_parts.environment": {
            "type": "string",
            "maxLength": 300,
            "description": "Temperature, atmosphere (air, inert gas, vacuum), loads, chemicals, cleanliness.",
            "x-amd-label": "Operating environment",
            "x-amd-priority": "normal",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "machined_parts"
            ]
          },
          "machined_parts.mating": {
            "type": "string",
            "maxLength": 300,
            "description": "The instrument or mating part it fits (make and model, or its drawing).",
            "x-amd-label": "Mating part",
            "x-amd-priority": "normal",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "machined_parts"
            ]
          },
          "machined_parts.failure": {
            "type": "string",
            "maxLength": 800,
            "description": "For a replacement part: the equipment model and serial number, any visible OEM part numbers or labels on the failed part, and how the part failed.",
            "x-amd-label": "Failure",
            "x-amd-priority": "normal",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "machined_parts"
            ]
          },
          "machined_parts.documents": {
            "anyOf": [
              {
                "type": "array",
                "items": {
                  "type": "string",
                  "enum": [
                    "material_certs",
                    "dimensional_report",
                    "first_article",
                    "coc",
                    "none"
                  ]
                },
                "uniqueItems": true,
                "maxItems": 5
              },
              {
                "type": "string",
                "enum": [
                  "unknown"
                ]
              }
            ],
            "description": "Inspection documents needed.",
            "x-amd-label": "Documents",
            "x-amd-priority": "normal",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "machined_parts"
            ]
          },
          "machined_parts.purchasing": {
            "type": "string",
            "maxLength": 300,
            "description": "Purchasing office rules: country of origin, supplier registration, delivery terms, who handles export and US import.",
            "x-amd-label": "Purchasing rules",
            "x-amd-priority": "normal",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "machined_parts"
            ]
          },
          "build_to_print.package": {
            "anyOf": [
              {
                "type": "array",
                "items": {
                  "type": "string",
                  "enum": [
                    "mechanical",
                    "bom",
                    "electrical",
                    "pneumatic",
                    "software",
                    "spec",
                    "test_procedure"
                  ]
                },
                "uniqueItems": true,
                "maxItems": 7
              },
              {
                "type": "string",
                "enum": [
                  "unknown"
                ]
              }
            ],
            "description": "What does the design package include?",
            "x-amd-label": "Design package",
            "x-amd-priority": "high",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "build_to_print_machine"
            ]
          },
          "build_to_print.package_status": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "proven",
                  "released",
                  "in_progress",
                  "concept"
                ]
              },
              {
                "type": "string",
                "enum": [
                  "unknown"
                ]
              }
            ],
            "description": "Is the design released for build?",
            "x-amd-label": "Package status",
            "x-amd-priority": "high",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "build_to_print_machine"
            ]
          },
          "build_to_print.design_authority": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "buyer_approves_all",
                  "amd_may_propose"
                ]
              },
              {
                "type": "string",
                "enum": [
                  "unknown"
                ]
              }
            ],
            "description": "Who owns the design: does the buyer approve every change, or may AMD propose changes for approval?",
            "x-amd-label": "Design authority",
            "x-amd-priority": "high",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "build_to_print_machine"
            ]
          },
          "build_to_print.amd_scope": {
            "anyOf": [
              {
                "type": "array",
                "items": {
                  "type": "string",
                  "enum": [
                    "fabrication",
                    "purchasing",
                    "assembly",
                    "wiring",
                    "programming",
                    "testing",
                    "installation"
                  ]
                },
                "uniqueItems": true,
                "maxItems": 7
              },
              {
                "type": "string",
                "enum": [
                  "unknown"
                ]
              }
            ],
            "description": "Which steps should AMD do?",
            "x-amd-label": "AMD scope",
            "x-amd-priority": "high",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "build_to_print_machine"
            ]
          },
          "build_to_print.size": {
            "type": "string",
            "maxLength": 800,
            "description": "Size and complexity of the machine: overall footprint (L x W x H, ft) and weight, the number of made parts or drawings, the bill-of-materials line count, and the number of robots, servo axes or I/O points, if known.",
            "x-amd-label": "Machine size",
            "x-amd-priority": "high",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "build_to_print_machine"
            ]
          },
          "build_to_print.quantity": {
            "anyOf": [
              {
                "type": "integer",
                "minimum": 1,
                "maximum": 1000
              },
              {
                "type": "string",
                "enum": [
                  "unknown"
                ]
              }
            ],
            "description": "Number of identical machines.",
            "x-amd-label": "Machines",
            "x-amd-priority": "high",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "build_to_print_machine"
            ]
          },
          "build_to_print.substitutions": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "exact_bom",
                  "equivalents_with_approval"
                ]
              },
              {
                "type": "string",
                "enum": [
                  "unknown"
                ]
              }
            ],
            "description": "May AMD use equivalent components, with the buyer's approval, where a bill-of-materials brand is unavailable?",
            "x-amd-label": "Substitutions",
            "x-amd-priority": "normal",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "build_to_print_machine"
            ]
          },
          "build_to_print.free_issue": {
            "type": "string",
            "maxLength": 300,
            "description": "Components the buyer will supply.",
            "x-amd-label": "Buyer-supplied parts",
            "x-amd-priority": "normal",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "build_to_print_machine"
            ]
          },
          "robot_cell.robot_count": {
            "anyOf": [
              {
                "type": "integer",
                "minimum": 1,
                "maximum": 50
              },
              {
                "type": "string",
                "enum": [
                  "unknown"
                ]
              }
            ],
            "description": "How many robots, if known?",
            "x-amd-label": "Robots",
            "x-amd-priority": "normal",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine"
            ]
          },
          "handling.infeed_lines": {
            "anyOf": [
              {
                "type": "integer",
                "minimum": 1,
                "maximum": 20
              },
              {
                "type": "string",
                "enum": [
                  "unknown"
                ]
              }
            ],
            "description": "How many production lines feed the palletizer?",
            "x-amd-label": "Infeed lines",
            "x-amd-priority": "high",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine"
            ]
          },
          "pressing.press_count": {
            "type": "string",
            "maxLength": 100,
            "description": "How many press operations, and in how many presses, if known?",
            "x-amd-label": "Presses",
            "x-amd-priority": "normal",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine"
            ]
          },
          "lab.frame": {
            "type": "string",
            "maxLength": 1000,
            "description": "Type and model, grips and their actuation, extensometer, controller inputs and outputs (test start, stop and completion signals), software package and version, enclosure and safety devices.",
            "x-amd-label": "Test frame",
            "x-amd-priority": "high",
            "x-amd-section": "process",
            "x-amd-offerings": [
              "custom_machine",
              "build_to_print_machine"
            ]
          }
        },
        "additionalProperties": true
      },
      "Contact": {
        "type": "object",
        "required": [
          "first_name",
          "last_name",
          "email",
          "company"
        ],
        "properties": {
          "first_name": {
            "type": "string",
            "maxLength": 100,
            "description": "First name of the person requesting the quote."
          },
          "last_name": {
            "type": "string",
            "maxLength": 100,
            "description": "Last name."
          },
          "email": {
            "type": "string",
            "maxLength": 254,
            "description": "Work email where AMD should reply."
          },
          "company": {
            "type": "string",
            "maxLength": 200,
            "description": "Company that will own the machine or parts."
          },
          "phone": {
            "type": "string",
            "maxLength": 40,
            "description": "Phone number, with country code."
          },
          "job_title": {
            "type": "string",
            "maxLength": 120,
            "description": "Job title."
          },
          "company_website": {
            "type": "string",
            "maxLength": 200,
            "description": "Company website (domain). This service never opens it."
          }
        }
      },
      "Error": {
        "type": "object",
        "required": [
          "ok",
          "error"
        ],
        "properties": {
          "ok": {
            "type": "boolean",
            "const": false
          },
          "api_version": {
            "type": "string"
          },
          "error": {
            "type": "object",
            "required": [
              "code",
              "message"
            ],
            "properties": {
              "code": {
                "type": "string",
                "enum": [
                  "invalid_json",
                  "invalid_body",
                  "too_deep",
                  "body_too_large",
                  "unsupported_media_type",
                  "method_not_allowed",
                  "not_found",
                  "https_required",
                  "origin_not_allowed",
                  "forwarding_disabled",
                  "product_required",
                  "unknown_product",
                  "invalid_offering",
                  "invalid_mode",
                  "unknown_question",
                  "validation_failed",
                  "invalid_email",
                  "email_blocked",
                  "rate_limited",
                  "upstream_unavailable",
                  "forwarding_rejected",
                  "temporarily_unavailable",
                  "internal_error"
                ]
              },
              "message": {
                "type": "string"
              },
              "details": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/FieldError"
                }
              },
              "docs": {
                "type": "string"
              }
            }
          },
          "warnings": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Warning"
            }
          },
          "ignored": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "contact_fallback": {
            "type": "object"
          }
        }
      },
      "FieldError": {
        "type": "object",
        "required": [
          "field",
          "code",
          "message"
        ],
        "properties": {
          "field": {
            "type": "string"
          },
          "code": {
            "type": "string"
          },
          "message": {
            "type": "string"
          },
          "did_you_mean": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "allowed": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "For invalid_value or no_preference_not_allowed on a question with 12 or fewer valid ids: those ids."
          }
        }
      },
      "Warning": {
        "type": "object",
        "required": [
          "code",
          "message"
        ],
        "properties": {
          "code": {
            "type": "string"
          },
          "message": {
            "type": "string"
          },
          "field": {
            "type": "string",
            "description": "The request field the warning is about, when it is about one."
          }
        }
      },
      "Product": {
        "type": "object",
        "required": [
          "id",
          "kind",
          "title",
          "url",
          "project_type",
          "offerings",
          "modules"
        ],
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^[a-z0-9-]{2,64}$"
          },
          "kind": {
            "type": "string",
            "enum": [
              "solution",
              "application",
              "service",
              "tooling",
              "offering"
            ]
          },
          "title": {
            "type": "string"
          },
          "url": {
            "type": [
              "string",
              "null"
            ]
          },
          "parent": {
            "type": [
              "string",
              "null"
            ]
          },
          "project_type": {
            "type": "string",
            "enum": [
              "Assembly Machines",
              "Robotic Cells",
              "Welding Automation",
              "Test Systems",
              "Machine Vision & Inspection",
              "Marking & Traceability",
              "Machine Tending",
              "Material Handling",
              "Deburring & Finishing",
              "Custom Automation",
              "Laboratory Automation",
              "Custom Laboratory Parts",
              "Other"
            ]
          },
          "offerings": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "custom_machine",
                "build_to_print_machine",
                "machined_parts"
              ]
            }
          },
          "modules": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "general",
                "assembly",
                "fastening",
                "pressing",
                "thermal_joining",
                "dispensing",
                "welding",
                "laser",
                "test_select",
                "leak_test",
                "functional_test",
                "machine_tending",
                "vision",
                "marking",
                "labeling",
                "handling",
                "robot_cell",
                "bin_picking",
                "palletizing_cell",
                "pick_and_place",
                "flexible_feeding",
                "finishing",
                "lab_automation",
                "machined_parts",
                "build_to_print"
              ]
            }
          },
          "focus": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "questions_url": {
            "type": "string"
          }
        }
      },
      "PublicQuestion": {
        "type": "object",
        "required": [
          "id",
          "label",
          "prompt",
          "type",
          "why"
        ],
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^[a-z][a-z0-9_]*\\.[a-z0-9_]+$"
          },
          "label": {
            "type": "string"
          },
          "prompt": {
            "type": "string"
          },
          "type": {
            "type": "string",
            "enum": [
              "text",
              "long_text",
              "integer",
              "number",
              "boolean",
              "enum",
              "multi_enum",
              "date",
              "email",
              "phone"
            ]
          },
          "unit": {
            "type": "string"
          },
          "min": {
            "type": "number"
          },
          "max": {
            "type": "number"
          },
          "max_length": {
            "type": "integer"
          },
          "values": {
            "type": "array",
            "description": "[value id, label] pairs.",
            "items": {
              "type": "array",
              "items": {
                "type": "string"
              },
              "minItems": 2,
              "maxItems": 2
            }
          },
          "max_items": {
            "type": "integer"
          },
          "priority": {
            "type": "string",
            "enum": [
              "required",
              "high",
              "normal"
            ]
          },
          "required": {
            "type": "boolean"
          },
          "accepts_no_preference": {
            "type": "boolean"
          },
          "ask_if": {
            "$ref": "#/components/schemas/Condition"
          },
          "high_if": {
            "$ref": "#/components/schemas/Condition"
          },
          "why": {
            "type": "string"
          },
          "recommendations": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "id",
                "title"
              ],
              "properties": {
                "id": {
                  "type": "string"
                },
                "title": {
                  "type": "string"
                }
              }
            }
          }
        }
      },
      "Recommendation": {
        "type": "object",
        "required": [
          "id",
          "kind",
          "title",
          "quote",
          "source",
          "note"
        ],
        "properties": {
          "id": {
            "type": "string"
          },
          "kind": {
            "type": "string",
            "enum": [
              "default",
              "guidance"
            ]
          },
          "title": {
            "type": "string"
          },
          "quote": {
            "type": "string",
            "description": "Published wording, quoted exactly."
          },
          "source": {
            "type": "object",
            "required": [
              "label",
              "url"
            ],
            "properties": {
              "label": {
                "type": "string"
              },
              "url": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "also": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "The other pages the quote is joined from."
              }
            }
          },
          "when": {
            "description": "Offer it only when this holds: one condition, or an array that must all hold.",
            "anyOf": [
              {
                "$ref": "#/components/schemas/Condition"
              },
              {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Condition"
                }
              }
            ]
          },
          "suggested_value": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              {
                "type": "null"
              }
            ]
          },
          "note": {
            "type": "string",
            "description": "Always \"AMD Machines recommendation from published material. Not a commitment, a price or a quote.\""
          },
          "question": {
            "type": "string"
          },
          "applies_to": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "Condition": {
        "description": "A question condition holds when the answer is one of any_of (for a list answer, when any selected value is), or at least min. A condition on a question outside the request is ignored.",
        "anyOf": [
          {
            "type": "object",
            "required": [
              "question",
              "any_of"
            ],
            "properties": {
              "question": {
                "type": "string"
              },
              "any_of": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            }
          },
          {
            "type": "object",
            "required": [
              "question",
              "min"
            ],
            "properties": {
              "question": {
                "type": "string"
              },
              "min": {
                "type": "number"
              }
            }
          },
          {
            "type": "object",
            "required": [
              "product_has_module"
            ],
            "properties": {
              "product_has_module": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            }
          },
          {
            "type": "object",
            "required": [
              "product_lacks_module"
            ],
            "properties": {
              "product_lacks_module": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            }
          },
          {
            "type": "object",
            "required": [
              "offering_not"
            ],
            "properties": {
              "offering_not": {
                "type": "string",
                "enum": [
                  "custom_machine",
                  "build_to_print_machine",
                  "machined_parts"
                ]
              }
            }
          }
        ]
      },
      "Fact": {
        "type": "object",
        "required": [
          "quote",
          "source"
        ],
        "properties": {
          "quote": {
            "type": "string",
            "description": "Published wording, quoted exactly."
          },
          "source": {
            "type": "object",
            "required": [
              "label",
              "url"
            ],
            "properties": {
              "label": {
                "type": "string"
              },
              "url": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "also": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "The other pages the quote is joined from."
              }
            }
          }
        }
      },
      "CheckResult": {
        "type": "object",
        "required": [
          "ok"
        ],
        "properties": {
          "ok": {
            "type": "boolean"
          },
          "api_version": {
            "type": "string"
          },
          "valid": {
            "type": "boolean"
          },
          "ready_to_submit": {
            "type": "boolean"
          },
          "consent_needed": {
            "type": "boolean"
          },
          "errors": {
            "type": "array"
          },
          "warnings": {
            "type": "array"
          },
          "ignored": {
            "type": "array"
          },
          "received_fields": {
            "type": "array"
          },
          "branch": {
            "type": [
              "object",
              "null"
            ]
          },
          "completeness": {
            "type": [
              "object",
              "null"
            ]
          },
          "missing": {
            "type": "array"
          },
          "unknown": {
            "type": "array"
          },
          "next_batch": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicQuestion"
            }
          },
          "readiness": {
            "type": [
              "object",
              "null"
            ]
          },
          "recommendations": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Recommendation"
            }
          },
          "flags": {
            "type": "array"
          },
          "export_control_mode": {
            "type": "boolean"
          },
          "dropped_fields": {
            "type": "array"
          },
          "facts": {
            "type": "object"
          },
          "brief_preview": {
            "type": [
              "object",
              "null"
            ]
          },
          "next": {
            "type": "string"
          },
          "error": {
            "type": "object"
          }
        }
      },
      "SubmitResult": {
        "type": "object",
        "required": [
          "ok"
        ],
        "properties": {
          "ok": {
            "type": "boolean"
          },
          "api_version": {
            "type": "string"
          },
          "dry_run": {
            "type": "boolean"
          },
          "forwarded": {
            "type": "boolean"
          },
          "duplicate": {
            "type": "boolean"
          },
          "reference_id": {
            "type": "string"
          },
          "project_type": {
            "type": "string"
          },
          "message_chars": {
            "type": "integer"
          },
          "received_fields": {
            "type": "array"
          },
          "completeness": {
            "type": [
              "object",
              "null"
            ]
          },
          "readiness": {
            "type": [
              "object",
              "null"
            ]
          },
          "export_control_mode": {
            "type": "boolean"
          },
          "dropped_fields": {
            "type": "array"
          },
          "truncated": {
            "type": "array"
          },
          "next_steps": {
            "type": "array"
          },
          "files": {
            "type": "string"
          },
          "files_reference": {
            "type": "string"
          },
          "nda": {
            "type": "object"
          },
          "contact_fallback": {
            "type": "object"
          },
          "tell_the_human": {
            "type": "string"
          },
          "error": {
            "type": "object"
          },
          "warnings": {
            "type": "array"
          },
          "ignored": {
            "type": "array"
          }
        }
      },
      "ProductsResult": {
        "type": "object",
        "required": [
          "ok"
        ],
        "properties": {
          "ok": {
            "type": "boolean"
          },
          "api_version": {
            "type": "string"
          },
          "catalog_version": {
            "type": "string"
          },
          "offerings": {
            "type": "array"
          },
          "products": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Product"
            }
          },
          "error": {
            "type": "object"
          },
          "warnings": {
            "type": "array"
          },
          "ignored": {
            "type": "array"
          }
        }
      },
      "QuestionsResult": {
        "type": "object",
        "required": [
          "ok"
        ],
        "properties": {
          "ok": {
            "type": "boolean"
          },
          "api_version": {
            "type": "string"
          },
          "questionnaire_version": {
            "type": "string"
          },
          "mode": {
            "type": "string"
          },
          "product": {
            "type": "object"
          },
          "offering": {
            "type": "object"
          },
          "required": {
            "type": "array"
          },
          "high_value": {
            "type": "array"
          },
          "requirements": {
            "type": "object"
          },
          "questions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicQuestion"
            }
          },
          "interview_steps": {
            "type": "array"
          },
          "interview_order": {
            "type": "array"
          },
          "budgetary_inputs": {
            "type": "object"
          },
          "next": {
            "type": "string"
          },
          "error": {
            "type": "object"
          },
          "warnings": {
            "type": "array"
          },
          "ignored": {
            "type": "array"
          }
        }
      },
      "RecommendationsResult": {
        "type": "object",
        "required": [
          "ok"
        ],
        "properties": {
          "ok": {
            "type": "boolean"
          },
          "api_version": {
            "type": "string"
          },
          "product": {
            "type": "object"
          },
          "offering": {
            "type": "object"
          },
          "recommendations": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Recommendation"
            }
          },
          "error": {
            "type": "object"
          },
          "warnings": {
            "type": "array"
          },
          "ignored": {
            "type": "array"
          }
        }
      },
      "Health": {
        "type": "object",
        "required": [
          "ok",
          "status"
        ],
        "properties": {
          "ok": {
            "type": "boolean"
          },
          "status": {
            "type": "string"
          },
          "api_version": {
            "type": "string"
          },
          "questionnaire_version": {
            "type": "string"
          },
          "catalog_version": {
            "type": "string"
          },
          "products": {
            "type": "integer"
          },
          "forwarding": {
            "type": "boolean"
          },
          "mcp_versions": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      }
    }
  }
}
