> ## Documentation Index
> Fetch the complete documentation index at: https://docs.didit.me/llms.txt
> Use this file to discover all available pages before exploring further.

# API para listar transacciones: monitorización KYT

> Lista las transacciones monitorizadas en Didit con riesgo, severidad, contrapartes, etiquetas y estado de cribado. KYT por llamada, sin contratos.



Prompt de la API para listar transacciones
        Copiar el prompt al portapapeles



      
      

\<pre>

\`List monitored transactions for my Didit application through the Management API.

Endpoint:
GET https://verification.didit.me/v3/transactions/

Authentication:
Use the x-api-key header with my Didit API key.

Goal:
\- Retrieve a paginated list of high-level transaction summaries (score, severity, status, parties, tags, decision metadata) — suitable for back-office review screens, fraud dashboards, and audit exports.

Query parameters:
\- limit - page size (default 50, min 1).
\- offset — zero-based offset (default 0). Prefer following the next URL from the previous page.

Ordering & pagination:
\- Ordered by txn_date descending (most recent first), with created_at as a tie-breaker.
\- count is a bounded counter (exact up to 100, capped above). Use total_transactions when present for the true count.
\- Transactions deleted via the Console are not returned.

Filtering:
\- Besides limit / offset, this endpoint accepts travel_rule_status, an exact Travel Rule status (for example ON_HOLD), and then returns only transactions whose Travel Rule transfer is in that status.
count follows this filter, but total_transactions always counts every transaction in the application.
\- It also accepts assignee, a comma-separated list where any value matches: me (the calling reviewer, with a user token), unassigned, rules (decided by the rules alone, no reviewer involved), or a member email.
\- For other filtering (party, status, severity, date range), use the Console UI.

Example call:
curl -X GET "https://verification.didit.me/v3/transactions/?limit=50" \
-H "x-api-key: YOUR_API_KEY"

What to read from each row:
\- uuid — stable Didit transaction id; use as {transaction_id} in GET /v3/transactions/{transaction_id}/.
\- transaction_number — application-scoped sequential number shown in Console.
\- txn_id — the identifier you supplied at create time (max 128 chars, unique per application).
\- status, score, severity, decision_reason_code, decision_reason_label — live monitoring verdict.
\- direction, amount, currency — raw submission. amount is a decimal string.
\- subject_name / subject_vendor_data / subject_country — denormalized APPLICANT party fields.
\- counterparty_name / counterparty_vendor_data / counterparty_country — denormalized COUNTERPARTY fields (may be null).
\- tags — Console tags (uuid, name, color).
\- assigned_to_name — Console reviewer who owns the transaction.
\- travel_rule_status - the status of the transaction's Travel Rule transfer (for example COMPLETED), or null when it has none.
\- travel_rule - the same Travel Rule block as GET /v3/transactions/{transaction_id}/ (status, direction, rail, counterparty_vasp, delivery, discovery, reason, next_actions and the rest), or null when the transaction has none.
Read reason and next_actions to see why each COUNTERPARTY_VASP_NOT_FOUND or COUNTERPARTY_VASP_NOT_REACHABLE transfer is stuck without one read per transaction.

Failure modes:
\- 403 - missing x-api-key (a wrong, revoked or expired key gets 401), or a key without permission for this action; the body is a { "detail": "..." } envelope.
\- 429 — rate limited; back off and retry.

Side effects: none. This is a pure read.

For the full integration shape, see /integration/integration-prompt.`

\</pre>



      
      

Pegar en



## OpenAPI

````yaml es/openapi-25.json GET /v3/transactions/
openapi: 3.0.0
info:
  version: 3.0.0
  title: Didit Verification API
  description: API de verificación de identidad. Autentícate con el encabezado x-api-key.
servers:
  - url: https://verification.didit.me
