{
  "openapi": "3.1.0",
  "info": {
    "title": "Gatherbatch",
    "version": "1",
    "description": "Share kit count, products, quantities, variants, supplier dispatch or assembly receipt estimates, US destinations and required arrival. Gatherbatch prepares scope and unresolved decisions and develops a nonbinding project quote by email. Requests return a reference and private status credentials. The branded private return view reads a recorded version. It does not verify the latest revision; Gatherbatch can reconcile linked scope through existing correspondence. No goods, capacity or delivery are committed by a request."
  },
  "servers": [
    {
      "url": "https://gatherbatch.forevenza.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}/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/request": {
      "post": {
        "operationId": "submit_request",
        "summary": "Send a requirement to Gatherbatch",
        "description": "Your request is recorded with a reference number and private status link. Gatherbatch develops receiving, packout and delivery scope, investigates feasibility and project-specific terms, and replies by email when you leave an address with a nonbinding project quote and decisions to resolve. Nothing is 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": {
                      "project": {
                        "type": "string",
                        "description": "Distributor's project name.",
                        "x-facet": "identifier"
                      },
                      "kit_count": {
                        "type": "number",
                        "minimum": 1,
                        "description": "Requested number of complete kits, not a count of parcels or received inventory.",
                        "x-facet": "quantity"
                      },
                      "components": {
                        "type": "array",
                        "description": "Current component rows: name, full supplier name or supplied identifier (retain supplier A/B/C on their own product lines, including parenthetical labels), units reported (null if unknown; never derive supply from per-kit demand), per-kit quantity, quantity basis, variants, date and date role. Keep every reported count attached to its named product, including product-first and count-first rosters. An explicit list such as 'one notebook, one bottle and one shirt each' states one of each per kit, not proposed contents needing reconfirmation. Unit labels are not components. Bind each date to that product or an explicitly named supplier group; retain unaffected rows on revision. Supplier reports are not received inventory.",
                        "x-facet": "specification",
                        "items": {
                          "type": "object"
                        }
                      },
                      "required_arrival": {
                        "type": "string",
                        "format": "date",
                        "description": "Requested recipient arrival in YYYY-MM-DD, not dispatch or assembly receipt. Preserve an explicit target such as 'USPS air requested for arrival January 11 2027' or a standalone 'Requested January 11, 2027' as 2027-01-11 even when the transport route changes. Non-date text is retained but remains missing and undated.",
                        "x-facet": "timing"
                      },
                      "arrival_text": {
                        "type": "string",
                        "description": "Original arrival target or flexible window where no exact date is known.",
                        "x-facet": "timing"
                      },
                      "destinations": {
                        "type": "string",
                        "description": "US home/office kit allocations, destination geography and cohorts. Office kits are not automatically separate parcels. Do not include personal addresses.",
                        "x-facet": "geography"
                      },
                      "packaging": {
                        "type": "string",
                        "description": "Existing or proposed box, inserts, artwork and sample approvals, preserving their status.",
                        "x-facet": "specification"
                      },
                      "client_instructions": {
                        "type": "string",
                        "description": "Client contact, requested neutral/blind documents, substitution and split-delivery permissions or refusals.",
                        "x-facet": "specification"
                      },
                      "proposed_scope": {
                        "type": "string",
                        "description": "Prepared receiving, count checks, packaging, assembly, shipping and residual-stock scope and business-owned next actions.",
                        "x-facet": "specification"
                      },
                      "open_issues": {
                        "type": "array",
                        "description": "Prioritized unresolved quantities, dates, route checks and approvals with the responsible owner. Preserve explicitly reported both-Alaska geography and measured packed weight as buyer-reported facts, not missing inputs. The intra-Alaska exception does not waive energy or weight ceilings. No feasibility or carrier approval is implied.",
                        "x-facet": "specification",
                        "items": {
                          "type": "string"
                        }
                      },
                      "source_history": {
                        "type": "array",
                        "description": "Original roster and superseded snapshots, history only. Current fields govern the present requested scope.",
                        "x-facet": "specification",
                        "items": {
                          "type": "string"
                        }
                      }
                    },
                    "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"
          }
        }
      }
    }
  }
}