{"openapi":"3.1.0","info":{"title":"POST /api/v1/credit/cards","version":"1.0.0","description":"Issue a card against a credit line"},"servers":[{"url":"https://api.ondayzero.com","description":"Production"}],"paths":{"/api/v1/credit/cards":{"post":{"tags":["credit"],"summary":"Issue a card against a credit line","description":"Mints a card with spend controls enforced at the network — ceiling, interval, per-transaction cap, and a merchant-category allowlist. Card credentials never transit DayZero.","operationId":"issue_card_api_v1_credit_cards_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/CardIssueRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope_IssuedCardResponse_"}}}},"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"}}}},"404":{"description":"Not Found - Resource does not exist","content":{"application/json":{"example":{"detail":"Resource not found"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"CardIssuanceStatusEnum":{"type":"string","enum":["requested","active","suspended","terminated","failed"],"title":"CardIssuanceStatusEnum","description":"Lifecycle of a card we issued on a merchant's behalf.\n\nMirrors the issuer's own fund/card states so a reconciliation sweep\ncan compare ours against theirs without a translation table."},"CardIssueRequest":{"properties":{"credit_line_id":{"type":"string","title":"Credit Line Id"},"display_name":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Display Name"},"card_type":{"type":"string","enum":["virtual","physical"],"title":"Card Type","default":"virtual"},"spend_limit_cents":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Spend Limit Cents","description":"Authorisation ceiling. Defaults to the line's credit limit."},"spend_interval":{"type":"string","enum":["TOTAL","DAILY","WEEKLY","MONTHLY","QUARTERLY","YEARLY","ANNUAL"],"title":"Spend Interval","default":"TOTAL"},"transaction_limit_cents":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Transaction Limit Cents"},"cardholder_provider_user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cardholder Provider User Id","description":"Issuer-side user the card is issued to."},"allowed_mcc_codes":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Allowed Mcc Codes","description":"Defaults to the program's allowlist."},"blocked_mcc_codes":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Blocked Mcc Codes"},"auto_lock_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Auto Lock Date"},"idempotency_key":{"anyOf":[{"type":"string","maxLength":191},{"type":"null"}],"title":"Idempotency Key","description":"Prevents a duplicate issue on retry."}},"additionalProperties":false,"type":"object","required":["credit_line_id"],"title":"CardIssueRequest","description":"Issue a card against a line.\n\nOn Ramp the issuing unit is a *fund*, not a card: creating a fund with\nvirtual-card spend permitted mints the card and carries the spend\nrestrictions. Card credentials never transit DayZero (§5)."},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"IssuedCardResponse":{"properties":{"id":{"type":"string","title":"Id"},"credit_line_id":{"type":"string","title":"Credit Line Id"},"provider":{"type":"string","title":"Provider"},"provider_fund_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider Fund Id"},"provider_card_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider Card Id"},"status":{"$ref":"#/components/schemas/CardIssuanceStatusEnum"},"card_type":{"type":"string","title":"Card Type"},"display_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Display Name"},"last_four":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Four"},"expiration":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Expiration"},"cardholder_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cardholder Name"},"spend_limit_cents":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Spend Limit Cents"},"spend_interval":{"type":"string","title":"Spend Interval"},"transaction_limit_cents":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Transaction Limit Cents"},"allowed_mcc_codes":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Allowed Mcc Codes"},"blocked_mcc_codes":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Blocked Mcc Codes"},"auto_lock_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Auto Lock Date"},"issued_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Issued At"},"suspended_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Suspended At"},"terminated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Terminated At"},"last_synced_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Synced At"},"failure_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Failure Reason"}},"type":"object","required":["id","credit_line_id","provider","status","card_type","spend_interval"],"title":"IssuedCardResponse","description":"An issued card, as we hold it.\n\nNo PAN, no CVV, no cardholder PII beyond a display name — those never\ntransit DayZero by design (§5)."},"SuccessEnvelope_IssuedCardResponse_":{"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/IssuedCardResponse"},{"type":"null"}]}},"additionalProperties":true,"type":"object","title":"SuccessEnvelope[IssuedCardResponse]"},"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":[]}]}