security: []
tags: []
paths:
  /v3/transactions/:
    get:
      tags:
        - Transactions
      summary: Listar transacciones
      description: >-
        Lista paginada de transacciones monitorizadas, de la más reciente a la
        más antigua (`txn_date` desc). `count` tiene un máximo de 100; usa
        `total_transactions` para obtener el número real de filas. Este endpoint
        no admite parámetros de filtrado ni de búsqueda.
      operationId: listTransactions
      parameters:
        - name: limit
          in: query
          schema:
            type: integer
            default: 50
            minimum: 1
            maximum: 1000000
          description: >-
            Tamaño de página. Si se omite, el valor predeterminado es 50. No hay
            un máximo obligatorio, pero mantén las páginas pequeñas para reducir
            la latencia.
        - name: offset
          in: query
          schema:
            type: integer
            maximum: 1000000
            minimum: 0
            default: 0
          description: >-
            Desplazamiento, empezando en cero, del primer registro que se
            devuelve. Es preferible seguir la URL `next` de la página anterior.
        - name: travel_rule_status
          in: query
          required: false
          schema:
            type: string
          description: >-
            Devuelve solo las transacciones cuya transferencia de Travel Rule
            está exactamente en este estado (por ejemplo, `ON_HOLD` o
            `AWAITING_COUNTERPARTY`). `count` aplica este filtro;
            `total_transactions` sigue contando todas las transacciones de la
            aplicación.
        - name: assignee
          in: query
          required: false
          schema:
            type: string
          description: >-
            Separados por comas; una transacción coincide cuando cumple
            cualquiera de los valores. `unassigned` corresponde a lo que todavía
            no tiene nadie asignado, `rules` a lo que las reglas decidieron por
            sí solas sin un revisor, y el correo electrónico de un miembro
            coincide con el revisor asignado. `me` es el revisor que ha iniciado
            sesión en la Console, por lo que una clave de API que envíe `me`
            recibe `400`.
      responses:
        '200':
          description: >-
            Lista paginada de resúmenes de transacciones, de la más reciente a
            la más antigua.
          content:
            application/json:
              schema:
                type: object
                properties:
                  count:
                    type: integer
                    description: >-
                      Recuento limitado de transacciones coincidentes (exacto
                      hasta 100, limitado a partir de ahí). Usa
                      `total_transactions` para obtener el recuento real al
                      paginar.
                  next:
                    type: string
                    nullable: true
                    description: >-
                      URL absoluta de la página siguiente, o `null` en la última
                      página.
                  previous:
                    type: string
                    nullable: true
                    description: >-
                      URL absoluta de la página anterior, o `null` en la primera
                      página.
                  total_transactions:
                    type: integer
                    description: >-
                      Recuento total exacto de transacciones (no eliminadas) de
                      la aplicación. Presente en las respuestas paginadas.
                  results:
                    type: array
                    items:
                      type: object
                      properties:
                        uuid:
                          type: string
                          format: uuid
                          description: >-
                            Identificador estable de Didit para la transacción.
                            Úsalo como `{transaction_id}` en las llamadas de
                            detalle, notas y elementos relacionados.
                        transaction_number:
                          type: integer
                          description: >-
                            Número secuencial de transacción dentro de la
                            aplicación que se muestra en la consola (p. ej.,
                            `4123`).
                        txn_id:
                          type: string
                          description: >-
                            Identificador proporcionado por el cliente en la
                            llamada de creación (máx. 128 caracteres). Único por
                            aplicación.
                        transaction_type:
                          type: string
                          description: >-
                            Categoría de nivel superior tal como se almacena:
                            `finance`, `kyc`, `travelRule`, `userPlatformEvent`,
                            `gamblingBet`, `gamblingLimitChange`,
                            `gamblingBonusChange`, `auditTrailEvent`. Ten en
                            cuenta que los valores de varias palabras se
                            devuelven en camelCase aunque se envíen en
                            snake_case.
                        action_type:
                          type: string
                          description: >-
                            Subtipo dentro de la categoría (p. ej., `deposit`,
                            `withdrawal`, `transfer`).
                        status:
                          type: string
                          enum:
                            - APPROVED
                            - IN_REVIEW
                            - DECLINED
                            - AWAITING_USER
                          description: Veredicto de monitorización actual.
                        direction:
                          type: string
                          enum:
                            - INBOUND
                            - OUTBOUND
                          description: >-
                            Sentido respecto al sujeto. Se almacena en
                            mayúsculas independientemente de cómo se envíe.
                        amount:
                          type: string
                          description: >-
                            Importe de la transacción como cadena decimal sin
                            ceros finales (p. ej., `"1500"`, `"0.5"`,
                            `"0.123456789012345678"`). Hasta 18 decimales.
                        currency:
                          type: string
                          description: >-
                            Código de moneda de `amount`. Se acepta cualquier
                            código alfabético ISO 4217 (p. ej. `EUR`, `USD`,
                            `NGN`), así como el símbolo de un criptoactivo (p.
                            ej. `BTC`). Es preferible un código actualmente en
                            circulación. No todos los códigos aceptados tienen
                            tipo de cambio. Cuando no hay ninguno disponible
                            para el código, la conversión automática falla. Es
                            el caso, por ejemplo, de la unidad contable ISO
                            `XSU` o de un símbolo cripto al que Didit no asigna
                            precio. Entonces `preferred_currency_amount` se
                            devuelve como null, salvo que la solicitud haya
                            incluido un `amount_in_default_currency` ya
                            convertido.
                        preferred_currency_amount:
                          type: string
                          nullable: true
                          description: >-
                            `amount` convertido a la moneda preferida de la
                            aplicación, cuando está disponible.
                        preferred_currency_code:
                          type: string
                          nullable: true
                          description: >-
                            Código de moneda preferida que se usa para
                            `preferred_currency_amount`: la moneda base de la
                            aplicación, cualquier código ISO 4217 actualmente en
                            circulación. Un código sin tipo de cambio disponible
                            deja `preferred_currency_amount` en null, salvo que
                            la solicitud haya proporcionado un
                            `amount_in_default_currency` ya convertido.
                        payment_details:
                          type: string
                          nullable: true
                          description: >-
                            Referencia o concepto de pago en texto libre del
                            envío.
                        score:
                          type: integer
                          description: >-
                            Puntuación de riesgo (normalmente de 0 a 100).
                            Cuanto más alta, mayor riesgo.
                        severity:
                          type: string
                          nullable: true
                          enum:
                            - UNKNOWN
                            - LOW
                            - MEDIUM
                            - HIGH
                            - CRITICAL
                          description: >-
                            Gravedad categórica del riesgo establecida por
                            reglas o proveedores (`UNKNOWN`, `LOW`, `MEDIUM`,
                            `HIGH`, `CRITICAL`). `null` hasta que algo la
                            establezca.
                        subject_name:
                          type: string
                          nullable: true
                          description: Nombre completo de la parte `APPLICANT`.
                        subject_vendor_data:
                          type: string
                          nullable: true
                          description: >-
                            Tu identificador interno de usuario o empresa para
                            el solicitante.
                        subject_country:
                          type: string
                          nullable: true
                          description: >-
                            Código de país del solicitante, obtenido del
                            `address.country` enviado (normalmente ISO 3166-1
                            alfa-3).
                        counterparty_name:
                          type: string
                          nullable: true
                          description: >-
                            Nombre completo de la parte `COUNTERPARTY`, si la
                            hay.
                        counterparty_vendor_data:
                          type: string
                          nullable: true
                          description: Tu identificador interno de la contraparte.
                        counterparty_country:
                          type: string
                          nullable: true
                          description: >-
                            Código de país de la contraparte, obtenido del
                            `address.country` enviado.
                        tags:
                          type: array
                          items:
                            type: object
                            properties:
                              uuid:
                                type: string
                                format: uuid
                              name:
                                type: string
                              color:
                                type: string
                              description:
                                type: string
                                nullable: true
                              source:
                                type: string
                                enum:
                                  - didit
                                  - custom
                                description: >-
                                  Si la etiqueta es un preajuste de Didit o una
                                  etiqueta personalizada.
                          description: >-
                            Etiquetas asociadas a la transacción (manualmente o
                            mediante reglas).
                        txn_date:
                          type: string
                          format: date-time
                          description: >-
                            Cuándo se produjo la transacción (a partir de
                            `transaction_at` en el momento de la creación).
                        created_at:
                          type: string
                          format: date-time
                          description: Cuándo registró Didit el envío.
                        decision_reason_code:
                          type: string
                          nullable: true
                          description: >-
                            Motivo legible por máquina del `status` actual (por
                            ejemplo, `WALLET_HIGH_RISK`).
                        decision_reason_label:
                          type: string
                          nullable: true
                          description: Etiqueta legible de `decision_reason_code`.
                        assigned_to_name:
                          type: string
                          nullable: true
                          description: >-
                            Nombre visible del revisor de la Console asignado a
                            esta transacción.
                        travel_rule_status:
                          type: string
                          nullable: true
                          description: >-
                            Estado de la transferencia de Travel Rule de la
                            transacción (por ejemplo, `COMPLETED`), o `null`
                            cuando no tiene ninguna.
                        travel_rule:
                          nullable: true
                          allOf:
                            - $ref: '#/components/schemas/TransactionTravelRule'
                          description: >-
                            La transferencia de Travel Rule de la transacción,
                            el mismo bloque que `travel_rule` en `GET
                            /v3/transactions/{transaction_id}/`, o `null` cuando
                            la transacción no tiene ninguna.
              examples:
                Single transaction:
                  value:
                    count: 1
                    next: null
                    previous: null
                    total_transactions: 1
                    results:
                      - uuid: abcdef12-3456-4890-abcd-ef1234567890
                        transaction_number: 4123
                        txn_id: your-txn-2026-05-17-001
                        transaction_type: finance
                        action_type: withdrawal
                        status: IN_REVIEW
                        direction: OUTBOUND
                        amount: '1500'
                        currency: EUR
                        preferred_currency_amount: '1620.45'
                        preferred_currency_code: USD
                        payment_details: Withdrawal to crypto wallet
                        txn_date: '2026-05-17T08:42:00Z'
                        created_at: '2026-05-17T08:42:11Z'
                        score: 78
                        severity: HIGH
                        decision_reason_code: WALLET_HIGH_RISK
                        decision_reason_label: Destination wallet flagged as high risk
                        tags:
                          - uuid: 9a8b7c6d-5e4f-4a3b-8c2d-1e0f9a8b7c6d
                            name: Manual review
                            color: '#F59E0B'
                            description: null
                            source: custom
                        subject_name: Maria Garcia
                        subject_vendor_data: user-12345
                        counterparty_name: null
                        counterparty_vendor_data: null
                        counterparty_country: null
                        subject_country: null
                        assigned_to_name: Alex Reviewer
                        travel_rule_status: null
                        travel_rule: null
        '403':
          description: >-
            Falta la clave de API, no es válida o fue revocada, o la clave no
            puede listar las transacciones de esta aplicación. Si falta la
            clave, se devuelve `403`; si es incorrecta, fue revocada o expiró,
            se devuelve `401`.
          content:
            application/json:
              examples:
                Forbidden:
                  value:
                    detail: You do not have permission to perform this action.
        '429':
          description: >-
            Límite de solicitudes superado; espera y reintenta cuando haya
            pasado el intervalo indicado en `Retry-After`.
          content:
            application/json:
              examples:
                Throttled:
                  value:
                    detail: Request was throttled. Expected available in 30 seconds.
      security:
        - ApiKeyAuth: []
      x-codeSamples:
        - lang: curl
          label: curl
          source: >-
            curl -X GET
            'https://verification.didit.me/v3/transactions/?limit=50' \
              -H 'x-api-key: YOUR_API_KEY'
        - lang: python
          label: Python
          source: |-
            from didit import Didit

            # Reads DIDIT_API_KEY.
            client = Didit()

            for item in client.transactions.list():
                print(item)
        - lang: javascript
          label: Node.js
          source: |-
            import Didit from "@didit-protocol/sdk-node";

            // Reads DIDIT_API_KEY.
            const didit = new Didit();

            for await (const item of didit.transactions.list()) {
              console.log(item);
            }
        - lang: go
          label: Go
          source: "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\niter := client.Transactions.ListAutoPaging(ctx, didit.TransactionsListParams{})\nfor iter.Next() {\n\tfmt.Printf(\"%+v\\n\", iter.Current())\n}\nif err := iter.Err(); err != nil {\n\tlog.Fatal(err)\n}"
        - lang: java
          label: Java
          source: |-
            import me.didit.Didit;

            // Reads DIDIT_API_KEY.
            Didit client = new Didit();

            for (var item : client.transactions().list()) {
                System.out.println(item);
            }
        - lang: php
          label: PHP
          source: |-
            <?php

            require 'vendor/autoload.php';

            use Didit\DiditClient;

            // Reads DIDIT_API_KEY.
            $didit = new DiditClient();

            foreach ($didit->transactions->list() as $item) {
                print_r($item->toArray());
            }
        - lang: ruby
          label: Ruby
          source: |-
            require "didit"

            # Reads DIDIT_API_KEY.
            didit = Didit::Client.new

            didit.transactions.list.auto_paging_each do |item|
              puts item.to_h
            end
        - lang: csharp
          label: .NET
          source: |-
            using System;
            using System.Text.Json;
            using Didit;

            // Reads DIDIT_API_KEY.
            using var client = new DiditClient();

            await foreach (var item in await client.Transactions.ListAsync())
            {
                Console.WriteLine(JsonSerializer.Serialize(item));
            }
