{"openapi":"3.1.0","info":{"title":"POST /api/v1/transactions/bulk-upload/paste","version":"1.0.0","description":"Upload pasted transaction text"},"servers":[{"url":"https://api.ondayzero.com","description":"Production"}],"paths":{"/api/v1/transactions/bulk-upload/paste":{"post":{"tags":["transactions"],"summary":"Upload pasted transaction text","description":"Accept raw CSV/TSV text (e.g. copied from a bank export or spreadsheet) and\nstore it as a CSV file in S3. Returns an `s3_key` that can be passed directly\nto the existing `/bulk-upload/preview` and `/bulk-upload` endpoints.\n\nThis lets users skip the file-save-and-upload step — they can copy transaction\ndata from their bank and paste it straight into DayZero.","operationId":"paste_transaction_text_api_v1_transactions_bulk_upload_paste_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-business-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Business-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PasteTransactionTextRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PasteTransactionTextResponse"}}}},"400":{"description":"Bad Request - Invalid input","content":{"application/json":{"example":{"detail":"Invalid request parameters"}}}},"401":{"description":"Unauthorized - Authentication required","content":{"application/json":{"example":{"detail":"Not authenticated"}}}},"403":{"description":"Forbidden - Insufficient permissions","content":{"application/json":{"example":{"detail":"Not enough permissions"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"PasteTransactionTextRequest":{"properties":{"pasted_text":{"type":"string","maxLength":5000000,"minLength":10,"title":"Pasted Text","description":"Raw CSV/TSV text pasted from a bank export or spreadsheet"}},"type":"object","required":["pasted_text"],"title":"PasteTransactionTextRequest","description":"Request schema for pasting transaction text (CSV) for upload.\n\nAccepts raw CSV/TSV text copied from a bank export or spreadsheet.\nThe text is saved as a CSV in S3 so it can feed into the existing\npreview → upload pipeline."},"PasteTransactionTextResponse":{"properties":{"s3_key":{"type":"string","title":"S3 Key","description":"S3 key of the generated CSV file"},"row_count":{"type":"integer","title":"Row Count","description":"Approximate number of data rows detected"}},"type":"object","required":["s3_key","row_count"],"title":"PasteTransactionTextResponse","description":"Response after converting pasted text to a CSV file in S3."},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}},"securitySchemes":{"BearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"API Token","description":"API token authentication. Format: `Bearer dz_...`"}}},"security":[{"BearerAuth":[]}]}