{"openapi":"3.1.0","info":{"title":"GET /api/v1/credit/billing-lapse-risk","version":"1.0.0","description":"Will this business's API access lapse?"},"servers":[{"url":"https://api.ondayzero.com","description":"Production"}],"paths":{"/api/v1/credit/billing-lapse-risk":{"get":{"tags":["credit"],"summary":"Will this business's API access lapse?","description":"Console operators only. For a business that operates an active credit program: `lapsed` when its billing already refuses API tokens (403 `AUTH_072`: `past_due`, `unpaid`, `canceled`, or a trial that ended) or it lacks the CFO Suite add-on every `/credit` call needs (403 `BILLING_003`), `lapsing` when it passes only on a trial that ends within `within_days`. A subscription with CFO Suite, the `partner_program` plan, and a sandbox never lapse. Read-only.","operationId":"credit_billing_lapse_risk","parameters":[{"name":"within_days","in":"query","required":false,"schema":{"type":"integer","maximum":365,"minimum":0,"description":"How many days ahead to look (0 to 365, default 14).","default":14,"title":"Within Days"},"description":"How many days ahead to look (0 to 365, default 14)."},{"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"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope_CreditBillingLapseRiskResponse_"}}}},"400":{"description":"Bad Request - Invalid input","content":{"application/json":{"example":{"error":"validation_error","message":"Validation failed: due_date: Input should be a valid date","errors":{"due_date":"Input should be a valid date"},"code":"GEN_002","request_id":"3f0e7c2a-9b4d-4e1a-8c6f-2d5b7a1e9c30"},"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized - Missing or expired token, an MCP OAuth token used against the REST API, or no access to this business","content":{"application/json":{"example":{"error":"unauthorized","message":"Authentication required","code":"AUTH_001","request_id":"3f0e7c2a-9b4d-4e1a-8c6f-2d5b7a1e9c30"},"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden - Insufficient permissions","content":{"application/json":{"example":{"error":"forbidden","message":"You don't have permission to access this resource","code":"AUTH_002","request_id":"3f0e7c2a-9b4d-4e1a-8c6f-2d5b7a1e9c30"},"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"example":{"error":"validation_error","message":"Validation failed: amount: Input should be a valid integer","errors":{"amount":"Input should be a valid integer"},"code":"GEN_002","request_id":"3f0e7c2a-9b4d-4e1a-8c6f-2d5b7a1e9c30"}}}}},"x-fastapi-operation-id":"credit_billing_lapse_risk_api_v1_credit_billing_lapse_risk_get"}}},"components":{"schemas":{"CreditBillingLapseRiskResponse":{"properties":{"business_id":{"type":"string","title":"Business Id","description":"The business the call was made on."},"within_days":{"type":"integer","title":"Within Days","description":"The window checked, in days."},"at_risk":{"type":"boolean","title":"At Risk","description":"True when the business operates a program in use (active, or holding a line that may borrow) and its API access has lapsed or lapses inside the window."},"detail":{"anyOf":[{"$ref":"#/components/schemas/LapsingApiAccess"},{"type":"null"}],"description":"What lapses and when; null when not at risk."}},"type":"object","required":["business_id","within_days","at_risk"],"title":"CreditBillingLapseRiskResponse"},"LapsingApiAccess":{"properties":{"business_id":{"type":"string","title":"Business Id","description":"The operator business."},"business_name":{"type":"string","title":"Business Name","description":"Its name."},"plan_tier":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Plan Tier","description":"The business's plan tier."},"billing_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Billing Status","description":"The business's billing status: `trialing`, `past_due`, `unpaid` or `canceled` when billing lapses; any status when the business lacks CFO Suite."},"trial_ends_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Trial Ends At","description":"When the trial ends (UTC), when there is one."},"state":{"type":"string","enum":["lapsing","lapsed"],"title":"State","description":"`lapsing`: tokens work today and stop when the trial ends inside the window. `lapsed`: tokens are refused now (`AUTH_072`, or `BILLING_003` on every `/credit` call when the business lacks the CFO Suite add-on)."},"days_left":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Days Left","description":"Whole days (UTC) until the trial ends, for `lapsing`. Null for `lapsed`."},"reason":{"type":"string","title":"Reason","description":"Why, in one sentence."},"active_programs":{"items":{"type":"string"},"type":"array","title":"Active Programs","description":"Display names of the business's credit programs in use: active, or holding a line that may borrow (a draft or paused program with merchants on it)."}},"type":"object","required":["business_id","business_name","plan_tier","billing_status","trial_ends_at","state","days_left","reason"],"title":"LapsingApiAccess"},"SuccessEnvelope_CreditBillingLapseRiskResponse_":{"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/CreditBillingLapseRiskResponse"},{"type":"null"}]}},"additionalProperties":true,"type":"object","title":"SuccessEnvelope[CreditBillingLapseRiskResponse]"},"ErrorResponse":{"title":"ErrorResponse","type":"object","description":"Envelope returned by every non-2xx response. Branch on `code` (stable) rather than `message` (human-readable, may change).","required":["error","message","code"],"properties":{"error":{"type":"string","description":"Error category: `validation_error`, `unauthorized`, `forbidden`, `not_found`, `conflict`, `rate_limited`, `server_error`, or `service_unavailable`."},"message":{"type":"string","description":"Human-readable explanation, safe to show to end users."},"code":{"type":"string","description":"Stable machine-readable code in `CATEGORY_NNN` form (e.g. `NOT_FOUND_006`, `AUTH_010`, `GEN_002`)."},"request_id":{"type":"string","description":"Correlation id for support requests. Echoes the `x-request-id` request header when one was supplied."},"errors":{"type":"object","additionalProperties":{"type":"string"},"description":"Field-level validation messages keyed by field name. Present on 400/422 validation failures only."}}}},"securitySchemes":{"BearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"API Token","description":"API token authentication. Format: `Bearer dz_...`"}}},"security":[{"BearerAuth":[]}]}