components:
  schemas:
    TransactionTravelRule:
      type: object
      description: >-
        La transferencia Travel Rule de una transacción, tal como la devuelven
        `GET /v3/transactions/{transaction_id}/`, la respuesta `201` de `POST
        /v3/transactions/` y cada fila de `GET /v3/transactions/`. `direction`,
        `rail`, `counterparty_vasp`, `delivery`, `discovery`, `reason` y
        `next_actions` tienen la misma forma que en `PATCH
        /v3/transactions/{transaction_id}/travel-rule/`, de modo que una sola
        lectura de una transacción indica por qué su transferencia está
        bloqueada y qué la hace avanzar.
      properties:
        uuid:
          type: string
          format: uuid
        status:
          type: string
        protocol:
          type: string
          nullable: true
        required:
          type: boolean
        obligations_count:
          type: integer
        originator_data:
          type: object
          description: >-
            Parte ordenante. En una transferencia entrante, los valores de la
            contraparte están enmascarados hasta que se confirma la propiedad.
        beneficiary_data:
          type: object
          description: >-
            Parte beneficiaria. En una transferencia entrante, los valores de la
            contraparte están enmascarados hasta que se confirma la propiedad.
        name_match:
          type: object
          nullable: true
          description: >-
            La comparación de nombres que decidió la transferencia (puntuación y
            nivel de exigencia). Null hasta que se haya ejecutado una. Los
            nombres comparados se enmascaran junto con las partes.
        data_match:
          $ref: '#/components/schemas/TravelRuleDataMatch'
        mismatched_fields:
          type: array
          items:
            type: string
          description: >-
            Atajo para `data_match.mismatched_fields`. Vacío cuando nada
            difiere.
        data_unmasked:
          $ref: '#/components/schemas/TravelRuleDataUnmasked'
        data_masked:
          type: boolean
          description: >-
            True mientras los datos personales de la contraparte están
            enmascarados en esta respuesta.
        metadata:
          type: object
        direction:
          type: string
          enum:
            - INBOUND
            - OUTBOUND
          description: Qué lado del intercambio representa esta transferencia.
        rail:
          type: string
          nullable: true
          description: >-
            La vía por la que pasó la transferencia: `INTERNAL`, `TRP`, `GTR`,
            `TRUST`, `VERIFYVASP`, `SYGNA` o `EMAIL` (`TEST_VASP` en una
            aplicación de sandbox, cuando respondió el VASP de prueba de Didit),
            o `null` hasta que se elige una vía.
        counterparty_vasp:
          type: object
          nullable: true
          properties:
            name:
              type: string
            lei:
              type: string
            dd_score:
              type: integer
              description: >-
                Puntuación de diligencia debida de 0 a 100, donde un valor más
                alto es mejor. Usa la misma escala que el directorio de VASP.
            dd_score_breakdown:
              type: object
              description: >-
                Contribuciones de cada componente a dd_score, un objeto por
                componente como en el directorio de VASP (jurisdiction,
                verification, protocol, lei, history, essentials,
                responsiveness), cada uno con {points, max, reason, detail}. {}
                hasta que se haya evaluado la contraparte.
              additionalProperties:
                type: object
                properties:
                  points:
                    type: number
                    description: Puntos otorgados a este componente.
                  max:
                    type: integer
                    description: Puntos máximos que puede otorgar este componente.
                  reason:
                    type: string
                    description: Código legible por máquina del veredicto del componente.
                  detail:
                    type: string
                    description: Motivo legible de los puntos asignados.
            dd_assessed_at:
              type: string
              format: date-time
              nullable: true
              description: >-
                Cuándo se ejecutó por última vez la evaluación de diligencia
                debida. Nulo hasta que se haya evaluado la contraparte.
          description: >-
            La entrada del directorio de la contraparte, o `null` cuando la
            transferencia no vincula ninguna.
        delivery:
          nullable: true
          allOf:
            - $ref: '#/components/schemas/TravelRuleDelivery'
          description: >-
            El mensaje más reciente que la transferencia debe a otra parte.
            `null` cuando no ha debido ninguno, por ejemplo por debajo de
            `threshold_amount` o para una wallet sin custodia declarada.
        discovery:
          type: array
          description: >-
            Cómo buscó Didit la contraparte, con una entrada por cada paso
            ejecutado. Vacío cuando no se ejecutó ningún descubrimiento, por
            ejemplo, en una transferencia entrante.
          items:
            $ref: '#/components/schemas/TravelRuleDiscoveryStep'
        reason:
          type: string
          description: >-
            Por qué está bloqueada una transferencia
            `COUNTERPARTY_VASP_NOT_FOUND` o `COUNTERPARTY_VASP_NOT_REACHABLE`;
            `""` para cualquier otro estado. Primero lo determina una entrega
            fallida, solo en `COUNTERPARTY_VASP_NOT_REACHABLE`:
            `email_undeliverable` (el proveedor de correo rechazó el correo de
            cumplimiento y no queda ninguna dirección que probar: al enviarlo,
            en un recordatorio o como rebote permanente notificado más tarde) o
            `delivery_failed` (el canal que realizaba la entrega falló de forma
            definitiva: un canal de red rechazó el mensaje o agotó los
            reintentos, un host de identidad `TRP` no respondió o el host `TRP`
            de la contraparte no aceptó la consulta). En caso contrario, lo
            determina la traza `discovery`: `awaiting_end_user` (ningún paso
            indicó una contraparte a la que Didit pueda llegar),
            `directory_match_no_route` (un paso indicó un VASP del directorio
            que no tiene ruta), `picked_member_without_proven_wallet` (el
            usuario final eligió un cliente de Didit que no ha demostrado el
            control de la wallet) o `no_directory_match` cuando la traza no da
            ningún otro motivo. Un reenvío hace avanzar la transferencia, por lo
            que el motivo se borra. Consulta [Por qué está bloqueada una
            transferencia](/es/transaction-monitoring/travel-rule#por-qué-una-transferencia-está-bloqueada).
        next_actions:
          type: array
          description: >-
            Qué hace avanzar la transferencia; `[]` para cualquier estado que no
            sea `COUNTERPARTY_VASP_NOT_FOUND` o
            `COUNTERPARTY_VASP_NOT_REACHABLE`. `email_undeliverable` ofrece
            `update_compliance_email` y después `resend`. `delivery_failed`
            ofrece `resend`. Un motivo de descubrimiento ofrece
            `select_counterparty_vasp`, `declare_self_hosted`, `add_vasp_hint` y
            `resend`.
          items:
            $ref: '#/components/schemas/TravelRuleNextAction'
        chain_details:
          $ref: '#/components/schemas/TravelRuleChainDetails'
    TravelRuleDataMatch:
      type: object
      nullable: true
      description: >-
        Comparación campo a campo de los datos de las partes de la transferencia
        con lo que la otra parte sabe del titular de la wallet. Indica campos y
        resultados, nunca valores, por lo que sigue siendo legible mientras los
        datos de la contraparte están enmascarados. Es null hasta que se realiza
        una comparación.
      properties:
        matched:
          type: boolean
          description: True cuando ningún campo comparado difiere.
        mismatched_fields:
          type: array
          items:
            type: string
            enum:
              - name
              - date_of_birth
              - address
              - account
          description: Los campos que difieren.
        fields:
          type: object
          description: >-
            Una entrada por campo comparado para el tipo de entidad de la parte
            (`name`, `date_of_birth`, `address`, `account`; una empresa no tiene
            `date_of_birth`).
          additionalProperties:
            type: object
            properties:
              result:
                type: string
                enum:
                  - matched
                  - mismatched
                  - not_compared
                description: >-
                  `not_compared` cuando la regla es `NONE` o alguna de las dos
                  partes no tiene valor para el campo.
              strictness:
                type: string
                enum:
                  - NONE
                  - STRICT
                  - CONTAINS
                  - DEFAULT
                  - FUZZY
    TravelRuleDataUnmasked:
      type: object
      nullable: true
      description: >-
        Registro de auditoría del momento en que se desenmascararon los datos de
        la contraparte. Es null mientras los datos siguen enmascarados, y en las
        transferencias salientes.
      properties:
        at:
          type: string
          format: date-time
        reason:
          type: string
          enum:
            - ownership_confirmed
            - wallet_proof
            - address_book_match
            - own_verified_wallet
            - inquiry_approved
            - known_payment_method
            - travel_address
          description: >-
            Qué confirmó la propiedad: ownership_confirmed (tu confirmación a
            través de la consola o de la API), wallet_proof (una prueba de
            wallet en el widget o una transferencia entrante INTERNAL; se
            establece al crearla), address_book_match (una wallet verificada de
            la libreta de direcciones), own_verified_wallet (la propia wallet
            verificada de tu usuario), inquiry_approved (tu aprobación de una
            consulta TRP entrante o de un mensaje GTR o Sygna),
            known_payment_method (una wallet con la que tu usuario ya pagó) o
            travel_address (la travel address propia de cada wallet identificó
            la wallet).
        actor:
          type: string
          description: >-
            Quién lo confirmó: el correo electrónico del usuario de la consola o
            la etiqueta de la clave de API. Vacío en una decisión automática.
    TravelRuleDelivery:
      type: object
      description: >-
        Estado del último mensaje que la transferencia debe a la otra parte.
        Didit contacta con la contraparte después de que la solicitud que creó o
        modificó la transferencia haya respondido, así que este objeto indica si
        ese mensaje llegó: en cola, en envío, a la espera de reintentarse tras
        un error, entregado o fallido. Un fallo del que la red aún puede
        recuperarse (sin respuesta a tiempo, conexión fallida, HTTP `408`, `429`
        o `5xx`) se reintenta a los 30 segundos, 2 minutos, 10 minutos, 30
        minutos y 1 hora. Cuando un primer mensaje (`kind: SEND`) falla de forma
        definitiva, porque la red lo rechazó o porque también falló el sexto
        intento, la transferencia pasa a `COUNTERPARTY_VASP_NOT_REACHABLE` con
        `last_error` en su `timeline`; cualquier otro mensaje que falle de forma
        definitiva se registra en el `timeline`. El `status` de la transferencia
        sigue siendo la fuente de verdad del intercambio en sí.
      required:
        - kind
        - status
        - rail
        - attempts
        - last_error
        - next_attempt_at
        - delivered_at
      properties:
        kind:
          type: string
          enum:
            - SEND
            - ANSWER
            - TXID
            - CANCEL
            - POLL
          description: >-
            Qué transporta el mensaje. `SEND`: el primer mensaje de la
            transferencia a la contraparte (saliente; el canal se elige al
            enviarlo). `ANSWER`: tu aceptación o rechazo, que se debe a la red
            que lo solicitó (entrante). `TXID`: el hash de la transacción
            on-chain, después de que completes la transferencia. `CANCEL`: la
            cancelación, después de que la canceles. `POLL`: una consulta de
            estado a una red que la ofrece, repetida cada 5 minutos mientras la
            transferencia espera a la contraparte.
        status:
          type: string
          enum:
            - QUEUED
            - SENDING
            - RETRYING
            - DELIVERED
            - FAILED
          description: >-
            `QUEUED`: en espera de envío. `SENDING`: hay un intento en curso.
            `RETRYING`: un intento falló y el siguiente se ejecuta en
            `next_attempt_at`. `DELIVERED`: la otra parte aceptó el mensaje.
            `FAILED`: la otra parte lo rechazó, o falló el último intento.
        rail:
          type: string
          enum:
            - INTERNAL
            - TRP
            - GTR
            - TRUST
            - VERIFYVASP
            - SYGNA
            - EMAIL
            - ''
          description: >-
            La vía que transporta el mensaje. Vacía hasta que Didit elige una
            para un primer mensaje.
        attempts:
          type: integer
          minimum: 0
          description: >-
            Intentos realizados hasta ahora para este mensaje. Un mensaje que no
            es una consulta de estado se intenta como máximo 6 veces.
        last_error:
          type: string
          description: >-
            El tipo de fallo que tuvo el último intento, `""` si no hubo
            ninguno: por ejemplo `email undeliverable`, `trp identity endpoint
            unreachable` o `trp transfer inquiry delivery failed`. Nunca incluye
            la respuesta de la propia contraparte, que permanece en el
            `timeline` de la transferencia.

            Cuando GTR responde con un error, se incluyen su propio código de
            estado y su mensaje. Los cuerpos de respuesta nunca se incluyen.
          example: email undeliverable
        next_attempt_at:
          type: string
          format: date-time
          nullable: true
          description: >-
            Fecha y hora del próximo intento mientras el mensaje está en
            `QUEUED` o `RETRYING`.
        delivered_at:
          type: string
          format: date-time
          nullable: true
          description: Fecha y hora en que el otro extremo aceptó el mensaje.
    TravelRuleDiscoveryStep:
      type: object
      description: >-
        Un paso del descubrimiento de contraparte que Didit ejecutó para una
        transferencia saliente, en el orden en que los ejecutó. El primer paso
        que identifica un VASP con una ruta finaliza la cadena.
      properties:
        step:
          type: string
          enum:
            - internal_address_book
            - wallet_attribution
            - network_lookup
            - customer_hint
            - end_user
          description: >-
            `internal_address_book`: otro cliente de Didit que demostró tener el
            control de la wallet de destino. `wallet_attribution`: la atribución
            de la wallet según la analítica de blockchain. `network_lookup`: una
            red que puede indicar qué VASP custodia la dirección.
            `customer_hint`: el nombre, el LEI o la jurisdicción del VASP que
            enviaste en `beneficiary_data`. `end_user`: la contraparte que
            eligió el usuario final (o tú), o la solicitud para que se elija
            una.
        outcome:
          type: string
          enum:
            - match
            - miss
            - skipped
          description: >-
            `match`: el paso identificó una contraparte. `miss`: se ejecutó y no
            encontró ninguna. `skipped`: no se pudo ejecutar, y `reason` indica
            el motivo.
        reason:
          type: string
          description: >-
            Motivo legible por máquina, `""` cuando hay coincidencia:
            `no_proven_internal_wallet`, `attribution_disabled`,
            `already_attributed`, `no_attributed_entity`,
            `directory_match_no_route`, `gtr_address_lookup_runs_on_dispatch`,
            `no_membership`, `network_switched_off`,
            `no_network_address_lookup`, `no_directory_match`,
            `awaiting_end_user` o `picked_member_without_proven_wallet`.
        vasp:
          type: string
          format: uuid
          nullable: true
          description: El VASP del directorio que indicó el paso, cuando indicó uno.
        rail:
          type: string
          nullable: true
          description: La vía que llega a esa contraparte, cuando el paso encontró una.
        at:
          type: string
          format: date-time
    TravelRuleNextAction:
      type: object
      description: >-
        Algo que hace avanzar una transferencia en estado
        `COUNTERPARTY_VASP_NOT_FOUND` o `COUNTERPARTY_VASP_NOT_REACHABLE`.
        Consulta [Por qué una transferencia está
        bloqueada](/es/transaction-monitoring/travel-rule#por-qué-una-transferencia-está-bloqueada).
      properties:
        action:
          type: string
          enum:
            - select_counterparty_vasp
            - declare_self_hosted
            - add_vasp_hint
            - update_compliance_email
            - resend
          description: >-
            `select_counterparty_vasp`: el usuario final elige el VASP de
            destino en el widget de propiedad de la wallet, o haces un PATCH con
            `action=beneficiary_vasp`. `declare_self_hosted`: el usuario final
            declara en el widget que la wallet es sin custodia. `add_vasp_hint`:
            indica a Didit quién es la contraparte con un nombre de VASP, un LEI
            o una travel address (por ejemplo, una `travel_address` en la
            entrada de la libreta de direcciones de la wallet de destino) y
            vuelve a enviarla. `update_compliance_email` y `resend` son valores
            de `action` de `PATCH
            /v3/transactions/{transaction_id}/travel-rule/`: vuelve a indicar el
            correo electrónico de cumplimiento de la contraparte y vuelve a
            ejecutar el enrutamiento.
        url:
          type: string
          format: uri
          description: >-
            El enlace del widget de propiedad de la wallet, en
            `select_counterparty_vasp` y `declare_self_hosted` mientras la
            transferencia tiene una sesión de widget abierta.
      required:
        - action
    TravelRuleChainDetails:
      type: object
      description: >-
        Cómo identifica la cadena de la transferencia sus dos wallets, cuando no
        se trata simplemente de una dirección que paga a otra. Vacío (`{}`) en
        una transferencia de una cadena basada en cuentas (EVM, Solana, Tron),
        donde las dos direcciones son las wallets. La coincidencia, el
        enrutamiento y la libreta de direcciones leen las wallets primero de
        aquí.
      properties:
        chain:
          type: string
          description: >-
            Cadena canónica, p. ej., `BTC`, `XRP` o `LIGHTNING` para una
            transferencia Lightning.
        shape:
          type: string
          enum:
            - utxo
            - memo
            - lightning
        originator:
          $ref: '#/components/schemas/TravelRuleChainSide'
        beneficiary:
          $ref: '#/components/schemas/TravelRuleChainSide'
        utxo:
          type: object
          description: >-
            En una transferencia UTXO: las entradas y salidas tal como se
            almacenan (importes como cadenas decimales) y cómo interpretó Didit
            cada salida.
          properties:
            inputs:
              type: array
              items:
                $ref: '#/components/schemas/TravelRuleUtxoEntry'
            outputs:
              type: array
              items:
                $ref: '#/components/schemas/TravelRuleUtxoEntry'
            change_output_indexes:
              type: array
              items:
                type: integer
              description: Salidas que devuelven fondos a una dirección de entrada.
            beneficiary_output_index:
              type: integer
              nullable: true
              description: >-
                La salida que paga al beneficiario; null cuando no se pudo
                distinguir ninguna.
        lightning:
          type: object
          description: >-
            En una transferencia Lightning: lo que indica la solicitud de pago.
            Siempre `kind` (`bolt11`, `bolt12_offer`, `bolt12_invoice`,
            `bolt12_invoice_request`, `lnurl`, `lightning_address`, `node_id` o
            `unknown`); una factura BOLT11 añade `network`, `payee_node_id`,
            `payment_hash`, `amount_msat`, `created_at` y `expires_at`; una
            cadena BOLT12, `blinded_paths` y `payee_node_id`; una LNURL o una
            Lightning Address, su `domain`. No se resuelve nada a través de la
            red: la solicitud solo se decodifica.
          additionalProperties: true
        warnings:
          type: array
          items:
            type: string
            enum:
              - declared_originator_not_an_input
              - declared_beneficiary_not_an_output
              - beneficiary_output_ambiguous
              - beneficiary_output_amount_differs
          description: >-
            Incoherencias UTXO que conviene revisar: el ordenante declarado no
            es una entrada, el beneficiario declarado no es una salida, no se
            pudo distinguir una única salida del beneficiario o la salida del
            beneficiario paga un importe distinto del que indica la transacción.
        not_applicable_reason:
          type: string
          enum:
            - LIGHTNING_NO_PAYEE_IDENTIFIER
            - LIGHTNING_BOLT12_BLINDED_PAYEE
            - LIGHTNING_LNURL_NAMES_NO_PAYEE
          description: >-
            En una transferencia Lightning saliente cuya solicitud de pago no
            indica ningún beneficiario: por qué la transferencia es
            `NOT_APPLICABLE`. `LIGHTNING_NO_PAYEE_IDENTIFIER` (la solicitud no
            indica ningún nodo beneficiario o no se pudo decodificar),
            `LIGHTNING_BOLT12_BLINDED_PAYEE` (la oferta oculta su beneficiario
            tras rutas cegadas), `LIGHTNING_LNURL_NAMES_NO_PAYEE` (una LNURL
            indica un servicio, no un beneficiario). El mismo código abre la
            última entrada del `timeline` de la transferencia.
    TravelRuleChainSide:
      type: object
      description: >-
        La wallet de una de las partes tal como Didit la resolvió a partir de
        los datos de la cadena.
      properties:
        address:
          type: string
          description: >-
            La wallet. En una red con memo, la dirección clásica (una X-address
            de XRP se divide en su dirección clásica y su tag); en Lightning, el
            ID de nodo del beneficiario o la Lightning Address.
        memo:
          type: string
          description: >-
            La etiqueta de destino o memo que forma parte de la wallet; `""` si
            no hay ninguno.
        source:
          type: string
          enum:
            - declared
            - x_address
            - largest_input
            - only_non_change_output
            - amount_match
            - invoice_payee
            - updated
          description: >-
            Origen de la wallet: `declared` (tu solicitud), `x_address`
            (extraída de una X-address de XRP), `largest_input` (la dirección de
            entrada UTXO que más aportó), `only_non_change_output` (la única
            salida UTXO que no es cambio), `amount_match` (la única salida UTXO
            que paga el importe de la transferencia), `invoice_payee` (el
            beneficiario que indica una solicitud de pago Lightning), `updated`
            (establecida más tarde con `action: update_originator_wallet`).
    TravelRuleUtxoEntry:
      type: object
      description: >-
        Una entrada o salida de una transacción UTXO, tal como la registró la
        cadena.
      required:
        - address
      properties:
        address:
          type: string
          maxLength: 128
        amount:
          type: string
          nullable: true
          description: >-
            Cadena decimal en la unidad propia de la moneda (BTC, no satoshis).
            Opcional.
          example: '0.0125'
        txid:
          type: string
          maxLength: 128
          description: Opcional. La transacción que gasta una entrada.
        vout:
          type: integer
          nullable: true
          minimum: 0
          description: Opcional. El índice de la salida que gasta una entrada.
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: >-
        La clave de API de tu aplicación, que encontrarás en Developers -> API
        keys en la Business Console. La clave principal tiene acceso completo.
        Una clave con nombre puede tener un alcance limitado: ninguno, lectura o
        escritura por recurso, limitada a algunos flujos o a sesiones aprobadas,
        a una lista de direcciones IP y a una fecha de caducidad. 401 significa
        que la clave es incorrecta, se revocó o expiró; 403 significa que no se
        envió ninguna clave, que la clave no tiene acceso a este recurso o
        acción, o que la solicitud provino de una dirección fuera de su lista de
        IP; 404 en una ruta de sesión significa que la sesión está fuera de los
        flujos o estados de la clave. Una clave sin acceso a contenido
        multimedia recibe las URL de imágenes, videos y PDF como null, y una
        clave sin permiso de escritura en sesiones recibe los enlaces y tokens
        de sesión como null. Consulta https://docs.didit.me/console/api-keys.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.