{"openapi":"3.1.0","info":{"title":"POST /api/v1/public/bill-requests/{token}","version":"1.0.0","description":"Submit a bill through a bill-request link (unauthenticated)"},"servers":[{"url":"https://api.ondayzero.com","description":"Production"}],"paths":{"/api/v1/public/bill-requests/{token}":{"post":{"tags":["vendor-bill-requests-public"],"summary":"Submit a bill through a bill-request link (unauthenticated)","description":"Multipart form: submitter_name, submitter_email, amount (dollars), optional invoice_number / due_date / description, and the invoice file (PDF, PNG, or JPG). Creates a draft bill for the manager to confirm or deny. 409 when the invoice looks like a duplicate. Rate-limited per IP and per link.","operationId":"submit_public_bill_request_api_v1_public_bill_requests__token__post","parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","title":"Token"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_submit_public_bill_request_api_v1_public_bill_requests__token__post"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope_PublicVendorBillSubmissionResponse_"}}}},"400":{"description":"Bad Request - Invalid input","content":{"application/json":{"example":{"detail":"Invalid request parameters"}}}},"404":{"description":"Not Found - Resource does not exist","content":{"application/json":{"example":{"detail":"Resource not found"}}}},"409":{"description":"Conflict - Resource already exists","content":{"application/json":{"example":{"detail":"Resource already exists"}}}},"429":{"description":"Too Many Requests - Rate limit exceeded","content":{"application/json":{"example":{"detail":"Rate limit exceeded"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"Body_submit_public_bill_request_api_v1_public_bill_requests__token__post":{"properties":{"submitter_name":{"type":"string","title":"Submitter Name","description":"Vendor / contractor name or company"},"submitter_email":{"type":"string","title":"Submitter Email","description":"Contact email for the submitter"},"amount":{"type":"string","title":"Amount","description":"Invoice total in dollars, e.g. 1250.00"},"invoice_number":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Invoice Number","description":"Vendor invoice number"},"due_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Due Date","description":"Due date (YYYY-MM-DD)"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"What the bill is for"},"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File","description":"The invoice (PDF, PNG, or JPG)"}},"type":"object","required":["submitter_name","submitter_email","amount","file"],"title":"Body_submit_public_bill_request_api_v1_public_bill_requests__token__post"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"PublicVendorBillSubmissionResponse":{"properties":{"bill_reference":{"type":"string","title":"Bill Reference","description":"Bill number (or short id) the vendor can quote back."},"message":{"type":"string","title":"Message"}},"type":"object","required":["bill_reference","message"],"title":"PublicVendorBillSubmissionResponse"},"SuccessEnvelope_PublicVendorBillSubmissionResponse_":{"properties":{"success":{"type":"boolean","title":"Success","default":true},"message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message"},"code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Code"},"data":{"anyOf":[{"$ref":"#/components/schemas/PublicVendorBillSubmissionResponse"},{"type":"null"}]}},"additionalProperties":true,"type":"object","title":"SuccessEnvelope[PublicVendorBillSubmissionResponse]"},"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":[]}]}