openapi: 3.2.0 info: title: SanctionsKit Monitoring 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: Monitoring paths: /monitors: get: operationId: get__monitors summary: List retained monitoring subjects tags: - Monitoring 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 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 monitors 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 name: Synthetic supplier monitoring status: active last_screening_id: 00000000-0000-4000-8000-000000000002 next_run_at: '2026-09-17T12:00:00.000Z' created_at: '2026-09-17T12:00:00.000Z' revision: 1 counterparty_id: null nextCursor: null schema: type: object required: - data properties: data: $ref: '#/components/schemas/MonitorPage' '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 post: operationId: post__monitors summary: Create a monitor with retained subject data tags: - Monitoring description: 'Required API key scope: monitors:write.' security: - bearerAuth: [] parameters: - in: header name: Idempotency-Key required: true schema: type: string minLength: 8 maxLength: 128 pattern: ^[\w:.-]{8,128}$ description: Reuse for identical retries. Reuse with different input returns 409. requestBody: required: true description: 'JSON request body. Send Content-Type: application/json with UTF-8 encoding; fields marked required must be present. Omit optional fields unless needed. Null is accepted only where explicitly shown. Unknown properties are rejected for validated request objects. Duplicate keys and nesting beyond 32 levels are rejected. Maximum body size: 1,048,576 bytes (1 MiB).' content: application/json: schema: $ref: '#/components/schemas/MonitorRequest' example: name: Synthetic example monitor subject: name: Alex Morgan entityType: person package: sandbox@1 responses: '201': 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_created: summary: A synthetic sandbox monitor created 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: id: 00000000-0000-4000-8000-000000000001 name: Synthetic supplier monitoring status: active schema: type: object required: - data properties: data: $ref: '#/components/schemas/MonitorCreated' '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. **idempotency_key_required** — Include an Idempotency-Key matching this operation’s documented format. **sandbox_coverage_required** — Use package sandbox@1 in the sandbox; choose approved sources or a qualified package in production.' 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 idempotency_key_required: summary: idempotency key required description: Synthetic error example. Include an Idempotency-Key matching this operation’s documented format. value: error: code: idempotency_key_required message: Provide an Idempotency-Key of 8 to 128 URL-safe characters. requestId: 01234567-89ab-4cde-8f01-23456789abcd sandbox_coverage_required: summary: sandbox coverage required description: Synthetic error example. Use package sandbox@1 in the sandbox; choose approved sources or a qualified package in production. value: error: code: sandbox_coverage_required message: Sandbox accepts only the explicitly synthetic sandbox@1 package. 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 '402': headers: X-Request-Id: schema: type: string format: uuid description: Server-generated correlation identifier, also returned in error.requestId. description: '**subscription_required** — Use the synthetic sandbox or arrange an active production subscription before retrying.' content: application/json: schema: $ref: '#/components/schemas/Error' examples: subscription_required: summary: subscription required description: Synthetic error example. Use the synthetic sandbox or arrange an active production subscription before retrying. value: error: code: subscription_required message: An active subscription is required for production screening. 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 '408': headers: X-Request-Id: schema: type: string format: uuid description: Server-generated correlation identifier, also returned in error.requestId. description: '**invalid_request** — Reconnect and retry using the same idempotency key and identical input where supported.' content: application/json: schema: $ref: '#/components/schemas/Error' examples: invalid_request: summary: invalid request description: Synthetic error example. Reconnect and retry using the same idempotency key and identical input where supported. value: error: code: invalid_request message: The request body was not received within 10 seconds. 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: '**idempotency_conflict** — Reuse a key only with identical input. Use a new key for genuinely new work. **screening_policy_changed** — Reload GET /policies and use the current version after reviewing its coverage. **monitor_limit_reached** — Remove an unused monitor or review plan allowance. **counterparty_archived** — Restore the linked counterparty before screening. **counterparty_changed** — Reload the counterparty and use its current identity.' content: application/json: schema: $ref: '#/components/schemas/Error' examples: idempotency_conflict: summary: idempotency conflict description: Synthetic error example. Reuse a key only with identical input. Use a new key for genuinely new work. value: error: code: idempotency_conflict message: This idempotency key was used with a different request. requestId: 01234567-89ab-4cde-8f01-23456789abcd screening_policy_changed: summary: screening policy changed description: Synthetic error example. Reload GET /policies and use the current version after reviewing its coverage. value: error: code: screening_policy_changed message: The policy has a newer version. Review its coverage before screening again. requestId: 01234567-89ab-4cde-8f01-23456789abcd monitor_limit_reached: summary: monitor limit reached description: Synthetic error example. Remove an unused monitor or review plan allowance. value: error: code: monitor_limit_reached message: The monitoring allowance has been reached. requestId: 01234567-89ab-4cde-8f01-23456789abcd counterparty_archived: summary: counterparty archived description: Synthetic error example. Restore the linked counterparty before screening. value: error: code: counterparty_archived message: Restore this counterparty before screening it. requestId: 01234567-89ab-4cde-8f01-23456789abcd counterparty_changed: summary: counterparty changed description: Synthetic error example. Reload the counterparty and use its current identity. value: error: code: counterparty_changed message: Screening input differs from the current counterparty identity. Reload its current subject. 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. **invalid_request** — Reduce the JSON request size to the documented limit.' 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 invalid_request: summary: invalid request description: Synthetic error example. Reduce the JSON request size to the documented limit. value: error: code: invalid_request message: REQUEST_TOO_LARGE requestId: 01234567-89ab-4cde-8f01-23456789abcd '415': headers: X-Request-Id: schema: type: string format: uuid description: Server-generated correlation identifier, also returned in error.requestId. description: '**invalid_request** — Use Content-Type: application/json and an uncompressed UTF-8 body.' content: application/json: schema: $ref: '#/components/schemas/Error' examples: invalid_request: summary: invalid request description: 'Synthetic error example. Use Content-Type: application/json and an uncompressed UTF-8 body.' value: error: code: invalid_request message: Send application/json with UTF-8 encoding. requestId: 01234567-89ab-4cde-8f01-23456789abcd '422': headers: X-Request-Id: schema: type: string format: uuid description: Server-generated correlation identifier, also returned in error.requestId. description: '**screening_policy_required** — Load GET /policies and supply the current id and version with the required coverage. **policy_entity_type_unsupported** — Choose an approved policy with required sources for this subject type. **policy_coverage_mismatch** — For production policy-based requests use explicit sources, include all required sources and only permitted optional sources; do not substitute a package. **screening_policy_unavailable** — Reload the current policy before retrying. Do not substitute a different scope silently. **invalid_coverage** — Check GET /sources and select coverage available to the requested environment and subject type. **unsupported_entity_type** — Check source capabilities and remove incompatible sources, or choose coverage for this subject type. **matching_variant_limit** — Provide a more precise name or identifier and retry. **candidate_limit_exceeded** — Add reliable identifying information before screening again. No all-clear result was produced.' content: application/json: schema: $ref: '#/components/schemas/Error' examples: screening_policy_required: summary: screening policy required description: Synthetic error example. Load GET /policies and supply the current id and version with the required coverage. value: error: code: screening_policy_required message: Choose an approved organization screening policy. requestId: 01234567-89ab-4cde-8f01-23456789abcd policy_entity_type_unsupported: summary: policy entity type unsupported description: Synthetic error example. Choose an approved policy with required sources for this subject type. value: error: code: policy_entity_type_unsupported message: This policy has no required coverage for the selected subject type. requestId: 01234567-89ab-4cde-8f01-23456789abcd policy_coverage_mismatch: summary: policy coverage mismatch description: Synthetic error example. For production policy-based requests use explicit sources, include all required sources and only permitted optional sources; do not substitute a package. value: error: code: policy_coverage_mismatch message: Include every required source and only permitted optional sources for this policy. requestId: 01234567-89ab-4cde-8f01-23456789abcd screening_policy_unavailable: summary: screening policy unavailable description: Synthetic error example. Reload the current policy before retrying. Do not substitute a different scope silently. value: error: code: screening_policy_unavailable message: The selected policy version is unavailable. requestId: 01234567-89ab-4cde-8f01-23456789abcd invalid_coverage: summary: invalid coverage description: Synthetic error example. Check GET /sources and select coverage available to the requested environment and subject type. value: error: code: invalid_coverage message: Choose a supported coverage package or explicit sources. requestId: 01234567-89ab-4cde-8f01-23456789abcd unsupported_entity_type: summary: unsupported entity type description: Synthetic error example. Check source capabilities and remove incompatible sources, or choose coverage for this subject type. value: error: code: unsupported_entity_type message: The selected source does not support this subject type. No screening was completed. requestId: 01234567-89ab-4cde-8f01-23456789abcd matching_variant_limit: summary: matching variant limit description: Synthetic error example. Provide a more precise name or identifier and retry. value: error: code: matching_variant_limit message: This name has too many spelling variants for complete screening. No screening was completed. requestId: 01234567-89ab-4cde-8f01-23456789abcd candidate_limit_exceeded: summary: candidate limit exceeded description: Synthetic error example. Add reliable identifying information before screening again. No all-clear result was produced. value: error: code: candidate_limit_exceeded message: This query has too many candidates for reliable screening. Add a precise identifier or more complete name. 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. **coverage_unavailable** — Do not treat this failure as no-match. Retry only when the selected coverage is available. **stale_coverage** — Wait for fresh selected coverage. Do not interpret this failure as a no-match result. **production_screening_disabled** — Wait until production screening is available; the synthetic sandbox remains separate.' 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 coverage_unavailable: summary: coverage unavailable description: Synthetic error example. Do not treat this failure as no-match. Retry only when the selected coverage is available. value: error: code: coverage_unavailable message: The selected coverage is temporarily unavailable. No screening was completed. requestId: 01234567-89ab-4cde-8f01-23456789abcd stale_coverage: summary: stale coverage description: Synthetic error example. Wait for fresh selected coverage. Do not interpret this failure as a no-match result. value: error: code: stale_coverage message: The selected coverage is stale. No screening was completed. requestId: 01234567-89ab-4cde-8f01-23456789abcd production_screening_disabled: summary: production screening disabled description: Synthetic error example. Wait until production screening is available; the synthetic sandbox remains separate. value: error: code: production_screening_disabled message: Production screening is temporarily unavailable. No screening was completed. requestId: 01234567-89ab-4cde-8f01-23456789abcd /monitors/{id}: get: operationId: get__monitors_id_ summary: Read one active or paused monitor tags: - Monitoring 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: success: summary: Synthetic success example description: Synthetic contract example, validated against the response schema. Invented data; no live customer, provider request, payment, message or source activation. value: data: id: 01234567-89ab-4cde-8f01-23456789abcd name: Synthetic customer monitor status: active last_screening_id: 01234567-89ab-4cde-8f01-23456789abcd next_run_at: '2026-09-18T12:00:00.000Z' created_at: '2026-09-17T12:00:00.000Z' revision: 1 counterparty_id: 01234567-89ab-4cde-8f01-23456789abce schema: type: object required: - data properties: data: $ref: '#/components/schemas/Monitor' '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: Monitor 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 patch: operationId: patch__monitors_id_ summary: Update a monitored subject and queue a fresh screen tags: - Monitoring description: 'Required API key scope: monitors:write.' security: - bearerAuth: [] parameters: - in: path name: id required: true schema: type: string format: uuid description: Opaque resource identifier owned by the authenticated organization. - in: header name: Idempotency-Key required: true schema: type: string minLength: 8 maxLength: 128 pattern: ^[\w:.-]{8,128}$ description: Reuse for identical retries. Reuse with different input returns 409. requestBody: required: true description: 'JSON request body. Send Content-Type: application/json with UTF-8 encoding; fields marked required must be present. Omit optional fields unless needed. Null is accepted only where explicitly shown. Unknown properties are rejected for validated request objects. Duplicate keys and nesting beyond 32 levels are rejected. Maximum body size: 1,048,576 bytes (1 MiB).' content: application/json: schema: $ref: '#/components/schemas/MonitorUpdate' example: name: Synthetic example monitor subject: name: Alex Morgan entityType: person package: sandbox@1 expectedRevision: 1 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_updated: summary: A synthetic monitored subject updated 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: id: 00000000-0000-4000-8000-000000000001 name: Updated synthetic monitoring status: active revision: 2 schema: type: object required: - data properties: data: $ref: '#/components/schemas/MonitorUpdated' '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. **idempotency_key_required** — Include an Idempotency-Key matching this operation’s documented format. **sandbox_coverage_required** — Use package sandbox@1 in the sandbox; choose approved sources or a qualified package in production.' 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 idempotency_key_required: summary: idempotency key required description: Synthetic error example. Include an Idempotency-Key matching this operation’s documented format. value: error: code: idempotency_key_required message: Provide an Idempotency-Key of 8 to 128 URL-safe characters. requestId: 01234567-89ab-4cde-8f01-23456789abcd sandbox_coverage_required: summary: sandbox coverage required description: Synthetic error example. Use package sandbox@1 in the sandbox; choose approved sources or a qualified package in production. value: error: code: sandbox_coverage_required message: Sandbox accepts only the explicitly synthetic sandbox@1 package. 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 '402': headers: X-Request-Id: schema: type: string format: uuid description: Server-generated correlation identifier, also returned in error.requestId. description: '**subscription_required** — Use the synthetic sandbox or arrange an active production subscription before retrying.' content: application/json: schema: $ref: '#/components/schemas/Error' examples: subscription_required: summary: subscription required description: Synthetic error example. Use the synthetic sandbox or arrange an active production subscription before retrying. value: error: code: subscription_required message: An active subscription is required for production screening. 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: Monitor 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 '408': headers: X-Request-Id: schema: type: string format: uuid description: Server-generated correlation identifier, also returned in error.requestId. description: '**invalid_request** — Reconnect and retry using the same idempotency key and identical input where supported.' content: application/json: schema: $ref: '#/components/schemas/Error' examples: invalid_request: summary: invalid request description: Synthetic error example. Reconnect and retry using the same idempotency key and identical input where supported. value: error: code: invalid_request message: The request body was not received within 10 seconds. 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: '**idempotency_conflict** — Reuse a key only with identical input. Use a new key for genuinely new work. **screening_policy_changed** — Reload GET /policies and use the current version after reviewing its coverage. **monitor_limit_reached** — Remove an unused monitor or review plan allowance. **counterparty_archived** — Restore the linked counterparty before screening. **counterparty_changed** — Reload the counterparty and use its current identity. **monitor_changed** — Reload the monitor and use its current expectedRevision.' content: application/json: schema: $ref: '#/components/schemas/Error' examples: idempotency_conflict: summary: idempotency conflict description: Synthetic error example. Reuse a key only with identical input. Use a new key for genuinely new work. value: error: code: idempotency_conflict message: This idempotency key was used with a different request. requestId: 01234567-89ab-4cde-8f01-23456789abcd screening_policy_changed: summary: screening policy changed description: Synthetic error example. Reload GET /policies and use the current version after reviewing its coverage. value: error: code: screening_policy_changed message: The policy has a newer version. Review its coverage before screening again. requestId: 01234567-89ab-4cde-8f01-23456789abcd monitor_limit_reached: summary: monitor limit reached description: Synthetic error example. Remove an unused monitor or review plan allowance. value: error: code: monitor_limit_reached message: The monitoring allowance has been reached. requestId: 01234567-89ab-4cde-8f01-23456789abcd counterparty_archived: summary: counterparty archived description: Synthetic error example. Restore the linked counterparty before screening. value: error: code: counterparty_archived message: Restore this counterparty before screening it. requestId: 01234567-89ab-4cde-8f01-23456789abcd counterparty_changed: summary: counterparty changed description: Synthetic error example. Reload the counterparty and use its current identity. value: error: code: counterparty_changed message: Screening input differs from the current counterparty identity. Reload its current subject. requestId: 01234567-89ab-4cde-8f01-23456789abcd monitor_changed: summary: monitor changed description: Synthetic error example. Reload the monitor and use its current expectedRevision. value: error: code: monitor_changed message: This monitor changed. Reload before saving. 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. **invalid_request** — Reduce the JSON request size to the documented limit.' 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 invalid_request: summary: invalid request description: Synthetic error example. Reduce the JSON request size to the documented limit. value: error: code: invalid_request message: REQUEST_TOO_LARGE requestId: 01234567-89ab-4cde-8f01-23456789abcd '415': headers: X-Request-Id: schema: type: string format: uuid description: Server-generated correlation identifier, also returned in error.requestId. description: '**invalid_request** — Use Content-Type: application/json and an uncompressed UTF-8 body.' content: application/json: schema: $ref: '#/components/schemas/Error' examples: invalid_request: summary: invalid request description: 'Synthetic error example. Use Content-Type: application/json and an uncompressed UTF-8 body.' value: error: code: invalid_request message: Send application/json with UTF-8 encoding. requestId: 01234567-89ab-4cde-8f01-23456789abcd '422': headers: X-Request-Id: schema: type: string format: uuid description: Server-generated correlation identifier, also returned in error.requestId. description: '**screening_policy_required** — Load GET /policies and supply the current id and version with the required coverage. **policy_entity_type_unsupported** — Choose an approved policy with required sources for this subject type. **policy_coverage_mismatch** — For production policy-based requests use explicit sources, include all required sources and only permitted optional sources; do not substitute a package. **screening_policy_unavailable** — Reload the current policy before retrying. Do not substitute a different scope silently. **invalid_coverage** — Check GET /sources and select coverage available to the requested environment and subject type. **unsupported_entity_type** — Check source capabilities and remove incompatible sources, or choose coverage for this subject type. **matching_variant_limit** — Provide a more precise name or identifier and retry. **candidate_limit_exceeded** — Add reliable identifying information before screening again. No all-clear result was produced.' content: application/json: schema: $ref: '#/components/schemas/Error' examples: screening_policy_required: summary: screening policy required description: Synthetic error example. Load GET /policies and supply the current id and version with the required coverage. value: error: code: screening_policy_required message: Choose an approved organization screening policy. requestId: 01234567-89ab-4cde-8f01-23456789abcd policy_entity_type_unsupported: summary: policy entity type unsupported description: Synthetic error example. Choose an approved policy with required sources for this subject type. value: error: code: policy_entity_type_unsupported message: This policy has no required coverage for the selected subject type. requestId: 01234567-89ab-4cde-8f01-23456789abcd policy_coverage_mismatch: summary: policy coverage mismatch description: Synthetic error example. For production policy-based requests use explicit sources, include all required sources and only permitted optional sources; do not substitute a package. value: error: code: policy_coverage_mismatch message: Include every required source and only permitted optional sources for this policy. requestId: 01234567-89ab-4cde-8f01-23456789abcd screening_policy_unavailable: summary: screening policy unavailable description: Synthetic error example. Reload the current policy before retrying. Do not substitute a different scope silently. value: error: code: screening_policy_unavailable message: The selected policy version is unavailable. requestId: 01234567-89ab-4cde-8f01-23456789abcd invalid_coverage: summary: invalid coverage description: Synthetic error example. Check GET /sources and select coverage available to the requested environment and subject type. value: error: code: invalid_coverage message: Choose a supported coverage package or explicit sources. requestId: 01234567-89ab-4cde-8f01-23456789abcd unsupported_entity_type: summary: unsupported entity type description: Synthetic error example. Check source capabilities and remove incompatible sources, or choose coverage for this subject type. value: error: code: unsupported_entity_type message: The selected source does not support this subject type. No screening was completed. requestId: 01234567-89ab-4cde-8f01-23456789abcd matching_variant_limit: summary: matching variant limit description: Synthetic error example. Provide a more precise name or identifier and retry. value: error: code: matching_variant_limit message: This name has too many spelling variants for complete screening. No screening was completed. requestId: 01234567-89ab-4cde-8f01-23456789abcd candidate_limit_exceeded: summary: candidate limit exceeded description: Synthetic error example. Add reliable identifying information before screening again. No all-clear result was produced. value: error: code: candidate_limit_exceeded message: This query has too many candidates for reliable screening. Add a precise identifier or more complete name. 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. **coverage_unavailable** — Do not treat this failure as no-match. Retry only when the selected coverage is available. **stale_coverage** — Wait for fresh selected coverage. Do not interpret this failure as a no-match result. **production_screening_disabled** — Wait until production screening is available; the synthetic sandbox remains separate.' 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 coverage_unavailable: summary: coverage unavailable description: Synthetic error example. Do not treat this failure as no-match. Retry only when the selected coverage is available. value: error: code: coverage_unavailable message: The selected coverage is temporarily unavailable. No screening was completed. requestId: 01234567-89ab-4cde-8f01-23456789abcd stale_coverage: summary: stale coverage description: Synthetic error example. Wait for fresh selected coverage. Do not interpret this failure as a no-match result. value: error: code: stale_coverage message: The selected coverage is stale. No screening was completed. requestId: 01234567-89ab-4cde-8f01-23456789abcd production_screening_disabled: summary: production screening disabled description: Synthetic error example. Wait until production screening is available; the synthetic sandbox remains separate. value: error: code: production_screening_disabled message: Production screening is temporarily unavailable. No screening was completed. requestId: 01234567-89ab-4cde-8f01-23456789abcd delete: operationId: delete__monitors_id_ summary: Stop monitoring and remove retained monitor input tags: - Monitoring description: 'Required API key scope: monitors:write.' 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_deleted: summary: A synthetic monitor deleted 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: id: 00000000-0000-4000-8000-000000000001 status: deleted schema: type: object required: - data properties: data: $ref: '#/components/schemas/MonitorDeleted' '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: Monitor 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 /monitoring: get: operationId: get__monitoring summary: Read monitor health, controls and estimated period capacity tags: - Monitoring description: 'Required API key scope: results:read. Health follows the last successful check; an active schedule is not proof of coverage. Forecast excludes source changes, retries and future interactive or batch work and does not reserve allowance.' 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: 25 default: 20 - 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: monitorId schema: type: string format: uuid description: Return only items belonging to this monitor UUID. - in: query name: q schema: type: string maxLength: 200 description: Case-insensitive substring search within monitor names. 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: Synthetic monitoring controls and current state 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 name: Synthetic supplier monitoring status: active request: package: sandbox@1 subject: name: Alex Morgan entityType: person identifiers: [] retention: standard counterpartyId: null lastScreeningId: 00000000-0000-4000-8000-000000000002 nextRunAt: '2026-09-17T12:00:00.000Z' updatedAt: '2026-09-17T12:00:00.000Z' intervalHours: 24 revision: 1 lastErrorCode: null lastAttemptAt: '2026-09-17T12:00:00.000Z' lastSuccessfulAt: '2026-09-17T12:00:00.000Z' health: healthy nextCursor: null forecast: generatedAt: '2026-09-17T12:00:00.000Z' periodEnd: '2026-09-17T12:00:00.000Z' dailyScreenings: 1 projectedRemainingScreenings: 14 effectiveLimit: 100 used: 3 reserved: 0 remaining: 97 projectedExhaustionAt: null forecastUnavailable: null schema: type: object required: - data properties: data: $ref: '#/components/schemas/MonitoringPage' '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 /monitoring/{id}: patch: operationId: patch__monitoring_id_ summary: Pause, resume, change cadence or queue a check now using the current revision tags: - Monitoring description: 'Required API key scope: monitors:write. Policy-backed monitors use their approved cadence. Resume and immediate retries revalidate current policy and coverage. runNow queues work and does not itself establish a completed result.' security: - bearerAuth: [] parameters: - in: path name: id required: true schema: type: string format: uuid description: Opaque resource identifier owned by the authenticated organization. - in: header name: Idempotency-Key required: true schema: type: string minLength: 8 maxLength: 128 pattern: ^[\w:.-]{8,128}$ description: Reuse for identical retries. Reuse with different input returns 409. requestBody: required: true description: 'JSON request body. Send Content-Type: application/json with UTF-8 encoding; fields marked required must be present. Omit optional fields unless needed. Null is accepted only where explicitly shown. Unknown properties are rejected for validated request objects. Duplicate keys and nesting beyond 32 levels are rejected. Maximum body size: 65,536 bytes (64 KiB).' content: application/json: schema: $ref: '#/components/schemas/MonitorControl' example: expectedRevision: 1 status: paused 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_paused: summary: Synthetic monitoring paused 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: id: 00000000-0000-4000-8000-000000000001 updated: true schema: type: object required: - data properties: data: $ref: '#/components/schemas/ResourceUpdated' '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. **idempotency_key_required** — Include an Idempotency-Key matching this operation’s documented format. **sandbox_coverage_required** — Use package sandbox@1 in the sandbox; choose approved sources or a qualified package in production.' 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 idempotency_key_required: summary: idempotency key required description: Synthetic error example. Include an Idempotency-Key matching this operation’s documented format. value: error: code: idempotency_key_required message: Provide an Idempotency-Key of 8 to 128 URL-safe characters. requestId: 01234567-89ab-4cde-8f01-23456789abcd sandbox_coverage_required: summary: sandbox coverage required description: Synthetic error example. Use package sandbox@1 in the sandbox; choose approved sources or a qualified package in production. value: error: code: sandbox_coverage_required message: Sandbox accepts only the explicitly synthetic sandbox@1 package. 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 '402': headers: X-Request-Id: schema: type: string format: uuid description: Server-generated correlation identifier, also returned in error.requestId. description: '**subscription_required** — Use the synthetic sandbox or arrange an active production subscription before retrying.' content: application/json: schema: $ref: '#/components/schemas/Error' examples: subscription_required: summary: subscription required description: Synthetic error example. Use the synthetic sandbox or arrange an active production subscription before retrying. value: error: code: subscription_required message: An active subscription is required for production screening. 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: Monitor 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 '408': headers: X-Request-Id: schema: type: string format: uuid description: Server-generated correlation identifier, also returned in error.requestId. description: '**invalid_request** — Reconnect and retry using the same idempotency key and identical input where supported.' content: application/json: schema: $ref: '#/components/schemas/Error' examples: invalid_request: summary: invalid request description: Synthetic error example. Reconnect and retry using the same idempotency key and identical input where supported. value: error: code: invalid_request message: The request body was not received within 10 seconds. 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: '**idempotency_conflict** — Reuse a key only with identical input. Use a new key for genuinely new work. **screening_policy_changed** — Reload GET /policies and use the current version after reviewing its coverage. **monitor_paused** — Set status=active with runNow or resume the monitor first. **stale_revision** — Reload and send its current expectedRevision. **monitor_limit_reached** — Reduce active monitors or review plan allowance. **counterparty_unavailable** — Restore the linked counterparty first.' content: application/json: schema: $ref: '#/components/schemas/Error' examples: idempotency_conflict: summary: idempotency conflict description: Synthetic error example. Reuse a key only with identical input. Use a new key for genuinely new work. value: error: code: idempotency_conflict message: This idempotency key was used with a different request. requestId: 01234567-89ab-4cde-8f01-23456789abcd screening_policy_changed: summary: screening policy changed description: Synthetic error example. Reload GET /policies and use the current version after reviewing its coverage. value: error: code: screening_policy_changed message: The policy has a newer version. Review its coverage before screening again. requestId: 01234567-89ab-4cde-8f01-23456789abcd monitor_paused: summary: monitor paused description: Synthetic error example. Set status=active with runNow or resume the monitor first. value: error: code: monitor_paused message: Resume this monitor before running a check. requestId: 01234567-89ab-4cde-8f01-23456789abcd stale_revision: summary: stale revision description: Synthetic error example. Reload and send its current expectedRevision. value: error: code: stale_revision message: This monitor changed. Reload before saving. requestId: 01234567-89ab-4cde-8f01-23456789abcd monitor_limit_reached: summary: monitor limit reached description: Synthetic error example. Reduce active monitors or review plan allowance. value: error: code: monitor_limit_reached message: The monitoring allowance has been reached. requestId: 01234567-89ab-4cde-8f01-23456789abcd counterparty_unavailable: summary: counterparty unavailable description: Synthetic error example. Restore the linked counterparty first. value: error: code: counterparty_unavailable message: Restore the linked counterparty before resuming monitoring. 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. **invalid_request** — Reduce the JSON request size to the documented limit.' 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 invalid_request: summary: invalid request description: Synthetic error example. Reduce the JSON request size to the documented limit. value: error: code: invalid_request message: REQUEST_TOO_LARGE requestId: 01234567-89ab-4cde-8f01-23456789abcd '415': headers: X-Request-Id: schema: type: string format: uuid description: Server-generated correlation identifier, also returned in error.requestId. description: '**invalid_request** — Use Content-Type: application/json and an uncompressed UTF-8 body.' content: application/json: schema: $ref: '#/components/schemas/Error' examples: invalid_request: summary: invalid request description: 'Synthetic error example. Use Content-Type: application/json and an uncompressed UTF-8 body.' value: error: code: invalid_request message: Send application/json with UTF-8 encoding. requestId: 01234567-89ab-4cde-8f01-23456789abcd '422': headers: X-Request-Id: schema: type: string format: uuid description: Server-generated correlation identifier, also returned in error.requestId. description: '**screening_policy_required** — Load GET /policies and supply the current id and version with the required coverage. **policy_entity_type_unsupported** — Choose an approved policy with required sources for this subject type. **policy_coverage_mismatch** — For production policy-based requests use explicit sources, include all required sources and only permitted optional sources; do not substitute a package. **screening_policy_unavailable** — Reload the current policy before retrying. Do not substitute a different scope silently. **invalid_coverage** — Check GET /sources and select coverage available to the requested environment and subject type. **unsupported_entity_type** — Check source capabilities and remove incompatible sources, or choose coverage for this subject type. **matching_variant_limit** — Provide a more precise name or identifier and retry. **candidate_limit_exceeded** — Add reliable identifying information before screening again. No all-clear result was produced. **monitoring_policy_cadence** — Retain the policy cadence or update the approved policy before changing it.' content: application/json: schema: $ref: '#/components/schemas/Error' examples: screening_policy_required: summary: screening policy required description: Synthetic error example. Load GET /policies and supply the current id and version with the required coverage. value: error: code: screening_policy_required message: Choose an approved organization screening policy. requestId: 01234567-89ab-4cde-8f01-23456789abcd policy_entity_type_unsupported: summary: policy entity type unsupported description: Synthetic error example. Choose an approved policy with required sources for this subject type. value: error: code: policy_entity_type_unsupported message: This policy has no required coverage for the selected subject type. requestId: 01234567-89ab-4cde-8f01-23456789abcd policy_coverage_mismatch: summary: policy coverage mismatch description: Synthetic error example. For production policy-based requests use explicit sources, include all required sources and only permitted optional sources; do not substitute a package. value: error: code: policy_coverage_mismatch message: Include every required source and only permitted optional sources for this policy. requestId: 01234567-89ab-4cde-8f01-23456789abcd screening_policy_unavailable: summary: screening policy unavailable description: Synthetic error example. Reload the current policy before retrying. Do not substitute a different scope silently. value: error: code: screening_policy_unavailable message: The selected policy version is unavailable. requestId: 01234567-89ab-4cde-8f01-23456789abcd invalid_coverage: summary: invalid coverage description: Synthetic error example. Check GET /sources and select coverage available to the requested environment and subject type. value: error: code: invalid_coverage message: Choose a supported coverage package or explicit sources. requestId: 01234567-89ab-4cde-8f01-23456789abcd unsupported_entity_type: summary: unsupported entity type description: Synthetic error example. Check source capabilities and remove incompatible sources, or choose coverage for this subject type. value: error: code: unsupported_entity_type message: The selected source does not support this subject type. No screening was completed. requestId: 01234567-89ab-4cde-8f01-23456789abcd matching_variant_limit: summary: matching variant limit description: Synthetic error example. Provide a more precise name or identifier and retry. value: error: code: matching_variant_limit message: This name has too many spelling variants for complete screening. No screening was completed. requestId: 01234567-89ab-4cde-8f01-23456789abcd candidate_limit_exceeded: summary: candidate limit exceeded description: Synthetic error example. Add reliable identifying information before screening again. No all-clear result was produced. value: error: code: candidate_limit_exceeded message: This query has too many candidates for reliable screening. Add a precise identifier or more complete name. requestId: 01234567-89ab-4cde-8f01-23456789abcd monitoring_policy_cadence: summary: monitoring policy cadence description: Synthetic error example. Retain the policy cadence or update the approved policy before changing it. value: error: code: monitoring_policy_cadence message: This monitor must use the cadence in its approved screening policy. 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. **coverage_unavailable** — Do not treat this failure as no-match. Retry only when the selected coverage is available. **stale_coverage** — Wait for fresh selected coverage. Do not interpret this failure as a no-match result. **production_screening_disabled** — Wait until production screening is available; the synthetic sandbox remains separate.' 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 coverage_unavailable: summary: coverage unavailable description: Synthetic error example. Do not treat this failure as no-match. Retry only when the selected coverage is available. value: error: code: coverage_unavailable message: The selected coverage is temporarily unavailable. No screening was completed. requestId: 01234567-89ab-4cde-8f01-23456789abcd stale_coverage: summary: stale coverage description: Synthetic error example. Wait for fresh selected coverage. Do not interpret this failure as a no-match result. value: error: code: stale_coverage message: The selected coverage is stale. No screening was completed. requestId: 01234567-89ab-4cde-8f01-23456789abcd production_screening_disabled: summary: production screening disabled description: Synthetic error example. Wait until production screening is available; the synthetic sandbox remains separate. value: error: code: production_screening_disabled message: Production screening is temporarily unavailable. No screening was completed. requestId: 01234567-89ab-4cde-8f01-23456789abcd /monitoring/inbox: get: operationId: get__monitoring_inbox summary: List meaningful changes, failures and reviews that must be renewed tags: - Monitoring 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: 25 default: 20 - 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: status schema: enum: - all - unread - acknowledged description: Filter unread or acknowledged monitoring events; omission is all. - in: query name: kind schema: enum: - initial_match - match_added - match_removed - evidence_changed - policy_changed - baseline_unavailable - screening_failed - screening_overdue - screening_recovered - review_required description: Filter by monitoring event kind. Omit to include every kind. - in: query name: monitorId schema: type: string format: uuid description: Return only items belonging to this monitor UUID. 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_initial_match: summary: An initial synthetic monitoring match for review 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 monitorId: 00000000-0000-4000-8000-000000000002 monitorName: Synthetic supplier monitoring caseId: 00000000-0000-4000-8000-000000000003 screeningId: 00000000-0000-4000-8000-000000000004 previousScreeningId: null kind: initial_match status: unread createdAt: '2026-09-17T12:00:00.000Z' acknowledgedAt: null errorCode: null totalChanges: 1 evidenceExpired: false currentEvidenceAvailable: true previousEvidenceAvailable: false changes: - kind: added fields: [] recordId: sandbox:person-001 sourceId: sandbox-synthetic after: names: - value: Alex Morgan kind: primary - value: Алекс Морган kind: alias identifiers: - type: passport value: DEMO-001 issuer: Fictional authority birthDates: - value: '1984' original: '1984' precision: year nationalities: [] designations: - wording: Invented example, not a government designation. category: other programs: - Synthetic demonstration only legalReferences: [] nextCursor: null unreadCount: 1 schema: type: object required: - data properties: data: $ref: '#/components/schemas/MonitorEventPage' '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 /monitoring/inbox/{id}: get: operationId: get__monitoring_inbox_id_ summary: Read bounded before-and-after previews from retained evidence tags: - Monitoring 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 retained synthetic monitoring event 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: id: 00000000-0000-4000-8000-000000000001 monitorId: 00000000-0000-4000-8000-000000000002 monitorName: Synthetic supplier monitoring caseId: 00000000-0000-4000-8000-000000000003 screeningId: 00000000-0000-4000-8000-000000000004 previousScreeningId: null kind: initial_match status: unread createdAt: '2026-09-17T12:00:00.000Z' acknowledgedAt: null errorCode: null totalChanges: 1 evidenceExpired: false currentEvidenceAvailable: true previousEvidenceAvailable: false changes: - kind: added fields: [] recordId: sandbox:person-001 sourceId: sandbox-synthetic after: names: - value: Alex Morgan kind: primary - value: Алекс Морган kind: alias identifiers: - type: passport value: DEMO-001 issuer: Fictional authority birthDates: - value: '1984' original: '1984' precision: year nationalities: [] designations: - wording: Invented example, not a government designation. category: other programs: - Synthetic demonstration only legalReferences: [] schema: type: object required: - data properties: data: $ref: '#/components/schemas/MonitorEvent' '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: Monitoring event 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 components: schemas: SourceProvenance: type: object properties: sourceId: type: string recordId: type: string field: type: string rawValue: type: string required: - sourceId - recordId - field description: Publisher field attribution. rawValue is optional; when present it preserves the original published value. MonitorPage: type: object properties: items: type: array items: type: object properties: id: type: string format: uuid name: type: string status: type: string enum: - active - paused last_screening_id: anyOf: - type: string format: uuid - type: 'null' next_run_at: type: string format: date-time created_at: type: string format: date-time revision: type: integer minimum: 0 counterparty_id: anyOf: - type: string format: uuid - type: 'null' required: - id - name - status - last_screening_id - next_run_at - created_at - revision - counterparty_id nextCursor: anyOf: - type: string - type: 'null' required: - items - nextCursor MonitoringForecast: type: object properties: generatedAt: type: string format: date-time periodEnd: type: string format: date-time dailyScreenings: type: number minimum: 0 projectedRemainingScreenings: type: integer minimum: 0 effectiveLimit: type: integer minimum: 0 used: type: integer minimum: 0 reserved: type: integer minimum: 0 remaining: type: integer minimum: 0 projectedExhaustionAt: anyOf: - type: string format: date-time - type: 'null' required: - generatedAt - periodEnd - dailyScreenings - projectedRemainingScreenings - effectiveLimit - used - reserved - remaining - projectedExhaustionAt MonitorControl: $schema: https://json-schema.org/draft/2020-12/schema type: object properties: expectedRevision: type: integer minimum: 1 maximum: 9007199254740991 description: Current revision from GET /monitoring. A stale value returns stale_revision; reload before applying your change. status: type: string enum: - active - paused description: Set paused to stop scheduled work or active to resume. Resume revalidates policy, coverage, counterparty and monitor allowance. intervalHours: anyOf: - type: number const: 6 - type: number const: 24 - type: number const: 168 description: 'Supported schedule interval in hours: 6, 24 or 168. Policy-backed monitors must keep their approved policy cadence.' runNow: type: boolean const: true description: When true, queue a fresh check for an active monitor. Omit if not requested; false is not accepted. The response confirms queued control work, not a completed screening. required: - expectedRevision additionalProperties: false anyOf: - required: - status - required: - intervalHours - required: - runNow description: Revision-guarded controls. In addition to expectedRevision, supply at least one of status, intervalHours or runNow. MonitorCreated: type: object properties: id: type: string format: uuid name: type: string status: const: active required: - id - name - status 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. MonitorRecordPreview: type: object properties: names: type: array items: type: object required: - value - kind properties: value: type: string kind: enum: - primary - alias quality: enum: - strong - weak - unknown script: type: string provenance: $ref: '#/components/schemas/SourceProvenance' identifiers: type: array items: type: object required: - type - value properties: type: type: string value: type: string issuer: type: string provenance: $ref: '#/components/schemas/SourceProvenance' birthDates: type: array items: type: object required: - value - precision - original properties: value: type: string precision: enum: - day - month - year - range - unknown original: type: string nationalities: type: array items: type: string designations: type: array items: type: object required: - category - programs - legalReferences properties: category: enum: - financial_sanctions - export_control - debarment - other programs: type: array items: type: string legalReferences: type: array items: type: string wording: type: string effectiveDate: type: string required: - names - identifiers - birthDates - nationalities - designations description: Bounded publisher-record preview. Each collection contains at most three entries; names, identifiers and designation text are shortened. Read the linked retained result for full evidence. Monitor: type: object properties: id: type: string format: uuid name: type: string status: type: string enum: - active - paused last_screening_id: anyOf: - type: string format: uuid - type: 'null' next_run_at: type: string format: date-time created_at: type: string format: date-time revision: type: integer minimum: 0 counterparty_id: anyOf: - type: string format: uuid - type: 'null' required: - id - name - status - last_screening_id - next_run_at - created_at - revision - counterparty_id MonitorRequest: $schema: https://json-schema.org/draft/2020-12/schema type: object properties: name: type: string minLength: 1 maxLength: 100 description: Human-readable monitor label. Creation queues an initial check; the response is not a completed screening. counterpartyId: type: string format: uuid pattern: ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$ description: Optional existing active counterparty UUID in the same organization and environment. The submitted subject must match its current identity; this does not create a counterparty. policy: type: object properties: id: type: string format: uuid pattern: ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$ description: Policy UUID from GET /policies. version: type: integer exclusiveMinimum: 0 maximum: 9007199254740991 description: Exact approved policy version from GET /policies. Reload the policy if that version is no longer available. required: - id - version additionalProperties: false description: Approved organization policy reference. Required when GET /policies returns requirePolicy=true. A supplied policy must be current and compatible with the subject and requested coverage. x-required-when: GET /policies returns requirePolicy=true for the current API key environment. subject: 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 description: Identity to screen. name is required; entityType defaults to person and identifiers defaults to an empty array. sources: minItems: 1 maxItems: 512 type: array items: type: string minLength: 1 maxLength: 80 description: Explicit source IDs from GET /sources. Provide sources or package, exactly one. Every selected source must be available, fresh and support the subject type; unavailable coverage fails closed. package: type: string minLength: 1 maxLength: 80 description: One versioned coverage package, mutually exclusive with sources. Sandbox accepts only sandbox@1. Use only a package available to the selected environment; no implicit global coverage is applied. required: - name - subject additionalProperties: false oneOf: - required: - sources not: required: - package - required: - package not: required: - sources description: Retained monitor input. Exactly one of sources or package is required. Monitoring always retains inputs; there is no retention property. MonitoringPage: type: object properties: items: type: array items: type: object properties: id: type: string format: uuid name: type: string status: type: string enum: - active - paused request: $ref: '#/components/schemas/ScreeningRequest' counterpartyId: anyOf: - type: string format: uuid - type: 'null' lastScreeningId: anyOf: - type: string format: uuid - type: 'null' nextRunAt: type: string format: date-time updatedAt: type: string format: date-time intervalHours: type: integer enum: - 6 - 24 - 168 revision: type: integer minimum: 0 lastErrorCode: anyOf: - type: string - type: 'null' description: 'Public code for the last failed check, or null. Use documented business codes for recovery; temporary service failures use temporarily_unavailable and other unclassified failures use screening_failed. A missing error code is not proof of a completed check: inspect health and lastSuccessfulAt.' lastAttemptAt: anyOf: - type: string format: date-time - type: 'null' lastSuccessfulAt: anyOf: - type: string format: date-time - type: 'null' health: type: string enum: - pending - healthy - overdue - failed - paused required: - id - name - status - request - counterpartyId - lastScreeningId - nextRunAt - updatedAt - intervalHours - revision - lastErrorCode - lastAttemptAt - lastSuccessfulAt - health nextCursor: anyOf: - type: string - type: 'null' forecast: anyOf: - $ref: '#/components/schemas/MonitoringForecast' - type: 'null' forecastUnavailable: anyOf: - type: string - type: 'null' required: - items - nextCursor - forecast - forecastUnavailable MonitorDeleted: type: object properties: id: type: string format: uuid status: const: deleted required: - id - status MonitorUpdated: type: object properties: id: type: string format: uuid name: type: string status: type: string enum: - active - paused revision: type: integer minimum: 0 required: - id - name - status - revision MonitorUpdate: $schema: https://json-schema.org/draft/2020-12/schema type: object properties: name: type: string minLength: 1 maxLength: 100 description: Complete replacement monitor label. PATCH requires the full name, subject and coverage, not only changed fields. counterpartyId: type: string format: uuid pattern: ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$ description: Optional existing active counterparty UUID in the same organization and environment. The submitted subject must match its current identity; this does not create a counterparty. policy: type: object properties: id: type: string format: uuid pattern: ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$ description: Policy UUID from GET /policies. version: type: integer exclusiveMinimum: 0 maximum: 9007199254740991 description: Exact approved policy version from GET /policies. Reload the policy if that version is no longer available. required: - id - version additionalProperties: false description: Approved organization policy reference. Required when GET /policies returns requirePolicy=true. A supplied policy must be current and compatible with the subject and requested coverage. x-required-when: GET /policies returns requirePolicy=true for the current API key environment. subject: 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 description: Identity to screen. name is required; entityType defaults to person and identifiers defaults to an empty array. sources: minItems: 1 maxItems: 512 type: array items: type: string minLength: 1 maxLength: 80 description: Explicit source IDs from GET /sources. Provide sources or package, exactly one. Every selected source must be available, fresh and support the subject type; unavailable coverage fails closed. package: type: string minLength: 1 maxLength: 80 description: One versioned coverage package, mutually exclusive with sources. Sandbox accepts only sandbox@1. Use only a package available to the selected environment; no implicit global coverage is applied. expectedRevision: type: integer minimum: 1 maximum: 9007199254740991 description: Current revision from GET /monitors/{id} or GET /monitoring. The update fails with monitor_changed if another edit occurred; reload before applying your change. required: - name - subject - expectedRevision additionalProperties: false oneOf: - required: - sources not: required: - package - required: - package not: required: - sources description: Full replacement identity and coverage, guarded by expectedRevision. Exactly one of sources or package is required. MonitorEventPage: type: object properties: items: type: array items: $ref: '#/components/schemas/MonitorEvent' nextCursor: anyOf: - type: string - type: 'null' unreadCount: type: integer minimum: 0 required: - items - nextCursor - unreadCount ScreeningRequest: $schema: https://json-schema.org/draft/2020-12/schema type: object properties: subject: 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 description: Identity to screen. name is required; entityType defaults to person and identifiers defaults to an empty array. counterpartyId: type: string format: uuid pattern: ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$ description: Optional existing active counterparty UUID in the same organization and environment. The submitted subject must match its current identity; this does not create a counterparty. policy: type: object properties: id: type: string format: uuid pattern: ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$ description: Policy UUID from GET /policies. version: type: integer exclusiveMinimum: 0 maximum: 9007199254740991 description: Exact approved policy version from GET /policies. Reload the policy if that version is no longer available. required: - id - version additionalProperties: false description: Approved organization policy reference. Required when GET /policies returns requirePolicy=true. A supplied policy must be current and compatible with the subject and requested coverage. x-required-when: GET /policies returns requirePolicy=true for the current API key environment. reference: type: string maxLength: 160 description: Optional caller reference (up to 160 characters). It is retained with standard evidence and returned by GET /results/{id}; it is null in minimal-retention retrieval. sources: minItems: 1 maxItems: 512 type: array items: type: string minLength: 1 maxLength: 80 description: Explicit source IDs from GET /sources. Provide sources or package, exactly one. Every selected source must be available, fresh and support the subject type; unavailable coverage fails closed. package: type: string minLength: 1 maxLength: 80 description: One versioned coverage package, mutually exclusive with sources. Sandbox accepts only sandbox@1. Use only a package available to the selected environment; no implicit global coverage is applied. retention: default: standard type: string enum: - standard - minimal description: standard retains inputs and evidence under organization/case policy. minimal is available only for individual API-key screenings, lasts 24 hours, omits submitted inputs, and cannot create a review case. Governance requirements can require standard. Defaults to standard. required: - subject additionalProperties: false oneOf: - required: - sources not: required: - package - required: - package not: required: - sources description: Single subject input. Exactly one of sources or package is required. Only subject is unconditionally required; coverage and approved policy also have conditional requirements described below. MonitorEvent: type: object properties: id: type: string format: uuid monitorId: type: string format: uuid monitorName: type: string caseId: anyOf: - type: string format: uuid - type: 'null' screeningId: anyOf: - type: string format: uuid - type: 'null' previousScreeningId: anyOf: - type: string format: uuid - type: 'null' kind: type: string enum: - initial_match - match_added - match_removed - evidence_changed - policy_changed - baseline_unavailable - screening_failed - screening_overdue - screening_recovered - review_required status: type: string enum: - unread - acknowledged createdAt: type: string format: date-time acknowledgedAt: anyOf: - type: string format: date-time - type: 'null' errorCode: anyOf: - type: string - type: 'null' description: Public screening failure code, or null when the event does not represent an error. Infrastructure details are not returned; temporarily_unavailable and screening_failed are generic fallbacks. Unknown future codes must remain a failed or incomplete check, never no_match. totalChanges: type: integer minimum: 0 description: Total saved changes before preview limits. evidenceExpired: type: boolean description: True if linked current or prior evidence is unavailable under retention; missing preview content is not proof of no change. currentEvidenceAvailable: type: boolean previousEvidenceAvailable: type: boolean changes: type: array items: type: object properties: sourceId: type: string recordId: type: string kind: type: string enum: - added - removed - changed fields: type: array items: type: string before: $ref: '#/components/schemas/MonitorRecordPreview' description: Prior retained evidence preview; omitted when the record did not exist or prior evidence is unavailable. after: $ref: '#/components/schemas/MonitorRecordPreview' description: Current retained evidence preview; omitted when the record no longer exists or current evidence is unavailable. required: - sourceId - recordId - kind - fields description: 'Bounded change previews: at most 10 per list item or 25 on detail. Use linked retained screening IDs for complete evidence.' required: - id - monitorId - monitorName - caseId - screeningId - previousScreeningId - kind - status - createdAt - acknowledgedAt - errorCode - totalChanges - evidenceExpired - currentEvidenceAvailable - previousEvidenceAvailable - changes ResourceUpdated: type: object properties: id: type: string format: uuid updated: const: true required: - id - updated securitySchemes: bearerAuth: type: http scheme: bearer bearerFormat: sk_test_... or sk_live_... x-docs-revision: 499779e00214c23622695c6d7114fb3656edf29161460d9f9e9d2ab65d0cf087 x-provenance: method: harvested publisher: SanctionsKit source: https://www.sanctionskit.com/openapi.json note: split by refine-openapis from the provider's own published document, verified by fetch (openapi/_original/*.fetch.json); stamped by stamp-openapi-provenance.py (roadmap#793)