{"openapi":"3.1.0","info":{"title":"Tabular Contract","version":"1.0.0","description":"CSV contract validation. 0.003 USDC on Base via x402 v2. Sales close 2026-09-30T19:13:57Z. Max5000 data rows,64 columns,262144 CSV UTF-8 bytes;600000 request bytes. Standard EOA buyer signatures only. No live paid transaction tested by seller."},"servers":[{"url":"https://tabular-contract.goodcrypto1.chatgpt.site"}],"paths":{"/v1/validate":{"post":{"summary":"Validate CSV against declared column rules","description":"Required headers, exact string enum/uniqueness, nullability, types, numeric bounds, Unicode code-point lengths. Empty string is null. Unknown fields rejected. First record is header. Identical body+signature replay a report. Do not reauthorize after an ambiguous settlement.","parameters":[{"name":"PAYMENT-SIGNATURE","in":"header","required":false,"schema":{"type":"string"},"description":"Base64 x402 v2 payload. Fetch an unpaid402 challenge first."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["csv","columns"],"properties":{"csv":{"type":"string","minLength":1},"delimiter":{"enum":[",",";","\t","|"],"default":","},"trim":{"type":"boolean","default":false},"allowExtraColumns":{"type":"boolean","default":false},"columns":{"type":"object","minProperties":1,"maxProperties":64,"additionalProperties":{"type":"object","additionalProperties":false,"required":["type"],"properties":{"type":{"enum":["string","integer","number","boolean"]},"nullable":{"type":"boolean","default":false},"unique":{"type":"boolean","default":false},"enum":{"type":"array","minItems":1,"maxItems":100,"items":{"type":"string","maxLength":1024}},"min":{"type":"number"},"max":{"type":"number"},"minLength":{"type":"integer","minimum":0},"maxLength":{"type":"integer","minimum":0}}}}}}}}},"responses":{"200":{"description":"Settled report and transaction receipt. Contract violations are still paid reports."},"202":{"description":"Report supplied but payment remains unverified. Do not authorize another payment."},"400":{"description":"Malformed request, not charged."},"402":{"description":"Payment challenge or invalid authorization."},"409":{"description":"Authorization already bound or settlement in progress. Retry only identical body/signature."},"410":{"description":"New sales closed; saved receipts remain retrievable."},"503":{"description":"Payment verifier or receipt store unavailable."}}}}}}