{"openapi":"3.1.0","info":{"title":"Dossier Public API","version":"2026-07-30","summary":"Read and write evidence, matters, claims and the knowledge graph.","description":"The Dossier API is a small, workspace-scoped REST surface over your evidence workspace.\n\n**Authentication** — send a workspace API token as a bearer token:\n`Authorization: Bearer wsk_live_...`. Create tokens in *Workspace settings → API tokens*.\nTokens carry `read` and/or `write` scopes and are bound to exactly one workspace.\n\n**Rate limits** — 120 requests per minute per token. Exceeding it returns `429` with a `Retry-After` header.\n\n**Envelope** — successful responses are `{ \"data\": ..., \"meta\": { ... } }`.\nErrors are `{ \"error\": { \"code\": \"...\", \"message\": \"...\" } }`.\nEvery response includes an `X-Request-Id` header — quote it in support requests.\n\n**Pagination** — list endpoints accept `limit` (1–100, default 50) and `cursor`.\nPass `meta.next_cursor` from the previous page as `cursor` to continue.\n\n**Versioning** — the current version is `2026-07-30`, returned in the `X-Api-Version` header.\nBreaking changes ship as a new dated version; additive fields can appear at any time.\nA retired version stays callable for at least 180 days after its replacement ships."},"servers":[{"url":"https://dossierplus.ai","description":"Production"}],"security":[{"workspaceToken":[]}],"tags":[{"name":"Matters","description":"Investigation and diligence matters in a workspace."},{"name":"Claims","description":"Proof-linked assertions inside a matter."},{"name":"Graph","description":"Workspace-wide knowledge graph export."},{"name":"Partner","description":"Integration partner provisioning: create Dossier accounts for your own customers with a dpk_ partner key."}],"paths":{"/api/public/v1/workspaces/{workspaceId}/matters":{"get":{"tags":["Matters"],"summary":"List matters","description":"Returns matters in the workspace, newest first.","operationId":"listMatters","parameters":[{"$ref":"#/components/parameters/workspaceId"},{"$ref":"#/components/parameters/limit"},{"$ref":"#/components/parameters/cursor"}],"responses":{"200":{"description":"A page of matters.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Matter"}},"meta":{"$ref":"#/components/schemas/PageMeta"}}},"example":{"data":[{"id":"0f2a1c6e-6d4b-4d1f-9a1c-6f2b8a3d5e11","name":"Riverside Holdings — asset trace","description":"Chronology of transfers 2019-2024","status":"active","project_id":"3a9d0c11-2b77-45a3-8d0e-90c1f7b2a441","workspace_id":"9c1b7f22-4f8d-4c0a-b3a6-2f5d81c9e001","created_at":"2026-06-02T18:11:04.221Z","updated_at":"2026-07-21T09:02:44.010Z"}],"meta":{"workspace_id":"9c1b…","count":1,"limit":50,"has_more":false,"next_cursor":null}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/RateLimited"}}},"post":{"tags":["Matters"],"summary":"Create a matter","description":"Creates a matter in the workspace. Requires a token with the `write` scope. When `project_id` is omitted the workspace's first project is used.","operationId":"createMatter","parameters":[{"$ref":"#/components/parameters/workspaceId"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["name"],"properties":{"name":{"type":"string","minLength":2,"maxLength":200},"description":{"type":"string","maxLength":2000},"kind":{"type":"string","enum":["investigation","diligence"],"default":"investigation"},"project_id":{"type":"string","format":"uuid"}}},"example":{"name":"Veristar — Northgate asset trace","kind":"investigation"}}}},"responses":{"200":{"description":"The created matter."},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/api/public/v1/workspaces/{workspaceId}/matters/{matterId}/events":{"get":{"tags":["Timeline"],"summary":"List timeline events in a matter","operationId":"listTimelineEvents","parameters":[{"$ref":"#/components/parameters/workspaceId"},{"$ref":"#/components/parameters/matterId"},{"$ref":"#/components/parameters/limit"},{"$ref":"#/components/parameters/cursor"}],"responses":{"200":{"description":"A page of timeline events."},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}},"post":{"tags":["Timeline"],"summary":"Create timeline events in bulk","description":"Adds up to 200 events to a matter in one call. Requires a token with the `write` scope. Events are created accepted and appear immediately on the chronology, graph and exports.","operationId":"createTimelineEvents","parameters":[{"$ref":"#/components/parameters/workspaceId"},{"$ref":"#/components/parameters/matterId"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["events"],"properties":{"events":{"type":"array","maxItems":200,"items":{"type":"object","required":["title"],"properties":{"title":{"type":"string","minLength":2,"maxLength":400},"description":{"type":"string","maxLength":4000},"date_precision":{"type":"string","enum":["exact","approximate","range","unknown"],"default":"exact"},"date_exact":{"type":"string","format":"date"},"date_approx":{"type":"string"},"date_range_start":{"type":"string","format":"date"},"date_range_end":{"type":"string","format":"date"},"source_class":{"type":"string"},"notes":{"type":"string"},"tags":{"type":"array","items":{"type":"string"}}}}}}},"example":{"events":[{"title":"Northgate incorporated in Delaware","date_precision":"exact","date_exact":"2019-04-11","source_class":"public_record","tags":["corporate"]}]}}}},"responses":{"200":{"description":"The created events."},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/api/public/v1/workspaces/{workspaceId}/matters/{matterId}/actors":{"get":{"tags":["Actors"],"summary":"List actors in a matter","operationId":"listActorsApi","parameters":[{"$ref":"#/components/parameters/workspaceId"},{"$ref":"#/components/parameters/matterId"},{"$ref":"#/components/parameters/limit"},{"$ref":"#/components/parameters/cursor"}],"responses":{"200":{"description":"A page of actors."},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}},"post":{"tags":["Actors"],"summary":"Create actors in bulk","description":"Adds up to 100 people or organisations to a matter, with optional aliases. Requires the `write` scope.","operationId":"createActors","parameters":[{"$ref":"#/components/parameters/workspaceId"},{"$ref":"#/components/parameters/matterId"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["actors"],"properties":{"actors":{"type":"array","maxItems":100,"items":{"type":"object","required":["canonical_name"],"properties":{"canonical_name":{"type":"string"},"actor_type":{"type":"string","enum":["person","company","trust","government","other"]},"notes":{"type":"string"},"aliases":{"type":"array","items":{"type":"string"}}}}}}},"example":{"actors":[{"canonical_name":"Northgate Ltd","actor_type":"company","aliases":["Northgate"]}]}}}},"responses":{"200":{"description":"The created actors."},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/api/public/v1/workspaces/{workspaceId}/matters/{matterId}/evidence":{"get":{"tags":["Evidence"],"summary":"List evidence files in a matter","operationId":"listEvidenceFiles","parameters":[{"$ref":"#/components/parameters/workspaceId"},{"$ref":"#/components/parameters/matterId"},{"$ref":"#/components/parameters/limit"},{"$ref":"#/components/parameters/cursor"}],"responses":{"200":{"description":"A page of evidence files with processing status."},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}},"post":{"tags":["Evidence"],"summary":"Upload an evidence file","description":"Uploads a document (base64, max 25 MB) or plain text into a matter. Requires the `write` scope. Idempotent by content hash: re-sending identical bytes returns the existing file with `duplicate: true`. Plain text is paged immediately; binary files are queued for extraction when `extract` is true.","operationId":"uploadEvidence","parameters":[{"$ref":"#/components/parameters/workspaceId"},{"$ref":"#/components/parameters/matterId"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["filename"],"properties":{"filename":{"type":"string"},"mime_type":{"type":"string"},"content_base64":{"type":"string","description":"Base64 file bytes. Max 25 MB decoded."},"text":{"type":"string","description":"Plain text alternative to content_base64."},"source_url":{"type":"string","format":"uri"},"description":{"type":"string"},"source_class":{"type":"string","default":"third_party"},"extract":{"type":"boolean","default":true}}},"example":{"filename":"northgate-filing.pdf","mime_type":"application/pdf","content_base64":"JVBERi0xLjQK…","source_url":"https://example.gov/filings/12345","source_class":"regulatory_filing"}}}},"responses":{"200":{"description":"The stored evidence file."},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"413":{"description":"File exceeds the 25 MB limit."},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/api/public/v1/workspaces/{workspaceId}/matters/{matterId}/storylines":{"get":{"tags":["Storylines"],"summary":"List storylines in a matter","operationId":"listStorylinesApi","parameters":[{"$ref":"#/components/parameters/workspaceId"},{"$ref":"#/components/parameters/matterId"},{"$ref":"#/components/parameters/limit"},{"$ref":"#/components/parameters/cursor"}],"responses":{"200":{"description":"A page of storylines."},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/api/public/v1/workspaces/{workspaceId}/matters/{matterId}/claims":{"get":{"tags":["Claims"],"summary":"List claims in a matter","operationId":"listClaims","parameters":[{"$ref":"#/components/parameters/workspaceId"},{"$ref":"#/components/parameters/matterId"},{"$ref":"#/components/parameters/limit"},{"$ref":"#/components/parameters/cursor"}],"responses":{"200":{"description":"A page of claims.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Claim"}},"meta":{"$ref":"#/components/schemas/PageMeta"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}},"post":{"tags":["Claims"],"summary":"Create a claim","description":"Requires a token with the `write` scope.","operationId":"createClaim","parameters":[{"$ref":"#/components/parameters/workspaceId"},{"$ref":"#/components/parameters/matterId"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClaimCreate"},"example":{"assertion":"Riverside transferred £1.2m to Northgate on 14 March 2021.","predicate":"transferred_funds_to","object":"Northgate Ltd","evidence_class":"document","confidence":"high","stated_or_inferred":"stated"}}}},"responses":{"200":{"description":"The created claim.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/ClaimCreated"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/api/public/v1/workspaces/{workspaceId}/graph":{"get":{"tags":["Graph"],"summary":"Export the workspace knowledge graph","description":"Returns nodes (matter, case, claim, evidence, actor, event) and edges (contains, related, supports, contradicts, subject_of) for the whole workspace. Capped at 5,000 rows per entity type.","operationId":"exportGraph","parameters":[{"$ref":"#/components/parameters/workspaceId"}],"responses":{"200":{"description":"Graph nodes and edges.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"nodes":{"type":"array","items":{"$ref":"#/components/schemas/GraphNode"}},"edges":{"type":"array","items":{"$ref":"#/components/schemas/GraphEdge"}}}},"meta":{"type":"object"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/api/public/v1/partner/provision":{"post":{"tags":["Partner"],"summary":"Provision a Dossier account for a partner's customer","description":"Creates the end user, their workspace, a default project, an optional first matter, a scoped workspace API token and a one-time claim link — in one call. Authenticate with a partner key (`dpk_live_…`), not a workspace token. Idempotent: repeating the call with the same `idempotency_key` (or the `Idempotency-Key` header) returns the existing workspace instead of a duplicate.","operationId":"provisionPartnerWorkspace","security":[{"partnerKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PartnerProvisionCreate"},"example":{"email":"customer@example.com","display_name":"Alex Kim","workspace_name":"Acme Diligence","plan_id":"dossier_plus","external_ref":"acct_9182","idempotency_key":"acct_9182"}}}},"responses":{"200":{"description":"The provisioned workspace.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/PartnerProvision"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/api/public/v1/partner/workspaces/{workspaceId}":{"get":{"tags":["Partner"],"summary":"Read a provisioned workspace","description":"Provisioning state, plan, claim status and usage counters for a workspace this partner created.","operationId":"getPartnerWorkspace","security":[{"partnerKey":[]}],"parameters":[{"$ref":"#/components/parameters/workspaceId"}],"responses":{"200":{"description":"Provision status and usage.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/api/public/v1/partner/checks":{"post":{"tags":["Partner"],"summary":"Submit a Dossier check on a subject","description":"Files a background check: opens a matter in the customer's workspace, seeds the subject (and any additional subjects) as actors and starts research immediately. Pass `workspace_id` for an existing provisioned workspace, or `email` to have one created. Tier `plus` is the deep check and consumes one report credit on submit (refunded if the check cannot be opened). Idempotent on `idempotency_key`, the `Idempotency-Key` header, or `external_ref`.","operationId":"submitPartnerCheck","security":[{"partnerKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object"},"example":{"workspace_id":"11111111-2222-3333-4444-555555555555","subject_name":"Acme Holdings LLC","subject_type":"company","additional_subjects":[{"name":"Jane Roe","type":"person"}],"reason":"Pre-close sponsor diligence","tier":"plus","external_ref":"check_8821"}}}},"responses":{"200":{"description":"Check accepted.","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}}},"get":{"tags":["Partner"],"summary":"List checks submitted by this partner","description":"Newest first. Optionally filter to one workspace. Requires the read scope.","operationId":"listPartnerChecks","security":[{"partnerKey":[]}],"parameters":[{"name":"workspace_id","in":"query","required":false,"schema":{"type":"string","format":"uuid"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100}}],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/api/public/v1/partner/checks/{checkId}":{"get":{"tags":["Partner"],"summary":"Get one check's status and progress","description":"Returns status (queued, running, ready, failed), counts of what has been gathered so far, and a link to open the matter in Dossier. Requires the read scope.","operationId":"getPartnerCheck","security":[{"partnerKey":[]}],"parameters":[{"name":"checkId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"description":"No such check for this partner."},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/api/public/v1/partner/provision/batch":{"post":{"tags":["Partner"],"summary":"Provision up to 100 customers in one call","description":"Bulk onboarding. Each entry is provisioned idempotently and reported individually; one failure never aborts the batch.","operationId":"batchProvisionPartnerWorkspaces","security":[{"partnerKey":[]}],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/api/public/v1/partner/overview":{"get":{"tags":["Partner"],"summary":"Partner overview","description":"Accounts, claim states and rolled-up metered usage for this partner. Requires the read scope.","operationId":"getPartnerOverview","security":[{"partnerKey":[]}],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/api/public/v1/partner/workspaces/{workspaceId}/lifecycle":{"post":{"tags":["Partner"],"summary":"Suspend, resume or deprovision a workspace","description":"Suspend freezes API tokens but keeps all data. Deprovision schedules deletion after a grace period (default 14 days) and can be cancelled by resuming.","operationId":"partnerWorkspaceLifecycle","security":[{"partnerKey":[]}],"parameters":[{"$ref":"#/components/parameters/workspaceId"}],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/api/public/v1/partner/keys":{"get":{"tags":["Partner"],"summary":"List partner keys","description":"Keys issued to this partner, with prefixes, scopes, environment and last-used times.","operationId":"listPartnerKeys","security":[{"partnerKey":[]}],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}}},"post":{"tags":["Partner"],"summary":"Rotate or revoke the calling key","description":"Rotation returns a new key immediately and expires the current one after an overlap window, so there is no downtime.","operationId":"rotatePartnerKey","security":[{"partnerKey":[]}],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/api/public/v1/partner/webhooks":{"get":{"tags":["Partner"],"summary":"List webhooks and recent deliveries","description":"Shows endpoints, subscribed events and the last 50 delivery attempts.","operationId":"listPartnerWebhooks","security":[{"partnerKey":[]}],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}}},"post":{"tags":["Partner"],"summary":"Create, update or delete a webhook","description":"Deliveries are signed with HMAC-SHA256 over `${t}.${rawBody}` and sent as `dossier-signature: t=<unix>,v1=<hex>`. Failed deliveries retry with exponential backoff up to six times.","operationId":"managePartnerWebhooks","security":[{"partnerKey":[]}],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/api/public/v1/partner/billing":{"get":{"tags":["Partner"],"summary":"Current and previous period statements","description":"Usage is metered continuously and priced with the partner rate card. In demo mode statements are calculated and stored but never charged.","operationId":"getPartnerBilling","security":[{"partnerKey":[]}],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}}},"post":{"tags":["Partner"],"summary":"Issue a statement for a period","description":"Writes the statement as an invoice. In live billing mode the same statement is sent to Stripe.","operationId":"issuePartnerInvoice","security":[{"partnerKey":[]}],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/api/public/v1/partner/health":{"get":{"tags":["Partner"],"summary":"API health and version policy","description":"Availability, error rate and p50/p95 latency for the partner surface over the requested window, plus the supported API versions and sunset policy.","operationId":"getPartnerHealth","security":[{"partnerKey":[]}],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}}}}},"components":{"securitySchemes":{"workspaceToken":{"type":"http","scheme":"bearer","description":"Workspace API token (`wsk_live_…`) with the `read` or `write` scope."},"partnerKey":{"type":"http","scheme":"bearer","description":"Integration partner provisioning key (`dpk_live_…`). Authorises account provisioning only — it grants no access to workspace data."}},"parameters":{"workspaceId":{"name":"workspaceId","in":"path","required":true,"description":"The workspace the token is bound to.","schema":{"type":"string","format":"uuid"}},"matterId":{"name":"matterId","in":"path","required":true,"description":"A matter inside the workspace.","schema":{"type":"string","format":"uuid"}},"limit":{"name":"limit","in":"query","required":false,"description":"Page size, 1–100. Defaults to 50.","schema":{"type":"integer","minimum":1,"maximum":100,"default":50}},"cursor":{"name":"cursor","in":"query","required":false,"description":"ISO-8601 timestamp from `meta.next_cursor` of the previous page.","schema":{"type":"string","format":"date-time"}}},"schemas":{"PartnerProvisionCreate":{"type":"object","required":["email"],"properties":{"email":{"type":"string","format":"email","description":"End user who will own the workspace."},"display_name":{"type":"string","maxLength":120},"workspace_name":{"type":"string","maxLength":120},"project_name":{"type":"string","maxLength":120},"matter_name":{"type":"string","maxLength":160,"description":"Optionally create a first matter."},"plan_id":{"type":"string","description":"Plan stamped on the workspace; defaults to the partner's plan."},"external_ref":{"type":"string","description":"Your own customer/account identifier."},"idempotency_key":{"type":"string","minLength":8},"metadata":{"type":"object","additionalProperties":true}}},"PartnerProvision":{"type":"object","properties":{"provision_id":{"type":"string","format":"uuid"},"state":{"type":"string","enum":["pending","ready","claimed","failed"]},"reused":{"type":"boolean","description":"True when an existing provision was returned."},"email":{"type":"string","format":"email"},"plan_id":{"type":"string"},"workspace_id":{"type":"string","format":"uuid"},"project_id":{"type":"string","format":"uuid"},"matter_id":{"type":"string","format":"uuid","nullable":true},"api_token":{"type":"string","nullable":true,"description":"Workspace API token, returned once."},"claim_url":{"type":"string","nullable":true,"description":"One-time sign-in link for the end user."},"claim_expires_at":{"type":"string","format":"date-time","nullable":true},"mcp_url":{"type":"string"},"api_base_url":{"type":"string"}}},"PageMeta":{"type":"object","properties":{"count":{"type":"integer"},"limit":{"type":"integer"},"has_more":{"type":"boolean"},"next_cursor":{"type":["string","null"],"format":"date-time"}}},"Matter":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"description":{"type":["string","null"]},"status":{"type":"string"},"project_id":{"type":["string","null"],"format":"uuid"},"workspace_id":{"type":"string","format":"uuid"},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"}}},"Claim":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"matter_id":{"type":"string","format":"uuid"},"assertion":{"type":"string"},"predicate":{"type":["string","null"]},"object":{"type":["string","null"]},"subject_actor_id":{"type":["string","null"],"format":"uuid"},"evidence_class":{"type":"string"},"confidence":{"type":"string"},"stated_or_inferred":{"type":"string","enum":["stated","inferred"]},"status":{"type":"string"},"related_event_id":{"type":["string","null"],"format":"uuid"},"related_case_id":{"type":["string","null"],"format":"uuid"},"created_at":{"type":"string","format":"date-time"}}},"ClaimCreate":{"type":"object","required":["assertion"],"properties":{"assertion":{"type":"string","minLength":3,"maxLength":4000},"predicate":{"type":["string","null"],"maxLength":200},"object":{"type":["string","null"],"maxLength":2000},"subject_actor_id":{"type":["string","null"],"format":"uuid"},"related_event_id":{"type":["string","null"],"format":"uuid"},"related_case_id":{"type":["string","null"],"format":"uuid"},"evidence_class":{"type":"string","default":"other"},"confidence":{"type":"string","default":"unspecified"},"stated_or_inferred":{"type":"string","enum":["stated","inferred"],"default":"stated"}}},"ClaimCreated":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"assertion":{"type":"string"},"status":{"type":"string"},"created_at":{"type":"string","format":"date-time"}}},"GraphNode":{"type":"object","properties":{"id":{"type":"string","description":"Prefixed id, e.g. `actor:<uuid>`."},"kind":{"type":"string","enum":["matter","case","claim","evidence","actor","event"]},"label":{"type":"string"}}},"GraphEdge":{"type":"object","properties":{"source":{"type":"string"},"target":{"type":"string"},"kind":{"type":"string","enum":["contains","related","supports","contradicts","subject_of"]}}},"Error":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}},"responses":{"Unauthorized":{"description":"Missing, malformed, expired or revoked token.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"example":{"error":{"code":"unauthorized","message":"Missing, malformed, expired, or revoked API token."}}}}},"Forbidden":{"description":"The token lacks the required scope.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"NotFound":{"description":"The resource does not exist in this workspace.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"ValidationFailed":{"description":"The request body failed validation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"RateLimited":{"description":"Rate limit exceeded. Retry after the number of seconds in `Retry-After`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}