{"openapi":"3.1.0","info":{"title":"Rubicourt API","version":"1.0.0","description":"Two services. Resolve (/v1/policy, /v1/disputes): your platform's own dispute decisions, made by AI under your written policy, with your staff reviewing the cases the policy routes to them; binding only inside your platform. Arbitration (/v1/cases): binding small-claims arbitration, where a licensed attorney arbitrator decides every case and signs every award, with one appeal to a different arbitrator. A Resolve dispute can escalate to arbitration when your policy enables it. Authenticate with your platform API key as a bearer token. Rubicourt is a private arbitration provider, not a government court.","contact":{"email":"hello@rubicourt.com"}},"servers":[{"url":"https://api.rubicourt.com"}],"security":[{"apiKey":[]}],"tags":[{"name":"Resolve","description":"Your platform's own dispute decisions, made by AI under your written policy."},{"name":"Arbitration","description":"Binding small-claims arbitration decided by a licensed attorney arbitrator."},{"name":"Webhooks","description":"Signed events Rubicourt sends to your webhook URL."}],"paths":{"/v1/policy":{"get":{"operationId":"getPolicy","summary":"Get the dispute policy","tags":["Resolve"],"responses":{"200":{"description":"Policy.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Policy"}}}},"400":{"description":"The request is malformed or a field is invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"No such case for this platform.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"put":{"operationId":"publishPolicy","summary":"Publish a new policy version","description":"Open disputes keep the version they started under.","tags":["Resolve"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["text"],"properties":{"text":{"type":"string","minLength":50,"description":"Your dispute rules in plain language."},"auto_decide_max_cents":{"type":"integer","default":25000,"description":"AI decisions are final up to this amount; above it your reviewer approves."},"evidence_window_hours":{"type":"integer","default":72},"review_window_days":{"type":"integer","default":14},"arbitration_enabled":{"type":"boolean","default":false,"description":"True when your terms let users escalate to Rubicourt arbitration."}}}}}},"responses":{"201":{"description":"Published.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Policy"}}}},"400":{"description":"The request is malformed or a field is invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"No such case for this platform.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/disputes":{"post":{"operationId":"openDispute","summary":"Open a dispute","description":"Emails the buyer and seller a link to give their side. The decision follows when both are done, when the evidence window ends, or when you call /decide.","tags":["Resolve"],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Retry safely: a repeat with the same key and body returns the first response. The same key with a different body returns 422.","schema":{"type":"string","maxLength":255}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["category","amount_cents","opened_by","reason","buyer","seller"],"properties":{"external_reference":{"type":"string"},"category":{"type":"string"},"amount_cents":{"type":"integer"},"currency":{"type":"string","const":"USD"},"opened_by":{"type":"string","enum":["buyer","seller"]},"reason":{"type":"string"},"buyer":{"type":"object","required":["name","email","type"],"properties":{"name":{"type":"string"},"email":{"type":"string","format":"email"},"type":{"type":"string","enum":["person","business"]},"ref":{"type":"string","description":"Your user id."}}},"seller":{"type":"object","required":["name","email","type"],"properties":{"name":{"type":"string"},"email":{"type":"string","format":"email"},"type":{"type":"string","enum":["person","business"]},"ref":{"type":"string","description":"Your user id."}}},"transaction":{"type":"object"}}}}}},"responses":{"201":{"description":"Opened.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Dispute"}}}},"400":{"description":"The request is malformed or a field is invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"No such case for this platform.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"No policy published yet.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/disputes/{id}":{"get":{"operationId":"getDispute","summary":"Get a dispute","tags":["Resolve"],"parameters":[{"name":"id","in":"path","required":true,"description":"Dispute id or reference (RD-2026-000123).","schema":{"type":"string"}}],"responses":{"200":{"description":"Dispute.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Dispute"}}}},"400":{"description":"The request is malformed or a field is invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"No such case for this platform.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/disputes/{id}/evidence":{"post":{"operationId":"addDisputeEvidence","summary":"Add a platform record to a dispute","description":"JSON {\"text\": \"...\"} for a written record, or multipart with 'file' and 'description'.","tags":["Resolve"],"parameters":[{"name":"id","in":"path","required":true,"description":"Dispute id or reference (RD-2026-000123).","schema":{"type":"string"}}],"responses":{"201":{"description":"Added."},"400":{"description":"The request is malformed or a field is invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"No such case for this platform.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The dispute is no longer taking evidence.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/disputes/{id}/decide":{"post":{"operationId":"decideDispute","summary":"Decide a dispute now","description":"Skips the rest of the evidence window. Takes up to a minute.","tags":["Resolve"],"parameters":[{"name":"id","in":"path","required":true,"description":"Dispute id or reference (RD-2026-000123).","schema":{"type":"string"}}],"responses":{"200":{"description":"Decided or routed to review.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Dispute"}}}},"400":{"description":"The request is malformed or a field is invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"No such case for this platform.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/disputes/{id}/review":{"post":{"operationId":"reviewDispute","summary":"Approve or override a decision","description":"For disputes in needs_review. Override needs the outcome, refund and a note with the reasons, which both parties see.","tags":["Resolve"],"parameters":[{"name":"id","in":"path","required":true,"description":"Dispute id or reference (RD-2026-000123).","schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Retry safely: a repeat with the same key and body returns the first response. The same key with a different body returns 422.","schema":{"type":"string","maxLength":255}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["action","reviewer"],"properties":{"action":{"type":"string","enum":["approve","override"]},"reviewer":{"type":"string"},"note":{"type":"string"},"outcome":{"type":"string","enum":["refund_full","refund_partial","no_refund"]},"refund_cents":{"type":"integer"},"return_required":{"type":"boolean"}}}}}},"responses":{"200":{"description":"Decided.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Dispute"}}}},"400":{"description":"The request is malformed or a field is invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"No such case for this platform.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/disputes/{id}/link":{"post":{"operationId":"disputeLink","summary":"Get a fresh link for a party","tags":["Resolve"],"parameters":[{"name":"id","in":"path","required":true,"description":"Dispute id or reference (RD-2026-000123).","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["party"],"properties":{"party":{"type":"string","enum":["buyer","seller"]}}}}}},"responses":{"201":{"description":"Link."},"400":{"description":"The request is malformed or a field is invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"No such case for this platform.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/cases":{"post":{"operationId":"fileCase","tags":["Arbitration"],"summary":"File a case","description":"Creates the case, assigns an arbitrator at random, and emails each party a link to its case page. The respondent's answer deadline comes from the rules version.","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Retry safely: a repeat with the same key and body returns the first response. The same key with a different body returns 422.","schema":{"type":"string","maxLength":255}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CaseInput"}}}},"responses":{"201":{"description":"Case filed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Case"}}}},"400":{"description":"The request is malformed or a field is invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"No such case for this platform.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"The case cannot be filed (claim too large, fast track not allowed, duplicate reference).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/cases/{id}":{"get":{"operationId":"getCase","tags":["Arbitration"],"summary":"Get a case","parameters":[{"name":"id","in":"path","required":true,"description":"Case id or reference (RC-2026-000123).","schema":{"type":"string"}}],"responses":{"200":{"description":"Status, parties and deadlines.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Case"}}}},"400":{"description":"The request is malformed or a field is invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"No such case for this platform.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/cases/{id}/statements":{"post":{"operationId":"submitStatement","tags":["Arbitration"],"summary":"Submit a party's statement","description":"Claimants file one claim and, after the response, one reply. Respondents file one response while the case awaits it.","parameters":[{"name":"id","in":"path","required":true,"description":"Case id or reference (RC-2026-000123).","schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Retry safely: a repeat with the same key and body returns the first response. The same key with a different body returns 422.","schema":{"type":"string","maxLength":255}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["party_id","kind","text"],"properties":{"party_id":{"type":"string"},"kind":{"type":"string","enum":["claim","response","reply"]},"text":{"type":"string","maxLength":10000}}}}}},"responses":{"201":{"description":"Statement filed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Statement"}}}},"400":{"description":"The request is malformed or a field is invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"No such case for this platform.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"That statement is not open at this stage, or the record is closed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/cases/{id}/evidence":{"post":{"operationId":"addEvidence","tags":["Arbitration"],"summary":"Attach the platform's own record","description":"Stored privately and marked platform-attested. Up to 4 MB: JPEG, PNG, WebP, HEIC, PDF, plain text or JSON.","parameters":[{"name":"id","in":"path","required":true,"description":"Case id or reference (RC-2026-000123).","schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Retry safely: a repeat with the same key and body returns the first response. The same key with a different body returns 422.","schema":{"type":"string","maxLength":255}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","required":["file","description"],"properties":{"file":{"type":"string","format":"binary"},"description":{"type":"string","maxLength":1000}}}}}},"responses":{"201":{"description":"Evidence added.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Evidence"}}}},"400":{"description":"The request is malformed or a field is invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"No such case for this platform.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The record is closed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"File larger than 4 MB."},"415":{"description":"File type not accepted."}}}},"/v1/cases/{id}/award":{"get":{"operationId":"getAward","tags":["Arbitration"],"summary":"Get the award","description":"The signed award, any appeal decision, and which one binds the parties.","parameters":[{"name":"id","in":"path","required":true,"description":"Case id or reference (RC-2026-000123).","schema":{"type":"string"}}],"responses":{"200":{"description":"Award and appeal decision.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AwardResponse"}}}},"400":{"description":"The request is malformed or a field is invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"No such case for this platform.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/cases/{id}/award/pdf":{"get":{"operationId":"getAwardPdf","tags":["Arbitration"],"summary":"Download the signed award PDF","parameters":[{"name":"id","in":"path","required":true,"description":"Case id or reference (RC-2026-000123).","schema":{"type":"string"}},{"name":"award","in":"query","required":false,"description":"Award id; defaults to the binding decision.","schema":{"type":"string"}}],"responses":{"200":{"description":"The PDF.","content":{"application/pdf":{"schema":{"type":"string","format":"binary"}}}},"400":{"description":"The request is malformed or a field is invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"No such case for this platform.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/cases/{id}/appeal":{"post":{"operationId":"fileAppeal","tags":["Arbitration"],"summary":"File a party's appeal","description":"One appeal per case, within the appeal window. A different arbitrator decides on the record without AI-drafted text; the decision is final.","parameters":[{"name":"id","in":"path","required":true,"description":"Case id or reference (RC-2026-000123).","schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Retry safely: a repeat with the same key and body returns the first response. The same key with a different body returns 422.","schema":{"type":"string","maxLength":255}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["party_id","reason"],"properties":{"party_id":{"type":"string"},"reason":{"type":"string","minLength":50,"maxLength":5000}}}}}},"responses":{"201":{"description":"Appeal filed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Appeal"}}}},"400":{"description":"The request is malformed or a field is invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"No such case for this platform.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"No award open to appeal, the window closed, or an appeal exists.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/cases/{id}/payment":{"post":{"operationId":"confirmPayment","tags":["Arbitration"],"summary":"Confirm the award was paid","description":"Call this when your platform has paid the binding award, for example from escrow or as a refund. Payment is due 30 days after the award becomes final; Rubicourt reminds the parties if it is late.","parameters":[{"name":"id","in":"path","required":true,"description":"Case id or reference (RC-2026-000123).","schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Retry safely: a repeat with the same key and body returns the first response. The same key with a different body returns 422.","schema":{"type":"string","maxLength":255}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["status"],"properties":{"status":{"type":"string","const":"paid"},"paid_at":{"type":"string","format":"date-time"},"note":{"type":"string","maxLength":1000}}}}}},"responses":{"200":{"description":"Payment recorded.","content":{"application/json":{"schema":{"type":"object","properties":{"case_id":{"type":"string"},"award_id":{"type":"string"},"net_cents":{"type":"integer"},"confirmed_at":{"type":"string","format":"date-time"}}}}}},"400":{"description":"The request is malformed or a field is invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"No such case for this platform.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The award is not final yet, or nothing is owed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"webhooks":{"case.created":{"post":{"summary":"Case created","tags":["Webhooks"],"description":"Event type `case.created`. Sent to your webhook URL. Verify Rubicourt-Signature: t=<unix time>,v1=<hex HMAC-SHA256 of '<t>.<raw body>' with your signing secret>. Respond 2xx; failures retry after 1 minute, 10 minutes, 1 hour and 6 hours.","parameters":[{"name":"Rubicourt-Event","in":"header","schema":{"type":"string","const":"case.created"}},{"name":"Rubicourt-Delivery","in":"header","schema":{"type":"string"}},{"name":"Rubicourt-Signature","in":"header","schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookEvent"}}}},"responses":{"200":{"description":"Received."}}}},"case.stage_changed":{"post":{"summary":"Case stage changed","tags":["Webhooks"],"description":"Event type `case.stage_changed`. Sent to your webhook URL. Verify Rubicourt-Signature: t=<unix time>,v1=<hex HMAC-SHA256 of '<t>.<raw body>' with your signing secret>. Respond 2xx; failures retry after 1 minute, 10 minutes, 1 hour and 6 hours.","parameters":[{"name":"Rubicourt-Event","in":"header","schema":{"type":"string","const":"case.stage_changed"}},{"name":"Rubicourt-Delivery","in":"header","schema":{"type":"string"}},{"name":"Rubicourt-Signature","in":"header","schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookEvent"}}}},"responses":{"200":{"description":"Received."}}}},"case.award_issued":{"post":{"summary":"Case award issued","tags":["Webhooks"],"description":"Event type `case.award_issued`. Sent to your webhook URL. Verify Rubicourt-Signature: t=<unix time>,v1=<hex HMAC-SHA256 of '<t>.<raw body>' with your signing secret>. Respond 2xx; failures retry after 1 minute, 10 minutes, 1 hour and 6 hours.","parameters":[{"name":"Rubicourt-Event","in":"header","schema":{"type":"string","const":"case.award_issued"}},{"name":"Rubicourt-Delivery","in":"header","schema":{"type":"string"}},{"name":"Rubicourt-Signature","in":"header","schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookEvent"}}}},"responses":{"200":{"description":"Received."}}}},"case.appeal_filed":{"post":{"summary":"Case appeal filed","tags":["Webhooks"],"description":"Event type `case.appeal_filed`. Sent to your webhook URL. Verify Rubicourt-Signature: t=<unix time>,v1=<hex HMAC-SHA256 of '<t>.<raw body>' with your signing secret>. Respond 2xx; failures retry after 1 minute, 10 minutes, 1 hour and 6 hours.","parameters":[{"name":"Rubicourt-Event","in":"header","schema":{"type":"string","const":"case.appeal_filed"}},{"name":"Rubicourt-Delivery","in":"header","schema":{"type":"string"}},{"name":"Rubicourt-Signature","in":"header","schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookEvent"}}}},"responses":{"200":{"description":"Received."}}}},"case.closed":{"post":{"summary":"Case closed","tags":["Webhooks"],"description":"Event type `case.closed`. Sent to your webhook URL. Verify Rubicourt-Signature: t=<unix time>,v1=<hex HMAC-SHA256 of '<t>.<raw body>' with your signing secret>. Respond 2xx; failures retry after 1 minute, 10 minutes, 1 hour and 6 hours.","parameters":[{"name":"Rubicourt-Event","in":"header","schema":{"type":"string","const":"case.closed"}},{"name":"Rubicourt-Delivery","in":"header","schema":{"type":"string"}},{"name":"Rubicourt-Signature","in":"header","schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookEvent"}}}},"responses":{"200":{"description":"Received."}}}},"case.award_paid":{"post":{"summary":"Case award paid","tags":["Webhooks"],"description":"Event type `case.award_paid`. Sent to your webhook URL. Verify Rubicourt-Signature: t=<unix time>,v1=<hex HMAC-SHA256 of '<t>.<raw body>' with your signing secret>. Respond 2xx; failures retry after 1 minute, 10 minutes, 1 hour and 6 hours.","parameters":[{"name":"Rubicourt-Event","in":"header","schema":{"type":"string","const":"case.award_paid"}},{"name":"Rubicourt-Delivery","in":"header","schema":{"type":"string"}},{"name":"Rubicourt-Signature","in":"header","schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookEvent"}}}},"responses":{"200":{"description":"Received."}}}},"dispute.opened":{"post":{"summary":"Dispute opened","tags":["Webhooks"],"description":"Event type `dispute.opened`. Sent to your webhook URL. Verify Rubicourt-Signature: t=<unix time>,v1=<hex HMAC-SHA256 of '<t>.<raw body>' with your signing secret>. Respond 2xx; failures retry after 1 minute, 10 minutes, 1 hour and 6 hours.","parameters":[{"name":"Rubicourt-Event","in":"header","schema":{"type":"string","const":"dispute.opened"}},{"name":"Rubicourt-Delivery","in":"header","schema":{"type":"string"}},{"name":"Rubicourt-Signature","in":"header","schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookEvent"}}}},"responses":{"200":{"description":"Received."}}}},"dispute.needs_review":{"post":{"summary":"Dispute needs review","tags":["Webhooks"],"description":"Event type `dispute.needs_review`. Sent to your webhook URL. Verify Rubicourt-Signature: t=<unix time>,v1=<hex HMAC-SHA256 of '<t>.<raw body>' with your signing secret>. Respond 2xx; failures retry after 1 minute, 10 minutes, 1 hour and 6 hours.","parameters":[{"name":"Rubicourt-Event","in":"header","schema":{"type":"string","const":"dispute.needs_review"}},{"name":"Rubicourt-Delivery","in":"header","schema":{"type":"string"}},{"name":"Rubicourt-Signature","in":"header","schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookEvent"}}}},"responses":{"200":{"description":"Received."}}}},"dispute.decided":{"post":{"summary":"Dispute decided","tags":["Webhooks"],"description":"Event type `dispute.decided`. Sent to your webhook URL. Verify Rubicourt-Signature: t=<unix time>,v1=<hex HMAC-SHA256 of '<t>.<raw body>' with your signing secret>. Respond 2xx; failures retry after 1 minute, 10 minutes, 1 hour and 6 hours.","parameters":[{"name":"Rubicourt-Event","in":"header","schema":{"type":"string","const":"dispute.decided"}},{"name":"Rubicourt-Delivery","in":"header","schema":{"type":"string"}},{"name":"Rubicourt-Signature","in":"header","schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookEvent"}}}},"responses":{"200":{"description":"Received."}}}},"dispute.arbitration_requested":{"post":{"summary":"Dispute arbitration requested","tags":["Webhooks"],"description":"Event type `dispute.arbitration_requested`. Sent to your webhook URL. Verify Rubicourt-Signature: t=<unix time>,v1=<hex HMAC-SHA256 of '<t>.<raw body>' with your signing secret>. Respond 2xx; failures retry after 1 minute, 10 minutes, 1 hour and 6 hours.","parameters":[{"name":"Rubicourt-Event","in":"header","schema":{"type":"string","const":"dispute.arbitration_requested"}},{"name":"Rubicourt-Delivery","in":"header","schema":{"type":"string"}},{"name":"Rubicourt-Signature","in":"header","schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookEvent"}}}},"responses":{"200":{"description":"Received."}}}},"dispute.escalated":{"post":{"summary":"Dispute escalated","tags":["Webhooks"],"description":"Event type `dispute.escalated`. Sent to your webhook URL. Verify Rubicourt-Signature: t=<unix time>,v1=<hex HMAC-SHA256 of '<t>.<raw body>' with your signing secret>. Respond 2xx; failures retry after 1 minute, 10 minutes, 1 hour and 6 hours.","parameters":[{"name":"Rubicourt-Event","in":"header","schema":{"type":"string","const":"dispute.escalated"}},{"name":"Rubicourt-Delivery","in":"header","schema":{"type":"string"}},{"name":"Rubicourt-Signature","in":"header","schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookEvent"}}}},"responses":{"200":{"description":"Received."}}}},"dispute.closed":{"post":{"summary":"Dispute closed","tags":["Webhooks"],"description":"Event type `dispute.closed`. Sent to your webhook URL. Verify Rubicourt-Signature: t=<unix time>,v1=<hex HMAC-SHA256 of '<t>.<raw body>' with your signing secret>. Respond 2xx; failures retry after 1 minute, 10 minutes, 1 hour and 6 hours.","parameters":[{"name":"Rubicourt-Event","in":"header","schema":{"type":"string","const":"dispute.closed"}},{"name":"Rubicourt-Delivery","in":"header","schema":{"type":"string"}},{"name":"Rubicourt-Signature","in":"header","schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookEvent"}}}},"responses":{"200":{"description":"Received."}}}}},"components":{"securitySchemes":{"apiKey":{"type":"http","scheme":"bearer","description":"Your platform API key."}},"schemas":{"Error":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}}}}},"PartyInput":{"type":"object","required":["name","email","type"],"properties":{"name":{"type":"string"},"email":{"type":"string","format":"email"},"type":{"type":"string","enum":["person","business"]}}},"CaseInput":{"type":"object","required":["category","description","amount_cents","claimant","respondent"],"properties":{"external_reference":{"type":"string","description":"Your id for the dispute; unique per platform."},"category":{"type":"string","examples":["goods_not_received","goods_not_as_described","services_not_performed"]},"description":{"type":"string","maxLength":5000},"amount_cents":{"type":"integer","minimum":1,"description":"Amount claimed, in cents. Limit set by the rules version ($10,000)."},"currency":{"type":"string","const":"USD","default":"USD"},"claimant":{"$ref":"#/components/schemas/PartyInput"},"respondent":{"$ref":"#/components/schemas/PartyInput"},"seat_state":{"type":"string","minLength":2,"maxLength":2,"description":"Two-letter state of the arbitration seat."},"track":{"type":"string","enum":["standard","fast"],"default":"standard","description":"The fast track is only for business-to-business cases."},"transaction":{"type":"object","additionalProperties":true,"description":"Your records (order, messages, payments), stored as a platform-attested file."}}},"Case":{"type":"object","properties":{"id":{"type":"string"},"reference":{"type":"string"},"external_reference":{"type":["string","null"]},"status":{"type":"string","enum":["filed","awaiting_response","evidence_open","summary_check","awaiting_determination","drafting","human_review","award_issued","appeal_pending","final","settled","withdrawn","dismissed"]},"track":{"type":"string","enum":["standard","fast"]},"rules_version":{"type":"string"},"category":{"type":"string"},"amount_cents":{"type":"integer"},"currency":{"type":"string"},"filed_at":{"type":"string","format":"date-time"},"parties":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"role":{"type":"string","enum":["claimant","respondent"]},"type":{"type":"string","enum":["person","business"]},"name":{"type":"string"}}}},"deadlines":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string"},"due_at":{"type":"string","format":"date-time"},"status":{"type":"string"}}}}}},"Statement":{"type":"object","properties":{"id":{"type":"string"},"party_id":{"type":"string"},"kind":{"type":"string"},"submitted_at":{"type":"string","format":"date-time"}}},"Evidence":{"type":"object","properties":{"id":{"type":"string"},"source":{"type":"string","const":"platform_attested"},"sha256":{"type":"string"},"mime_type":{"type":"string"},"size_bytes":{"type":"integer"},"description":{"type":"string"}}},"Policy":{"type":"object","properties":{"id":{"type":"string"},"version":{"type":"integer"},"text":{"type":"string"},"auto_decide_max_cents":{"type":"integer"},"evidence_window_hours":{"type":"integer"},"review_window_days":{"type":"integer"},"arbitration_enabled":{"type":"boolean"},"created_at":{"type":"string","format":"date-time"}}},"Dispute":{"type":"object","properties":{"id":{"type":"string"},"reference":{"type":"string"},"external_reference":{"type":["string","null"]},"status":{"type":"string","enum":["open","deciding","needs_review","decided","awaiting_agreement","escalated","closed","withdrawn"]},"category":{"type":"string"},"amount_cents":{"type":"integer"},"currency":{"type":"string"},"opened_by":{"type":"string"},"policy_version":{"type":"integer"},"evidence_due_at":{"type":"string","format":"date-time"},"review_due_at":{"type":["string","null"],"format":"date-time"},"submissions":{"type":"integer"},"parties":{"type":"array","items":{"type":"object"}},"decision":{"type":["object","null"],"description":"Outcome (refund_full, refund_partial, no_refund), refund_cents, return_required, reasons, citations, confidence, decided_by (ai or platform), reviewer."},"arbitration_case_id":{"type":["string","null"]}}},"Award":{"type":"object","properties":{"id":{"type":"string"},"kind":{"type":"string","enum":["first_instance","appeal","consent"]},"outcome":{"type":"string","enum":["claimant_prevails","respondent_prevails","split","dismissed","settled"]},"amount_cents":{"type":"integer"},"counterclaim_amount_cents":{"type":["integer","null"],"description":"Awarded to the respondent on its counterclaim."},"net_cents":{"type":"integer","description":"Positive: the respondent pays the claimant. Negative: the claimant pays the respondent."},"payment":{"type":"object","properties":{"due_at":{"type":["string","null"],"format":"date-time"},"marked_paid_at":{"type":["string","null"],"format":"date-time"},"confirmed_at":{"type":["string","null"],"format":"date-time"}}},"text":{"type":"string"},"ai_statement":{"type":"string","description":"How the drafting system was used, or that it was not."},"rules_version":{"type":"string"},"signed_at":{"type":"string","format":"date-time"},"appeal_deadline":{"type":["string","null"],"format":"date-time"},"pdf_url":{"type":"string"}}},"AwardResponse":{"type":"object","properties":{"case_id":{"type":"string"},"reference":{"type":"string"},"status":{"type":"string"},"final":{"type":"boolean"},"award":{"$ref":"#/components/schemas/Award"},"appeal_decision":{"oneOf":[{"$ref":"#/components/schemas/Award"},{"type":"null"}]},"binding":{"$ref":"#/components/schemas/Award"}}},"Appeal":{"type":"object","properties":{"id":{"type":"string"},"case_id":{"type":"string"},"filed_by_party_id":{"type":"string"},"fee_cents":{"type":"integer"},"status":{"type":"string"}}},"WebhookEvent":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string"},"created_at":{"type":"string","format":"date-time"},"data":{"type":"object","properties":{"case_id":{"type":"string"},"reference":{"type":"string"},"external_reference":{"type":["string","null"]},"status":{"type":"string"}},"additionalProperties":true}}}}}}