{"openapi":"3.1.0","info":{"title":"Proxy lookup","description":"Resolve and manage payee proxy keys (e.g., Brazilian DICT, European Wero, or Australian PayID). The proxy\nlookup service exposes two related objects:\n  - `proxy_key` — a payee-side directory entry registered against a\n    connected account.\n  - `proxy_lookup` — a payer-side resolution request that returns\n    the owner / account details registered for a given proxy.\n\n## Webhook events\n\nProxy resources emit events following the standard event\nanatomy (see the Events API): each event carries a `topic` (resource\ntype), a `type` (the status the resource transitioned to), the\n`related_object_id`/`related_object_type`, and a `data` payload with\nthe resource in its API representation (the same shape the GET\nendpoint returns). An event is emitted on **every status transition**.\n\nThe claim topic is `proxy_claim` — not `claim`, which is already used\nby payment R-transaction claim events.\n\n| Topic | Types |\n|-------|-------|\n| `proxy_key` | `pending_registration`, `active`, `registration_failed`, `disabled`, `ported` (reserved — not emitted by DICT v1) |\n| `proxy_lookup` | `created`, `processing`, `sent`, `completed`, `rejected` |\n| `proxy_claim` | `pending_creation`, `open`, `creation_rejected`, `pending_acknowledgment`, `waiting_resolution`, `acknowledgment_rejected`, `pending_confirmation`, `confirmed`, `confirmation_rejected`, `pending_cancellation`, `cancelled`, `cancellation_rejected`, `pending_completion`, `completed`, `completion_rejected` |\n\nFor `proxy_key.disabled`, `data.status_reason` disambiguates the cause\n(customer `/disable`, released via claim resolution, or invalidated by\nthe scheme).\n","version":"1","contact":{"name":"API Support","email":"dev@numeral.io"}},"tags":[{"name":"DICT proxy keys","description":"Proxy keys (payee-side directory entries)"},{"name":"DICT proxy lookups","description":"Proxy lookups (payer-side resolution requests)"},{"name":"DICT proxy claims","description":"DICT proxy key portability and ownership claims (claimer side)"},{"name":"Proxy lookup simulator","description":"Sandbox-only endpoints for injecting inbound scheme events without a live scheme connection"}],"servers":[{"url":"https://sandbox.numeral.io/v1"}],"components":{"securitySchemes":{"sec0":{"type":"apiKey","in":"header","name":"x-api-key"}},"parameters":{"proxy_keys.list_parameters.limit":{"name":"limit","in":"query","description":"Maximum number of records to return (1–100). Defaults to 25.","schema":{"type":"integer","minimum":1,"maximum":100,"default":25}},"proxy_keys.list_parameters.starting_after":{"name":"starting_after","in":"query","description":"The ID of the object from which your list request will start. It is not included in the result.","schema":{"type":"string","format":"uuid"}},"proxy_lookups.list_parameters.limit":{"name":"limit","in":"query","description":"Maximum number of records to return (1–100). Defaults to 25.","schema":{"type":"integer","minimum":1,"maximum":100,"default":25}},"proxy_lookups.list_parameters.starting_after":{"name":"starting_after","in":"query","description":"The ID of the object from which your list request will start. It is not included in the result.","schema":{"type":"string","format":"uuid"}},"proxy_claims.list_parameters.limit":{"name":"limit","in":"query","description":"Maximum number of records to return (1–100). Defaults to 25.","schema":{"type":"integer","minimum":1,"maximum":100,"default":25}},"proxy_claims.list_parameters.starting_after":{"name":"starting_after","in":"query","description":"The ID of the object from which your list request will start. It is not included in the result.","schema":{"type":"string","format":"uuid"}}},"responses":{"errors.400.validation":{"description":"Validation error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error"}}}},"errors.404.not_found":{"description":"The specified resource was not found."},"errors.409.conflict":{"description":"Conflict.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error"}}}}},"schemas":{"error":{"type":"object","properties":{"error":{"type":"string","example":"validation_error"},"message":{"type":"string","example":"validation errors occurred while processing request"},"details":{"type":"array","items":{"type":"object","properties":{"field":{"type":"string"},"reason":{"type":"string"}}}},"correlation_id":{"type":"string","format":"uuid"}}},"dict_proxy_key.creation_details":{"type":"object","description":"Details required to register a DICT proxy key.","required":["owner_type","proxy_type","proxy_identification","owner_name","account_identification","servicer","connected_account_id","scheme_data"],"properties":{"owner_type":{"type":"string","description":"Whether the proxy key owner is an individual or a legal entity.","enum":["individual","legal_entity"],"example":"individual"},"proxy_type":{"type":"string","description":"The category of proxy identifier (phone number, email, tax ID, etc.).","enum":["phone","email","tax_id","organisation","random_alias"],"example":"tax_id"},"proxy_type_code":{"type":"string","description":"The scheme-specific sub-type code for the proxy. For DICT: `cpf` (individual) or `cnpj` (legal entity).","enum":["cpf","cnpj","abn","teli","emal","aubn","orgn","evp"],"example":"cpf"},"proxy_identification":{"type":"string","description":"The proxy identifier value (e.g. the CPF number, email address, or phone number).","example":"12345678901"},"owner_name":{"type":"string","description":"Full name of the proxy key owner. Maximum 140 characters.","maxLength":140,"example":"Maria Silva"},"account_identification":{"type":"string","description":"Account number associated with this proxy key.","example":"0001234-5"},"account_type":{"type":"string","description":"ISO 20022 account type code.","enum":["CACC","SVGS","SLRY","TRAN"],"example":"CACC"},"account_issuer":{"type":"string","description":"Identifier of the institution that issued the account (e.g. ISPB code for DICT).","example":"12345678"},"servicer":{"type":"string","description":"Identifier of the financial institution servicing the account (e.g. ISPB for DICT).","example":"12345678"},"connected_account_id":{"type":"string","format":"uuid","description":"ID of the Mambu Payments connected account to register this proxy key against.","example":"a1b2c3d4-e5f6-7890-abcd-ef1234567890"},"internal_account_id":{"type":"string","format":"uuid","description":"Optional ID of an internal account in Mambu Payments linked to this proxy key.","example":"b2c3d4e5-f6a7-8901-bcde-f12345678901"},"scheme_data":{"$ref":"#/components/schemas/dict_proxy_key.creation_scheme_data"},"metadata":{"type":"object","additionalProperties":true,"description":"Customer-defined key/value pairs passed through as-is.","example":{"customer_ref":"cust-001"}}}},"dict_proxy_key.creation_scheme_data":{"type":"object","description":"DICT-specific input fields required when registering a proxy key.","required":["reason","tax_identification_number"],"properties":{"reason":{"type":"string","description":"Reason for registering the proxy key in the DICT directory.","enum":["USER_REQUESTED","RECONCILIATION"],"example":"USER_REQUESTED"},"tax_identification_number":{"type":"string","description":"Tax identification number (CPF or CNPJ) of the proxy key owner.","example":"12345678901"}}},"dict_proxy_key.update_details":{"type":"object","description":"Fields to update on an active DICT proxy key. All fields are optional;\nomitted fields are left unchanged. An empty body is a valid no-op — the\ncurrent key is returned.\n","properties":{"owner_name":{"type":"string","description":"Full name of the proxy key owner. Maximum 140 characters.","maxLength":140,"example":"João Santos"},"account_identification":{"type":"string","description":"Account number associated with this proxy key.","example":"0009876-5"},"account_type":{"type":["string","null"],"description":"ISO 20022 account type code. Pass null to clear the existing value.","enum":["CACC","SVGS","SLRY","TRAN",null],"example":"CACC"},"account_issuer":{"type":["string","null"],"description":"Identifier of the institution that issued the account. Pass null to clear the existing value.","example":"12345678"},"servicer":{"type":"string","description":"Identifier of the financial institution servicing the account.","example":"12345678"},"metadata":{"type":"object","additionalProperties":true,"description":"Shallow key/value patch applied to the existing metadata:\nkeys present in the patch overwrite existing values; setting a key\nto null removes it from the stored metadata; keys absent from the\npatch are preserved.\n","example":{"customer_ref":"cust-002"}}}},"dict_proxy_key":{"type":"object","description":"A DICT proxy key registered in the directory.","required":["id","object","scheme","owner_type","owner_name","proxy_type","proxy_type_code","proxy_identification","status","status_details","status_reason","account_identification","account_type","account_issuer","connected_account_id","internal_account_id","servicer","scheme_data","metadata","created_at","disabled_at","enabled_at"],"properties":{"id":{"type":"string","format":"uuid","description":"Unique identifier of the proxy key.","example":"c39d1eff-c5ed-4197-8f24-28a68bd0eee6"},"object":{"type":"string","enum":["proxy_key"],"description":"Object type label.","example":"proxy_key"},"scheme":{"type":"string","description":"The directory scheme this proxy key is registered in.","example":"dict"},"owner_type":{"type":"string","description":"Whether the owner is an individual or a legal entity.","enum":["individual","legal_entity"],"example":"individual"},"owner_name":{"type":"string","description":"Full name of the proxy key owner.","example":"Maria Silva"},"proxy_type":{"type":"string","description":"The category of proxy identifier.","enum":["phone","email","tax_id","organisation","random_alias"],"example":"tax_id"},"proxy_type_code":{"type":["string","null"],"description":"The scheme-specific sub-type code for the proxy.","enum":["cpf","cnpj","abn","teli","emal","aubn","orgn","evp",null],"example":"cpf"},"proxy_identification":{"type":"string","description":"The proxy identifier value.","example":"12345678901"},"status":{"type":"string","description":"Current status of the proxy key. A newly created key is\n`pending_registration` until the scheme accepts the registration,\nat which point it becomes `active`. If the scheme refuses the\nregistration the key becomes `registration_failed`.\n","enum":["pending_registration","registration_failed","active","disabled"],"example":"active"},"status_details":{"type":["string","null"],"description":"Additional information about the current status.","example":null},"status_reason":{"type":["string","null"],"description":"Machine-readable reason the key reached its current status. `released_via_claim` when disabled by a confirmed donor-side claim.","enum":["released_via_claim",null],"example":null},"account_identification":{"type":"string","description":"Account number associated with this proxy key.","example":"0001234-5"},"account_type":{"type":["string","null"],"description":"ISO 20022 account type code.","enum":["CACC","SVGS","SLRY","TRAN",null],"example":"CACC"},"account_issuer":{"type":["string","null"],"description":"Identifier of the institution that issued the account.","example":"12345678"},"connected_account_id":{"type":"string","format":"uuid","description":"ID of the Mambu Payments connected account this proxy key is registered against.","example":"a1b2c3d4-e5f6-7890-abcd-ef1234567890"},"internal_account_id":{"type":["string","null"],"format":"uuid","description":"ID of the Mambu Payments internal account linked to this proxy key, if any.","example":null},"servicer":{"type":"string","description":"Identifier of the financial institution servicing the account.","example":"12345678"},"scheme_data":{"$ref":"#/components/schemas/dict_proxy_key.scheme_data"},"metadata":{"type":"object","additionalProperties":true,"description":"Customer-defined key/value pairs.","example":{"customer_ref":"cust-001"}},"created_at":{"type":"string","format":"date-time","description":"UTC timestamp when the proxy key was created.","example":"2025-01-01T12:00:00Z"},"disabled_at":{"type":["string","null"],"format":"date-time","description":"UTC timestamp when the proxy key was disabled, if applicable.","example":null},"enabled_at":{"type":["string","null"],"format":"date-time","description":"UTC timestamp when the proxy key was last enabled, if applicable.","example":null}}},"dict_proxy_key.scheme_data":{"type":"object","description":"DICT-specific output fields on a proxy key.","required":["reason","tax_identification_number","directory_entry_id"],"properties":{"reason":{"type":"string","description":"Reason for which the proxy key was registered.","example":"USER_REQUESTED"},"tax_identification_number":{"type":"string","description":"Tax identification number of the proxy key owner.","example":"12345678901"},"directory_entry_id":{"type":"string","description":"BACEN directory entry ID returned by the provider when the key was registered.","example":"dict-entry-abc123"}}},"dict_proxy_key.list_result":{"type":"object","description":"Paginated list of DICT proxy keys.","required":["records"],"properties":{"records":{"type":"array","description":"List of proxy keys matching the query.","items":{"$ref":"#/components/schemas/dict_proxy_key"}}}},"dict_proxy_lookup.creation_details":{"type":"object","description":"Details required to perform a DICT proxy lookup.","required":["proxy_type_code","proxy_identification","connected_account_id","scheme_data"],"properties":{"proxy_type_code":{"type":"string","description":"The scheme-specific sub-type code for the proxy to look up.","example":"cpf"},"proxy_identification":{"type":"string","description":"The proxy identifier to resolve.","example":"12345678901"},"connected_account_id":{"type":"string","format":"uuid","description":"ID of the Mambu Payments connected account initiating the lookup.","example":"a1b2c3d4-e5f6-7890-abcd-ef1234567890"},"scheme_data":{"$ref":"#/components/schemas/dict_proxy_lookup.creation_scheme_data"}}},"dict_proxy_lookup.creation_scheme_data":{"type":"object","description":"DICT-mandatory payment instruction context required for a proxy lookup.","required":["pi_payer_id","pi_end_to_end_id","pi_requesting_participant"],"properties":{"pi_payer_id":{"type":"string","description":"ID of the payer in the payment instruction context (BACEN-required).","example":"12345678901"},"pi_end_to_end_id":{"type":"string","description":"End-to-end ID of the payment instruction (BACEN-required).","example":"E1234567820250101120000000000001"},"pi_requesting_participant":{"type":"string","description":"ISPB code of the requesting participant (BACEN-required).","example":"12345678"}}},"dict_proxy_lookup":{"type":"object","description":"A DICT proxy lookup result.","required":["id","object","scheme","status","status_reason","status_details","proxy_type","proxy_type_code","proxy_identification","owner_name","account_identification","account_type","account_issuer","servicer","connected_account_id","scheme_data","created_at","updated_at"],"properties":{"id":{"type":"string","format":"uuid","description":"Unique identifier of the proxy lookup.","example":"d4e5f6a7-b8c9-0123-deff-012345678901"},"object":{"type":"string","enum":["proxy_lookup"],"description":"Object type label.","example":"proxy_lookup"},"scheme":{"type":"string","description":"The directory scheme this lookup was performed against.","example":"dict"},"status":{"type":"string","description":"Current state of the lookup request.\n- `created` — the request has been accepted.\n- `processing` — resolution is in progress.\n- `sent` — the lookup was dispatched to the scheme; awaiting resolution.\n- `completed` — resolved successfully; owner and account fields are populated.\n- `rejected` — the lookup could not be completed; `status_reason` carries the structured rejection code and `status_details` the human-readable text.\n","enum":["created","processing","sent","completed","rejected"],"example":"sent"},"status_reason":{"type":["string","null"],"description":"Structured reason code for the current status. Populated when\n`status = rejected` (carries the scheme rejection code: `not_found`,\n`rate_limited`, `key_invalid`, `scheme_internal_error`, `forbidden`).\nNull otherwise.\n","example":null},"status_details":{"type":["string","null"],"description":"Free-text human-readable detail accompanying the current status.\nCarries the rejection text when `status = rejected`. Null otherwise.\n","example":null},"proxy_type":{"type":"string","description":"The category of the resolved proxy identifier.","enum":["phone","email","tax_id","organisation","random_alias"],"example":"tax_id"},"proxy_type_code":{"type":["string","null"],"description":"The scheme-specific sub-type code of the resolved proxy.","example":"cpf"},"proxy_identification":{"type":"string","description":"The proxy identifier that was looked up.","example":"12345678901"},"owner_name":{"type":["string","null"],"description":"Full name of the resolved proxy key owner. Populated when `status = completed`, null otherwise.","example":"Maria Silva"},"owner_type":{"type":["string","null"],"description":"Whether the resolved owner is an individual or a legal entity. Populated when `status = completed`, null otherwise.","enum":["individual","legal_entity",null],"example":"individual"},"account_identification":{"type":["string","null"],"description":"Account number registered for this proxy. Populated when `status = completed`, null otherwise.","example":"0001234-5"},"account_type":{"type":["string","null"],"description":"ISO 20022 account type code of the resolved account. Populated when `status = completed`, null otherwise.","example":"CACC"},"account_issuer":{"type":["string","null"],"description":"Identifier of the institution that issued the resolved account. Populated when `status = completed`, null otherwise.","example":"12345678"},"servicer":{"type":["string","null"],"description":"Identifier of the financial institution servicing the resolved account. Populated when `status = completed`, null otherwise.","example":"12345678"},"connected_account_id":{"type":"string","format":"uuid","description":"ID of the Mambu Payments connected account that initiated this lookup.","example":"a1b2c3d4-e5f6-7890-abcd-ef1234567890"},"scheme_data":{"$ref":"#/components/schemas/dict_proxy_lookup.scheme_data"},"created_at":{"type":"string","format":"date-time","description":"UTC timestamp when the lookup was created.","example":"2025-01-01T12:00:00Z"},"updated_at":{"type":["string","null"],"format":"date-time","description":"UTC timestamp of the last status update.","example":"2025-01-01T12:00:01Z"}}},"dict_proxy_lookup.scheme_data":{"type":"object","description":"DICT-specific output fields on a proxy lookup.","required":["pi_payer_id","pi_end_to_end_id","pi_requesting_participant","owner_statistics","key_statistics"],"properties":{"pi_payer_id":{"type":"string","description":"Echoed payer ID from the payment instruction context.","example":"12345678901"},"pi_end_to_end_id":{"type":"string","description":"Echoed end-to-end ID from the payment instruction context.","example":"E1234567820250101120000000000001"},"pi_requesting_participant":{"type":"string","description":"Echoed ISPB of the requesting participant.","example":"12345678"},"owner_statistics":{"type":"object","additionalProperties":true,"description":"DICT statistics about the proxy key owner returned by the provider. Empty for the simulator.","example":{}},"key_statistics":{"type":"object","additionalProperties":true,"description":"DICT statistics about the proxy key returned by the provider. Empty for the simulator.","example":{}}}},"dict_proxy_lookup.list_result":{"type":"object","description":"Paginated list of DICT proxy lookups.","required":["records"],"properties":{"records":{"type":"array","description":"List of proxy lookups matching the query.","items":{"$ref":"#/components/schemas/dict_proxy_lookup"}}}},"dict_proxy_claim.creation_details":{"type":"object","description":"Details required to open a DICT proxy key portability or ownership claim.","required":["type","proxy_type","proxy_identification","claimer_name","claimer_account_identification","claimer_servicer","connected_account_id","scheme_data"],"properties":{"type":{"type":"string","description":"Whether the claim transfers the key to a new owner (`ownership`) or to the same owner at a new institution (`portability`).","enum":["ownership","portability"],"example":"portability"},"proxy_type":{"type":"string","description":"The category of proxy identifier being claimed.","enum":["phone","email","tax_id","organisation","random_alias"],"example":"tax_id"},"proxy_type_code":{"type":"string","description":"The scheme-specific sub-type code for the proxy. Required when `proxy_type` is `tax_id`.","enum":["cpf","cnpj","abn","teli","emal","aubn","orgn","evp"],"example":"cpf"},"proxy_identification":{"type":"string","description":"The proxy identifier value to claim (e.g. CPF number, phone number).","example":"12345678901"},"claimer_name":{"type":"string","description":"Full name of the claimer. Maximum 140 characters.","maxLength":140,"example":"Maria Silva"},"claimer_account_identification":{"type":"string","description":"Account number at the claiming institution.","example":"0001234-5"},"claimer_account_type":{"type":"string","description":"ISO 20022 account type code at the claiming institution.","enum":["CACC","SVGS","SLRY","TRAN"],"example":"CACC"},"claimer_account_issuer":{"type":"string","description":"Identifier of the institution that issued the claimer's account (e.g. branch code for DICT).","example":"12345678"},"claimer_servicer":{"type":"string","description":"ISPB of the claiming institution.","example":"12345678"},"connected_account_id":{"type":"string","format":"uuid","description":"ID of the Mambu Payments connected account associated with this claim.","example":"a1b2c3d4-e5f6-7890-abcd-ef1234567890"},"internal_account_id":{"type":"string","format":"uuid","description":"Optional ID of an internal account in Mambu Payments linked to this claim.","example":"b2c3d4e5-f6a7-8901-bcde-f12345678901"},"scheme_data":{"$ref":"#/components/schemas/dict_proxy_claim.creation_scheme_data"},"metadata":{"type":"object","additionalProperties":true,"description":"Customer-defined key/value pairs passed through as-is.","example":{}}}},"dict_proxy_claim.creation_scheme_data":{"type":"object","description":"DICT-specific fields required to open a proxy claim.","required":["claimer_tax_identification_number","claimer_owner_type","claimer_opening_date"],"properties":{"claimer_tax_identification_number":{"type":"string","description":"Tax identification number (CPF or CNPJ) of the claimer.","example":"12345678901"},"claimer_owner_type":{"type":"string","description":"Whether the claimer is an individual or a legal entity.","enum":["individual","legal_entity"],"example":"individual"},"claimer_opening_date":{"type":"string","format":"date-time","description":"Date and time the claimer's account was opened at the claiming institution (BACEN-required).","example":"2020-01-01T00:00:00Z"}}},"dict_proxy_claim.confirm_details":{"type":"object","description":"Details required to confirm a waiting DICT proxy claim.","required":["scheme_data"],"properties":{"scheme_data":{"$ref":"#/components/schemas/dict_proxy_claim.confirm_scheme_data"}}},"dict_proxy_claim.confirm_scheme_data":{"type":"object","description":"DICT-specific fields required to confirm a proxy claim.","required":["reason"],"properties":{"reason":{"type":"string","description":"Reason for confirming the claim.","enum":["USER_REQUESTED","ACCOUNT_CLOSURE","DEFAULT_OPERATION"],"example":"USER_REQUESTED"}}},"dict_proxy_claim.cancel_details":{"type":"object","description":"Request body for POST /v1/proxy_services/dict/proxy_claims/{id}/cancel.","required":["scheme_data"],"properties":{"scheme_data":{"$ref":"#/components/schemas/dict_proxy_claim.cancel_scheme_data"}}},"dict_proxy_claim.cancel_scheme_data":{"type":"object","description":"DICT-specific fields required to cancel a proxy claim.","required":["reason"],"properties":{"reason":{"type":"string","description":"Reason for cancelling the claim.","enum":["USER_REQUESTED","ACCOUNT_CLOSURE","FRAUD","DEFAULT_OPERATION","RECONCILIATION","RFB_VALIDATION"],"example":"USER_REQUESTED"}}},"dict_proxy_claim":{"type":"object","description":"A DICT proxy key portability or ownership claim.","required":["id","object","scheme","type","role","status","status_details","proxy_type","proxy_type_code","proxy_identification","claimer_name","claimer_account_identification","claimer_account_type","claimer_account_issuer","claimer_servicer","donor_servicer","connected_account_id","internal_account_id","proxy_key_id","resolution_period_end","completion_period_end","scheme_data","metadata","created_at","updated_at"],"properties":{"id":{"type":"string","format":"uuid","description":"Unique identifier of the proxy claim.","example":"e5f6a7b8-c9d0-1234-efff-123456789012"},"object":{"type":"string","enum":["proxy_claim"],"description":"Object type label.","example":"proxy_claim"},"scheme":{"type":"string","description":"The directory scheme this claim belongs to.","example":"dict"},"type":{"type":"string","description":"Claim type.","enum":["ownership","portability"],"example":"portability"},"role":{"type":"string","description":"Whether our customer is opening the claim (`claimer`) or receiving it (`donor`).","enum":["claimer","donor"],"example":"claimer"},"status":{"type":"string","description":"Current state of the claim.\n- `pending_creation` — creation submitted to DICT; awaiting the scheme to finalise it (async). Flipped to `open` by `proxy_claim.creation_completed` or to `creation_rejected` by `proxy_claim.creation_rejected`.\n- `open` — DICT accepted the claim creation, awaiting donor response.\n- `creation_rejected` — DICT rejected the creation request (e.g. key not found or key type not claimable).\n- `pending_acknowledgment` — donor acknowledged the claim; awaiting the scheme to finalise it (async). Flipped to `waiting_resolution` by `proxy_claim.acknowledgment_completed`.\n- `waiting_resolution` — the donor's acknowledgment was finalised; waiting for the resolution period to complete.\n- `acknowledgment_rejected` — DICT rejected the donor's acknowledgment; `status_details` contains the rejection reason.\n- `pending_confirmation` — a confirm was requested; awaiting the scheme to finalise it (async). Flipped to `confirmed` by `proxy_claim.confirmation_completed`, which also releases the bound proxy key.\n- `confirmed` — donor confirmed the claim; the bound proxy key is released (`status = disabled`, `status_reason = released_via_claim`).\n- `confirmation_rejected` — DICT rejected the donor's confirmation; `status_details` contains the rejection reason.\n- `pending_cancellation` — a cancel was requested; awaiting the scheme to finalise it (async). Flipped to `cancelled` by `proxy_claim.cancellation_completed`. `scheme_data.cancel_reason` / `scheme_data.cancelled_by` are already populated.\n- `cancelled` — claim was cancelled; `scheme_data.cancel_reason` and `scheme_data.cancelled_by` are populated.\n- `cancellation_rejected` — DICT rejected the cancellation; `status_details` contains the rejection reason.\n- `pending_completion` — claimer requested completion; awaiting the scheme to finalise it (async). Flipped to `completed` by `proxy_claim.completion_completed`.\n- `completed` — claimer successfully completed the claim; `proxy_key_id` is populated with the new key.\n- `completion_rejected` — DICT rejected the completion request; `status_details` contains the rejection reason.\n","enum":["pending_creation","open","creation_rejected","pending_acknowledgment","waiting_resolution","acknowledgment_rejected","pending_confirmation","confirmed","confirmation_rejected","pending_cancellation","cancelled","cancellation_rejected","pending_completion","completed","completion_rejected"],"example":"open"},"status_details":{"type":["string","null"],"description":"Additional information about the current status, populated when the claim is rejected.","example":null},"proxy_type":{"type":"string","description":"The category of the claimed proxy identifier.","enum":["phone","email","tax_id","organisation","random_alias"],"example":"tax_id"},"proxy_type_code":{"type":["string","null"],"description":"The scheme-specific sub-type code of the claimed proxy.","example":"cpf"},"proxy_identification":{"type":"string","description":"The proxy identifier value being claimed.","example":"12345678901"},"claimer_name":{"type":"string","description":"Full name of the claimer.","example":"Maria Silva"},"claimer_account_identification":{"type":"string","description":"Account number at the claiming institution.","example":"0001234-5"},"claimer_account_type":{"type":["string","null"],"description":"ISO 20022 account type code at the claiming institution.","enum":["CACC","SVGS","SLRY","TRAN",null],"example":"CACC"},"claimer_account_issuer":{"type":["string","null"],"description":"Identifier of the institution that issued the claimer's account.","example":"12345678"},"claimer_servicer":{"type":"string","description":"ISPB of the claiming institution.","example":"12345678"},"donor_servicer":{"type":["string","null"],"description":"ISPB of the institution currently holding the key. Populated once DICT resolves the donor.","example":null},"connected_account_id":{"type":"string","format":"uuid","description":"ID of the Mambu Payments connected account associated with this claim.","example":"a1b2c3d4-e5f6-7890-abcd-ef1234567890"},"internal_account_id":{"type":["string","null"],"format":"uuid","description":"ID of the Mambu Payments internal account linked to this claim, if any.","example":null},"proxy_key_id":{"type":["string","null"],"format":"uuid","description":"ID of the proxy key created upon successful completion of the claim. Null until the claim reaches `completed` status.","example":null},"resolution_period_end":{"type":["string","null"],"format":"date-time","description":"Deadline by which the donor must respond. Null when `status` is `creation_rejected`.","example":"2026-01-08T12:00:00Z"},"completion_period_end":{"type":["string","null"],"format":"date-time","description":"Deadline by which the claim must reach a terminal state. Null when `status` is `creation_rejected`.","example":"2026-01-15T12:00:00Z"},"scheme_data":{"$ref":"#/components/schemas/dict_proxy_claim.scheme_data"},"metadata":{"type":"object","additionalProperties":true,"description":"Customer-defined key/value pairs.","example":{}},"created_at":{"type":"string","format":"date-time","description":"UTC timestamp when the claim was created.","example":"2026-01-01T12:00:00Z"},"updated_at":{"type":["string","null"],"format":"date-time","description":"UTC timestamp of the last status update.","example":null}}},"dict_proxy_claim.scheme_data":{"type":"object","description":"DICT-specific output fields on a proxy claim.","required":["claim_id","claimer_tax_identification_number","claimer_owner_type","claimer_opening_date","confirm_reason","cancel_reason","cancelled_by","last_modified"],"properties":{"claim_id":{"type":["string","null"],"description":"BACEN claim ID returned by the DICT provider. Null when `status` is `creation_rejected`.","example":"claim-bacen-uuid-001"},"claimer_tax_identification_number":{"type":"string","description":"Tax identification number (CPF or CNPJ) of the claimer.","example":"12345678901"},"claimer_owner_type":{"type":"string","description":"Whether the claimer is an individual or a legal entity.","enum":["individual","legal_entity"],"example":"individual"},"claimer_opening_date":{"type":["string","null"],"format":"date-time","description":"Date the claimer's account was opened at the claiming institution.","example":"2020-01-01T00:00:00Z"},"confirm_reason":{"type":["string","null"],"description":"Reason the claim was confirmed, if applicable.","enum":["USER_REQUESTED","ACCOUNT_CLOSURE","DEFAULT_OPERATION",null],"example":null},"cancel_reason":{"type":["string","null"],"description":"Reason the claim was cancelled, if applicable.","example":null},"cancelled_by":{"type":["string","null"],"description":"Party that cancelled the claim (`claimer`, `donor`, or `dict`).","example":null},"last_modified":{"type":["string","null"],"format":"date-time","description":"UTC timestamp of the last modification reported by DICT.","example":null}}},"simulator.proxy_lookup.request":{"type":"object","required":["message_type","payload"],"properties":{"message_type":{"type":"string","description":"The simulator event to trigger. See the Numeral developer portal for\nthe payload shape of each event.\n","enum":["proxy_lookup.completed","proxy_lookup.rejected","proxy_key.registration_completed","proxy_key.registration_rejected","proxy_key.invalidated_by_scheme","proxy_claim.creation_completed","proxy_claim.creation_rejected","proxy_claim.acknowledged_by_donor","proxy_claim.confirmed_by_donor","proxy_claim.cancelled_by_donor","proxy_claim.completion_completed","proxy_claim.completion_rejected","proxy_claim.cancellation_completed","proxy_claim.cancellation_rejected","proxy_claim.received","proxy_claim.acknowledgment_completed","proxy_claim.acknowledgment_rejected","proxy_claim.confirmation_completed","proxy_claim.confirmation_rejected","proxy_claim.completed_by_claimer","proxy_claim.cancelled_by_claimer","proxy_claim.auto_confirmed"],"example":"proxy_lookup.completed"},"payload":{"type":"object","additionalProperties":true,"description":"Event-specific payload. Shape is determined by `message_type`; see\nthe developer portal for the per-event schema. For\n`proxy_key.registration_completed` the payload follows\n`simulator.proxy_key.registration_completed.payload`; for\n`proxy_key.registration_rejected` it follows\n`simulator.proxy_key.registration_rejected.payload`; for\n`proxy_key.invalidated_by_scheme` it follows\n`simulator.proxy_key.invalidated_by_scheme.payload`; for\n`proxy_claim.creation_completed` it follows\n`simulator.proxy_claim.creation_completed.payload`; for\n`proxy_claim.creation_rejected` it follows\n`simulator.proxy_claim.creation_rejected.payload`; for\n`proxy_claim.acknowledged_by_donor` it follows\n`simulator.proxy_claim.acknowledged_by_donor.payload`; for\n`proxy_claim.confirmed_by_donor` it follows\n`simulator.proxy_claim.confirmed_by_donor.payload`; for\n`proxy_claim.cancelled_by_donor` it follows\n`simulator.proxy_claim.cancelled_by_donor.payload`; for\n`proxy_claim.completion_completed` it follows\n`simulator.proxy_claim.completion_completed.payload`; for\n`proxy_claim.completion_rejected` it follows\n`simulator.proxy_claim.completion_rejected.payload`; for\n`proxy_claim.cancellation_completed` it follows\n`simulator.proxy_claim.cancellation_completed.payload`; for\n`proxy_claim.cancellation_rejected` it follows\n`simulator.proxy_claim.cancellation_rejected.payload`; for\n`proxy_claim.received` it follows\n`simulator.proxy_claim.received.payload`; for\n`proxy_claim.acknowledgment_completed` it follows\n`simulator.proxy_claim.acknowledgment_completed.payload`; for\n`proxy_claim.acknowledgment_rejected` it follows\n`simulator.proxy_claim.acknowledgment_rejected.payload`; for\n`proxy_claim.confirmation_completed` it follows\n`simulator.proxy_claim.confirmation_completed.payload`; for\n`proxy_claim.confirmation_rejected` it follows\n`simulator.proxy_claim.confirmation_rejected.payload`; for\n`proxy_claim.completed_by_claimer` it follows\n`simulator.proxy_claim.completed_by_claimer.payload`; for\n`proxy_claim.cancelled_by_claimer` it follows\n`simulator.proxy_claim.cancelled_by_claimer.payload`; for\n`proxy_claim.auto_confirmed` it follows\n`simulator.proxy_claim.auto_confirmed.payload`.\n"}}},"simulator.proxy_lookup.response":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"ID of the row affected by the simulator event."}}},"simulator.proxy_key.registration_completed.payload":{"type":"object","description":"Payload for the `proxy_key.registration_completed` simulator event. The\nscheme has accepted the registration, so the targeted proxy key\ntransitions from `pending_registration` to `active`. `scheme_data`, when\npresent, is merged over the key's existing scheme data (not replaced),\nso identifiers written at creation are preserved.\n","required":["proxy_key_id"],"properties":{"proxy_key_id":{"type":"string","format":"uuid","description":"ID of the proxy key to activate. Must belong to the connected account in the path and be in `pending_registration`.","example":"a1b2c3d4-e5f6-7890-abcd-ef1234567890"},"scheme_data":{"type":"object","additionalProperties":true,"description":"Optional scheme-side identifiers to merge into the key's\n`scheme_data` (e.g. `directory_entry_id`). Absent leaves the\nexisting scheme data unchanged.\n","example":{"directory_entry_id":"b2c3d4e5-f6a7-8901-bcde-f23456789012"}}}},"simulator.proxy_key.registration_rejected.payload":{"type":"object","description":"Payload for the `proxy_key.registration_rejected` simulator event. The\nscheme has refused the registration, so the targeted proxy key\ntransitions from `pending_registration` to `registration_failed`.\n`rejection_reason` is recorded as the key's status reason and\n`rejection_details`, when present, as its status details.\n","required":["proxy_key_id","rejection_reason"],"properties":{"proxy_key_id":{"type":"string","format":"uuid","description":"ID of the proxy key to fail. Must belong to the connected account in the path and be in `pending_registration`.","example":"a1b2c3d4-e5f6-7890-abcd-ef1234567890"},"rejection_reason":{"type":"string","description":"Machine-readable reason the scheme refused the registration.","enum":["key_in_use","invalid_format","owner_mismatch","account_unknown","rate_limited","scheme_internal_error"],"example":"key_in_use"},"rejection_details":{"type":"string","description":"Optional free-text detail about the rejection, surfaced as the key's status details.","example":"Key already registered to another owner."}}},"simulator.proxy_key.invalidated_by_scheme.payload":{"type":"object","description":"Payload for the `proxy_key.invalidated_by_scheme` simulator event. The\nscheme has invalidated an already-active key, so the targeted proxy key\ntransitions from `active` to `disabled`. `invalidation_reason` is\nrecorded as the key's status reason and `invalidation_details`, when\npresent, as its status details.\n","required":["proxy_key_id","invalidation_reason"],"properties":{"proxy_key_id":{"type":"string","format":"uuid","description":"ID of the proxy key to invalidate. Must belong to the connected account in the path and be `active`.","example":"a1b2c3d4-e5f6-7890-abcd-ef1234567890"},"invalidation_reason":{"type":"string","description":"Machine-readable reason the scheme invalidated the key.","enum":["account_closure","scheme_invalidation","fraud","reconciliation"],"example":"account_closure"},"invalidation_details":{"type":"string","description":"Optional free-text detail about the invalidation, surfaced as the key's status details.","example":"Underlying account closed."}}},"simulator.proxy_claim.creation_completed.payload":{"type":"object","description":"Payload for the `proxy_claim.creation_completed` simulator event. The\nscheme has accepted the claim creation, so the targeted proxy claim\ntransitions from `pending_creation` to `open`. `scheme_data`, when\npresent, is merged over the claim's existing scheme data (not replaced),\nso identifiers written at creation (e.g. `claim_id`) are preserved.\n","required":["proxy_claim_id"],"properties":{"proxy_claim_id":{"type":"string","format":"uuid","description":"ID of the proxy claim to open. Must belong to the connected account in the path and be in `pending_creation`.","example":"a1b2c3d4-e5f6-7890-abcd-ef1234567890"},"scheme_data":{"type":"object","additionalProperties":true,"description":"Optional scheme-side identifiers to merge into the claim's\n`scheme_data`. Absent leaves the existing scheme data unchanged.\n","example":{"last_modified":"2026-04-14T10:05:01Z"}}}},"simulator.proxy_claim.creation_rejected.payload":{"type":"object","description":"Payload for the `proxy_claim.creation_rejected` simulator event. The\nscheme has refused the claim creation, so the targeted proxy claim\ntransitions from `pending_creation` to `creation_rejected`.\n`rejection_reason` (and `rejection_details`, when present) are recorded\nin the claim's status details — proxy claims have no separate status\nreason field, so the reason code leads and the detail is appended.\n","required":["proxy_claim_id","rejection_reason"],"properties":{"proxy_claim_id":{"type":"string","format":"uuid","description":"ID of the proxy claim to reject. Must belong to the connected account in the path and be in `pending_creation`.","example":"a1b2c3d4-e5f6-7890-abcd-ef1234567890"},"rejection_reason":{"type":"string","description":"Machine-readable reason the scheme refused the claim creation.","enum":["entry_not_found","claim_already_exists","claimer_not_eligible","invalid_format","scheme_internal_error"],"example":"entry_not_found"},"rejection_details":{"type":"string","description":"Optional free-text detail about the rejection, appended to the claim's status details.","example":"No directory entry exists for the claimed proxy."}}},"simulator.proxy_claim.acknowledged_by_donor.payload":{"type":"object","description":"Payload for the `proxy_claim.acknowledged_by_donor` simulator event. The\nclaimer observes that the donor acknowledged the claim at the scheme, so\nthe targeted proxy claim transitions from `open` to `waiting_resolution`.\n`scheme_data`, when present, is merged over the claim's existing scheme\ndata (not replaced), so identifiers written at creation are preserved.\n","required":["proxy_claim_id"],"properties":{"proxy_claim_id":{"type":"string","format":"uuid","description":"ID of the proxy claim to advance. Must belong to the connected account in the path and be `open`.","example":"a1b2c3d4-e5f6-7890-abcd-ef1234567890"},"scheme_data":{"type":"object","additionalProperties":true,"description":"Optional scheme-side identifiers to merge into the claim's\n`scheme_data`. Absent leaves the existing scheme data unchanged.\n","example":{"acknowledged_at":"2026-04-14T10:05:01Z"}}}},"simulator.proxy_claim.confirmed_by_donor.payload":{"type":"object","description":"Payload for the `proxy_claim.confirmed_by_donor` simulator event. The\nclaimer observes that the donor confirmed the claim at the scheme, so\nthe targeted proxy claim transitions from `waiting_resolution` to\n`confirmed`. `scheme_data`, when present, is merged over the claim's\nexisting scheme data (not replaced), so identifiers written at creation\nare preserved.\n","required":["proxy_claim_id"],"properties":{"proxy_claim_id":{"type":"string","format":"uuid","description":"ID of the proxy claim to advance. Must belong to the connected account in the path and be `waiting_resolution`.","example":"a1b2c3d4-e5f6-7890-abcd-ef1234567890"},"scheme_data":{"type":"object","additionalProperties":true,"description":"Optional scheme-side identifiers to merge into the claim's\n`scheme_data`. Absent leaves the existing scheme data unchanged.\n","example":{"confirm_reason":"donor_approved"}}}},"simulator.proxy_claim.completed_by_claimer.payload":{"type":"object","description":"Payload for the `proxy_claim.completed_by_claimer` simulator event. The\ndonor observes that the claimer completed the claim at the scheme, so the\ndonor's proxy claim transitions from `confirmed` to `completed`. A pure\nobservation — no proxy key is created on the donor side. `scheme_data`,\nwhen present, is merged over the claim's existing scheme data (not\nreplaced), so identifiers written earlier are preserved.\n","required":["proxy_claim_id"],"properties":{"proxy_claim_id":{"type":"string","format":"uuid","description":"ID of the proxy claim to advance. Must belong to the connected account in the path and be `confirmed`.","example":"a1b2c3d4-e5f6-7890-abcd-ef1234567890"},"scheme_data":{"type":"object","additionalProperties":true,"description":"Optional scheme-side identifiers to merge into the claim's\n`scheme_data`. Absent leaves the existing scheme data unchanged.\n","example":{"completion_ref":"COMPLETE-2026-0001"}}}},"simulator.proxy_claim.cancelled_by_claimer.payload":{"type":"object","description":"Payload for the `proxy_claim.cancelled_by_claimer` simulator event. The\ndonor observes that the claimer cancelled the claim at the scheme, so\nthe donor's proxy claim transitions from `open`, `waiting_resolution`,\nor `confirmed` to `cancelled`. `cancel_reason` and a fixed\n`cancelled_by: claimer` are recorded in the claim's `scheme_data`\nalongside a `last_modified` timestamp. The linked proxy key stays\n`active` — cancellation does not cascade. `scheme_data`, when present,\nis merged over the existing scheme data before those fields are stamped\non.\n","required":["proxy_claim_id","cancel_reason"],"properties":{"proxy_claim_id":{"type":"string","format":"uuid","description":"ID of the proxy claim to cancel. Must belong to the connected account in the path and be `open`, `waiting_resolution`, or `confirmed`.","example":"a1b2c3d4-e5f6-7890-abcd-ef1234567890"},"cancel_reason":{"type":"string","description":"Machine-readable reason the claimer cancelled the claim.","enum":["user_requested","fraud","account_closure","reconciliation","scheme_default_operation"],"example":"user_requested"},"scheme_data":{"type":"object","additionalProperties":true,"description":"Optional scheme-side identifiers to merge into the claim's\n`scheme_data` before the cancellation fields are stamped on. Absent\nleaves the existing scheme data unchanged.\n","example":{"scheme_ref":"CANCEL-2026-0002"}}}},"simulator.proxy_claim.cancelled_by_donor.payload":{"type":"object","description":"Payload for the `proxy_claim.cancelled_by_donor` simulator event. The\nclaimer observes that the donor cancelled the claim at the scheme, so\nthe targeted proxy claim transitions from `open`, `waiting_resolution`,\nor `confirmed` to `cancelled`. `cancel_reason` and a fixed\n`cancelled_by: donor` are recorded in the claim's `scheme_data`\nalongside a `last_modified` timestamp (mirroring a claimer-initiated\ncancellation). `scheme_data`, when present, is merged over the existing\nscheme data before those fields are stamped on.\n","required":["proxy_claim_id","cancel_reason"],"properties":{"proxy_claim_id":{"type":"string","format":"uuid","description":"ID of the proxy claim to cancel. Must belong to the connected account in the path and be `open`, `waiting_resolution`, or `confirmed`.","example":"a1b2c3d4-e5f6-7890-abcd-ef1234567890"},"cancel_reason":{"type":"string","description":"Machine-readable reason the donor cancelled the claim.","enum":["user_requested","fraud","account_closure","reconciliation","scheme_default_operation"],"example":"fraud"},"scheme_data":{"type":"object","additionalProperties":true,"description":"Optional scheme-side identifiers to merge into the claim's\n`scheme_data` before the cancellation fields are stamped on. Absent\nleaves the existing scheme data unchanged.\n","example":{"scheme_ref":"CANCEL-2026-0001"}}}},"simulator.proxy_claim.completion_completed.payload":{"type":"object","description":"Payload for the `proxy_claim.completion_completed` simulator event. The\nscheme finalised the claimer-side completion, so the targeted proxy\nclaim transitions from `pending_completion` to `completed`. As a\nside-effect a new `active` proxy key is created on the claimer's\nconnected account and the claim's `proxy_key_id` is set to point at it.\nThe new key's proxy and owner identity come from the claim; its\naccount-side fields come from the optional `new_proxy_key` object, each\nfield defaulting to the claim's corresponding `claimer_*` value.\n`scheme_data`, when present, is merged over the claim's existing scheme\ndata before the completion timestamp is stamped on.\n","required":["proxy_claim_id"],"properties":{"proxy_claim_id":{"type":"string","format":"uuid","description":"ID of the proxy claim to complete. Must belong to the connected account in the path and be `pending_completion`.","example":"a1b2c3d4-e5f6-7890-abcd-ef1234567890"},"new_proxy_key":{"type":"object","additionalProperties":false,"description":"Optional account-side overrides for the new proxy key. Each field\ndefaults to the claim's corresponding `claimer_*` value when omitted.\n","properties":{"account_identification":{"type":"string","description":"Account number for the new key. Defaults to the claim's `claimer_account_identification`.","example":"0009998888"},"account_type":{"type":"string","description":"ISO 20022 account type code. Defaults to the claim's `claimer_account_type`.","example":"CACC"},"account_issuer":{"type":"string","description":"Issuing institution identifier. Defaults to the claim's `claimer_account_issuer`.","example":"SANITYBNKXXX"},"servicer":{"type":"string","description":"Servicing institution identifier. Defaults to the claim's `claimer_servicer`.","example":"SANITYBNKXXX"},"internal_account_id":{"type":"string","description":"Internal account id to attach to the new key. Defaults to the claim's `internal_account_id`.","example":"8f1e6d2c-0b3a-4c5d-9e7f-1a2b3c4d5e6f"}}},"scheme_data":{"type":"object","additionalProperties":true,"description":"Optional scheme-side identifiers to merge into the claim's\n`scheme_data` before the completion timestamp is stamped on. Absent\nleaves the existing scheme data unchanged.\n","example":{"completion_ref":"COMPLETE-2026-0001"}}}},"simulator.proxy_claim.completion_rejected.payload":{"type":"object","description":"Payload for the `proxy_claim.completion_rejected` simulator event. The\nscheme refused the claimer-side completion, so the targeted proxy claim\ntransitions from `pending_completion` to `completion_rejected`. No proxy\nkey is created. `rejection_reason` (and the optional `rejection_details`)\nare folded into the claim's `status_details`: the reason code leads, with\nthe detail appended after `\": \"` when present.\n","required":["proxy_claim_id","rejection_reason"],"properties":{"proxy_claim_id":{"type":"string","format":"uuid","description":"ID of the proxy claim to reject. Must belong to the connected account in the path and be `pending_completion`.","example":"a1b2c3d4-e5f6-7890-abcd-ef1234567890"},"rejection_reason":{"type":"string","description":"Machine-readable reason the scheme rejected the completion.","enum":["deadline_not_reached","entry_changed","claimer_not_eligible","scheme_internal_error"],"example":"deadline_not_reached"},"rejection_details":{"type":"string","description":"Optional human-readable detail appended to status_details after the reason code.","example":"Completion period has not elapsed."}}},"simulator.proxy_claim.cancellation_completed.payload":{"type":"object","description":"Payload for the `proxy_claim.cancellation_completed` simulator event. The\nscheme finalised a cancellation, so the targeted proxy claim transitions\nfrom `pending_cancellation` to `cancelled`. The same event finalises both\nclaimer- and donor-initiated cancellations — the `/cancel` endpoint is\nrole-agnostic and already recorded `cancel_reason` and `cancelled_by`\n(`claimer` or `donor`) in the claim's `scheme_data`; this event only\nfinalises the status. `scheme_data`, when present, is merged over the\nclaim's existing scheme data (not replaced), so prior identifiers are\npreserved.\n","required":["proxy_claim_id"],"properties":{"proxy_claim_id":{"type":"string","format":"uuid","description":"ID of the proxy claim to finalise. Must belong to the connected account in the path and be `pending_cancellation`.","example":"a1b2c3d4-e5f6-7890-abcd-ef1234567890"},"scheme_data":{"type":"object","additionalProperties":true,"description":"Optional scheme-side identifiers to merge into the claim's\n`scheme_data`. Absent leaves the existing scheme data unchanged.\n","example":{"cancellation_ref":"CANCEL-2026-0001"}}}},"simulator.proxy_claim.acknowledgment_completed.payload":{"type":"object","description":"Payload for the `proxy_claim.acknowledgment_completed` simulator event.\nThe scheme finalised a donor-initiated acknowledgment, so the targeted\nproxy claim transitions from `pending_acknowledgment` to\n`waiting_resolution`. `scheme_data`, when present, is merged over the\nclaim's existing scheme data (not replaced), so prior identifiers are\npreserved.\n","required":["proxy_claim_id"],"properties":{"proxy_claim_id":{"type":"string","format":"uuid","description":"ID of the proxy claim to finalise. Must belong to the connected account in the path and be `pending_acknowledgment`.","example":"a1b2c3d4-e5f6-7890-abcd-ef1234567890"},"scheme_data":{"type":"object","additionalProperties":true,"description":"Optional scheme-side identifiers to merge into the claim's\n`scheme_data`. Absent leaves the existing scheme data unchanged.\n","example":{"acknowledgment_ref":"ACK-2026-0001"}}}},"simulator.proxy_claim.confirmation_completed.payload":{"type":"object","description":"Payload for the `proxy_claim.confirmation_completed` simulator event.\nThe scheme finalised a donor-initiated confirmation, so the targeted\nproxy claim transitions from `pending_confirmation` to `confirmed`. In\nthe same transaction the linked proxy key (if any) is released\n(`status = disabled`, `status_reason = released_via_claim`).\n`scheme_data`, when present, is merged over the claim's existing scheme\ndata (not replaced), so prior identifiers are preserved.\n","required":["proxy_claim_id"],"properties":{"proxy_claim_id":{"type":"string","format":"uuid","description":"ID of the proxy claim to finalise. Must belong to the connected account in the path and be `pending_confirmation`.","example":"a1b2c3d4-e5f6-7890-abcd-ef1234567890"},"scheme_data":{"type":"object","additionalProperties":true,"description":"Optional scheme-side identifiers to merge into the claim's\n`scheme_data`. Absent leaves the existing scheme data unchanged.\n","example":{"confirmation_ref":"CONFIRM-2026-0001"}}}},"simulator.proxy_claim.auto_confirmed.payload":{"type":"object","description":"Payload for the `proxy_claim.auto_confirmed` simulator event — the\ndonor-side deadline auto-confirm. The donor let the resolution deadline\nelapse without responding, so the scheme auto-confirms the claim: the\ntargeted proxy claim transitions from `waiting_resolution` to\n`confirmed` (skipping the `pending_confirmation` hop). In the same\ntransaction the linked proxy key (if any) is released\n(`status = disabled`, `status_reason = released_via_claim`) — the same\ncascade as `confirmation_completed`. `scheme_data`, when present, is\nmerged over the claim's existing scheme data (not replaced), so prior\nidentifiers are preserved.\n","required":["proxy_claim_id"],"properties":{"proxy_claim_id":{"type":"string","format":"uuid","description":"ID of the proxy claim to finalise. Must belong to the connected account in the path and be `waiting_resolution`.","example":"a1b2c3d4-e5f6-7890-abcd-ef1234567890"},"scheme_data":{"type":"object","additionalProperties":true,"description":"Optional scheme-side identifiers to merge into the claim's\n`scheme_data`. Absent leaves the existing scheme data unchanged.\n","example":{"auto_confirm_ref":"AUTOCONF-2026-0001"}}}},"simulator.proxy_claim.confirmation_rejected.payload":{"type":"object","description":"Payload for the `proxy_claim.confirmation_rejected` simulator event. The\nscheme refused to finalise a donor-initiated confirmation, so the\ntargeted proxy claim transitions from `pending_confirmation` to\n`confirmation_rejected`. `rejection_reason` (and the optional\n`rejection_details`) are folded into the claim's `status_details`: the\nreason code leads, with the detail appended after `\": \"` when present.\n","required":["proxy_claim_id","rejection_reason"],"properties":{"proxy_claim_id":{"type":"string","format":"uuid","description":"ID of the proxy claim to reject. Must belong to the connected account in the path and be `pending_confirmation`.","example":"a1b2c3d4-e5f6-7890-abcd-ef1234567890"},"rejection_reason":{"type":"string","description":"Machine-readable reason the scheme rejected the confirmation.","enum":["invalid_status","claim_expired","scheme_internal_error"],"example":"claim_expired"},"rejection_details":{"type":"string","description":"Optional human-readable detail appended to status_details after the reason code.","example":"Resolution window elapsed before confirmation."}}},"simulator.proxy_claim.acknowledgment_rejected.payload":{"type":"object","description":"Payload for the `proxy_claim.acknowledgment_rejected` simulator event. The\nscheme refused to finalise a donor-initiated acknowledgment, so the\ntargeted proxy claim transitions from `pending_acknowledgment` to\n`acknowledgment_rejected`. `rejection_reason` (and the optional\n`rejection_details`) are folded into the claim's `status_details`: the\nreason code leads, with the detail appended after `\": \"` when present.\n","required":["proxy_claim_id","rejection_reason"],"properties":{"proxy_claim_id":{"type":"string","format":"uuid","description":"ID of the proxy claim to reject. Must belong to the connected account in the path and be `pending_acknowledgment`.","example":"a1b2c3d4-e5f6-7890-abcd-ef1234567890"},"rejection_reason":{"type":"string","description":"Machine-readable reason the scheme rejected the acknowledgment.","enum":["claim_not_found","invalid_status","scheme_internal_error"],"example":"claim_not_found"},"rejection_details":{"type":"string","description":"Optional human-readable detail appended to status_details after the reason code.","example":"No claim registered for that proxy."}}},"simulator.proxy_claim.cancellation_rejected.payload":{"type":"object","description":"Payload for the `proxy_claim.cancellation_rejected` simulator event. The\nscheme refused to finalise a cancellation — whether claimer- or\ndonor-initiated (the `/cancel` endpoint and this event are\nrole-agnostic) — so the targeted proxy claim transitions from\n`pending_cancellation` to `cancellation_rejected`. `rejection_reason`\n(and the optional `rejection_details`) are folded into the claim's\n`status_details`: the reason code leads, with the detail appended after\n`\": \"` when present.\n","required":["proxy_claim_id","rejection_reason"],"properties":{"proxy_claim_id":{"type":"string","format":"uuid","description":"ID of the proxy claim to reject. Must belong to the connected account in the path and be `pending_cancellation`.","example":"a1b2c3d4-e5f6-7890-abcd-ef1234567890"},"rejection_reason":{"type":"string","description":"Machine-readable reason the scheme rejected the cancellation.","enum":["invalid_status","cancellation_not_allowed","scheme_internal_error"],"example":"cancellation_not_allowed"},"rejection_details":{"type":"string","description":"Optional human-readable detail appended to status_details after the reason code.","example":"Claim is past the cancellation window."}}},"simulator.proxy_claim.received.payload":{"type":"object","description":"Payload for the `proxy_claim.received` simulator event — the donor-side\ndiscovery flow. Unlike the other claim events this CREATES a new local\nproxy claim (`role=donor`, `status=open`) rather than transitioning an\nexisting one. `proxy_key_id` (and `internal_account_id`) are bound to the\ndonor's active local proxy key matching the connected account in the path\n+ `proxy_type_code` + `proxy_identification`; both are left null when no\nlocal key matches. A `409` is returned if an active claim already exists\nfor the same proxy. `scheme_data` is required for DICT.\n","required":["type","proxy_type","proxy_identification","claimer_name","claimer_account_identification","claimer_servicer","donor_servicer","scheme_data"],"properties":{"type":{"type":"string","enum":["ownership","portability"],"example":"ownership"},"proxy_type":{"type":"string","enum":["phone","email","tax_id","organisation","random_alias"],"example":"random_alias"},"proxy_type_code":{"type":"string","enum":["cpf","cnpj","abn","teli","emal","aubn","orgn","evp"],"example":"evp"},"proxy_identification":{"type":"string","description":"The claimed proxy value (phone / email / tax id / alias).","example":"a1b2c3d4-e5f6-7890-abcd-ef1234567890"},"claimer_name":{"type":"string","maxLength":140,"example":"Claimer SA"},"claimer_account_identification":{"type":"string","example":"0001234567"},"claimer_account_type":{"type":"string","enum":["CACC","SVGS","SLRY","TRAN"],"example":"CACC"},"claimer_account_issuer":{"type":"string","example":"CLAIMRBRRJXX"},"claimer_servicer":{"type":"string","description":"Bank code of the institution hosting the claimer's account.","example":"CLAIMRBRRJXX"},"donor_servicer":{"type":"string","description":"Bank code of the donor institution (this connected account's side).","example":"SANITYBNKXXX"},"resolution_period_end":{"type":"string","format":"date-time","description":"Optional. Defaults to now + 7 days when omitted.","example":"2026-07-01T00:00:00Z"},"completion_period_end":{"type":"string","format":"date-time","description":"Optional. Defaults to now + 14 days when omitted.","example":"2026-07-08T00:00:00Z"},"scheme_data":{"type":"object","description":"DICT-specific fields recorded on the created claim's scheme_data.","required":["claim_id","claimer_tax_identification_number","claimer_owner_type","claimer_opening_date"],"properties":{"claim_id":{"type":"string","description":"The scheme's claim identifier.","example":"CLAIM-2026-0001"},"claimer_tax_identification_number":{"type":"string","example":"11222333000181"},"claimer_owner_type":{"type":"string","enum":["individual","legal_entity"],"example":"legal_entity"},"claimer_opening_date":{"type":"string","format":"date-time","example":"2020-01-01T00:00:00Z"}}}}},"dict_proxy_claim.list_result":{"type":"object","description":"List response for DICT proxy claims. `records` is the page of results,\nordered by `created_at` then `id` descending. To page forward, pass the\nlast record's `id` as `starting_after` on the next request.\n","required":["records"],"properties":{"records":{"type":"array","description":"List of proxy claims matching the query.","items":{"$ref":"#/components/schemas/dict_proxy_claim"}}}}}},"security":[{"sec0":[]}],"paths":{"/proxy_services/dict/proxy_keys":{"post":{"summary":"Create DICT proxy key","description":"Register a proxy key in the DICT directory for a connected account.","operationId":"create-dict-proxy-key","tags":["DICT proxy keys"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/dict_proxy_key.creation_details"}}}},"responses":{"200":{"description":"Successfully created proxy key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/dict_proxy_key"}}}},"400":{"$ref":"#/components/responses/errors.400.validation"},"409":{"$ref":"#/components/responses/errors.409.conflict"}}},"get":{"summary":"List DICT proxy keys","description":"List and filter DICT proxy keys.","operationId":"list-dict-proxy-keys","tags":["DICT proxy keys"],"parameters":[{"$ref":"#/components/parameters/proxy_keys.list_parameters.limit"},{"$ref":"#/components/parameters/proxy_keys.list_parameters.starting_after"},{"name":"status","in":"query","description":"Filter by proxy key status.","schema":{"type":"string","enum":["pending_registration","registration_failed","active","disabled"]}},{"name":"connected_account_id","in":"query","description":"Filter by connected account ID.","schema":{"type":"string","format":"uuid"}},{"name":"proxy_type","in":"query","description":"Filter by proxy type.","schema":{"type":"string","enum":["phone","email","tax_id","organisation","random_alias"]}},{"name":"proxy_type_code","in":"query","description":"Filter by scheme-specific proxy type code.","schema":{"type":"string","enum":["cpf","cnpj","abn","teli","emal","aubn","orgn","evp"]}},{"name":"proxy_identification","in":"query","description":"Filter by proxy identification value.","schema":{"type":"string"}},{"name":"owner_name","in":"query","description":"Filter by owner name (maximum 140 characters).","schema":{"type":"string","maxLength":140}},{"name":"internal_account_id","in":"query","description":"Filter by internal account ID.","schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"List of filtered proxy keys","content":{"application/json":{"schema":{"$ref":"#/components/schemas/dict_proxy_key.list_result"}}}},"400":{"$ref":"#/components/responses/errors.400.validation"}}}},"/proxy_services/dict/proxy_keys/{id}":{"get":{"summary":"Get DICT proxy key","description":"Retrieve a single DICT proxy key by its ID.","operationId":"get-dict-proxy-key","tags":["DICT proxy keys"],"parameters":[{"name":"id","in":"path","required":true,"description":"ID of the proxy key to retrieve.","schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Proxy key retrieved successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/dict_proxy_key"}}}},"404":{"$ref":"#/components/responses/errors.404.not_found"}}},"post":{"summary":"Update DICT proxy key","description":"Partially update an active DICT proxy key. Only fields present in the\nrequest body are updated; omitted fields are left unchanged.\n\n`owner_name` and `account_identification` changes are forwarded to the\nDICT provider before the record is persisted — a provider failure leaves\nthe key unchanged.\n\nReturns `400` if the key is not currently `active`.\nAn empty request body is valid — the current key is returned with `200`.\n","operationId":"update-dict-proxy-key","tags":["DICT proxy keys"],"parameters":[{"name":"id","in":"path","required":true,"description":"ID of the proxy key to update.","schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/dict_proxy_key.update_details"}}}},"responses":{"200":{"description":"Proxy key successfully updated.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/dict_proxy_key"}}}},"400":{"$ref":"#/components/responses/errors.400.validation"},"404":{"$ref":"#/components/responses/errors.404.not_found"}}}},"/proxy_services/dict/proxy_keys/{id}/disable":{"post":{"summary":"Disable DICT proxy key","description":"Deregister a proxy key from the DICT directory. The key transitions from\n`active` to `disabled`. The call is idempotent with respect to the\nprovider — if the key is already absent from the directory it is still\nmarked `disabled` in Mambu Payments.\n\nReturns `400` if the key is not currently `active`.\n","operationId":"disable-dict-proxy-key","tags":["DICT proxy keys"],"parameters":[{"name":"id","in":"path","required":true,"description":"ID of the proxy key to disable.","schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Proxy key successfully disabled.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/dict_proxy_key"}}}},"400":{"$ref":"#/components/responses/errors.400.validation"},"404":{"$ref":"#/components/responses/errors.404.not_found"}}}},"/proxy_services/dict/proxy_keys/{id}/enable":{"post":{"summary":"Enable DICT proxy key","description":"Re-register a previously disabled proxy key in the DICT directory. The\nkey transitions from `disabled` back to `active`. A new\n`directory_entry_id` is issued by the provider and persisted on the key.\n\nReturns `400` if the key is not currently `disabled`.\n","operationId":"enable-dict-proxy-key","tags":["DICT proxy keys"],"parameters":[{"name":"id","in":"path","required":true,"description":"ID of the proxy key to enable.","schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Proxy key successfully enabled.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/dict_proxy_key"}}}},"400":{"$ref":"#/components/responses/errors.400.validation"},"404":{"$ref":"#/components/responses/errors.404.not_found"}}}},"/proxy_services/dict/proxy_lookups":{"post":{"summary":"Perform DICT proxy lookup","description":"Submit a proxy lookup request against the DICT directory. Returns\nthe created lookup with its current `status`. Owner and account\nfields are populated once `status` reaches `sent`.\n","operationId":"create-dict-proxy-lookup","tags":["DICT proxy lookups"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/dict_proxy_lookup.creation_details"}}}},"responses":{"200":{"description":"Proxy lookup performed successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/dict_proxy_lookup"}}}},"400":{"$ref":"#/components/responses/errors.400.validation"},"404":{"$ref":"#/components/responses/errors.404.not_found"}}},"get":{"summary":"List DICT proxy lookups","description":"List and filter past DICT proxy lookups.","operationId":"list-dict-proxy-lookups","tags":["DICT proxy lookups"],"parameters":[{"$ref":"#/components/parameters/proxy_lookups.list_parameters.limit"},{"$ref":"#/components/parameters/proxy_lookups.list_parameters.starting_after"},{"name":"status","in":"query","description":"Filter by lookup status.","schema":{"type":"string","enum":["created","processing","sent","completed","rejected"]}},{"name":"connected_account_id","in":"query","description":"Filter by connected account ID.","schema":{"type":"string","format":"uuid"}},{"name":"proxy_type","in":"query","description":"Filter by proxy type.","schema":{"type":"string","enum":["phone","email","tax_id","organisation","random_alias"]}},{"name":"proxy_type_code","in":"query","description":"Filter by scheme-specific proxy type code.","schema":{"type":"string","enum":["cpf","cnpj","abn","teli","emal","aubn","orgn","evp"]}}],"responses":{"200":{"description":"List of filtered proxy lookups","content":{"application/json":{"schema":{"$ref":"#/components/schemas/dict_proxy_lookup.list_result"}}}},"400":{"$ref":"#/components/responses/errors.400.validation"}}}},"/proxy_services/dict/proxy_lookups/{id}":{"get":{"summary":"Get DICT proxy lookup","description":"Returns a single proxy lookup by its ID.","operationId":"get-dict-proxy-lookup","tags":["DICT proxy lookups"],"parameters":[{"name":"id","in":"path","required":true,"description":"ID of the proxy lookup to retrieve.","schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Successfully retrieved proxy lookup","content":{"application/json":{"schema":{"$ref":"#/components/schemas/dict_proxy_lookup"}}}},"404":{"$ref":"#/components/responses/errors.404.not_found"}}}},"/proxy_services/dict/proxy_claims":{"post":{"summary":"Create DICT proxy claim","description":"Open a portability or ownership claim for a DICT proxy key registered\nat another institution.\n\n- **Portability** — the same person moves the key to a new institution.\n  The claimer's tax ID must match the donor's.\n- **Ownership** — a new person claims a key (e.g. a reassigned phone\n  number). Tax IDs do not need to match.\n\nEVP (random alias) keys cannot be claimed and will result in a\n`creation_rejected` response.\n\nIf an active claim already exists for the `proxy_identification`, the\nrequest returns `409`.\n","operationId":"create-dict-proxy-claim","tags":["DICT proxy claims"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/dict_proxy_claim.creation_details"}}}},"responses":{"200":{"description":"Proxy claim created. `status` is `pending_creation` when DICT accepted the request (flipped to `open` by the `proxy_claim.creation_completed` inbound event), or `creation_rejected` when DICT rejected it synchronously (e.g. key not found or not claimable).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/dict_proxy_claim"}}}},"400":{"$ref":"#/components/responses/errors.400.validation"},"404":{"description":"No proxy configuration found for this legal entity and the DICT scheme."},"409":{"$ref":"#/components/responses/errors.409.conflict"}}},"get":{"summary":"List DICT proxy claims","description":"Returns proxy claims for the authenticated legal entity, with cursor\npagination (`limit`, `starting_after`) and optional filters (`status`,\n`connected_account_id`, `type`, `role`, `proxy_type_code`,\n`proxy_identification`, `internal_account_id`, `proxy_key_id`).\nRecords are ordered by `created_at` descending, then `id` descending.\nTo page forward, pass the last record's `id` as `starting_after` on\nthe next request.\n","operationId":"list-dict-proxy-claims","tags":["DICT proxy claims"],"parameters":[{"$ref":"#/components/parameters/proxy_claims.list_parameters.limit"},{"$ref":"#/components/parameters/proxy_claims.list_parameters.starting_after"},{"name":"status","in":"query","required":false,"description":"Filter by claim status.","schema":{"type":"string","enum":["pending_creation","open","creation_rejected"]}},{"name":"connected_account_id","in":"query","required":false,"description":"Filter by connected account ID.","schema":{"type":"string","format":"uuid"}},{"name":"type","in":"query","required":false,"description":"Filter by claim type.","schema":{"type":"string","enum":["ownership","portability"]}},{"name":"role","in":"query","required":false,"description":"Filter by the legal entity's role in the claim. Today all rows have role=claimer; donor-side rows ship with the discovery flow.","schema":{"type":"string","enum":["claimer","donor"]}},{"name":"proxy_type_code","in":"query","required":false,"description":"Filter by scheme-specific proxy type code.","schema":{"type":"string","enum":["cpf","cnpj","abn","teli","emal","aubn","orgn","evp"]}},{"name":"proxy_identification","in":"query","required":false,"description":"Exact-match filter on the proxy identification.","schema":{"type":"string"}},{"name":"internal_account_id","in":"query","required":false,"description":"Filter by internal account linkage.","schema":{"type":"string","format":"uuid"}},{"name":"proxy_key_id","in":"query","required":false,"description":"Filter by the bound local proxy key. Claimer-side rows have a null binding and are not returned by this filter today.","schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"List of filtered proxy claims.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/dict_proxy_claim.list_result"}}}},"400":{"$ref":"#/components/responses/errors.400.validation"}}}},"/proxy_services/dict/proxy_claims/{id}":{"get":{"summary":"Get DICT proxy claim","description":"Retrieve a single DICT proxy claim by its ID.","operationId":"get-dict-proxy-claim","tags":["DICT proxy claims"],"parameters":[{"name":"id","in":"path","required":true,"description":"ID of the proxy claim to retrieve.","schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Proxy claim retrieved successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/dict_proxy_claim"}}}},"404":{"$ref":"#/components/responses/errors.404.not_found"}}}},"/proxy_services/dict/proxy_claims/{id}/acknowledge":{"post":{"summary":"Acknowledge DICT proxy claim","description":"Donor acknowledges receipt of an open proxy claim, transitioning it\nfrom `open` to `pending_acknowledgment`. Only applicable when\n`role = donor` — requests against claimer-side rows return `400`.\n\nThe provider call is synchronous against the simulator; on success\nthe response returns `status = pending_acknowledgment` and the claim\nis finalised to `waiting_resolution` asynchronously by the inbound\n`proxy_claim.acknowledgment_completed` event. On provider rejection\nthe response returns `200` with `status = acknowledgment_rejected` and\na populated `status_details` (rejections are stored business states,\nnot HTTP errors).\n","operationId":"acknowledge-dict-proxy-claim","tags":["DICT proxy claims"],"parameters":[{"name":"id","in":"path","required":true,"description":"ID of the proxy claim to acknowledge.","schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Proxy claim acknowledged (or acknowledgment rejected by the provider).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/dict_proxy_claim"}}}},"400":{"$ref":"#/components/responses/errors.400.validation"},"404":{"$ref":"#/components/responses/errors.404.not_found"}}}},"/proxy_services/dict/proxy_claims/{id}/confirm":{"post":{"summary":"Confirm DICT proxy claim","description":"Donor confirms a proxy claim in `waiting_resolution`. On provider\nsuccess the claim moves to `pending_confirmation`; on provider failure\nit moves to `confirmation_rejected`. Both outcomes return `200` —\nrejections are stored business states, not HTTP errors.\n\n`pending_confirmation` is finalised asynchronously by the\n`proxy_claim.confirmation_completed` event, which transitions the claim\nto `confirmed` and — if it has a bound `proxy_key_id` — releases the\nlinked proxy key (`status = disabled`,\n`status_reason = released_via_claim`) in the same transaction.\n","operationId":"confirm-dict-proxy-claim","tags":["DICT proxy claims"],"parameters":[{"name":"id","in":"path","required":true,"description":"ID of the proxy claim to confirm.","schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/dict_proxy_claim.confirm_details"}}}},"responses":{"200":{"description":"Confirm acknowledged — claim moved to `pending_confirmation` (or `confirmation_rejected` by the provider).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/dict_proxy_claim"}}}},"400":{"$ref":"#/components/responses/errors.400.validation"},"404":{"$ref":"#/components/responses/errors.404.not_found"}}}},"/proxy_services/dict/proxy_claims/{id}/cancel":{"post":{"summary":"Cancel DICT proxy claim","description":"Cancel a proxy claim. Allowed start status depends on the claim `type`:\n- `type=portability` — cancellable from `open` or `waiting_resolution`.\n- `type=ownership` — cancellable from `open`, `waiting_resolution`, or `confirmed`.\n\nEither role (claimer or donor) can call cancel. The\n`scheme_data.cancelled_by` field reflects the row's `role` — the side\nthat initiated the cancel — and is stamped on this call.\n\nCancellation is async at the scheme. On success the response returns\n`status = pending_cancellation`: the request was accepted and is awaiting\nthe scheme to finalise it. The claim is flipped to `cancelled` by the\n`proxy_claim.cancellation_completed` inbound event. On provider rejection\nthe response returns `200` with `status = cancellation_rejected` and a\npopulated `status_details` (rejections are stored business states, not\nHTTP errors).\n\n**Cancellation does not affect the linked `proxy_key`**: if an ownership\nclaim is cancelled after being confirmed (e.g. DICT `FRAUD`), the\ndonor-side `proxy_key.disabled` state is not auto-reverted. Manual\nreconciliation if needed.\n","operationId":"cancel-dict-proxy-claim","tags":["DICT proxy claims"],"parameters":[{"name":"id","in":"path","required":true,"description":"ID of the proxy claim to cancel.","schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/dict_proxy_claim.cancel_details"}}}},"responses":{"200":{"description":"Proxy claim moved to pending_cancellation (or cancellation rejected by the provider).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/dict_proxy_claim"}}}},"400":{"$ref":"#/components/responses/errors.400.validation"},"404":{"$ref":"#/components/responses/errors.404.not_found"}}}},"/proxy_services/dict/proxy_claims/{id}/complete":{"post":{"summary":"Complete DICT proxy claim","description":"Complete a proxy claim. Only the claimer side can call this endpoint\n(`role = claimer`). Completion rules depend on the claim `type`:\n- `type=portability` — completable once `status = confirmed`, regardless of deadline.\n- `type=ownership` — completable once `status = confirmed` **and** `completion_period_end` has passed.\n\nCompletion is async at the scheme. On success the response returns\n`status = pending_completion`: the request was accepted and is awaiting\nthe scheme to finalise it. The claim is flipped to `completed` — and the\nnew `active` proxy key created and linked via `proxy_key_id` — by the\n`proxy_claim.completion_completed` inbound event. On provider rejection\nthe response returns `200` with `status = completion_rejected` and a\npopulated `status_details` (rejections are stored business states, not\nHTTP errors).\n","operationId":"complete-dict-proxy-claim","tags":["DICT proxy claims"],"parameters":[{"name":"id","in":"path","required":true,"description":"ID of the proxy claim to complete.","schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Proxy claim moved to pending_completion (or completion rejected by the provider).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/dict_proxy_claim"}}}},"400":{"$ref":"#/components/responses/errors.400.validation"},"404":{"$ref":"#/components/responses/errors.404.not_found"}}}},"/simulator/proxy-lookup/{connected_account_id}":{"post":{"summary":"Trigger a proxy-lookup simulator event","description":"Inject an inbound scheme event against a proxy-lookup connected account\nin your sandbox. Use this to drive `proxy_lookup` and `proxy_key` rows\nthrough their state machine without a live scheme connection.\n\nThis endpoint is only available in the sandbox environment.\n\nSupported `message_type` values cover the `proxy_lookup.*`,\n`proxy_key.*`, and `proxy_claim.*` event families — see the\n`message_type` enum in the request schema for the full list. Payload\nshapes are documented per event on the Numeral developer portal under\n\"Vanilla simulator events\".\n","operationId":"trigger-proxy-lookup-simulator-event","tags":["Proxy lookup simulator"],"parameters":[{"name":"connected_account_id","in":"path","required":true,"description":"ID of the connected account. Must have the `proxy_lookup_dict` bank service enabled.","schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/simulator.proxy_lookup.request"}}}},"responses":{"200":{"description":"The event was applied. The response body identifies the row affected.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/simulator.proxy_lookup.response"}}}},"400":{"description":"Bad request. Invalid envelope, unknown `message_type`, or the targeted row is not in a status that accepts this event."},"401":{"description":"Unauthorized. API key is missing or invalid."},"403":{"description":"Forbidden. Feature not enabled for this API key."},"404":{"description":"Not found. The connected account does not exist, is not attached to this legal entity, or the targeted row does not exist."},"501":{"description":"Not implemented. No handler is registered for this `message_type` yet."}}}}}}