openapi: 3.2.0 info: title: SanctionsKit Counterparties API version: 1.0.0 description: Explore success and error examples without an account or API key. Recorded examples use isolated synthetic application data; remaining examples are labeled contract fixtures. Potential-match screening is for review. No-match is limited to selected, qualified sources. Sandbox uses synthetic records and is never billed. Each successfully completed subject consumes one allowance unit, including monitoring rescreens. Failed rows and idempotent retries do not consume additional units. servers: - url: /api/v1 description: This site origin; deployment configuration and access rules apply tags: - name: Counterparties paths: /counterparties: get: operationId: get__counterparties summary: List persistent customer and vendor records tags: - Counterparties description: 'Required API key scope: results:read.' security: - bearerAuth: [] parameters: - in: query name: limit description: Maximum number of items to return. A response may contain fewer items; use its next cursor to decide whether another page exists. schema: type: integer minimum: 1 maximum: 100 default: 25 - in: query name: cursor description: Pass nextCursor from the previous page; omit for the first page. Continue until the response cursor is null. Keep the same filters between pages. schema: type: string format: uuid - in: query name: query schema: type: string maxLength: 200 description: Case-insensitive substring search across counterparty label, subject name, external reference and tags. - in: query name: status schema: enum: - active - archived description: Filter active or archived identities; omission includes both. responses: '200': headers: X-Request-Id: description: Server-generated request correlation identifier. schema: type: string format: uuid description: Successful response. JSON object with the required data key. All properties marked required are present, including keys whose value may be null. Unmarked properties can be omitted; clients should tolerate additional response properties. content: application/json: examples: recorded_page: summary: A page of synthetic counterparties description: Recorded from the real application handler against an isolated synthetic database. IDs, times and nonfunctional temporary secrets are normalized. No customer data or live provider request. value: data: items: - id: 00000000-0000-4000-8000-000000000001 environment: sandbox externalId: DOCS-001 label: Synthetic supplier relationship: vendor subject: name: Alex Morgan entityType: person identifiers: [] tags: - documentation status: active revision: 1 createdAt: '2026-09-17T12:00:00.000Z' updatedAt: '2026-09-17T12:00:00.000Z' - id: 00000000-0000-4000-8000-000000000002 environment: sandbox externalId: DOCS-INTAKE-001 label: Synthetic Intake Customer relationship: customer subject: name: Synthetic Intake Customer entityType: person identifiers: [] tags: [] status: active revision: 1 createdAt: '2026-09-17T12:00:00.000Z' updatedAt: '2026-09-17T12:00:00.000Z' nextCursor: null schema: type: object required: - data properties: data: $ref: '#/components/schemas/CounterpartyPage' '400': headers: X-Request-Id: schema: type: string format: uuid description: Server-generated correlation identifier, also returned in error.requestId. description: '**invalid_request** — Correct the request fields, resource identifiers, JSON body or query parameters before retrying.' content: application/json: schema: $ref: '#/components/schemas/Error' examples: invalid_request: summary: invalid request description: Synthetic error example. Correct the request fields, resource identifiers, JSON body or query parameters before retrying. value: error: code: invalid_request message: The request is invalid. requestId: 01234567-89ab-4cde-8f01-23456789abcd '401': headers: X-Request-Id: schema: type: string format: uuid description: Server-generated correlation identifier, also returned in error.requestId. WWW-Authenticate: schema: type: string description: Bearer authentication challenge. description: '**authentication_required** — Send Authorization: Bearer with a valid API key. An omitted header can produce authentication_required; invalid supplied credentials produce invalid_api_key. **invalid_api_key** — Use an active key for the intended environment.' content: application/json: schema: $ref: '#/components/schemas/Error' examples: authentication_required: summary: authentication required description: 'Synthetic error example. Send Authorization: Bearer with a valid API key. An omitted header can produce authentication_required; invalid supplied credentials produce invalid_api_key.' value: error: code: authentication_required message: Sign in to continue. requestId: 01234567-89ab-4cde-8f01-23456789abcd invalid_api_key: summary: invalid api key description: Synthetic error example. Use an active key for the intended environment. value: error: code: invalid_api_key message: The API key is invalid, expired, or revoked. requestId: 01234567-89ab-4cde-8f01-23456789abcd '403': headers: X-Request-Id: schema: type: string format: uuid description: Server-generated correlation identifier, also returned in error.requestId. description: '**permission_denied** — Ask an organization owner to grant the required role or API-key scope. **insufficient_scope** — Use a key with the scope stated in this operation.' content: application/json: schema: $ref: '#/components/schemas/Error' examples: permission_denied: summary: permission denied description: Synthetic error example. Ask an organization owner to grant the required role or API-key scope. value: error: code: permission_denied message: Your role does not allow this action. requestId: 01234567-89ab-4cde-8f01-23456789abcd insufficient_scope: summary: insufficient scope description: Synthetic error example. Use a key with the scope stated in this operation. value: error: code: insufficient_scope message: The API key does not grant this action. requestId: 01234567-89ab-4cde-8f01-23456789abcd '405': headers: X-Request-Id: schema: type: string format: uuid description: Server-generated correlation identifier, also returned in error.requestId. Allow: schema: type: string description: Comma-separated supported HTTP methods. description: '**method_not_allowed** — Use a method in the Allow response header. OPTIONS lists supported methods; HEAD follows GET authorization and returns no body.' content: application/json: schema: $ref: '#/components/schemas/Error' examples: method_not_allowed: summary: method not allowed description: Synthetic error example. Use a method in the Allow response header. OPTIONS lists supported methods; HEAD follows GET authorization and returns no body. value: error: code: method_not_allowed message: This method is not supported for this endpoint. requestId: 01234567-89ab-4cde-8f01-23456789abcd '413': headers: X-Request-Id: schema: type: string format: uuid description: Server-generated correlation identifier, also returned in error.requestId. description: '**response_too_large** — Reduce the requested page size or use the documented segmented case archive. No evidence is silently truncated.' content: application/json: schema: $ref: '#/components/schemas/Error' examples: response_too_large: summary: response too large description: Synthetic error example. Reduce the requested page size or use the documented segmented case archive. No evidence is silently truncated. value: error: code: response_too_large message: This response exceeds the size limit. Request a smaller page or a segmented export. requestId: 01234567-89ab-4cde-8f01-23456789abcd '429': headers: X-Request-Id: schema: type: string format: uuid description: Server-generated correlation identifier, also returned in error.requestId. Retry-After: schema: type: string description: When present, a delay in seconds or an HTTP-date before which the client should not retry. Service-unavailable responses default to a one-second delay unless another safe value is supplied. A usage allowance error may require quota recovery instead of retrying. description: '**rate_limited** — Wait for the request window to reset and retry with backoff.' content: application/json: schema: $ref: '#/components/schemas/Error' examples: rate_limited: summary: rate limited description: Synthetic error example. Wait for the request window to reset and retry with backoff. value: error: code: rate_limited message: The per-minute request limit has been reached. requestId: 01234567-89ab-4cde-8f01-23456789abcd '500': headers: X-Request-Id: schema: type: string format: uuid description: Server-generated correlation identifier, also returned in error.requestId. description: '**internal_error** — Retry with backoff. For writes reuse the same idempotency key and identical input; include requestId when contacting support.' content: application/json: schema: $ref: '#/components/schemas/Error' examples: internal_error: summary: internal error description: Synthetic error example. Retry with backoff. For writes reuse the same idempotency key and identical input; include requestId when contacting support. value: error: code: internal_error message: The request could not be completed. requestId: 01234567-89ab-4cde-8f01-23456789abcd '503': headers: X-Request-Id: schema: type: string format: uuid description: Server-generated correlation identifier, also returned in error.requestId. Retry-After: schema: type: string description: When present, a delay in seconds or an HTTP-date before which the client should not retry. Service-unavailable responses default to a one-second delay unless another safe value is supplied. A usage allowance error may require quota recovery instead of retrying. description: '**temporarily_unavailable** — Honor Retry-After when present and retry with bounded backoff. Follow this endpoint’s retry contract; preserve the same key and input for idempotent writes. Contact support with requestId if the failure persists.' content: application/json: schema: $ref: '#/components/schemas/Error' examples: temporarily_unavailable: summary: temporarily unavailable description: Synthetic error example. Honor Retry-After when present and retry with bounded backoff. Follow this endpoint’s retry contract; preserve the same key and input for idempotent writes. Contact support with requestId if the failure persists. value: error: code: temporarily_unavailable message: The service is temporarily unavailable. Retry shortly. requestId: 01234567-89ab-4cde-8f01-23456789abcd /counterparties/{id}: get: operationId: get__counterparties_id_ summary: Read a counterparty and linked screening, case and monitor history tags: - Counterparties description: 'Required API key scope: results:read.' security: - bearerAuth: [] parameters: - in: path name: id required: true schema: type: string format: uuid description: Opaque resource identifier owned by the authenticated organization. responses: '200': headers: X-Request-Id: description: Server-generated request correlation identifier. schema: type: string format: uuid description: Successful response. JSON object with the required data key. All properties marked required are present, including keys whose value may be null. Unmarked properties can be omitted; clients should tolerate additional response properties. content: application/json: examples: recorded_detail: summary: A synthetic counterparty with retained history description: Recorded from the real application handler against an isolated synthetic database. IDs, times and nonfunctional temporary secrets are normalized. No customer data or live provider request. value: data: counterparty: id: 00000000-0000-4000-8000-000000000001 environment: sandbox externalId: DOCS-001 label: Synthetic supplier relationship: vendor subject: name: Alex Morgan entityType: person identifiers: [] tags: - documentation status: active revision: 1 createdAt: '2026-09-17T12:00:00.000Z' updatedAt: '2026-09-17T12:00:00.000Z' screenings: [] monitors: [] cases: [] schema: type: object required: - data properties: data: $ref: '#/components/schemas/CounterpartyDetail' '400': headers: X-Request-Id: schema: type: string format: uuid description: Server-generated correlation identifier, also returned in error.requestId. description: '**invalid_request** — Correct the request fields, resource identifiers, JSON body or query parameters before retrying.' content: application/json: schema: $ref: '#/components/schemas/Error' examples: invalid_request: summary: invalid request description: Synthetic error example. Correct the request fields, resource identifiers, JSON body or query parameters before retrying. value: error: code: invalid_request message: The request is invalid. requestId: 01234567-89ab-4cde-8f01-23456789abcd '401': headers: X-Request-Id: schema: type: string format: uuid description: Server-generated correlation identifier, also returned in error.requestId. WWW-Authenticate: schema: type: string description: Bearer authentication challenge. description: '**authentication_required** — Send Authorization: Bearer with a valid API key. An omitted header can produce authentication_required; invalid supplied credentials produce invalid_api_key. **invalid_api_key** — Use an active key for the intended environment.' content: application/json: schema: $ref: '#/components/schemas/Error' examples: authentication_required: summary: authentication required description: 'Synthetic error example. Send Authorization: Bearer with a valid API key. An omitted header can produce authentication_required; invalid supplied credentials produce invalid_api_key.' value: error: code: authentication_required message: Sign in to continue. requestId: 01234567-89ab-4cde-8f01-23456789abcd invalid_api_key: summary: invalid api key description: Synthetic error example. Use an active key for the intended environment. value: error: code: invalid_api_key message: The API key is invalid, expired, or revoked. requestId: 01234567-89ab-4cde-8f01-23456789abcd '403': headers: X-Request-Id: schema: type: string format: uuid description: Server-generated correlation identifier, also returned in error.requestId. description: '**permission_denied** — Ask an organization owner to grant the required role or API-key scope. **insufficient_scope** — Use a key with the scope stated in this operation.' content: application/json: schema: $ref: '#/components/schemas/Error' examples: permission_denied: summary: permission denied description: Synthetic error example. Ask an organization owner to grant the required role or API-key scope. value: error: code: permission_denied message: Your role does not allow this action. requestId: 01234567-89ab-4cde-8f01-23456789abcd insufficient_scope: summary: insufficient scope description: Synthetic error example. Use a key with the scope stated in this operation. value: error: code: insufficient_scope message: The API key does not grant this action. requestId: 01234567-89ab-4cde-8f01-23456789abcd '404': headers: X-Request-Id: schema: type: string format: uuid description: Server-generated correlation identifier, also returned in error.requestId. description: '**not_found** — Check the identifier and selected environment. The resource must belong to your organization and remain available.' content: application/json: schema: $ref: '#/components/schemas/Error' examples: not_found: summary: not found description: Synthetic error example. Check the identifier and selected environment. The resource must belong to your organization and remain available. value: error: code: not_found message: Counterparty not found. requestId: 01234567-89ab-4cde-8f01-23456789abcd '405': headers: X-Request-Id: schema: type: string format: uuid description: Server-generated correlation identifier, also returned in error.requestId. Allow: schema: type: string description: Comma-separated supported HTTP methods. description: '**method_not_allowed** — Use a method in the Allow response header. OPTIONS lists supported methods; HEAD follows GET authorization and returns no body.' content: application/json: schema: $ref: '#/components/schemas/Error' examples: method_not_allowed: summary: method not allowed description: Synthetic error example. Use a method in the Allow response header. OPTIONS lists supported methods; HEAD follows GET authorization and returns no body. value: error: code: method_not_allowed message: This method is not supported for this endpoint. requestId: 01234567-89ab-4cde-8f01-23456789abcd '413': headers: X-Request-Id: schema: type: string format: uuid description: Server-generated correlation identifier, also returned in error.requestId. description: '**response_too_large** — Reduce the requested page size or use the documented segmented case archive. No evidence is silently truncated.' content: application/json: schema: $ref: '#/components/schemas/Error' examples: response_too_large: summary: response too large description: Synthetic error example. Reduce the requested page size or use the documented segmented case archive. No evidence is silently truncated. value: error: code: response_too_large message: This response exceeds the size limit. Request a smaller page or a segmented export. requestId: 01234567-89ab-4cde-8f01-23456789abcd '429': headers: X-Request-Id: schema: type: string format: uuid description: Server-generated correlation identifier, also returned in error.requestId. Retry-After: schema: type: string description: When present, a delay in seconds or an HTTP-date before which the client should not retry. Service-unavailable responses default to a one-second delay unless another safe value is supplied. A usage allowance error may require quota recovery instead of retrying. description: '**rate_limited** — Wait for the request window to reset and retry with backoff.' content: application/json: schema: $ref: '#/components/schemas/Error' examples: rate_limited: summary: rate limited description: Synthetic error example. Wait for the request window to reset and retry with backoff. value: error: code: rate_limited message: The per-minute request limit has been reached. requestId: 01234567-89ab-4cde-8f01-23456789abcd '500': headers: X-Request-Id: schema: type: string format: uuid description: Server-generated correlation identifier, also returned in error.requestId. description: '**internal_error** — Retry with backoff. For writes reuse the same idempotency key and identical input; include requestId when contacting support.' content: application/json: schema: $ref: '#/components/schemas/Error' examples: internal_error: summary: internal error description: Synthetic error example. Retry with backoff. For writes reuse the same idempotency key and identical input; include requestId when contacting support. value: error: code: internal_error message: The request could not be completed. requestId: 01234567-89ab-4cde-8f01-23456789abcd '503': headers: X-Request-Id: schema: type: string format: uuid description: Server-generated correlation identifier, also returned in error.requestId. Retry-After: schema: type: string description: When present, a delay in seconds or an HTTP-date before which the client should not retry. Service-unavailable responses default to a one-second delay unless another safe value is supplied. A usage allowance error may require quota recovery instead of retrying. description: '**temporarily_unavailable** — Honor Retry-After when present and retry with bounded backoff. Follow this endpoint’s retry contract; preserve the same key and input for idempotent writes. Contact support with requestId if the failure persists.' content: application/json: schema: $ref: '#/components/schemas/Error' examples: temporarily_unavailable: summary: temporarily unavailable description: Synthetic error example. Honor Retry-After when present and retry with bounded backoff. Follow this endpoint’s retry contract; preserve the same key and input for idempotent writes. Contact support with requestId if the failure persists. value: error: code: temporarily_unavailable message: The service is temporarily unavailable. Retry shortly. requestId: 01234567-89ab-4cde-8f01-23456789abcd /counterparties/{id}/history: get: operationId: get__counterparties_id_history summary: Page through linked history including truthful expired evidence metadata tags: - Counterparties description: 'Required API key scope: results:read.' security: - bearerAuth: [] parameters: - in: path name: id required: true schema: type: string format: uuid description: Opaque resource identifier owned by the authenticated organization. - in: query name: limit description: Maximum number of items to return. A response may contain fewer items; use its next cursor to decide whether another page exists. schema: type: integer minimum: 1 maximum: 100 default: 25 - in: query name: cursor description: Pass nextCursor from the previous page; omit for the first page. Continue until the response cursor is null. Keep the same filters between pages. schema: type: string format: uuid - in: query name: kind schema: enum: - screenings - cases - monitors default: screenings description: Select which linked resource history to return. The value determines the item response shape. responses: '200': headers: X-Request-Id: description: Server-generated request correlation identifier. schema: type: string format: uuid description: Successful response. JSON object with the required data key. All properties marked required are present, including keys whose value may be null. Unmarked properties can be omitted; clients should tolerate additional response properties. content: application/json: examples: recorded_screenings: summary: Paged retained screening history description: Recorded from the real application handler against an isolated synthetic database. IDs, times and nonfunctional temporary secrets are normalized. No customer data or live provider request. value: data: items: - id: 00000000-0000-4000-8000-000000000001 created_at: '2026-09-17T12:00:00.000Z' expires_at: '2026-09-17T12:00:00.000Z' status: potential_match evidence_state: available total: 1 nextCursor: null schema: type: object required: - data properties: data: $ref: '#/components/schemas/CounterpartyHistory' '400': headers: X-Request-Id: schema: type: string format: uuid description: Server-generated correlation identifier, also returned in error.requestId. description: '**invalid_request** — Correct the request fields, resource identifiers, JSON body or query parameters before retrying.' content: application/json: schema: $ref: '#/components/schemas/Error' examples: invalid_request: summary: invalid request description: Synthetic error example. Correct the request fields, resource identifiers, JSON body or query parameters before retrying. value: error: code: invalid_request message: The request is invalid. requestId: 01234567-89ab-4cde-8f01-23456789abcd '401': headers: X-Request-Id: schema: type: string format: uuid description: Server-generated correlation identifier, also returned in error.requestId. WWW-Authenticate: schema: type: string description: Bearer authentication challenge. description: '**authentication_required** — Send Authorization: Bearer with a valid API key. An omitted header can produce authentication_required; invalid supplied credentials produce invalid_api_key. **invalid_api_key** — Use an active key for the intended environment.' content: application/json: schema: $ref: '#/components/schemas/Error' examples: authentication_required: summary: authentication required description: 'Synthetic error example. Send Authorization: Bearer with a valid API key. An omitted header can produce authentication_required; invalid supplied credentials produce invalid_api_key.' value: error: code: authentication_required message: Sign in to continue. requestId: 01234567-89ab-4cde-8f01-23456789abcd invalid_api_key: summary: invalid api key description: Synthetic error example. Use an active key for the intended environment. value: error: code: invalid_api_key message: The API key is invalid, expired, or revoked. requestId: 01234567-89ab-4cde-8f01-23456789abcd '403': headers: X-Request-Id: schema: type: string format: uuid description: Server-generated correlation identifier, also returned in error.requestId. description: '**permission_denied** — Ask an organization owner to grant the required role or API-key scope. **insufficient_scope** — Use a key with the scope stated in this operation.' content: application/json: schema: $ref: '#/components/schemas/Error' examples: permission_denied: summary: permission denied description: Synthetic error example. Ask an organization owner to grant the required role or API-key scope. value: error: code: permission_denied message: Your role does not allow this action. requestId: 01234567-89ab-4cde-8f01-23456789abcd insufficient_scope: summary: insufficient scope description: Synthetic error example. Use a key with the scope stated in this operation. value: error: code: insufficient_scope message: The API key does not grant this action. requestId: 01234567-89ab-4cde-8f01-23456789abcd '404': headers: X-Request-Id: schema: type: string format: uuid description: Server-generated correlation identifier, also returned in error.requestId. description: '**not_found** — Check the identifier and selected environment. The resource must belong to your organization and remain available.' content: application/json: schema: $ref: '#/components/schemas/Error' examples: not_found: summary: not found description: Synthetic error example. Check the identifier and selected environment. The resource must belong to your organization and remain available. value: error: code: not_found message: Counterparty not found. requestId: 01234567-89ab-4cde-8f01-23456789abcd '405': headers: X-Request-Id: schema: type: string format: uuid description: Server-generated correlation identifier, also returned in error.requestId. Allow: schema: type: string description: Comma-separated supported HTTP methods. description: '**method_not_allowed** — Use a method in the Allow response header. OPTIONS lists supported methods; HEAD follows GET authorization and returns no body.' content: application/json: schema: $ref: '#/components/schemas/Error' examples: method_not_allowed: summary: method not allowed description: Synthetic error example. Use a method in the Allow response header. OPTIONS lists supported methods; HEAD follows GET authorization and returns no body. value: error: code: method_not_allowed message: This method is not supported for this endpoint. requestId: 01234567-89ab-4cde-8f01-23456789abcd '409': headers: X-Request-Id: schema: type: string format: uuid description: Server-generated correlation identifier, also returned in error.requestId. description: '**invalid_cursor** — Use nextCursor from this counterparty and the same history kind.' content: application/json: schema: $ref: '#/components/schemas/Error' examples: invalid_cursor: summary: invalid cursor description: Synthetic error example. Use nextCursor from this counterparty and the same history kind. value: error: code: invalid_cursor message: This history cursor does not belong to the selected counterparty. requestId: 01234567-89ab-4cde-8f01-23456789abcd '413': headers: X-Request-Id: schema: type: string format: uuid description: Server-generated correlation identifier, also returned in error.requestId. description: '**response_too_large** — Reduce the requested page size or use the documented segmented case archive. No evidence is silently truncated.' content: application/json: schema: $ref: '#/components/schemas/Error' examples: response_too_large: summary: response too large description: Synthetic error example. Reduce the requested page size or use the documented segmented case archive. No evidence is silently truncated. value: error: code: response_too_large message: This response exceeds the size limit. Request a smaller page or a segmented export. requestId: 01234567-89ab-4cde-8f01-23456789abcd '429': headers: X-Request-Id: schema: type: string format: uuid description: Server-generated correlation identifier, also returned in error.requestId. Retry-After: schema: type: string description: When present, a delay in seconds or an HTTP-date before which the client should not retry. Service-unavailable responses default to a one-second delay unless another safe value is supplied. A usage allowance error may require quota recovery instead of retrying. description: '**rate_limited** — Wait for the request window to reset and retry with backoff.' content: application/json: schema: $ref: '#/components/schemas/Error' examples: rate_limited: summary: rate limited description: Synthetic error example. Wait for the request window to reset and retry with backoff. value: error: code: rate_limited message: The per-minute request limit has been reached. requestId: 01234567-89ab-4cde-8f01-23456789abcd '500': headers: X-Request-Id: schema: type: string format: uuid description: Server-generated correlation identifier, also returned in error.requestId. description: '**internal_error** — Retry with backoff. For writes reuse the same idempotency key and identical input; include requestId when contacting support.' content: application/json: schema: $ref: '#/components/schemas/Error' examples: internal_error: summary: internal error description: Synthetic error example. Retry with backoff. For writes reuse the same idempotency key and identical input; include requestId when contacting support. value: error: code: internal_error message: The request could not be completed. requestId: 01234567-89ab-4cde-8f01-23456789abcd '503': headers: X-Request-Id: schema: type: string format: uuid description: Server-generated correlation identifier, also returned in error.requestId. Retry-After: schema: type: string description: When present, a delay in seconds or an HTTP-date before which the client should not retry. Service-unavailable responses default to a one-second delay unless another safe value is supplied. A usage allowance error may require quota recovery instead of retrying. description: '**temporarily_unavailable** — Honor Retry-After when present and retry with bounded backoff. Follow this endpoint’s retry contract; preserve the same key and input for idempotent writes. Contact support with requestId if the failure persists.' content: application/json: schema: $ref: '#/components/schemas/Error' examples: temporarily_unavailable: summary: temporarily unavailable description: Synthetic error example. Honor Retry-After when present and retry with bounded backoff. Follow this endpoint’s retry contract; preserve the same key and input for idempotent writes. Contact support with requestId if the failure persists. value: error: code: temporarily_unavailable message: The service is temporarily unavailable. Retry shortly. requestId: 01234567-89ab-4cde-8f01-23456789abcd components: schemas: Subject: $schema: https://json-schema.org/draft/2020-12/schema type: object properties: name: type: string minLength: 2 maxLength: 300 description: Name to compare with publisher records. Leading and trailing whitespace is removed; provide the fullest reliable name available. entityType: default: person type: string enum: - person - organization - vessel - aircraft - other description: Type of subject. Defaults to person when omitted. Every selected source must support this type. identifiers: default: [] maxItems: 20 type: array items: type: object properties: type: type: string minLength: 1 maxLength: 80 description: Identifier scheme, such as passport, national_id, registration, lei, imo or mmsi. Matching normalizes supported scheme aliases. value: type: string minLength: 1 maxLength: 160 description: Identifier value. Send the original value; scheme-specific normalization is applied during matching. issuer: type: string minLength: 1 maxLength: 100 description: Optional issuing authority or country. Omit when unknown; do not send null. required: - type - value additionalProperties: false description: Typed identifiers used for exact matching, such as passport, national_id, registration, lei, imo or mmsi. Defaults to an empty array. Use the publisher’s identifier scheme; custom scheme names are accepted. birthDate: anyOf: - type: string pattern: ^(?!0000)\d{4}$ - type: string pattern: ^(?!0000)\d{4}-(0[1-9]|1[0-2])$ - type: string allOf: - pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))$ - pattern: ^(?!0000) description: 'Known date or partial date: YYYY, YYYY-MM or YYYY-MM-DD. Preserve known precision; do not invent a month or day. Year 0000 and invalid dates are rejected.' country: type: string minLength: 2 maxLength: 100 description: Known country name or code used as supporting identity evidence. It is not a source-selection or geographic coverage filter. required: - name additionalProperties: false CounterpartyDetail: type: object properties: counterparty: $ref: '#/components/schemas/Counterparty' screenings: type: array items: type: object properties: id: type: string format: uuid created_at: type: string format: date-time status: type: string enum: - potential_match - no_match - expired evidence_state: type: string enum: - available - expired required: - id - created_at - status - evidence_state monitors: type: array items: type: object properties: id: type: string format: uuid name: type: string status: type: string enum: - active - paused - deleted last_screening_id: anyOf: - type: string format: uuid - type: 'null' next_run_at: type: string format: date-time required: - id - name - status - last_screening_id - next_run_at cases: type: array items: type: object properties: id: type: string format: uuid created_at: type: string format: date-time decision: type: string enum: - open - confirmed - dismissed business_disposition: type: string enum: - pending - allow - restrict - escalate review_state: type: string screening_id: type: string format: uuid latest_screening_id: anyOf: - type: string format: uuid - type: 'null' required: - id - created_at - decision - business_disposition - review_state - screening_id - latest_screening_id required: - counterparty - screenings - monitors - cases description: Saved identity plus up to 100 rows for each related resource collection. Use /counterparties/{id}/history to paginate the complete history. Error: type: object required: - error description: Failure envelope for every documented non-2xx API response. No data property is returned. Switch on error.code; messages may change. properties: error: type: object required: - code - message - requestId properties: code: type: string description: Machine-readable failure code. See this operation’s status-specific examples for codes and recovery. message: type: string description: Human-readable explanation. Do not parse this text to control application behavior. requestId: type: string format: uuid description: Server correlation ID, also returned in X-Request-Id. Include this ID in support requests. details: description: Optional JSON details for client and validation failures. Validation failures return an array of { path, message } issues; other 4xx codes may return a code-specific object. Server failures omit details. Never assume this key is present. anyOf: - type: array maxItems: 50 items: type: object required: - path - message properties: path: type: string maxLength: 160 description: Dot-separated invalid field path, including array indexes. message: type: string maxLength: 300 description: Validation problem for this field. - type: object additionalProperties: true - type: - string - number - boolean - 'null' detailsTruncated: type: boolean description: True when only the first 50 validation issues are returned. Validation paths and messages are bounded. CounterpartyMonitorHistory: type: object properties: id: type: string format: uuid created_at: type: string format: date-time name: type: string status: type: string enum: - active - paused - deleted last_screening_id: anyOf: - type: string format: uuid - type: 'null' next_run_at: type: string format: date-time required: - id - created_at - name - status - last_screening_id - next_run_at description: Counterparty history item when kind=monitors. Deleted monitors remain visible as history. CounterpartyPage: type: object properties: items: type: array items: $ref: '#/components/schemas/Counterparty' nextCursor: anyOf: - type: string - type: 'null' required: - items - nextCursor CounterpartyCaseHistory: type: object properties: id: type: string format: uuid created_at: type: string format: date-time decision: type: string enum: - open - confirmed - dismissed business_disposition: type: string enum: - pending - allow - restrict - escalate review_state: type: string screening_id: type: string format: uuid latest_screening_id: anyOf: - type: string format: uuid - type: 'null' required: - id - created_at - decision - business_disposition - review_state - screening_id - latest_screening_id description: Counterparty history item when kind=cases. CounterpartyHistory: type: object properties: items: type: array items: anyOf: - $ref: '#/components/schemas/CounterpartyScreeningHistory' - $ref: '#/components/schemas/CounterpartyCaseHistory' - $ref: '#/components/schemas/CounterpartyMonitorHistory' total: type: integer minimum: 0 nextCursor: anyOf: - type: string - type: 'null' required: - items - total - nextCursor CounterpartyScreeningHistory: type: object properties: id: type: string format: uuid created_at: type: string format: date-time expires_at: anyOf: - type: string format: date-time - type: 'null' status: type: string enum: - potential_match - no_match - expired evidence_state: type: string enum: - available - expired required: - id - created_at - expires_at - status - evidence_state description: Counterparty history item when kind=screenings. Expired status is metadata, not a reconstructed result. Counterparty: type: object properties: id: type: string format: uuid environment: type: string enum: - sandbox - production label: type: string externalId: anyOf: - type: string - type: 'null' relationship: type: string enum: - customer - vendor - employee - other subject: $ref: '#/components/schemas/Subject' tags: type: array items: type: string status: type: string enum: - active - archived revision: type: integer minimum: 0 createdAt: type: string format: date-time updatedAt: type: string format: date-time required: - id - environment - label - externalId - relationship - subject - tags - status - revision - createdAt - updatedAt securitySchemes: bearerAuth: type: http scheme: bearer bearerFormat: sk_test_... or sk_live_... x-docs-revision: 499779e00214c23622695c6d7114fb3656edf29161460d9f9e9d2ab65d0cf087