{"openapi":"3.1.0","info":{"title":"Duet CSV Preflight","version":"0.1.2","description":"Deterministic, stateless CSV import preflight for autonomous agents. Inputs are not retained.","contact":{"email":"duetimportcheck@agentmail.to"},"x-guidance":"Use POST /v1/preflight before a CSV import, upload, migration, or downstream data job. Send application/json with csv and optional delimiter, requiredFields, keyField, expectedFields, columnTypes, and strictColumns. The endpoint uses x402 v2 exact USDC payment on Base and returns deterministic validation findings."},"servers":[{"url":"https://duet-csv-preflight.timbeaux-sora.chatgpt.site"}],"paths":{"/v1/preflight/sample":{"get":{"summary":"View a free representative CSV preflight result","description":"Runs a fixed built-in CSV example through the same deterministic validator. Accepts no caller input and does not replace the paid preflight endpoint.","operationId":"csvPreflightSample","responses":{"200":{"description":"Representative sample input and result"}}}},"/v1/preflight":{"post":{"summary":"Preflight a CSV before import","description":"Detect structural and data-quality hazards before a CSV is handed to a downstream import step.","operationId":"csvPreflight","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["csv"],"properties":{"csv":{"type":"string"},"delimiter":{"type":"string","enum":["comma","semicolon","tab"],"default":"comma"},"requiredFields":{"type":"array","items":{"type":"string"}},"keyField":{"type":"string"},"expectedFields":{"type":"array","maxItems":100,"uniqueItems":true,"items":{"type":"string","minLength":1}},"columnTypes":{"type":"object","maxProperties":100,"additionalProperties":{"type":"string","enum":["text","integer","decimal","date"]}},"strictColumns":{"type":"boolean"}}},"example":{"csv":"id,name\n1,Alice\n","requiredFields":["id"],"keyField":"id"}}}},"responses":{"200":{"description":"Preflight result","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["service","version","deterministic","sourceDataRetained","summary","counts","issues","issuesTruncated","importReady"],"properties":{"service":{"type":"string"},"version":{"type":"string"},"deterministic":{"type":"boolean"},"sourceDataRetained":{"type":"boolean"},"summary":{"type":"object","additionalProperties":false,"required":["dataRecords","columns","issueCount","errorCount","warningCount"],"properties":{"dataRecords":{"type":"integer","minimum":0},"columns":{"type":"integer","minimum":0},"issueCount":{"type":"integer","minimum":0},"errorCount":{"type":"integer","minimum":0},"warningCount":{"type":"integer","minimum":0}}},"counts":{"type":"object","additionalProperties":{"type":"integer","minimum":0}},"issues":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["code","severity","row","column","field","detail"],"properties":{"code":{"type":"string"},"severity":{"type":"string","enum":["error","warning"]},"row":{"type":"integer","minimum":1},"column":{"anyOf":[{"type":"integer","minimum":1},{"type":"null"}]},"field":{"anyOf":[{"type":"string"},{"type":"null"}]},"detail":{"type":"string"}}}},"issuesTruncated":{"type":"boolean"},"importReady":{"type":"boolean"}}}}}},"402":{"description":"x402 payment required","headers":{"PAYMENT-REQUIRED":{"description":"Base64-encoded x402 v2 payment requirements","schema":{"type":"string"}}}},"413":{"description":"CSV or request exceeds size limit"},"415":{"description":"Content-Type must be application/json"},"422":{"description":"Invalid CSV or request body"}},"x-payment-info":{"protocols":[{"x402":{}}],"price":{"mode":"fixed","currency":"USD","amount":"0.005"},"network":"eip155:8453","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","payTo":"0xa9a52a066e342e2ED2488BBdb9fAd95EFd3D9FD4"}}}},"x-discovery":{"x402Manifest":"https://duet-csv-preflight.timbeaux-sora.chatgpt.site/.well-known/x402","skill":"https://duet-csv-preflight.timbeaux-sora.chatgpt.site/SKILL.md","llms":"https://duet-csv-preflight.timbeaux-sora.chatgpt.site/llms.txt"}}