> ## 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 elenco transazioni: monitoraggio KYT

> Recupera le transazioni in Didit: punteggi di rischio, gravità, controparti, tag e stato dello screening. KYT a consumo, senza contratti.



Prompt API per l'elenco delle transazioni
        Copia il prompt negli appunti



      
      

\<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>



      
      

Incolla in



## OpenAPI

````yaml it/openapi-25.json GET /v3/transactions/
openapi: 3.0.0
info:
  version: 3.0.0
  title: Didit Verification API
  description: API di verifica dell'identità. Autenticati con l'intestazione x-api-key.
servers:
  - url: https://verification.didit.me
security: []
tags: []
paths:
  /v3/transactions/:
    get:
      tags:
        - Transactions
      summary: Elenca le transazioni
      description: >-
        Elenco impaginato delle transazioni monitorate, dalla più recente
        (`txn_date` decrescente). `count` è limitato a 100; usa
        `total_transactions` per il conteggio effettivo delle righe. Questo
        endpoint non supporta parametri di filtro o di ricerca.
      operationId: listTransactions
      parameters:
        - name: limit
          in: query
          schema:
            type: integer
            default: 50
            minimum: 1
            maximum: 1000000
          description: >-
            Dimensione della pagina. Se omessa, il valore predefinito è 50. Non
            esiste un massimo imposto, ma mantieni le pagine piccole per ridurre
            la latenza.
        - name: offset
          in: query
          schema:
            type: integer
            maximum: 1000000
            minimum: 0
            default: 0
          description: >-
            Offset in base zero del primo record da restituire. È preferibile
            seguire l'URL `next` della pagina precedente.
        - name: travel_rule_status
          in: query
          required: false
          schema:
            type: string
          description: >-
            Restituisce solo le transazioni il cui trasferimento Travel Rule si
            trova esattamente in questo stato (ad esempio `ON_HOLD` o
            `AWAITING_COUNTERPARTY`). Il campo `count` segue questo filtro;
            `total_transactions` continua a conteggiare ogni transazione
            nell'applicazione.
        - name: assignee
          in: query
          required: false
          schema:
            type: string
          description: >-
            Valori separati da virgola; una transazione corrisponde quando
            soddisfa un qualsiasi valore. `unassigned` indica ciò che non è
            ancora assegnato a nessuno, `rules` indica ciò che le regole hanno
            deciso autonomamente senza un revisore e l'email di un membro
            corrisponde al revisore assegnato. `me` indica il revisore connesso
            alla Console, pertanto una chiave API che invia `me` riceve `400`.
      responses:
        '200':
          description: Elenco impaginato dei riepiloghi delle transazioni, dal più recente.
          content:
            application/json:
              schema:
                type: object
                properties:
                  count:
                    type: integer
                    description: >-
                      Conteggio limitato delle transazioni corrispondenti
                      (esatto fino a 100, poi limitato). Usa
                      `total_transactions` per il conteggio effettivo durante la
                      paginazione.
                  next:
                    type: string
                    nullable: true
                    description: >-
                      URL assoluto della pagina successiva, o `null` sull'ultima
                      pagina.
                  previous:
                    type: string
                    nullable: true
                    description: >-
                      URL assoluto della pagina precedente, o `null` sulla prima
                      pagina.
                  total_transactions:
                    type: integer
                    description: >-
                      Conteggio totale esatto delle transazioni (non eliminate)
                      per l'applicazione. Presente nelle risposte paginate.
                  results:
                    type: array
                    items:
                      type: object
                      properties:
                        uuid:
                          type: string
                          format: uuid
                          description: >-
                            Identificatore stabile della transazione Didit. Da
                            usare come `{transaction_id}` nelle chiamate di
                            dettaglio/note/correlate.
                        transaction_number:
                          type: integer
                          description: >-
                            Numero sequenziale della transazione con ambito
                            limitato all'applicazione mostrato nella Console
                            (es. `4123`).
                        txn_id:
                          type: string
                          description: >-
                            Identificativo fornito dal cliente dalla chiamata di
                            creazione (massimo 128 caratteri). Univoco per
                            applicazione.
                        transaction_type:
                          type: string
                          description: >-
                            Categoria di primo livello così come memorizzata:
                            `finance`, `kyc`, `travelRule`, `userPlatformEvent`,
                            `gamblingBet`, `gamblingLimitChange`,
                            `gamblingBonusChange`, `auditTrailEvent`. Nota che i
                            valori composti da più parole vengono restituiti in
                            camelCase anche se inviati in snake_case.
                        action_type:
                          type: string
                          description: >-
                            Sottotipo all'interno della categoria (ad es.
                            `deposit`, `withdrawal`, `transfer`).
                        status:
                          type: string
                          enum:
                            - APPROVED
                            - IN_REVIEW
                            - DECLINED
                            - AWAITING_USER
                          description: Verdetto di monitoraggio attuale.
                        direction:
                          type: string
                          enum:
                            - INBOUND
                            - OUTBOUND
                          description: >-
                            Direzione rispetto al soggetto. Memorizzato in
                            maiuscolo indipendentemente dal formato inviato.
                        amount:
                          type: string
                          description: >-
                            Importo della transazione come stringa decimale
                            senza zeri finali (es. `"1500"`, `"0.5"`,
                            `"0.123456789012345678"`). Fino a 18 cifre decimali.
                        currency:
                          type: string
                          description: >-
                            Codice valuta di `amount`. Viene accettato qualsiasi
                            codice alfabetico ISO 4217 (ad es. `EUR`, `USD`,
                            `NGN`), così come il simbolo di un asset crypto (ad
                            es. `BTC`). È preferibile utilizzare un codice
                            attualmente in circolazione. Non tutti i codici
                            accettati hanno un tasso di cambio: quando non ne è
                            disponibile alcuno per il codice (ad esempio l'unità
                            di conto ISO `XSU` o un simbolo crypto di cui Didit
                            non calcola il prezzo), la conversione automatica
                            non riesce e `preferred_currency_amount` viene
                            restituito null a meno che la richiesta non abbia
                            fornito un `amount_in_default_currency`
                            pre-convertito.
                        preferred_currency_amount:
                          type: string
                          nullable: true
                          description: >-
                            `amount` convertito nella valuta preferita
                            dell'applicazione, se disponibile.
                        preferred_currency_code:
                          type: string
                          nullable: true
                          description: >-
                            Codice valuta preferito utilizzato per
                            `preferred_currency_amount` - la valuta di base
                            dell'applicazione, qualsiasi codice ISO 4217
                            attualmente in circolazione. Un codice senza tasso
                            di cambio disponibile lascia
                            `preferred_currency_amount` null a meno che la
                            richiesta non abbia fornito un
                            `amount_in_default_currency` pre-convertito.
                        payment_details:
                          type: string
                          nullable: true
                          description: >-
                            Riferimento di pagamento o promemoria in formato
                            testo libero derivante dall'invio.
                        score:
                          type: integer
                          description: >-
                            Punteggio di rischio (in genere 0–100). Più alto =
                            più rischioso.
                        severity:
                          type: string
                          nullable: true
                          enum:
                            - UNKNOWN
                            - LOW
                            - MEDIUM
                            - HIGH
                            - CRITICAL
                          description: >-
                            Gravità categoriale del rischio impostata da
                            regole/provider (`UNKNOWN`, `LOW`, `MEDIUM`, `HIGH`,
                            `CRITICAL`). `null` finché non viene impostata.
                        subject_name:
                          type: string
                          nullable: true
                          description: Nome completo della parte `APPLICANT`.
                        subject_vendor_data:
                          type: string
                          nullable: true
                          description: >-
                            Il tuo identificatore interno utente/azienda per il
                            richiedente.
                        subject_country:
                          type: string
                          nullable: true
                          description: >-
                            Codice del paese del richiedente, ricavato dal
                            valore `address.country` inviato (in genere ISO
                            3166-1 alpha-3).
                        counterparty_name:
                          type: string
                          nullable: true
                          description: >-
                            Nome completo della parte `COUNTERPARTY`, se
                            presente.
                        counterparty_vendor_data:
                          type: string
                          nullable: true
                          description: Il tuo identificatore interno per la controparte.
                        counterparty_country:
                          type: string
                          nullable: true
                          description: >-
                            Codice del paese della controparte, ricavato dal
                            valore `address.country` inviato.
                        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: >-
                                  Indica se il tag è predefinito da Didit o
                                  personalizzato.
                          description: >-
                            Tag associati alla transazione (manualmente o
                            tramite regole).
                        txn_date:
                          type: string
                          format: date-time
                          description: >-
                            Quando è avvenuta la transazione (da
                            `transaction_at` al momento della creazione).
                        created_at:
                          type: string
                          format: date-time
                          description: Quando Didit ha registrato l'invio.
                        decision_reason_code:
                          type: string
                          nullable: true
                          description: >-
                            Motivo leggibile dalla macchina per il `status`
                            attuale (ad es. `WALLET_HIGH_RISK`).
                        decision_reason_label:
                          type: string
                          nullable: true
                          description: >-
                            Etichetta di facile lettura per
                            `decision_reason_code`.
                        assigned_to_name:
                          type: string
                          nullable: true
                          description: >-
                            Nome visualizzato del revisore della Console
                            assegnato a questa transazione.
                        travel_rule_status:
                          type: string
                          nullable: true
                          description: >-
                            Stato del trasferimento Travel Rule della
                            transazione (ad esempio `COMPLETED`), o `null` se
                            non ne ha nessuno.
                        travel_rule:
                          nullable: true
                          allOf:
                            - $ref: '#/components/schemas/TransactionTravelRule'
                          description: >-
                            Il trasferimento Travel Rule della transazione, lo
                            stesso blocco di `travel_rule` su `GET
                            /v3/transactions/{transaction_id}/`, oppure `null`
                            quando la transazione non ne ha alcuno.
              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: >-
            Chiave API mancante, non valida o revocata, oppure la chiave non può
            elencare le transazioni per questa applicazione. Una chiave mancante
            restituisce `403`; una chiave errata, revocata o scaduta restituisce
            `401`.
          content:
            application/json:
              examples:
                Forbidden:
                  value:
                    detail: You do not have permission to perform this action.
        '429':
          description: >-
            Limite di frequenza superato; rallenta e riprova dopo l'intervallo
            indicato in `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: >-
        Il trasferimento Travel Rule di una transazione, come restituito da `GET
        /v3/transactions/{transaction_id}/`, dal `201` di `POST
        /v3/transactions/` e da ciascuna riga di `GET /v3/transactions/`.
        `direction`, `rail`, `counterparty_vasp`, `delivery`, `discovery`,
        `reason` e `next_actions` hanno la stessa struttura di `PATCH
        /v3/transactions/{transaction_id}/travel-rule/`, quindi una singola
        lettura di una transazione indica perché il suo trasferimento è bloccato
        e cosa consente di farlo avanzare.
      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: >-
            Soggetto ordinante. Per un trasferimento in entrata, i valori della
            controparte sono oscurati fino alla conferma dell'assetto
            proprietario.
        beneficiary_data:
          type: object
          description: >-
            Parte beneficiaria. Per un trasferimento in entrata i valori della
            controparte sono mascherati fino a quando non viene confermato
            l'assetto proprietario.
        name_match:
          type: object
          nullable: true
          description: >-
            Il confronto dei nomi che ha determinato il trasferimento (punteggio
            e livello di rigore). Null fino all'esecuzione. I nomi confrontati
            vengono oscurati insieme alle parti.
        data_match:
          $ref: '#/components/schemas/TravelRuleDataMatch'
        mismatched_fields:
          type: array
          items:
            type: string
          description: >-
            Scorciatoia per `data_match.mismatched_fields`. Vuoto quando non ci
            sono differenze.
        data_unmasked:
          $ref: '#/components/schemas/TravelRuleDataUnmasked'
        data_masked:
          type: boolean
          description: >-
            True mentre i dati personali della controparte sono mascherati in
            questa risposta.
        metadata:
          type: object
        direction:
          type: string
          enum:
            - INBOUND
            - OUTBOUND
          description: Quale lato dello scambio rappresenta questo trasferimento.
        rail:
          type: string
          nullable: true
          description: >-
            Il canale (rail) utilizzato per il trasferimento: `INTERNAL`, `TRP`,
            `GTR`, `TRUST`, `VERIFYVASP`, `SYGNA` o `EMAIL` (`TEST_VASP` su
            un'applicazione sandbox, quando il Didit Test VASP ha risposto),
            oppure `null` finché non viene scelto un canale.
        counterparty_vasp:
          type: object
          nullable: true
          properties:
            name:
              type: string
            lei:
              type: string
            dd_score:
              type: integer
              description: >-
                Punteggio di due diligence da 0 a 100, dove un valore più alto è
                migliore. Stessa scala utilizzata nella directory dei VASP.
            dd_score_breakdown:
              type: object
              description: >-
                Contributi per componente a dd_score, un oggetto per componente
                come nella directory VASP (giurisdizione, verifica, protocollo,
                lei, cronologia, elementi essenziali, reattività), ciascuno con
                {points, max, reason, detail}. {} finché la controparte non è
                stata valutata.
              additionalProperties:
                type: object
                properties:
                  points:
                    type: number
                    description: Punti assegnati per questo componente.
                  max:
                    type: integer
                    description: Punti massimi che questo componente può assegnare.
                  reason:
                    type: string
                    description: Codice leggibile dalla macchina dell'esito del componente.
                  detail:
                    type: string
                    description: Motivo leggibile dall'utente per i punti assegnati.
            dd_assessed_at:
              type: string
              format: date-time
              nullable: true
              description: >-
                Data e ora dell'ultima esecuzione della valutazione di adeguata
                verifica. Null finché la controparte non è stata valutata.
          description: >-
            La voce di directory della controparte, oppure `null` se il
            trasferimento non ne collega alcuna.
        delivery:
          nullable: true
          allOf:
            - $ref: '#/components/schemas/TravelRuleDelivery'
          description: >-
            Il messaggio più recente che il trasferimento deve a un'altra parte.
            `null` quando non ne ha dovuti, ad esempio al di sotto di
            `threshold_amount` o per un wallet in autocustodia dichiarato.
        discovery:
          type: array
          description: >-
            Modalità con cui Didit ha cercato la controparte, una voce per ogni
            passaggio eseguito. Vuoto se non è stata eseguita alcuna ricerca, ad
            esempio per un trasferimento in entrata.
          items:
            $ref: '#/components/schemas/TravelRuleDiscoveryStep'
        reason:
          type: string
          description: >-
            Il motivo per cui un trasferimento `COUNTERPARTY_VASP_NOT_FOUND` o
            `COUNTERPARTY_VASP_NOT_REACHABLE` è bloccato; `""` per qualsiasi
            altro stato. Una consegna non riuscita lo determina per prima, solo
            su `COUNTERPARTY_VASP_NOT_REACHABLE`: `email_undeliverable` (il
            provider di posta ha rifiutato l'email di compliance e non è rimasto
            alcun indirizzo da provare: quando è stata inviata, in un promemoria
            o come bounce permanente segnalato successivamente) o
            `delivery_failed` (il canale che effettuava la consegna è fallito
            definitivamente: un canale di rete ha rifiutato il messaggio o ha
            esaurito i tentativi, un host di identità `TRP` non ha risposto o
            l'host `TRP` della controparte non ha accettato la richiesta).
            Altrimenti lo determina la traccia di `discovery`:
            `awaiting_end_user` (nessun passaggio ha indicato una controparte
            raggiungibile da Didit), `directory_match_no_route` (un passaggio ha
            indicato un VASP della directory privo di rotta),
            `picked_member_without_proven_wallet` (l'utente finale ha scelto un
            cliente Didit che non ha dimostrato il controllo del wallet) o
            `no_directory_match` quando la traccia non fornisce altri motivi. Un
            nuovo invio fa avanzare il trasferimento, quindi il motivo viene
            azzerato. Consulta [Perché un trasferimento è
            bloccato](/it/transaction-monitoring/travel-rule#perché-un-trasferimento-è-bloccato).
        next_actions:
          type: array
          description: >-
            Cosa fa procedere il trasferimento; `[]` per qualsiasi stato tranne
            `COUNTERPARTY_VASP_NOT_FOUND` o `COUNTERPARTY_VASP_NOT_REACHABLE`.
            `email_undeliverable` propone `update_compliance_email`, poi
            `resend`. `delivery_failed` propone `resend`. Un motivo di discovery
            propone `select_counterparty_vasp`, `declare_self_hosted`,
            `add_vasp_hint` e `resend`.
          items:
            $ref: '#/components/schemas/TravelRuleNextAction'
        chain_details:
          $ref: '#/components/schemas/TravelRuleChainDetails'
    TravelRuleDataMatch:
      type: object
      nullable: true
      description: >-
        Confronto campo per campo tra i dati della parte del trasferimento e ciò
        che l'altra parte sa sul titolare del wallet. Riporta i nomi dei campi e
        i risultati, mai i valori, in modo che rimanga leggibile mentre i dati
        della controparte sono oscurati. Null finché non viene eseguito un
        confronto.
      properties:
        matched:
          type: boolean
          description: True quando nessun campo confrontato differisce.
        mismatched_fields:
          type: array
          items:
            type: string
            enum:
              - name
              - date_of_birth
              - address
              - account
          description: I campi che differiscono.
        fields:
          type: object
          description: >-
            Una voce per ciascun campo confrontato per il tipo di entità della
            parte (`name`, `date_of_birth`, `address`, `account`; un'azienda non
            ha `date_of_birth`).
          additionalProperties:
            type: object
            properties:
              result:
                type: string
                enum:
                  - matched
                  - mismatched
                  - not_compared
                description: >-
                  `not_compared` quando la regola è `NONE` o una delle due parti
                  non ha un valore per il campo.
              strictness:
                type: string
                enum:
                  - NONE
                  - STRICT
                  - CONTAINS
                  - DEFAULT
                  - FUZZY
    TravelRuleDataUnmasked:
      type: object
      nullable: true
      description: >-
        Registro di audit del momento in cui i dati della controparte sono stati
        smascherati. Null finché i dati sono ancora mascherati e per i
        trasferimenti in uscita.
      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: >-
            Cosa ha confermato l'assetto proprietario: ownership_confirmed (la
            tua conferma tramite la console o l'API), wallet_proof (una prova
            del wallet nel widget o un trasferimento in entrata INTERNAL,
            impostato al momento della creazione), address_book_match (un wallet
            verificato nella rubrica), own_verified_wallet (il wallet verificato
            del tuo utente), inquiry_approved (la tua approvazione di una
            richiesta TRP in entrata o di un messaggio GTR o Sygna),
            known_payment_method (un wallet con cui il tuo utente ha già pagato)
            o travel_address (il Travel Address associato al wallet ha
            denominato il wallet).
        actor:
          type: string
          description: >-
            Chi l'ha confermata: l'email dell'utente della console o l'etichetta
            della chiave API. Vuoto per una decisione automatica.
    TravelRuleDelivery:
      type: object
      description: >-
        Lo stato dell'ultimo messaggio dovuto dal trasferimento alla
        controparte. Didit contatta la controparte dopo la restituzione della
        richiesta che ha creato o modificato il trasferimento, quindi questo
        oggetto indica se tale messaggio è andato a buon fine: in coda, in fase
        di invio, in attesa di un nuovo tentativo dopo un errore, consegnato o
        non riuscito. In caso di errore da cui la rete può ancora riprendersi
        (nessuna risposta in tempo, connessione non riuscita, HTTP `408`, `429`
        o `5xx`), viene effettuato un nuovo tentativo dopo 30 secondi, 2 minuti,
        10 minuti, 30 minuti e 1 ora. Quando un primo messaggio (`kind: SEND`)
        fallisce definitivamente, perché la rete lo ha rifiutato o anche il
        sesto tentativo non è riuscito, il trasferimento passa a
        `COUNTERPARTY_VASP_NOT_REACHABLE` con `last_error` nella sua `timeline`;
        qualsiasi altro messaggio che fallisce definitivamente viene annotato
        nella `timeline`. Lo `status` del trasferimento rimane l'unica fonte di
        verità per lo scambio stesso.
      required:
        - kind
        - status
        - rail
        - attempts
        - last_error
        - next_attempt_at
        - delivered_at
      properties:
        kind:
          type: string
          enum:
            - SEND
            - ANSWER
            - TXID
            - CANCEL
            - POLL
          description: >-
            Cosa trasporta il messaggio. `SEND`: il primo messaggio del
            trasferimento verso la controparte (in uscita; il canale viene
            scelto al momento dell'invio). `ANSWER`: la tua accettazione o
            rifiuto, dovuta alla rete che ha effettuato la richiesta (in
            entrata). `TXID`: l'hash della transazione on-chain, dopo aver
            completato il trasferimento. `CANCEL`: l'annullamento, dopo averlo
            cancellato. `POLL`: una richiesta di stato verso una rete che la
            supporta, ripetuta ogni 5 minuti mentre il trasferimento è in attesa
            della controparte.
        status:
          type: string
          enum:
            - QUEUED
            - SENDING
            - RETRYING
            - DELIVERED
            - FAILED
          description: >-
            `QUEUED`: in attesa di invio. `SENDING`: tentativo in corso.
            `RETRYING`: un tentativo non è riuscito e il prossimo verrà eseguito
            alle `next_attempt_at`. `DELIVERED`: l'altra parte ha ricevuto il
            messaggio. `FAILED`: l'altra parte lo ha rifiutato o l'ultimo
            tentativo non è riuscito.
        rail:
          type: string
          enum:
            - INTERNAL
            - TRP
            - GTR
            - TRUST
            - VERIFYVASP
            - SYGNA
            - EMAIL
            - ''
          description: >-
            Il canale (rail) che trasporta il messaggio. Vuoto finché Didit non
            ne sceglie uno per un primo messaggio.
        attempts:
          type: integer
          minimum: 0
          description: >-
            Tentativi effettuati finora per questo messaggio. Per un messaggio
            che non è un polling di stato vengono effettuati al massimo 6
            tentativi.
        last_error:
          type: string
          description: >-
            Il tipo di errore riscontrato nell'ultimo tentativo, `""` se non ce
            ne sono stati: ad esempio `email undeliverable`, `trp identity
            endpoint unreachable` o `trp transfer inquiry delivery failed`. Non
            contiene mai la risposta della controparte stessa, che rimane nella
            `timeline` del trasferimento.

            Quando GTR risponde con un errore, vengono inclusi il codice di
            stato e il messaggio restituiti. I corpi della risposta non vengono
            mai inclusi.
          example: email undeliverable
        next_attempt_at:
          type: string
          format: date-time
          nullable: true
          description: >-
            Quando verrà eseguito il prossimo tentativo mentre il messaggio è in
            stato `QUEUED` o `RETRYING`.
        delivered_at:
          type: string
          format: date-time
          nullable: true
          description: Quando l'altra parte ha preso in carico il messaggio.
    TravelRuleDiscoveryStep:
      type: object
      description: >-
        Un passaggio del rilevamento della controparte eseguito da Didit per un
        trasferimento in uscita, nell'ordine in cui è stato eseguito. Il primo
        passaggio che identifica un VASP con un percorso conclude la catena.
      properties:
        step:
          type: string
          enum:
            - internal_address_book
            - wallet_attribution
            - network_lookup
            - customer_hint
            - end_user
          description: >-
            `internal_address_book`: un altro cliente Didit che ha dimostrato il
            controllo del wallet di destinazione. `wallet_attribution`:
            l'attribuzione di analisi blockchain del wallet. `network_lookup`:
            una rete in grado di indicare quale VASP detiene l'indirizzo.
            `customer_hint`: il nome del VASP, LEI o la giurisdizione che hai
            inviato in `beneficiary_data`. `end_user`: la controparte scelta
            dall'utente finale (o da te), oppure la richiesta di sceglierne una.
        outcome:
          type: string
          enum:
            - match
            - miss
            - skipped
          description: >-
            `match`: il passaggio ha indicato una controparte. `miss`: è stato
            eseguito e non ne ha trovata nessuna. `skipped`: non è stato
            possibile eseguirlo e `reason` ne indica il motivo.
        reason:
          type: string
          description: >-
            Motivo leggibile dalla macchina, `""` in caso di corrispondenza:
            `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: >-
            Il VASP della directory indicato dal passaggio, qualora ne abbia
            indicato uno.
        rail:
          type: string
          nullable: true
          description: >-
            Il canale (rail) che raggiunge tale controparte, quando il passaggio
            ne ha trovato uno.
        at:
          type: string
          format: date-time
    TravelRuleNextAction:
      type: object
      description: >-
        Un elemento che consente di far progredire un trasferimento bloccato
        nello stato `COUNTERPARTY_VASP_NOT_FOUND` o
        `COUNTERPARTY_VASP_NOT_REACHABLE`. Consulta [Perché un trasferimento è
        bloccato](/it/transaction-monitoring/travel-rule#perché-un-trasferimento-è-bloccato).
      properties:
        action:
          type: string
          enum:
            - select_counterparty_vasp
            - declare_self_hosted
            - add_vasp_hint
            - update_compliance_email
            - resend
          description: >-
            `select_counterparty_vasp`: l'utente finale seleziona il VASP di
            destinazione nel widget di titolarità del wallet, oppure invii una
            richiesta PATCH con `action=beneficiary_vasp`.
            `declare_self_hosted`: l'utente finale dichiara che il wallet è in
            autocustodia nel widget. `add_vasp_hint`: indica a Didit chi è la
            controparte specificando nome del VASP, LEI o Travel Address (ad
            esempio un `travel_address` nella voce della rubrica del wallet di
            destinazione), quindi invia nuovamente. `update_compliance_email` e
            `resend` sono valori di `action` per `PATCH
            /v3/transactions/{transaction_id}/travel-rule/`: fornisci nuovamente
            l'email di compliance della controparte ed esegui nuovamente
            l'instradamento.
        url:
          type: string
          format: uri
          description: >-
            Il link al widget di verifica della proprietà del wallet, su
            `select_counterparty_vasp` e `declare_self_hosted` mentre il
            trasferimento ha una sessione widget aperta.
      required:
        - action
    TravelRuleChainDetails:
      type: object
      description: >-
        In che modo la blockchain del trasferimento identifica i suoi due
        wallet, quando si tratta di più di un indirizzo che ne paga un altro.
        Vuoto (`{}`) per un trasferimento su blockchain basata su account (EVM,
        Solana, Tron), dove i due indirizzi corrispondono ai wallet. La
        corrispondenza, l'instradamento e la rubrica leggono innanzitutto i
        wallet da qui.
      properties:
        chain:
          type: string
          description: >-
            Rete blockchain canonica, ad es. `BTC`, `XRP` o `LIGHTNING` per un
            trasferimento Lightning.
        shape:
          type: string
          enum:
            - utxo
            - memo
            - lightning
        originator:
          $ref: '#/components/schemas/TravelRuleChainSide'
        beneficiary:
          $ref: '#/components/schemas/TravelRuleChainSide'
        utxo:
          type: object
          description: >-
            Su un trasferimento UTXO: gli input e gli output come memorizzati
            (importi come stringhe decimali) e quali output Didit ha
            interpretato come cosa.
          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: Output che rimborsano un indirizzo di input.
            beneficiary_output_index:
              type: integer
              nullable: true
              description: >-
                L'output che paga il beneficiario; null quando non è stato
                possibile distinguerne alcuno.
        lightning:
          type: object
          description: >-
            Su un trasferimento Lightning: ciò che indica la richiesta di
            pagamento. Sempre `kind` (`bolt11`, `bolt12_offer`,
            `bolt12_invoice`, `bolt12_invoice_request`, `lnurl`,
            `lightning_address`, `node_id` o `unknown`); una fattura BOLT11
            aggiunge `network`, `payee_node_id`, `payment_hash`, `amount_msat`,
            `created_at` e `expires_at`; una stringa BOLT12 `blinded_paths` e
            `payee_node_id`; un LNURL o un Lightning Address il suo `domain`.
            Nulla viene risolto sulla rete: la richiesta viene solo
            decodificata.
          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: >-
            Incongruenze UTXO da esaminare: l'ordinante dichiarato non è un
            input, il beneficiario dichiarato non è un output, non è stato
            possibile distinguere un singolo output del beneficiario, oppure
            l'output del beneficiario corrisponde a un importo diverso rispetto
            a quello indicato nella transazione.
        not_applicable_reason:
          type: string
          enum:
            - LIGHTNING_NO_PAYEE_IDENTIFIER
            - LIGHTNING_BOLT12_BLINDED_PAYEE
            - LIGHTNING_LNURL_NAMES_NO_PAYEE
          description: >-
            Su un trasferimento Lightning in uscita la cui richiesta di
            pagamento non indica alcun beneficiario: perché il trasferimento è
            `NOT_APPLICABLE`. `LIGHTNING_NO_PAYEE_IDENTIFIER` (la richiesta non
            indica alcun nodo beneficiario o non è stato possibile
            decodificarla), `LIGHTNING_BOLT12_BLINDED_PAYEE` (l'offerta nasconde
            il proprio beneficiario dietro percorsi ciechi),
            `LIGHTNING_LNURL_NAMES_NO_PAYEE` (un LNURL indica un servizio, non
            un beneficiario). Lo stesso codice apre l'ultima voce `timeline` del
            trasferimento.
    TravelRuleChainSide:
      type: object
      description: >-
        Il wallet di una delle parti, così come Didit lo ha risolto a partire
        dai dati della blockchain.
      properties:
        address:
          type: string
          description: >-
            Il wallet. Su una rete con memo l'indirizzo classico (un X-address
            XRP viene suddiviso nel relativo indirizzo classico e tag); su
            Lightning l'ID del nodo del beneficiario o il Lightning Address.
        memo:
          type: string
          description: Il destination tag o memo che fa parte del wallet; `""` se assente.
        source:
          type: string
          enum:
            - declared
            - x_address
            - largest_input
            - only_non_change_output
            - amount_match
            - invoice_payee
            - updated
          description: >-
            Origine del wallet: `declared` (la tua richiesta), `x_address`
            (estratto da un X-address XRP), `largest_input` (l'indirizzo di
            input UTXO che ha contribuito maggiormente),
            `only_non_change_output` (l'unico output UTXO non di resto),
            `amount_match` (l'unico output UTXO che paga l'importo del
            trasferimento), `invoice_payee` (il beneficiario indicato in una
            richiesta di pagamento Lightning), `updated` (impostato
            successivamente con `action: update_originator_wallet`).
    TravelRuleUtxoEntry:
      type: object
      description: >-
        Un input o output di una transazione UTXO, così come registrato dalla
        blockchain.
      required:
        - address
      properties:
        address:
          type: string
          maxLength: 128
        amount:
          type: string
          nullable: true
          description: >-
            Stringa decimale nell'unità propria della moneta (BTC, non satoshi).
            Facoltativo.
          example: '0.0125'
        txid:
          type: string
          maxLength: 128
          description: Opzionale. La transazione utilizzata da un input.
        vout:
          type: integer
          nullable: true
          minimum: 0
          description: Opzionale. L'indice di output speso da un input.
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: >-
        La chiave API della tua applicazione, da Developers -> API keys nella
        Business Console. La chiave primaria ha accesso completo. Una chiave con
        nome può avere un ambito definito: nessuno, lettura o scrittura per
        risorsa, limitata ad alcuni workflow o a sessioni approvate, a un elenco
        di indirizzi IP e a una data di scadenza. 401 indica che la chiave è
        errata, revocata o scaduta; 403 indica che non è stata inviata alcuna
        chiave, che la chiave non ha accesso a questa risorsa o azione, oppure
        che la richiesta proviene da un indirizzo non incluso nel suo elenco IP;
        404 su una route di sessione indica che la sessione non rientra nei
        workflow o negli stati previsti dalla chiave. Una chiave senza accesso
        ai media riceve gli URL di immagini, video e PDF come null, e una chiave
        senza permessi di scrittura sulle sessioni riceve link e token di
        sessione come null. Consulta https://docs.didit.me/console/api-keys.

````

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