{
  "openapi": "3.1.0",
  "info": {
    "title": "Nestproof",
    "version": "1",
    "description": "A brand describes, in its own words, the pattern files it holds (software, files, sizes, pieces per style) and what its Los Angeles factory asked for, plus the sign-off and cut dates and who should do cleanup. The page draws up a proposed transfer scope with six named factory sign-off checks and an owner for every open question, before asking for an email. Sending records a request with a reference and a private link; Nestproof replies by email with nonbinding terms, the sign-off plan and the questions still open. Nothing is transferred, priced or signed off until the brand agrees terms. Markers and pattern work such as grading a new size are separate deliverables. Agents can submit the same requirement and read its status with the private token."
  },
  "servers": [
    {
      "url": "https://nestproof.meetinggrove.com"
    }
  ],
  "paths": {
    "/_c/requests/{id}": {
      "get": {
        "operationId": "request_status",
        "summary": "Resume your recorded requirement and linked offers",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "t",
            "in": "query",
            "required": true,
            "description": "Private receipt/link token. Never publish it.",
            "schema": {
              "type": "string",
              "pattern": "^[0-9a-f]{48}$"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Current customer-visible state; payment links are not proof of payment"
          },
          "400": {
            "description": "Invalid input"
          },
          "404": {
            "description": "Unknown resource or invalid credentials"
          },
          "409": {
            "description": "State or terms conflict"
          }
        }
      }
    },
    "/_c/offers/{id}": {
      "get": {
        "operationId": "inspect_offer",
        "summary": "Authorized terms, order and processor payment state",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "t",
            "in": "query",
            "required": true,
            "description": "Private receipt/link token. Never publish it.",
            "schema": {
              "type": "string",
              "pattern": "^[0-9a-f]{48}$"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Current customer-visible state; payment links are not proof of payment"
          },
          "400": {
            "description": "Invalid input"
          },
          "404": {
            "description": "Unknown resource or invalid credentials"
          },
          "409": {
            "description": "State or terms conflict"
          }
        }
      }
    },
    "/_c/offers/{id}/accept": {
      "post": {
        "operationId": "accept_offer",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "t",
            "in": "query",
            "required": true,
            "description": "Private receipt/link token. Never publish it.",
            "schema": {
              "type": "string",
              "pattern": "^[0-9a-f]{48}$"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "terms_sha256",
                  "accept",
                  "name"
                ],
                "properties": {
                  "terms_sha256": {
                    "type": "string",
                    "pattern": "^[0-9a-f]{64}$",
                    "description": "Exact terms_sha256 returned by inspect_offer"
                  },
                  "accept": {
                    "const": true
                  },
                  "name": {
                    "type": "string",
                    "minLength": 2,
                    "maxLength": 120
                  },
                  "organization": {
                    "type": "string",
                    "maxLength": 160
                  },
                  "purchase_order": {
                    "type": "string",
                    "maxLength": 80
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Current customer-visible state; payment links are not proof of payment"
          },
          "400": {
            "description": "Invalid input"
          },
          "404": {
            "description": "Unknown resource or invalid credentials"
          },
          "409": {
            "description": "State or terms conflict"
          }
        }
      }
    },
    "/_c/offers/{id}/deliverable": {
      "get": {
        "operationId": "retrieve_deliverable",
        "summary": "The paid order's deliverable: exact text, SHA-256, version, sources and shortfall",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "t",
            "in": "query",
            "required": true,
            "description": "Private receipt/link token. Never publish it.",
            "schema": {
              "type": "string",
              "pattern": "^[0-9a-f]{48}$"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Current customer-visible state; payment links are not proof of payment"
          },
          "400": {
            "description": "Invalid input"
          },
          "404": {
            "description": "Unknown resource or invalid credentials"
          },
          "409": {
            "description": "State or terms conflict"
          }
        }
      }
    },
    "/_c/offers/{id}/decline": {
      "post": {
        "operationId": "decline_offer",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "t",
            "in": "query",
            "required": true,
            "description": "Private receipt/link token. Never publish it.",
            "schema": {
              "type": "string",
              "pattern": "^[0-9a-f]{48}$"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "terms_sha256"
                ],
                "properties": {
                  "terms_sha256": {
                    "type": "string",
                    "pattern": "^[0-9a-f]{64}$",
                    "description": "Exact terms_sha256 returned by inspect_offer"
                  },
                  "reason": {
                    "type": "string",
                    "maxLength": 500
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Current customer-visible state; payment links are not proof of payment"
          },
          "400": {
            "description": "Invalid input"
          },
          "404": {
            "description": "Unknown resource or invalid credentials"
          },
          "409": {
            "description": "State or terms conflict"
          }
        }
      }
    },
    "/_c/offers/{id}/release": {
      "post": {
        "operationId": "release_payment",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "t",
            "in": "query",
            "required": true,
            "description": "Private receipt/link token. Never publish it.",
            "schema": {
              "type": "string",
              "pattern": "^[0-9a-f]{48}$"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "terms_sha256",
                  "payment",
                  "confirm"
                ],
                "properties": {
                  "terms_sha256": {
                    "type": "string",
                    "pattern": "^[0-9a-f]{64}$",
                    "description": "Exact terms_sha256 returned by inspect_offer"
                  },
                  "payment": {
                    "type": "string"
                  },
                  "confirm": {
                    "const": true
                  },
                  "name": {
                    "type": "string",
                    "maxLength": 120
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Current customer-visible state; payment links are not proof of payment"
          },
          "400": {
            "description": "Invalid input"
          },
          "404": {
            "description": "Unknown resource or invalid credentials"
          },
          "409": {
            "description": "State or terms conflict"
          }
        }
      }
    },
    "/_c/offers/{id}/counter": {
      "post": {
        "operationId": "counter_offer",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "t",
            "in": "query",
            "required": true,
            "description": "Private receipt/link token. Never publish it.",
            "schema": {
              "type": "string",
              "pattern": "^[0-9a-f]{48}$"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "terms_sha256",
                  "proposal",
                  "name"
                ],
                "properties": {
                  "terms_sha256": {
                    "type": "string",
                    "pattern": "^[0-9a-f]{64}$",
                    "description": "Exact terms_sha256 returned by inspect_offer"
                  },
                  "name": {
                    "type": "string",
                    "minLength": 2,
                    "maxLength": 120
                  },
                  "organization": {
                    "type": "string",
                    "maxLength": 160
                  },
                  "agent": {
                    "type": "string",
                    "maxLength": 120,
                    "description": "Your agent's name, if you want it recorded with the act"
                  },
                  "proposal": {
                    "type": "object",
                    "minProperties": 1,
                    "description": "A proposal, not a change: the terms stand until the business issues a revised offer",
                    "properties": {
                      "quantities": {
                        "type": "array",
                        "minItems": 1,
                        "items": {
                          "type": "object",
                          "required": [
                            "item",
                            "quantity"
                          ],
                          "properties": {
                            "item": {
                              "type": "integer",
                              "minimum": 0,
                              "description": "0-based index into terms.items"
                            },
                            "quantity": {
                              "type": "number",
                              "exclusiveMinimum": 0
                            }
                          }
                        }
                      },
                      "counterparties": {
                        "type": "array",
                        "minItems": 1,
                        "maxItems": 25,
                        "items": {
                          "type": "object",
                          "required": [
                            "name"
                          ],
                          "properties": {
                            "name": {
                              "type": "string",
                              "minLength": 2,
                              "maxLength": 160
                            },
                            "country": {
                              "type": "string",
                              "pattern": "^[A-Za-z]{2}$"
                            },
                            "identifier": {
                              "type": "string",
                              "maxLength": 40
                            }
                          }
                        }
                      },
                      "deliver_by": {
                        "type": "string",
                        "format": "date"
                      },
                      "total_minor": {
                        "type": "integer",
                        "minimum": 1
                      },
                      "payment": {
                        "type": "object",
                        "required": [
                          "kind"
                        ],
                        "properties": {
                          "kind": {
                            "enum": [
                              "CHECKOUT_FULL",
                              "INVOICE"
                            ]
                          },
                          "days_until_due": {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 90
                          }
                        }
                      },
                      "note": {
                        "type": "string",
                        "maxLength": 1000
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Current customer-visible state; payment links are not proof of payment"
          },
          "400": {
            "description": "Invalid input"
          },
          "404": {
            "description": "Unknown resource or invalid credentials"
          },
          "409": {
            "description": "State or terms conflict"
          }
        }
      }
    },
    "/_c/offers/{id}/purchase-order": {
      "post": {
        "operationId": "submit_purchase_order",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "t",
            "in": "query",
            "required": true,
            "description": "Private receipt/link token. Never publish it.",
            "schema": {
              "type": "string",
              "pattern": "^[0-9a-f]{48}$"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "terms_sha256",
                  "po",
                  "name"
                ],
                "properties": {
                  "terms_sha256": {
                    "type": "string",
                    "pattern": "^[0-9a-f]{64}$",
                    "description": "Exact terms_sha256 returned by inspect_offer"
                  },
                  "name": {
                    "type": "string",
                    "minLength": 2,
                    "maxLength": 120
                  },
                  "organization": {
                    "type": "string",
                    "maxLength": 160
                  },
                  "agent": {
                    "type": "string",
                    "maxLength": 120,
                    "description": "Your agent's name, if you want it recorded with the act"
                  },
                  "po": {
                    "type": "object",
                    "required": [
                      "number",
                      "lines",
                      "total_minor",
                      "currency",
                      "payment_terms_days"
                    ],
                    "description": "Matched against the accepted terms; differences are shown as exceptions",
                    "properties": {
                      "number": {
                        "type": "string",
                        "pattern": "^[A-Za-z0-9._/-]{1,60}$"
                      },
                      "revision": {
                        "type": "integer",
                        "minimum": 1,
                        "default": 1
                      },
                      "buyer_vendor_id": {
                        "type": "string",
                        "maxLength": 80
                      },
                      "lines": {
                        "type": "array",
                        "minItems": 1,
                        "maxItems": 40,
                        "items": {
                          "type": "object",
                          "required": [
                            "description",
                            "quantity",
                            "unit_price_minor",
                            "amount_minor"
                          ],
                          "properties": {
                            "description": {
                              "type": "string",
                              "maxLength": 300
                            },
                            "quantity": {
                              "type": "number",
                              "minimum": 0
                            },
                            "unit_price_minor": {
                              "type": "integer",
                              "minimum": 0
                            },
                            "amount_minor": {
                              "type": "integer",
                              "minimum": 0
                            }
                          }
                        }
                      },
                      "total_minor": {
                        "type": "integer",
                        "minimum": 0
                      },
                      "currency": {
                        "type": "string",
                        "pattern": "^[A-Z]{3}$"
                      },
                      "payment_terms_days": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 120
                      },
                      "bill_to": {
                        "type": "string",
                        "maxLength": 300
                      },
                      "invoice_route": {
                        "type": "string",
                        "maxLength": 300
                      },
                      "document_sha256": {
                        "type": "string",
                        "pattern": "^[0-9a-f]{64}$"
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Current customer-visible state; payment links are not proof of payment"
          },
          "400": {
            "description": "Invalid input"
          },
          "404": {
            "description": "Unknown resource or invalid credentials"
          },
          "409": {
            "description": "State or terms conflict"
          }
        }
      }
    },
    "/_c/offers/{id}/purchasing-requirements": {
      "post": {
        "operationId": "state_purchasing_requirements",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "t",
            "in": "query",
            "required": true,
            "description": "Private receipt/link token. Never publish it.",
            "schema": {
              "type": "string",
              "pattern": "^[0-9a-f]{48}$"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "terms_sha256",
                  "requirements",
                  "name",
                  "organization"
                ],
                "properties": {
                  "terms_sha256": {
                    "type": "string",
                    "pattern": "^[0-9a-f]{64}$",
                    "description": "Exact terms_sha256 returned by inspect_offer"
                  },
                  "name": {
                    "type": "string",
                    "minLength": 2,
                    "maxLength": 120
                  },
                  "organization": {
                    "type": "string",
                    "minLength": 2,
                    "maxLength": 160
                  },
                  "agent": {
                    "type": "string",
                    "maxLength": 120,
                    "description": "Your agent's name, if you want it recorded with the act"
                  },
                  "requirements": {
                    "type": "object",
                    "required": [
                      "vendor_approval_required",
                      "purchase_order_required"
                    ],
                    "properties": {
                      "vendor_approval_required": {
                        "type": "boolean"
                      },
                      "purchase_order_required": {
                        "type": "boolean"
                      },
                      "documents_required": {
                        "type": "array",
                        "maxItems": 12,
                        "items": {
                          "type": "string",
                          "maxLength": 80
                        }
                      },
                      "buyer_vendor_id": {
                        "type": "string",
                        "maxLength": 80
                      },
                      "route": {
                        "type": "string",
                        "maxLength": 300
                      },
                      "payment_terms_days": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 120
                      },
                      "note": {
                        "type": "string",
                        "maxLength": 1000
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Current customer-visible state; payment links are not proof of payment"
          },
          "400": {
            "description": "Invalid input"
          },
          "404": {
            "description": "Unknown resource or invalid credentials"
          },
          "409": {
            "description": "State or terms conflict"
          }
        }
      }
    },
    "/_c/offers/{id}/vendor-status": {
      "post": {
        "operationId": "report_vendor_status",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "t",
            "in": "query",
            "required": true,
            "description": "Private receipt/link token. Never publish it.",
            "schema": {
              "type": "string",
              "pattern": "^[0-9a-f]{48}$"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "terms_sha256",
                  "status",
                  "reference",
                  "name",
                  "organization"
                ],
                "properties": {
                  "terms_sha256": {
                    "type": "string",
                    "pattern": "^[0-9a-f]{64}$",
                    "description": "Exact terms_sha256 returned by inspect_offer"
                  },
                  "name": {
                    "type": "string",
                    "minLength": 2,
                    "maxLength": 120
                  },
                  "organization": {
                    "type": "string",
                    "minLength": 2,
                    "maxLength": 160
                  },
                  "agent": {
                    "type": "string",
                    "maxLength": 120,
                    "description": "Your agent's name, if you want it recorded with the act"
                  },
                  "status": {
                    "enum": [
                      "APPROVED",
                      "DOCUMENTS_REQUESTED",
                      "REJECTED"
                    ]
                  },
                  "reference": {
                    "type": "string",
                    "minLength": 2,
                    "maxLength": 200
                  },
                  "buyer_vendor_id": {
                    "type": "string",
                    "maxLength": 80
                  },
                  "documents_requested": {
                    "type": "array",
                    "maxItems": 12,
                    "items": {
                      "type": "string",
                      "maxLength": 80
                    }
                  },
                  "note": {
                    "type": "string",
                    "maxLength": 1000
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Current customer-visible state; payment links are not proof of payment"
          },
          "400": {
            "description": "Invalid input"
          },
          "404": {
            "description": "Unknown resource or invalid credentials"
          },
          "409": {
            "description": "State or terms conflict"
          }
        }
      }
    },
    "/_c/offers/{id}/inspection": {
      "post": {
        "operationId": "inspect_delivery",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "t",
            "in": "query",
            "required": true,
            "description": "Private receipt/link token. Never publish it.",
            "schema": {
              "type": "string",
              "pattern": "^[0-9a-f]{48}$"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "terms_sha256",
                  "lines",
                  "name"
                ],
                "properties": {
                  "terms_sha256": {
                    "type": "string",
                    "pattern": "^[0-9a-f]{64}$",
                    "description": "Exact terms_sha256 returned by inspect_offer"
                  },
                  "name": {
                    "type": "string",
                    "minLength": 2,
                    "maxLength": 120
                  },
                  "organization": {
                    "type": "string",
                    "maxLength": 160
                  },
                  "agent": {
                    "type": "string",
                    "maxLength": 120,
                    "description": "Your agent's name, if you want it recorded with the act"
                  },
                  "lines": {
                    "type": "array",
                    "minItems": 1,
                    "items": {
                      "type": "object",
                      "required": [
                        "item",
                        "accepted_quantity",
                        "rejected_quantity"
                      ],
                      "properties": {
                        "item": {
                          "type": "integer",
                          "minimum": 0
                        },
                        "accepted_quantity": {
                          "type": "number",
                          "minimum": 0
                        },
                        "rejected_quantity": {
                          "type": "number",
                          "minimum": 0
                        },
                        "reason": {
                          "type": "string",
                          "maxLength": 300
                        }
                      }
                    }
                  },
                  "portion": {
                    "type": "string",
                    "maxLength": 40
                  },
                  "note": {
                    "type": "string",
                    "maxLength": 1000
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Current customer-visible state; payment links are not proof of payment"
          },
          "400": {
            "description": "Invalid input"
          },
          "404": {
            "description": "Unknown resource or invalid credentials"
          },
          "409": {
            "description": "State or terms conflict"
          }
        }
      }
    },
    "/_c/offers/{id}/remedy": {
      "post": {
        "operationId": "answer_remedy",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "t",
            "in": "query",
            "required": true,
            "description": "Private receipt/link token. Never publish it.",
            "schema": {
              "type": "string",
              "pattern": "^[0-9a-f]{48}$"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "terms_sha256",
                  "remedy_id",
                  "answer",
                  "name"
                ],
                "properties": {
                  "terms_sha256": {
                    "type": "string",
                    "pattern": "^[0-9a-f]{64}$",
                    "description": "Exact terms_sha256 returned by inspect_offer"
                  },
                  "name": {
                    "type": "string",
                    "minLength": 2,
                    "maxLength": 120
                  },
                  "organization": {
                    "type": "string",
                    "maxLength": 160
                  },
                  "agent": {
                    "type": "string",
                    "maxLength": 120,
                    "description": "Your agent's name, if you want it recorded with the act"
                  },
                  "remedy_id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "answer": {
                    "enum": [
                      "ACCEPT",
                      "DECLINE"
                    ]
                  },
                  "note": {
                    "type": "string",
                    "maxLength": 1000
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Current customer-visible state; payment links are not proof of payment"
          },
          "400": {
            "description": "Invalid input"
          },
          "404": {
            "description": "Unknown resource or invalid credentials"
          },
          "409": {
            "description": "State or terms conflict"
          }
        }
      }
    },
    "/_c/request": {
      "post": {
        "operationId": "submit_request",
        "summary": "Send a requirement to Nestproof",
        "description": "Your request is recorded with a reference number and a private link to your transfer page, carrying the proposed scope, your choices and the open questions. Nestproof reviews it and, when you leave an email address, replies by email with nonbinding terms, the sign-off plan for your factory and the questions still open; you send the pattern files by replying. Nothing is transferred, ordered or committed until you agree terms. Contact details are kept apart from the requirement, while we correspond or do business and for 24 months after, so a later request picks up where it left off; ask us to delete them at any time.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "need"
                ],
                "properties": {
                  "continuation": {
                    "type": "object",
                    "required": [
                      "id",
                      "token"
                    ],
                    "description": "Optional receipt credentials to continue an existing requirement with this business",
                    "properties": {
                      "id": {
                        "type": "string"
                      },
                      "token": {
                        "type": "string"
                      }
                    }
                  },
                  "action": {
                    "type": "string",
                    "enum": [
                      "buy",
                      "source",
                      "quote",
                      "verify",
                      "lease",
                      "license",
                      "hire",
                      "retrieve",
                      "convert",
                      "other"
                    ],
                    "description": "What you want done"
                  },
                  "need": {
                    "type": "string",
                    "maxLength": 2000,
                    "description": "The requirement in your own words"
                  },
                  "specifications": {
                    "type": "object",
                    "properties": {
                      "source_system": {
                        "type": "string",
                        "maxLength": 200,
                        "description": "Software the patterns were made in: Gerber AccuMark, Optitex, Lectra Modaris, Tukatech TUKAcad, CLO 3D, Browzwear, or none (PDF or paper).",
                        "x-facet": "specification"
                      },
                      "source_format": {
                        "type": "string",
                        "maxLength": 300,
                        "description": "Files the brand holds, e.g. 'AAMA DXF', 'CLO project file (.zprj) and PDF', 'Paper patterns'.",
                        "x-facet": "specification"
                      },
                      "grade_file": {
                        "type": "string",
                        "maxLength": 40,
                        "enum": [
                          "present",
                          "missing",
                          "unsure",
                          "unknown"
                        ],
                        "description": "Whether a RUL grade rule file travels with the DXF.",
                        "x-facet": "specification"
                      },
                      "graded": {
                        "type": "string",
                        "maxLength": 60,
                        "description": "Whether the source is graded: 'stated graded', 'stated, grading to verify', 'base size only' or 'not stated'.",
                        "x-facet": "specification"
                      },
                      "styles": {
                        "type": "string",
                        "maxLength": 1000,
                        "description": "Styles with pieces per style, 'Name: pieces' separated by semicolons, e.g. 'Wrap dress: 9; Wide-leg pant: 7'. '?' marks an unknown count.",
                        "x-facet": "specification"
                      },
                      "style_count": {
                        "type": "integer",
                        "minimum": 0,
                        "description": "Number of styles.",
                        "x-facet": "quantity"
                      },
                      "piece_count": {
                        "type": "integer",
                        "minimum": 0,
                        "description": "Total pattern pieces across styles.",
                        "x-facet": "quantity"
                      },
                      "size_run": {
                        "type": "string",
                        "maxLength": 200,
                        "description": "Ordered sizes, comma separated, e.g. 'XS, S, M, L, XL'.",
                        "x-facet": "specification"
                      },
                      "size_count": {
                        "type": "integer",
                        "minimum": 0,
                        "description": "Number of sizes in the run.",
                        "x-facet": "quantity"
                      },
                      "sizes_at_risk": {
                        "type": "string",
                        "maxLength": 300,
                        "description": "Sizes whose grading must be verified or that are not in the source, with the reason.",
                        "x-facet": "specification"
                      },
                      "added_sizes": {
                        "type": "string",
                        "maxLength": 100,
                        "description": "Sizes added after the source was graded (pattern work to confirm).",
                        "x-facet": "specification"
                      },
                      "target_system": {
                        "type": "string",
                        "maxLength": 200,
                        "description": "The Los Angeles factory's cutting system. 'Gerber' alone is recorded as to confirm: native AccuMark or AAMA DXF with RUL.",
                        "x-facet": "specification"
                      },
                      "target_format": {
                        "type": "string",
                        "maxLength": 200,
                        "description": "What the factory imports, e.g. 'AAMA DXF, with RUL rule file, graded'.",
                        "x-facet": "specification"
                      },
                      "units": {
                        "type": "string",
                        "maxLength": 20,
                        "enum": [
                          "in",
                          "mm",
                          "cm"
                        ],
                        "description": "Units the factory imports in.",
                        "x-facet": "specification"
                      },
                      "seam_allowance": {
                        "type": "string",
                        "maxLength": 20,
                        "enum": [
                          "included",
                          "net"
                        ],
                        "description": "Seam allowance included or net patterns.",
                        "x-facet": "specification"
                      },
                      "cleanup_owner": {
                        "type": "string",
                        "maxLength": 80,
                        "description": "Who fixes file problems: 'nestproof', 'patternmaker' or 'factory'; '(recommended, to confirm)' when not yet chosen; '(conflicts with your words, to confirm)' when the choice contradicts the brand's account, such as choosing the patternmaker after writing that they are unavailable.",
                        "x-facet": "specification"
                      },
                      "patternmaker_status": {
                        "type": "string",
                        "maxLength": 400,
                        "description": "'unavailable, in your words: ...' when the brand wrote that its original patternmaker is not available. Kept so a cleanup choice can be checked against it.",
                        "x-facet": "specification"
                      },
                      "rework": {
                        "type": "string",
                        "maxLength": 400,
                        "description": "What happens when a sign-off check fails, written from the chosen cleanup owner (who reports, who fixes, who re-checks).",
                        "x-facet": "specification"
                      },
                      "format_guide_read": {
                        "type": "string",
                        "maxLength": 10,
                        "enum": [
                          "yes"
                        ],
                        "description": "'yes' when the brand arrived from the format answer page.",
                        "x-facet": "specification"
                      },
                      "pattern_changes": {
                        "type": "string",
                        "maxLength": 80,
                        "description": "'repair' (file repair only) or 'approval' (fit or grade changes with the brand's approval).",
                        "x-facet": "specification"
                      },
                      "markers": {
                        "type": "string",
                        "maxLength": 60,
                        "description": "'none', 'quote' or 'unsure'. Markers are a separate deliverable from pattern transfer.",
                        "x-facet": "specification"
                      },
                      "fabric_width_in": {
                        "type": "number",
                        "minimum": 0,
                        "description": "Fabric width in inches (never marker length).",
                        "x-facet": "specification"
                      },
                      "table_length_in": {
                        "type": "number",
                        "minimum": 0,
                        "description": "Factory cutting-table length in inches.",
                        "x-facet": "specification"
                      },
                      "size_ratio": {
                        "type": "string",
                        "maxLength": 100,
                        "description": "Marker size ratio, e.g. '1:2:2:1'.",
                        "x-facet": "specification"
                      },
                      "files_to_factory_date": {
                        "type": "string",
                        "format": "date",
                        "description": "Date the files reach the factory, YYYY-MM-DD. A value that is not a YYYY-MM-DD date is kept as sent, listed in missing_specifications, and the request is not treated as dated.",
                        "x-facet": "timing"
                      },
                      "signoff_target_date": {
                        "type": "string",
                        "format": "date",
                        "description": "Date the factory must sign off the files, YYYY-MM-DD; separate from the cut date. Non-dates are kept as sent and listed in missing_specifications.",
                        "x-facet": "timing"
                      },
                      "cut_date": {
                        "type": "string",
                        "format": "date",
                        "description": "Cut or sample date, YYYY-MM-DD. Non-dates are kept as sent and listed in missing_specifications.",
                        "x-facet": "timing"
                      },
                      "deadline_words": {
                        "type": "string",
                        "maxLength": 500,
                        "description": "Deadlines as the brand wrote them when no calendar date was given, e.g. 'sign-off: in 5 business days'.",
                        "x-facet": "timing"
                      },
                      "signoff_coordination": {
                        "type": "string",
                        "maxLength": 40,
                        "description": "'requested' when the brand asks Nestproof to coordinate the factory's sign-off.",
                        "x-facet": "specification"
                      },
                      "factory_confirmer": {
                        "type": "string",
                        "maxLength": 200,
                        "description": "Who at the factory confirms sign-off, e.g. 'sample and development manager'.",
                        "x-facet": "identifier"
                      },
                      "factory_area": {
                        "type": "string",
                        "maxLength": 120,
                        "description": "Where in Los Angeles the factory is, if stated.",
                        "x-facet": "geography"
                      },
                      "proposed_scope": {
                        "type": "string",
                        "maxLength": 8000,
                        "description": "The proposed transfer scope as plain text, as the brand saw it.",
                        "x-facet": "specification"
                      },
                      "open_questions": {
                        "type": "string",
                        "maxLength": 8000,
                        "description": "Numbered open questions, each with its owner (You, Factory, Nestproof).",
                        "x-facet": "specification"
                      },
                      "format_question": {
                        "type": "string",
                        "maxLength": 300,
                        "description": "A file format the brand asked about (for example 'Is a DXF enough?'), kept as a question and not as a file the brand holds.",
                        "x-facet": "specification"
                      },
                      "kept_words": {
                        "type": "string",
                        "maxLength": 4000,
                        "description": "Clauses of the brand's words not yet read into fields, kept verbatim.",
                        "x-facet": "specification"
                      },
                      "history": {
                        "type": "string",
                        "maxLength": 4000,
                        "description": "Values replaced by corrections or updates, with what replaced them.",
                        "x-facet": "specification"
                      },
                      "original_words": {
                        "type": "string",
                        "maxLength": 6000,
                        "description": "The brand's own description, verbatim.",
                        "x-facet": "specification"
                      },
                      "replaces_reference": {
                        "type": "string",
                        "maxLength": 40,
                        "description": "Reference of the earlier request this revises.",
                        "x-facet": "identifier"
                      }
                    },
                    "description": "Details you already know. The business helps resolve missing specifications in the continuing engagement."
                  },
                  "quantity": {
                    "type": "object",
                    "properties": {
                      "amount": {
                        "type": "number"
                      },
                      "unit": {
                        "type": "string"
                      },
                      "per": {
                        "type": "string"
                      }
                    }
                  },
                  "timing": {
                    "type": "object",
                    "properties": {
                      "earliest": {
                        "type": "string"
                      },
                      "latest": {
                        "type": "string"
                      },
                      "recurrence": {
                        "type": "string"
                      },
                      "text": {
                        "type": "string"
                      }
                    }
                  },
                  "geography": {
                    "type": "object",
                    "properties": {
                      "text": {
                        "type": "string"
                      },
                      "country": {
                        "type": "string"
                      },
                      "from": {
                        "type": "string"
                      },
                      "to": {
                        "type": "string"
                      }
                    }
                  },
                  "budget": {
                    "type": "object",
                    "properties": {
                      "amount": {
                        "type": "number"
                      },
                      "currency": {
                        "type": "string",
                        "description": "ISO 4217, default USD"
                      },
                      "per": {
                        "type": "string",
                        "description": "total, unit, month, year, load, ..."
                      }
                    }
                  },
                  "requested_fields": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "maxItems": 30,
                    "description": "Result fields you need"
                  },
                  "contact": {
                    "type": "object",
                    "description": "Optional; stored apart from the requirement, kept while we correspond or do business and for 24 months after, then deleted; you can ask us to delete it sooner",
                    "properties": {
                      "email": {
                        "type": "string"
                      },
                      "name": {
                        "type": "string"
                      },
                      "organization": {
                        "type": "string"
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Recorded, with a reference number"
          },
          "400": {
            "description": "What to fix"
          }
        }
      }
    }
  }
}