> ## 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.

# Transaktion abrufen API: KYT-Detailansicht

> Didit-KYT-Transaktion abrufen: Parteien, Zahlungsmethoden, Alerts, Regeltreffer, Travel-Rule-Prüfungen, Behebungslinks, Netzwerk-Snapshots.



Prompt für die Get-Transaction-API
        Prompt in die Zwischenablage kopieren



      
      

\<pre>

\`Fetch the full detail of a Didit monitored transaction through the Management API.

Endpoint:
GET https://verification.didit.me/v3/transactions/{transaction_id}/

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

Goal:
\- Retrieve every detail of a transaction — linked parties, payment methods, alerts, rule matches, travel-rule checks, remediation links, network snapshots, cost breakdown — so I can render a detail screen or feed a downstream decision.

Path parameter:
\- transaction_id - Didit's transaction uuid (the uuid returned by POST /v3/transactions/).
Your own txn_id is not accepted here and returns 404.

Example call:
curl -X GET "https://verification.didit.me/v3/transactions/{transaction_id}/" \
-H "x-api-key: YOUR_API_KEY"

What to read from the response:
\- uuid, transaction_number, txn_id — identifiers.
\- status, score, severity, decision_reason_code, decision_reason_label — current verdict.
\- direction, amount, currency, currency_type, action_type, payment_details, payment_txn_id - the submitted details as top-level fields (there is no transaction_details object, and currency_type carries the currency_kind you sent).
\- parties - party records with role APPLICANT (the subject) or COUNTERPARTY (the other side) and kind USER, BUSINESS or EXTERNAL, each with entity_type, vendor_data, full_name, address and device.
\- payment_methods - the linked payment methods, each with payment_method_type, account_id and role (for example SOURCE or DESTINATION).
\- cost_breakdown — provider-by-provider cost detail for this transaction.
\- rule_runs / alerts — which rules fired and their outcomes.
\- provider_results - crypto screening (blockchain analytics) results, when a screening ran.
\- travel_rule - the Travel Rule transfer (uuid, status, protocol, required, obligations_count, originator_data, beneficiary_data, metadata, direction, rail, counterparty_vasp, delivery, discovery, reason, next_actions), or null when the transaction has none.
For a COUNTERPARTY_VASP_NOT_FOUND or COUNTERPARTY_VASP_NOT_REACHABLE transfer, reason says why it is stuck and next_actions what moves it on: email_undeliverable offers update_compliance_email then resend, delivery_failed offers resend, and a discovery reason (awaiting_end_user, directory_match_no_route, picked_member_without_proven_wallet, no_directory_match) offers select_counterparty_vasp, declare_self_hosted, add_vasp_hint and resend.
delivery is the newest message the transfer owes the other side (kind, status, rail, attempts, last_error, next_attempt_at, delivered_at), or null; discovery is the trace of where Didit looked for the counterparty.
On an inbound transfer, the counterparty's originator_data and beneficiary_data stay masked (data_masked: true) until wallet ownership is confirmed.
\- tags — Console tags (uuid, name, color).
\- assigned_to_name (the Console reviewer) is not part of this response; the list endpoint GET /v3/transactions/ returns it.

Use cases:
\- Render the Console-equivalent "Transaction detail" screen in your back-office.
\- Reconcile rule outcomes against your own ledger.
\- Poll after a transaction.status.updated webhook to fetch the fresh verdict.

Failure modes:
\- 403 - missing x-api-key (a wrong, revoked or expired key gets 401), or a key without permission for this action ({ "detail": "..." } envelope).
\- 404 - transaction not found in this application, including a transaction that belongs to another application (or deleted via the Console).
\- 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>



      
      

Einfügen in



## OpenAPI

````yaml de/openapi-25.json GET /v3/transactions/{transaction_id}/
openapi: 3.0.0
info:
  version: 3.0.0
  title: Didit Verification API
  description: API für Ausweisverifizierung. Authentifizierung über den x-api-key-Header.
servers:
  - url: https://verification.didit.me
security: []
tags: []
paths:
  /v3/transactions/{transaction_id}/:
    get:
      tags:
        - Transactions
      summary: Transaktion abrufen
      description: >-
        Den vollständigen Überwachungsdatensatz für eine Transaktion abrufen:
        Parteien, Score/Schweregrad, Regelausführungen, Alerts,
        Travel-Rule-Ergebnis, Behebungssitzung.
      operationId: getTransaction
      parameters:
        - name: transaction_id
          in: path
          required: true
          description: >-
            Stabile Transaktions-UUID von Didit (die von create / list
            zurückgegebene `uuid`, **nicht** Ihre `txn_id`).
          schema:
            type: string
            format: uuid
          example: abcdef12-3456-7890-abcd-ef1234567890
      responses:
        '200':
          description: Vollständige Transaktionsdetails.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransactionDetail'
              examples:
                In review with an alert:
                  value:
                    uuid: abcdef12-3456-4890-abcd-ef1234567890
                    environment: live
                    transaction_number: 4123
                    txn_id: your-txn-2026-05-17-001
                    txn_date: '2026-05-17T08:42:00Z'
                    zone_id: Europe/Madrid
                    transaction_type: finance
                    action_type: withdrawal
                    direction: OUTBOUND
                    status: IN_REVIEW
                    source: LIVE
                    amount: '1500'
                    currency: EUR
                    currency_type: fiat
                    amount_in_default_currency: '1620.45'
                    default_currency_code: USD
                    preferred_currency_amount: '1620.45'
                    preferred_currency_code: USD
                    payment_details: Withdrawal to crypto wallet
                    payment_txn_id: null
                    score: 78
                    severity: HIGH
                    decision_reason_code: WALLET_HIGH_RISK
                    decision_reason_label: Destination wallet flagged as high risk
                    vendor_data: user-12345
                    metadata:
                      subject:
                        entity_type: individual
                        vendor_data: user-12345
                        full_name: Maria Garcia
                        address: {}
                        institution_details: {}
                        device_context: {}
                      counterparty: {}
                    props:
                      order_id: ord-9988
                    tags: []
                    parties:
                      - uuid: b1111111-2222-4333-8444-555555555555
                        role: APPLICANT
                        entity_type: individual
                        kind: USER
                        vendor_data: user-12345
                        full_name: Maria Garcia
                        first_name: null
                        last_name: null
                        country_code: null
                        dob: null
                        address: {}
                        institution_info: {}
                        device: {}
                        external_party_snapshot: null
                    payment_methods: []
                    documents: []
                    activities: []
                    alerts:
                      - uuid: a7b8c9d0-1234-4abc-9def-567890abcdef
                        title: Destination wallet flagged as high risk
                        description: Provider risk score exceeded the configured threshold.
                        severity: HIGH
                        status: OPEN
                        source: RULE
                        metadata: {}
                        created_at: '2026-05-17T08:42:12Z'
                        due_at: null
                    rule_runs: []
                    provider_results: []
                    travel_rule: null
                    network_snapshot: null
                    remediation: null
                    action_required: null
                    cost_breakdown: null
        '403':
          description: >-
            Fehlender, ungültiger oder widerrufener API-Schlüssel, oder der
            Schlüssel kann die Transaktionen dieser Anwendung nicht lesen. Ein
            fehlender Schlüssel gibt `403` zurück; ein falscher, widerrufener
            oder abgelaufener Schlüssel gibt `401` zurück.
          content:
            application/json:
              examples:
                Forbidden:
                  value:
                    detail: You do not have permission to perform this action.
        '404':
          description: >-
            Für die Anwendung existiert keine Transaktion mit dieser UUID
            (gelöscht, nie erstellt, gehört zu einer anderen Anwendung oder das
            Pfadsegment ist keine gültige UUID).
          content:
            application/json:
              examples:
                Not found:
                  value:
                    detail: Not found.
        '429':
          description: >-
            Rate-Limit überschritten; drosseln Sie die Anfragen und wiederholen
            Sie den Versuch nach dem in `Retry-After` angegebenen Intervall.
          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/abcdef12-3456-7890-abcd-ef1234567890/'
            \
              -H 'x-api-key: YOUR_API_KEY'
        - lang: python
          label: Python
          source: |-
            from didit import Didit

            # Reads DIDIT_API_KEY.
            client = Didit()

            result = client.transactions.retrieve(
                "abcdef12-3456-7890-abcd-ef1234567890",
            )
            print(result)
        - lang: javascript
          label: Node.js
          source: >-
            import Didit from "@didit-protocol/sdk-node";


            // Reads DIDIT_API_KEY.

            const didit = new Didit();


            const result = await
            didit.transactions.retrieve("abcdef12-3456-7890-abcd-ef1234567890");

            console.log(result);
        - lang: go
          label: Go
          source: "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Transactions.Retrieve(ctx, \"abcdef12-3456-7890-abcd-ef1234567890\")\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
        - lang: java
          label: Java
          source: >-
            import me.didit.Didit;


            // Reads DIDIT_API_KEY.

            Didit client = new Didit();


            var result =
            client.transactions().retrieve("abcdef12-3456-7890-abcd-ef1234567890");

            System.out.println(result);
        - lang: php
          label: PHP
          source: >-
            <?php


            require 'vendor/autoload.php';


            use Didit\DiditClient;


            // Reads DIDIT_API_KEY.

            $didit = new DiditClient();


            $result =
            $didit->transactions->retrieve('abcdef12-3456-7890-abcd-ef1234567890');

            print_r($result->toArray());
        - lang: ruby
          label: Ruby
          source: >-
            require "didit"


            # Reads DIDIT_API_KEY.

            didit = Didit::Client.new


            result =
            didit.transactions.retrieve("abcdef12-3456-7890-abcd-ef1234567890")

            puts result.to_h
        - lang: csharp
          label: .NET
          source: >-
            using System;

            using System.Text.Json;

            using Didit;


            // Reads DIDIT_API_KEY.

            using var client = new DiditClient();


            var result = await
            client.Transactions.RetrieveAsync("abcdef12-3456-7890-abcd-ef1234567890");

            Console.WriteLine(JsonSerializer.Serialize(result));
components:
  schemas:
    TransactionDetail:
      type: object
      description: >-
        Vollständiger Überwachungsdatensatz für eine Transaktion, wie von `GET
        /v3/transactions/{transaction_id}/` und `POST /v3/transactions/`
        zurückgegeben.
      properties:
        uuid:
          type: string
          format: uuid
          description: >-
            Stabiler Transaktionsbezeichner von Didit. Als `{transaction_id}`
            für Folgeaufrufe verwenden.
        environment:
          type: string
          enum:
            - live
            - sandbox
          description: >-
            Umgebung der Anwendung, zu der die Transaktion gehört. Eine
            `sandbox`-Transaktion wird gespeichert, aber niemals ausgewertet,
            gescreent, benachrichtigt oder abgerechnet, sodass ihre leeren
            `rule_runs` „nicht ausgewertet“ bedeuten.
        transaction_number:
          type: integer
          description: >-
            Fortlaufende Transaktionsnummer innerhalb der Anwendung, wie in der
            Console angezeigt (z. B. `4123`).
        txn_id:
          type: string
          description: >-
            Die `transaction_id`, die Sie bei der Erstellung angegeben haben
            (max. 128 Zeichen). Eindeutig pro Anwendung.
        txn_date:
          type: string
          format: date-time
          description: >-
            Wann die Transaktion stattgefunden hat (aus `transaction_at`;
            standardmäßig der Übermittlungszeitpunkt).
        zone_id:
          type: string
          nullable: true
          description: Beim Erstellen angegebene IANA-Zeitzonenkennung.
        transaction_type:
          type: string
          description: >-
            Kategorie auf oberster Ebene wie gespeichert: `finance`, `kyc`,
            `travelRule`, `userPlatformEvent`, `gamblingBet`,
            `gamblingLimitChange`, `gamblingBonusChange`, `auditTrailEvent`.
            Beachten Sie, dass mehrteilige Werte in camelCase zurückgegeben
            werden, selbst wenn sie in snake_case übermittelt wurden.
        action_type:
          type: string
          description: >-
            Untertyp innerhalb der Kategorie (z. B. `deposit`, `withdrawal`,
            `transfer`). Standardmäßig die Kategorie, falls nicht angegeben.
        direction:
          type: string
          enum:
            - INBOUND
            - OUTBOUND
          description: >-
            Richtung relativ zur betreffenden Entität. Wird unabhängig von der
            übermittelten Schreibweise in Großbuchstaben gespeichert (bei der
            Eingabe werden `in`/`out`/`inbound`/`outbound` akzeptiert).
        status:
          type: string
          enum:
            - APPROVED
            - IN_REVIEW
            - DECLINED
            - AWAITING_USER
          description: >-
            Aktuelles Überwachungsergebnis. Transaktionen werden als `APPROVED`
            erstellt; Regeln können sie synchron auf `IN_REVIEW`/`DECLINED`
            umstellen.
        source:
          type: string
          enum:
            - LIVE
            - IMPORTED
          description: >-
            Wie der Datensatz entstanden ist: `LIVE` für Transaktionen, die über
            die API oder das SDK übermittelt wurden, `IMPORTED` für
            Transaktionen, die über den Import in der Konsole geladen wurden.
        amount:
          type: string
          description: >-
            Transaktionsbetrag als Dezimalstring ohne nachgestellte Nullen (z.
            B. `"1500"`, `"0.5"`, `"0.123456789012345678"`). Bis zu 18
            Dezimalstellen.
        currency:
          type: string
          description: >-
            Währungscode von `amount`. Jeder alphabetische ISO-4217-Code wird
            akzeptiert (z. B. `EUR`, `USD`, `NGN`), ebenso wie ein
            Krypto-Asset-Symbol (z. B. `BTC`). Bevorzugen Sie einen aktuell im
            Umlauf befindlichen Code. Nicht jeder akzeptierte Code verfügt über
            einen Wechselkurs: Wenn für den Code keiner verfügbar ist
            (beispielsweise die ISO-Verrechnungseinheit `XSU` oder ein
            Krypto-Symbol, für das Didit keine Kurse bereitstellt), schlägt die
            automatische Konvertierung fehl und `preferred_currency_amount` wird
            als null zurückgegeben, es sei denn, die Anfrage enthielt einen
            vorkonvertierten Wert für `amount_in_default_currency`.
        currency_type:
          type: string
          nullable: true
          description: '`fiat` oder `crypto`, wie in `currency_kind` übermittelt.'
        amount_in_default_currency:
          type: string
          nullable: true
          description: >-
            Von Ihnen übermittelter, vorab umgerechneter Betrag als
            Dezimal-String ohne nachgestellte Nullen.
        default_currency_code:
          type: string
          nullable: true
        preferred_currency_amount:
          type: string
          nullable: true
          description: >-
            `amount` umgerechnet in die bevorzugte Währung der Anwendung, sofern
            verfügbar.
        preferred_currency_code:
          type: string
          nullable: true
        payment_details:
          type: string
          nullable: true
          description: >-
            Freitext-Zahlungsreferenz oder -Verwendungszweck aus der
            Übermittlung.
        payment_txn_id:
          type: string
          nullable: true
          description: >-
            Externe Zahlungssystem-Referenz (z. B. Blockchain-Transaktions-Hash)
            aus `payment_reference_id`.
        score:
          type: integer
          description: >-
            Durch Regeln kumulierter Risiko-Score (typischerweise 0–100). Höher
            = riskanter.
        severity:
          type: string
          nullable: true
          enum:
            - UNKNOWN
            - LOW
            - MEDIUM
            - HIGH
            - CRITICAL
          description: >-
            Kategorische Risikoschwere, festgelegt durch Regeln/Anbieter
            (`UNKNOWN`, `LOW`, `MEDIUM`, `HIGH`, `CRITICAL`). `null`, bis ein
            Wert festgelegt wird.
        decision_reason_code:
          type: string
          nullable: true
          description: Maschinenlesbarer Grund für den aktuellen `status`.
        decision_reason_label:
          type: string
          nullable: true
          description: Lesbare Bezeichnung für `decision_reason_code`.
        vendor_data:
          type: string
          nullable: true
          description: Bequemlichkeitskopie der `vendor_data` des Antragstellers.
        metadata:
          type: object
          description: >-
            Snapshot der Payloads von `subject` und `counterparty`, wie sie zum
            Zeitpunkt der Erstellung übermittelt wurden.
        props:
          type: object
          description: >-
            Die `custom_properties`, die Sie bei der Erstellung angegeben haben.
            Jeder Schlüssel kann in Regelbedingungen als `custom_values.<key>`
            adressiert werden.
        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: >-
                  Gibt an, ob das Tag eine Didit-Voreinstellung oder ein
                  benutzerdefiniertes Tag ist.
          description: An die Transaktion angehängte Tags (manuell oder durch Regeln).
        parties:
          type: array
          items:
            type: object
            properties:
              uuid:
                type: string
                format: uuid
              role:
                type: string
                enum:
                  - APPLICANT
                  - REMITTER
                  - BENEFICIARY
                  - COUNTERPARTY
                description: >-
                  Rolle der Partei. Der Erstellungs-Endpoint weist `APPLICANT`
                  (das Subjekt) und `COUNTERPARTY` zu.
              entity_type:
                type: string
                enum:
                  - individual
                  - company
                  - external
                  - unhostedWallet
              kind:
                type: string
                enum:
                  - USER
                  - BUSINESS
                  - EXTERNAL
                description: >-
                  `USER`/`BUSINESS`-Parteien verweisen über `vendor_data` zurück
                  auf eine Didit-eigene Entität. Hinter `EXTERNAL`-Parteien
                  steht keine Didit-Entität.
              vendor_data:
                type: string
                nullable: true
                description: Ihre interne Benutzer-/Unternehmenskennung.
              full_name:
                type: string
                nullable: true
              first_name:
                type: string
                nullable: true
              last_name:
                type: string
                nullable: true
              country_code:
                type: string
                nullable: true
                description: >-
                  Ländercode aus der übermittelten `address.country`
                  (üblicherweise ISO 3166-1 Alpha-3).
              dob:
                type: string
                format: date
                nullable: true
                description: Geburtsdatum aus dem übermittelten `date_of_birth`.
              address:
                type: object
                description: Adressobjekt wie übermittelt. `{}` bei Auslassung.
              institution_info:
                type: object
                description: >-
                  Details zur Institution wie übermittelt. `{}`, wenn sie
                  weggelassen wurden.
              device:
                type: object
                description: >-
                  Normalisierter Gerätekontext, einschließlich serverseitiger
                  IP-Anreicherung unter network_context (Geolokalisierung,
                  VPN-/Rechenzentrums-Flags), wenn eine IP angegeben wurde.
                properties:
                  fingerprint:
                    type: string
                    description: Eindeutiger Geräte-Fingerabdruck.
                  persistent_device_id:
                    type: string
                    description: >-
                      Stabiler sitzungsübergreifender Geräteidentifikator
                      (v2-Fingerprint-Schema).
                  user_agent:
                    type: string
                    description: User-Agent-String des Browsers oder der App.
                  browser_family:
                    type: string
                    description: Browser-Familie (z. B. Chrome, Firefox, Safari).
                  browser_version:
                    type: string
                    description: Browser-Versions-String.
                  platform:
                    type: string
                    description: >-
                      Plattform-Identifikator (web, ios, android, macos,
                      windows, linux).
                  os_family:
                    type: string
                    description: Betriebssystemfamilie (z. B. iOS, Android, Windows).
                  os_version:
                    type: string
                    description: Versionszeichenfolge des Betriebssystems.
                  accept_language:
                    type: string
                    description: Wert des Accept-Language-Headers.
                  session_id:
                    type: string
                    description: Sitzungskennung (in Metadaten gespeichert).
                  session_age_ms:
                    type: number
                    description: Sitzungsalter in Millisekunden.
                  network_context:
                    type: object
                    description: Netzwerkkontext mit IP-Adresse und Geolokalisierung.
                    properties:
                      ip_address:
                        type: string
                        description: Client-Adresse.
                      ip_country_code:
                        type: string
                        description: >-
                          Per Geo-IP aufgelöstes Land der IP-Adresse (ISO 3166-1
                          alpha-3).
                      latitude:
                        type: number
                        description: Geografische Breite der IP-Adresse.
                      longitude:
                        type: number
                        description: Geografische Länge der IP-Adresse.
              external_party_snapshot:
                type: object
                nullable: true
                description: >-
                  Eingefrorene Kopie der Parteidaten für `EXTERNAL`-Parteien.
                  `null`, solange die Partei mit einem Didit-Benutzer oder
                  -Unternehmen verknüpft ist.
          description: Transaktionsparteien (Antragsteller, Gegenpartei).
        payment_methods:
          type: array
          items:
            type: object
            properties:
              uuid:
                type: string
                format: uuid
              payment_method_type:
                type: string
                enum:
                  - bank_card
                  - bank_account
                  - e_wallet
                  - crypto_wallet
                  - unhosted_wallet
                  - other
              label:
                type: string
                nullable: true
              fingerprint:
                type: string
                nullable: true
                description: >-
                  SHA-256 über `type:account_id:issuing_country` — stabiler
                  Identifikator, um die Wiederverwendung desselben Instruments
                  zuzuordnen.
              account_id:
                type: string
                nullable: true
                description: Kontokennung (IBAN, Adresse, Karten-Token, …).
              issuing_country:
                type: string
                nullable: true
              owner_kind:
                type: string
                enum:
                  - USER
                  - BUSINESS
                  - EXTERNAL
              vendor_data:
                type: string
                nullable: true
                description: >-
                  Ihre Kennung für den Benutzer bzw. das Unternehmen, dem die
                  Ressource gehört.
              owner_name:
                type: string
                nullable: true
              institution_info:
                type: object
              details:
                type: object
                description: Unverarbeitetes `payment_method`-Objekt wie übermittelt.
              external_owner_snapshot:
                type: object
                nullable: true
              role:
                type: string
                enum:
                  - SOURCE
                  - DESTINATION
                  - FUNDING
                  - BENEFICIARY
                description: >-
                  Wie diese Methode in der Transaktion verwendet wurde. Der
                  Endpoint zum Erstellen weist `SOURCE`/`DESTINATION` basierend
                  auf der Richtung zu (ausgehend: Subjekt = SOURCE; eingehend:
                  Subjekt = DESTINATION).
          description: Mit der Transaktion verknüpfte Zahlungsmethoden.
        documents:
          type: array
          description: >-
            Dateien, die der Transaktion über die Konsole angehängt wurden.
            `[]`, wenn keine vorhanden sind.
          items:
            type: object
            properties:
              uuid:
                type: string
                format: uuid
              label:
                type: string
                nullable: true
              note:
                type: string
                nullable: true
              uploaded_by:
                type: string
                nullable: true
              created_at:
                type: string
                format: date-time
              files:
                type: array
                items:
                  type: object
                  properties:
                    uuid:
                      type: string
                      format: uuid
                    file_url:
                      type: string
                      format: uri
                      nullable: true
                      description: >-
                        Kurzlebige signierte Download-URL; rufen Sie sie bei
                        Bedarf ab, anstatt sie zu speichern.
                    original_filename:
                      type: string
                      nullable: true
                    file_size:
                      type: integer
                      nullable: true
        activities:
          type: array
          items:
            type: object
            properties:
              uuid:
                type: string
                format: uuid
              activity_type:
                type: string
                description: >-
                  Z. B. `TRANSACTION_CREATED`, `TRANSACTION_NOTE_ADDED`,
                  `TRANSACTION_STATUS_CHANGED`.
              source:
                type: string
              status:
                type: string
                nullable: true
              title:
                type: string
                nullable: true
              description:
                type: string
                nullable: true
              metadata:
                type: object
              occurred_at:
                type: string
                format: date-time
          description: >-
            Einträge im Aktivitätsprotokoll (Erstellung, Notizen, manuelle
            Prüfungen, Statusänderungen).
        alerts:
          type: array
          items:
            type: object
            properties:
              uuid:
                type: string
                format: uuid
              title:
                type: string
              description:
                type: string
                nullable: true
              severity:
                type: string
                enum:
                  - UNKNOWN
                  - LOW
                  - MEDIUM
                  - HIGH
                  - CRITICAL
              status:
                type: string
                enum:
                  - OPEN
                  - INVESTIGATING
                  - AWAITING_USER
                  - PENDING_SAR
                  - SAR_FILED
                  - RESOLVED
                  - DISMISSED
              source:
                type: string
                enum:
                  - RULE
                  - PROVIDER
                  - MANUAL
              metadata:
                type: object
              created_at:
                type: string
                format: date-time
              due_at:
                type: string
                format: date-time
                nullable: true
          description: >-
            Aktuell immer leer. Ein offener Alert ist eine Transaktion mit dem
            Status `IN_REVIEW` oder `AWAITING_USER`.
        rule_runs:
          type: array
          items:
            type: object
            properties:
              uuid:
                type: string
                format: uuid
              rule:
                type: string
                format: uuid
                description: UUID der Regel, die ausgeführt wurde.
              rule_title:
                type: string
              rule_description:
                type: string
                nullable: true
              rule_category:
                type: string
              matched:
                type: boolean
                description: >-
                  Gibt an, ob die Bedingungen der Regel auf diese Transaktion
                  zutrafen. Ein Durchlauf wird nur für übereinstimmende Regeln
                  aufgezeichnet, daher tragen Live-Auswertungen immer `true`.
              is_test:
                type: boolean
                description: >-
                  True, wenn die Regel im TEST-Modus ausgeführt wurde (keine
                  Auswirkung auf Status/Score).
              mode:
                type: string
                enum:
                  - ACTIVE
                  - DISABLED
                  - TEST
              severity:
                type: string
                nullable: true
              score_delta:
                type: integer
                description: >-
                  Score, der durch die `add_score`-Aktionen dieser Regel
                  hinzugefügt wurde.
              status_target:
                type: string
                nullable: true
                description: >-
                  Status, der durch eine `change_status`-Aktion festgelegt
                  wurde, falls vorhanden.
              action_summary:
                type: string
                nullable: true
                description: >-
                  Zusammenfassung der von der Regel ausgeführten Aktionen,
                  getrennt durch `; ` (z. B. `score +30;
                  change_status:IN_REVIEW; add_tag:high_risk_country`).
                  Bestandteile: `score +N`, `change_status:<STATUS>`,
                  `add_tag:<name>`, `add_note`, `add_to_list`, `open_case`.
                  `null`, wenn die Regel keine Aktion ausgeführt hat.
              metadata:
                type: object
                description: >-
                  Evaluierungsdetails: `scope_match`, `conditions[]` und
                  `aggregations[]`. Jeder Bedingungseintrag enthält `field`,
                  `operator`, `expected_value`, den aus der Transaktion
                  gelesenen `current_value`, `matched`, `group_index` und
                  `group_logic`. Jeder Aggregationseintrag (Velocity / Anzahl /
                  Summe) enthält `metric`, `field`, `operator`,
                  `expected_value`, den berechneten Wert `computed_value`, auf
                  den das Aggregat ausgewertet wurde, `window`, `filters`,
                  `matched` und `sample_references`; verzögerte asynchrone
                  Aggregationen weisen `computed_value: null` und `deferred:
                  true` auf. Eine verschachtelte Bedingungsgruppe ist ein
                  Eintrag in `conditions[]` mit `operator` `any_of` oder
                  `all_of`, `field` null und den Ergebnissen ihrer Elemente
                  unter ihren eigenen `conditions`.
              created_at:
                type: string
                format: date-time
          description: >-
            Ausführungsergebnisse pro Regel – welche Regel ausgelöst wurde und
            mit welcher Auswirkung auf den Score.
        provider_results:
          type: array
          items:
            type: object
            properties:
              uuid:
                type: string
                format: uuid
              provider:
                type: string
              result_type:
                type: string
                enum:
                  - FIAT_MONITORING
                  - WALLET_SCREENING
                  - TRANSACTION_SCREENING
                  - TRAVEL_RULE
                  - NETWORK_GRAPH
                  - CUSTOM
              status:
                type: string
              severity:
                type: string
                nullable: true
              score:
                type: integer
              summary:
                type: string
                nullable: true
              payload:
                type: object
                description: Unverarbeitete Antwort-Payload des Anbieters.
              created_at:
                type: string
                format: date-time
          description: >-
            Unverarbeitete Provider-Payloads (AML-Screening, Blockchain-Analysen
            usw.).
        travel_rule:
          nullable: true
          allOf:
            - $ref: '#/components/schemas/TransactionTravelRule'
          description: >-
            Travel Rule-Transfer oder -Prüfung. Wird ausgefüllt, wenn
            `travel_rule_details` übermittelt wurde, sowie wenn Travel Rule
            aktiviert ist und die Transaktion mit `transaction_category:
            travelRule` erstellt wurde (Didit initiiert den Austausch selbst,
            auch ohne `travel_rule_details`). `null`, wenn kein Transfer oder
            keine Prüfung existiert. Bei einem eingehenden Transfer bleiben
            `originator_data` und `beneficiary_data` der Gegenpartei maskiert
            (`data_masked: true`), bis die Wallet-Inhaberschaft bestätigt ist.
        network_snapshot:
          type: object
          nullable: true
          description: >-
            Graph-Snapshot verknüpfter Transaktionen/Parteien, der von der
            Regel-Engine verwendet wird. Entweder der mit der Transaktion
            übermittelte `network_snapshot` oder der Graph, den Didit aus einem
            erfolgreichen AML-Wallet-Screening erstellt (der einen übermittelten
            ersetzt). `null`, wenn keines von beiden existiert.
          properties:
            uuid:
              type: string
              format: uuid
            nodes:
              type: array
              items:
                type: object
            edges:
              type: array
              items:
                type: object
            metrics:
              type: object
        remediation:
          type: object
          nullable: true
          description: >-
            Korrektursitzung, die dem Benutzer angeboten wird, wenn eine erneute
            Verifizierung erforderlich ist. Abgelöst durch `action_required`,
            den kanonischen Block; aus Gründen der Abwärtskompatibilität
            beibehalten.
          properties:
            session_id:
              type: string
            session_token:
              type: string
            url:
              type: string
              format: uri
            status:
              type: string
        action_required:
          type: object
          nullable: true
          description: >-
            Ausstehende Endbenutzer-Aktion, die zum Abschluss dieser Transaktion
            erforderlich ist, oder null, wenn keine vorhanden ist. Die
            Didit-SDKs starten die Aktion standardmäßig automatisch und
            aktualisieren die Transaktion nach deren Abschluss. Zwei Varianten,
            unterschieden durch `type`: `verification_session` (eine gehostete
            Verifizierungssitzung, die durch eine Regelaktion erstellt wurde)
            und `wallet_ownership` (eine Sitzung des Wallet-Ownership-Widgets,
            die für einen Travel-Rule-Transfer automatisch erstellt wurde, der
            einen Nachweis der Wallet-Kontrolle benötigt, gesteuert durch die
            Travel-Rule-Einstellung `auto_wallet_verification`). Wenn beide
            zutreffen könnten, hat `wallet_ownership` Vorrang, da sie den
            Travel-Rule-Austausch blockiert.
          oneOf:
            - $ref: '#/components/schemas/TransactionVerificationSessionAction'
            - $ref: '#/components/schemas/TransactionWalletOwnershipAction'
          discriminator:
            propertyName: type
            mapping:
              verification_session: '#/components/schemas/TransactionVerificationSessionAction'
              wallet_ownership: '#/components/schemas/TransactionWalletOwnershipAction'
        cost_breakdown:
          type: object
          nullable: true
          description: >-
            Kosten dieser Transaktion: `total_price` und `items`, eine pro
            Belastung, jeweils mit `usage_type`, `price`, `details` und
            `created_at`. Eine erneute Überprüfung derselben Transaktion ist ein
            neues Element.
    TransactionTravelRule:
      type: object
      description: >-
        Der Travel-Rule-Transfer einer Transaktion, wie `GET
        /v3/transactions/{transaction_id}/`, der `201`-Status von `POST
        /v3/transactions/` und jede Zeile von `GET /v3/transactions/` ihn
        zurückgeben. `direction`, `rail`, `counterparty_vasp`, `delivery`,
        `discovery`, `reason` und `next_actions` haben dieselbe Struktur wie bei
        `PATCH /v3/transactions/{transaction_id}/travel-rule/`, sodass ein
        einziger Lesevorgang einer Transaktion zeigt, warum ihr Transfer
        feststeckt und was ihn weiterbringt.
      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: >-
            Auftraggeber-Partei. Bei einer eingehenden Überweisung werden die
            Werte der Gegenpartei maskiert, bis die Eigentümerstruktur bestätigt
            ist.
        beneficiary_data:
          type: object
          description: >-
            Begünstigter. Bei eingehenden Übertragungen werden die Werte der
            Gegenpartei maskiert, bis die Eigentümerschaft bestätigt ist.
        name_match:
          type: object
          nullable: true
          description: >-
            Der Namensabgleich, der über den Transfer entschieden hat (Wert und
            Strenge). Null, bis einer ausgeführt wurde. Die verglichenen Namen
            werden zusammen mit den Parteien maskiert.
        data_match:
          $ref: '#/components/schemas/TravelRuleDataMatch'
        mismatched_fields:
          type: array
          items:
            type: string
          description: >-
            Kürzel für `data_match.mismatched_fields`. Leer, wenn keine
            Unterschiede vorliegen.
        data_unmasked:
          $ref: '#/components/schemas/TravelRuleDataUnmasked'
        data_masked:
          type: boolean
          description: >-
            Wahr, solange die personenbezogenen Daten der Gegenpartei in dieser
            Antwort maskiert sind.
        metadata:
          type: object
        direction:
          type: string
          enum:
            - INBOUND
            - OUTBOUND
          description: Welche Seite des Austauschs diese Überweisung darstellt.
        rail:
          type: string
          nullable: true
          description: >-
            Die Schiene (Rail), über die der Transfer lief: `INTERNAL`, `TRP`,
            `GTR`, `TRUST`, `VERIFYVASP`, `SYGNA` oder `EMAIL` (`TEST_VASP` bei
            einer Sandbox-Anwendung, wenn der Didit Test VASP geantwortet hat),
            oder `null`, bis eine Schiene ausgewählt ist.
        counterparty_vasp:
          type: object
          nullable: true
          properties:
            name:
              type: string
            lei:
              type: string
            dd_score:
              type: integer
              description: >-
                Due-Diligence-Score von 0 bis 100, wobei ein höherer Wert besser
                ist. Gleiche Skala wie im VASP-Verzeichnis.
            dd_score_breakdown:
              type: object
              description: >-
                Beiträge pro Komponente zu dd_score, ein Objekt pro Komponente
                wie im VASP-Verzeichnis (jurisdiction, verification, protocol,
                lei, history, essentials, responsiveness), jeweils {points, max,
                reason, detail}. {}, bis die Gegenpartei bewertet wurde.
              additionalProperties:
                type: object
                properties:
                  points:
                    type: number
                    description: Für diese Komponente vergebene Punkte.
                  max:
                    type: integer
                    description: Maximale Punktzahl, die diese Komponente vergeben kann.
                  reason:
                    type: string
                    description: Maschinenlesbarer Code der Entscheidung der Komponente.
                  detail:
                    type: string
                    description: Für Menschen lesbare Begründung für die vergebenen Punkte.
            dd_assessed_at:
              type: string
              format: date-time
              nullable: true
              description: >-
                Wann die Due-Diligence-Bewertung zuletzt durchgeführt wurde.
                Null, bis die Gegenpartei bewertet wurde.
          description: >-
            Der Verzeichniseintrag der Gegenpartei oder `null`, wenn der
            Transfer mit keinem verknüpft ist.
        delivery:
          nullable: true
          allOf:
            - $ref: '#/components/schemas/TravelRuleDelivery'
          description: >-
            Die neueste Nachricht, die der Transfer einer anderen Partei
            schuldet. `null`, wenn er keine geschuldet hat, beispielsweise unter
            `threshold_amount` oder bei einer deklarierten selbstverwahrten
            Wallet.
        discovery:
          type: array
          description: >-
            Wie Didit nach der Gegenpartei gesucht hat, ein Eintrag pro
            ausgeführtem Schritt. Leer, wenn keine Ermittlung stattgefunden hat,
            beispielsweise bei einem eingehenden Transfer.
          items:
            $ref: '#/components/schemas/TravelRuleDiscoveryStep'
        reason:
          type: string
          description: >-
            Warum ein Transfer mit `COUNTERPARTY_VASP_NOT_FOUND` oder
            `COUNTERPARTY_VASP_NOT_REACHABLE` feststeckt; `""` für jeden anderen
            Status. Eine fehlgeschlagene Zustellung bestimmt dies zuerst,
            ausschließlich bei `COUNTERPARTY_VASP_NOT_REACHABLE`:
            `email_undeliverable` (der E-Mail-Provider hat die Compliance-E-Mail
            abgelehnt und es bleibt keine Adresse mehr zum Ausprobieren: beim
            Senden, bei einer Erinnerung oder als später gemeldeter permanenter
            Bounce) oder `delivery_failed` (die zustellende Schiene ist
            endgültig fehlgeschlagen: eine Netzwerkschiene hat die Nachricht
            abgelehnt oder keine Wiederholungsversuche mehr übrig, ein
            `TRP`-Identitäts-Host hat nicht geantwortet oder der `TRP`-Host der
            Gegenpartei hat die Anfrage nicht akzeptiert). Andernfalls bestimmt
            es der `discovery`-Trace: `awaiting_end_user` (kein Schritt hat eine
            Gegenpartei benannt, die Didit erreichen kann),
            `directory_match_no_route` (ein Schritt hat einen Verzeichnis-VASP
            benannt, der keine Route hat), `picked_member_without_proven_wallet`
            (der Endbenutzer hat einen Didit-Kunden ausgewählt, der die
            Kontrolle über die Wallet nicht nachgewiesen hat) oder
            `no_directory_match`, wenn der Trace keinen anderen Grund liefert.
            Ein erneutes Senden bringt den Transfer voran, sodass der Grund
            zurückgesetzt wird. Siehe [Warum ein Transfer
            feststeckt](/de/transaction-monitoring/travel-rule#warum-ein-transfer-blockiert-ist).
        next_actions:
          type: array
          description: >-
            Was den Transfer voranbringt; `[]` für jeden Status außer
            `COUNTERPARTY_VASP_NOT_FOUND` oder
            `COUNTERPARTY_VASP_NOT_REACHABLE`. `email_undeliverable` bietet
            `update_compliance_email`, dann `resend`. `delivery_failed` bietet
            `resend`. Ein Discovery-Grund bietet `select_counterparty_vasp`,
            `declare_self_hosted`, `add_vasp_hint` und `resend`.
          items:
            $ref: '#/components/schemas/TravelRuleNextAction'
        chain_details:
          $ref: '#/components/schemas/TravelRuleChainDetails'
    TransactionVerificationSessionAction:
      title: Verification session
      type: object
      properties:
        type:
          type: string
          enum:
            - verification_session
        url:
          type: string
          format: uri
          description: >-
            Gehostete Verifizierungs-URL, die für den Endbenutzer geöffnet
            werden soll.
        session_id:
          type: string
          format: uuid
          description: ID der Verifizierungssitzung.
        session_token:
          type: string
          description: >-
            Sitzungs-Token, das von den mobilen SDKs verwendet wird, um den
            Ablauf nativ zu starten.
        status:
          type: string
          description: Status der Verifizierungssitzung.
      required:
        - type
        - url
    TransactionWalletOwnershipAction:
      title: Wallet ownership
      type: object
      properties:
        type:
          type: string
          enum:
            - wallet_ownership
        url:
          type: string
          format: uri
          description: >-
            URL des gehosteten Widgets zum Nachweis der Wallet-Inhaberschaft.
            Öffnen Sie sie in einer echten Browseroberfläche – verwenden Sie auf
            Mobilgeräten SFSafariViewController oder einen Chrome Custom Tab,
            niemals eine eingebettete Webview.
        widget_session_id:
          type: string
          format: uuid
          description: Sitzungs-ID des Wallet-Eigentums-Widgets.
        expires_at:
          type: string
          format: date-time
          description: Wann die Widget-Sitzung abläuft.
      required:
        - type
        - url
    TravelRuleDataMatch:
      type: object
      nullable: true
      description: >-
        Feldweiser Abgleich der Daten der an der Übertragung beteiligten Partei
        mit den Informationen der Gegenseite über den Wallet-Inhaber. Nennt
        Felder und Ergebnisse, niemals Werte, damit die Lesbarkeit erhalten
        bleibt, während die Daten der Gegenpartei maskiert sind. Null, bis ein
        Abgleich ausgeführt wurde.
      properties:
        matched:
          type: boolean
          description: True, wenn kein verglichenes Feld abweicht.
        mismatched_fields:
          type: array
          items:
            type: string
            enum:
              - name
              - date_of_birth
              - address
              - account
          description: Die Felder, die sich unterscheiden.
        fields:
          type: object
          description: >-
            Ein Eintrag pro verglichenem Feld für den Entitätstyp der Partei
            (`name`, `date_of_birth`, `address`, `account`; ein Unternehmen hat
            kein `date_of_birth`).
          additionalProperties:
            type: object
            properties:
              result:
                type: string
                enum:
                  - matched
                  - mismatched
                  - not_compared
                description: >-
                  `not_compared`, wenn die Regel `NONE` ist oder eine der beiden
                  Seiten keinen Wert für das Feld aufweist.
              strictness:
                type: string
                enum:
                  - NONE
                  - STRICT
                  - CONTAINS
                  - DEFAULT
                  - FUZZY
    TravelRuleDataUnmasked:
      type: object
      nullable: true
      description: >-
        Audit-Eintrag des Zeitpunkts, zu dem die Daten der Gegenpartei
        demaskiert wurden. Null, solange die Daten noch maskiert sind, sowie bei
        ausgehenden Überweisungen.
      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: >-
            Was die Inhaberschaft bestätigt hat: ownership_confirmed (Ihre
            Bestätigung über die Konsole oder die API), wallet_proof (ein
            Wallet-Nachweis im Widget oder ein eingehender INTERNAL-Transfer,
            festgelegt bei der Erstellung), address_book_match (eine
            verifizierte Adressbuch-Wallet), own_verified_wallet (die eigene
            verifizierte Wallet Ihres Benutzers), inquiry_approved (Ihre
            Genehmigung einer eingehenden TRP-Anfrage oder einer GTR- oder
            Sygna-Nachricht), known_payment_method (eine Wallet, mit der Ihr
            Benutzer bereits bezahlt hat) oder travel_address (die pro Wallet
            angegebene Travel Address).
        actor:
          type: string
          description: >-
            Wer die Bestätigung vorgenommen hat: die E-Mail-Adresse des
            Konsolenbenutzers oder die Bezeichnung des API-Schlüssels. Leer bei
            einer automatischen Entscheidung.
    TravelRuleDelivery:
      type: object
      description: >-
        Status der neuesten Nachricht, die der Transfer der anderen Seite
        schuldet. Didit kontaktiert die Gegenpartei, nachdem die Anfrage
        zurückgegeben wurde, die den Transfer erstellt oder geändert hat. Dieses
        Objekt gibt daher an, ob diese Nachricht durchgegangen ist: in der
        Warteschlange, wird gesendet, wartet auf Wiederholungsversuch nach einem
        Fehler, zugestellt oder fehlgeschlagen. Bei einem Fehler, von dem sich
        das Netzwerk noch erholen kann (keine rechtzeitige Antwort,
        fehlgeschlagene Verbindung, HTTP `408`, `429` oder `5xx`), wird der
        Versuch nach 30 Sekunden, 2 Minuten, 10 Minuten, 30 Minuten und 1 Stunde
        wiederholt. Wenn eine erste Nachricht (`kind: SEND`) endgültig
        fehlschlägt, weil das Netzwerk sie abgelehnt hat oder auch der sechste
        Versuch fehlgeschlagen ist, wechselt der Transfer zu
        `COUNTERPARTY_VASP_NOT_REACHABLE` mit `last_error` in seiner `timeline`;
        jede andere Nachricht, die endgültig fehlschlägt, wird in der `timeline`
        vermerkt. Der `status` des Transfers bleibt die maßgebliche Quelle für
        den Austausch selbst.
      required:
        - kind
        - status
        - rail
        - attempts
        - last_error
        - next_attempt_at
        - delivered_at
      properties:
        kind:
          type: string
          enum:
            - SEND
            - ANSWER
            - TXID
            - CANCEL
            - POLL
          description: >-
            Was die Nachricht übermittelt. `SEND`: die erste Nachricht des
            Transfers an die Gegenpartei (ausgehend; das Übertragungsnetzwerk
            wird beim Senden ausgewählt). `ANSWER`: Ihre Annahme oder Ablehnung
            gegenüber dem anfragenden Netzwerk (eingehend). `TXID`: der
            On-Chain-Transaktions-Hash, nachdem Sie den Transfer abgeschlossen
            haben. `CANCEL`: die Stornierung, nachdem Sie ihn abgebrochen haben.
            `POLL`: eine Statusabfrage an ein Netzwerk, das dies anbietet, die
            alle 5 Minuten wiederholt wird, während der Transfer auf die
            Gegenpartei wartet.
        status:
          type: string
          enum:
            - QUEUED
            - SENDING
            - RETRYING
            - DELIVERED
            - FAILED
          description: >-
            `QUEUED`: Wartet auf den Versand. `SENDING`: Ein Versuch läuft.
            `RETRYING`: Ein Versuch ist fehlgeschlagen und der nächste erfolgt
            um `next_attempt_at`. `DELIVERED`: Die Gegenseite hat die Nachricht
            entgegengenommen. `FAILED`: Die Gegenseite hat sie abgelehnt oder
            der letzte Versuch ist fehlgeschlagen.
        rail:
          type: string
          enum:
            - INTERNAL
            - TRP
            - GTR
            - TRUST
            - VERIFYVASP
            - SYGNA
            - EMAIL
            - ''
          description: >-
            Die Schiene (Rail), die die Nachricht übermittelt. Leer, bis Didit
            eine für eine erste Nachricht ausgewählt hat.
        attempts:
          type: integer
          minimum: 0
          description: >-
            Bisher durchgeführte Versuche für diese Nachricht. Für eine
            Nachricht, die keine Statusabfrage ist, werden maximal 6 Versuche
            unternommen.
        last_error:
          type: string
          description: >-
            Die Art des Fehlers, der beim letzten Versuch aufgetreten ist, `""`,
            wenn keiner aufgetreten ist: beispielsweise `email undeliverable`,
            `trp identity endpoint unreachable` oder `trp transfer inquiry
            delivery failed`. Sie enthält niemals die eigene Antwort der
            Gegenpartei, die in der `timeline` des Transfers verbleibt.

            Wenn GTR mit einem Fehler antwortet, sind dessen eigener Statuscode
            und dessen Nachricht enthalten. Antwortinhalte sind niemals
            enthalten.
          example: email undeliverable
        next_attempt_at:
          type: string
          format: date-time
          nullable: true
          description: >-
            Wann der nächste Versuch ausgeführt wird, während die Nachricht
            `QUEUED` oder `RETRYING` ist.
        delivered_at:
          type: string
          format: date-time
          nullable: true
          description: Wann die Gegenseite die Nachricht entgegengenommen hat.
    TravelRuleDiscoveryStep:
      type: object
      description: >-
        Ein Schritt der Gegenpartei-Ermittlung, die Didit für einen ausgehenden
        Transfer durchgeführt hat, in der Reihenfolge der Ausführung. Der erste
        Schritt, der einen VASP mit einer Route benennt, beendet die Kette.
      properties:
        step:
          type: string
          enum:
            - internal_address_book
            - wallet_attribution
            - network_lookup
            - customer_hint
            - end_user
          description: >-
            `internal_address_book`: ein anderer Didit-Kunde, der die Kontrolle
            über die Ziel-Wallet nachgewiesen hat. `wallet_attribution`: die
            Blockchain-Analyse-Zuordnung der Wallet. `network_lookup`: ein
            Netzwerk, das angeben kann, welcher VASP die Adresse hält.
            `customer_hint`: der VASP-Name, der LEI oder die Jurisdiktion, die
            Sie in `beneficiary_data` übermittelt haben. `end_user`: die
            Gegenpartei, die der Endbenutzer (oder Sie) ausgewählt hat, oder die
            Aufforderung, eine auszuwählen.
        outcome:
          type: string
          enum:
            - match
            - miss
            - skipped
          description: >-
            `match`: Der Schritt hat eine Gegenpartei benannt. `miss`: Er wurde
            ausgeführt und hat keine gefunden. `skipped`: Er konnte nicht
            ausgeführt werden, und `reason` gibt den Grund an.
        reason:
          type: string
          description: >-
            Maschinenlesbarer Grund, `""` bei einer Übereinstimmung:
            `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` oder `picked_member_without_proven_wallet`.
        vasp:
          type: string
          format: uuid
          nullable: true
          description: >-
            Der Verzeichnis-VASP, den der Schritt benannt hat, sofern einer
            benannt wurde.
        rail:
          type: string
          nullable: true
          description: >-
            Die Schiene (Rail), die diese Gegenpartei erreicht, sofern der
            Schritt eine gefunden hat.
        at:
          type: string
          format: date-time
    TravelRuleNextAction:
      type: object
      description: >-
        Eine Maßnahme, die einen Transfer mit dem Status
        `COUNTERPARTY_VASP_NOT_FOUND` oder `COUNTERPARTY_VASP_NOT_REACHABLE`
        voranbringt. Siehe [Warum ein Transfer
        festhängt](/de/transaction-monitoring/travel-rule#warum-ein-transfer-blockiert-ist).
      properties:
        action:
          type: string
          enum:
            - select_counterparty_vasp
            - declare_self_hosted
            - add_vasp_hint
            - update_compliance_email
            - resend
          description: >-
            `select_counterparty_vasp`: Der Endbenutzer wählt die Ziel-VASP im
            Widget zum Wallet-Eigentumsnachweis aus, oder Sie senden einen PATCH
            mit `action=beneficiary_vasp`. `declare_self_hosted`: Der
            Endbenutzer deklariert die Wallet im Widget als selbstverwahrt.
            `add_vasp_hint`: Teilen Sie Didit über einen VASP-Namen, LEI oder
            eine Travel Address (beispielsweise eine `travel_address` im
            Adressbucheintrag der Ziel-Wallet) mit, wer die Gegenpartei ist, und
            senden Sie die Anfrage erneut. `update_compliance_email` und
            `resend` sind `action`-Werte von `PATCH
            /v3/transactions/{transaction_id}/travel-rule/`: Geben Sie die
            Compliance-E-Mail der Gegenpartei erneut an und führen Sie das
            Routing noch einmal durch.
        url:
          type: string
          format: uri
          description: >-
            Der Link zum Wallet-Ownership-Widget, bei `select_counterparty_vasp`
            und `declare_self_hosted`, solange der Transfer eine offene
            Widget-Sitzung hat.
      required:
        - action
    TravelRuleChainDetails:
      type: object
      description: >-
        Wie die Blockchain des Transfers ihre beiden Wallets benennt, wenn mehr
        als eine Adresse eine andere bezahlt. Leer (`{}`) bei einem
        Account-Chain-Transfer (EVM, Solana, Tron), bei dem die beiden Adressen
        die Wallets sind. Abgleich, Weiterleitung und das Adressbuch lesen die
        Wallets zuerst von hier aus.
      properties:
        chain:
          type: string
          description: >-
            Kanonische Chain, z. B. `BTC`, `XRP` oder `LIGHTNING` für einen
            Lightning-Transfer.
        shape:
          type: string
          enum:
            - utxo
            - memo
            - lightning
        originator:
          $ref: '#/components/schemas/TravelRuleChainSide'
        beneficiary:
          $ref: '#/components/schemas/TravelRuleChainSide'
        utxo:
          type: object
          description: >-
            Bei einem UTXO-Transfer: die Inputs und Outputs wie gespeichert
            (Beträge als Dezimal-Strings) und welche Outputs Didit als was
            interpretiert hat.
          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: Ausgaben, die an eine Eingabeadresse zurückzahlen.
            beneficiary_output_index:
              type: integer
              nullable: true
              description: >-
                Der Output, der den Begünstigten bezahlt; null, wenn keine
                unterschieden werden konnten.
        lightning:
          type: object
          description: >-
            Bei einem Lightning-Transfer: Inhalt der Zahlungsanforderung. Immer
            `kind` (`bolt11`, `bolt12_offer`, `bolt12_invoice`,
            `bolt12_invoice_request`, `lnurl`, `lightning_address`, `node_id`
            oder `unknown`); eine BOLT11-Rechnung ergänzt `network`,
            `payee_node_id`, `payment_hash`, `amount_msat`, `created_at` und
            `expires_at`; ein BOLT12-String ergänzt `blinded_paths` und
            `payee_node_id`; eine LNURL oder Lightning Address ihre `domain`. Es
            wird nichts über das Netzwerk aufgelöst: Die Anforderung wird
            lediglich decodiert.
          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: >-
            UTXO-Inkonsistenzen, die eine Überprüfung wert sind: Der angegebene
            Auftraggeber ist kein Input, der angegebene Begünstigte ist kein
            Output, es konnte kein einzelner Output des Begünstigten
            unterschieden werden oder der Begünstigten-Output zahlt einen
            anderen Betrag aus, als in der Transaktion angegeben ist.
        not_applicable_reason:
          type: string
          enum:
            - LIGHTNING_NO_PAYEE_IDENTIFIER
            - LIGHTNING_BOLT12_BLINDED_PAYEE
            - LIGHTNING_LNURL_NAMES_NO_PAYEE
          description: >-
            Bei einem ausgehenden Lightning-Transfer, dessen Zahlungsanforderung
            keinen Begünstigten nennt: der Grund, warum der Transfer
            `NOT_APPLICABLE` ist. `LIGHTNING_NO_PAYEE_IDENTIFIER` (die
            Anforderung nennt keinen Knoten des Begünstigten oder konnte nicht
            decodiert werden), `LIGHTNING_BOLT12_BLINDED_PAYEE` (das Angebot
            verbirgt seinen Begünstigten hinter blinden Pfaden),
            `LIGHTNING_LNURL_NAMES_NO_PAYEE` (eine LNURL nennt einen Dienst,
            keinen Begünstigten). Derselbe Code leitet den letzten
            `timeline`-Eintrag des Transfers ein.
    TravelRuleChainSide:
      type: object
      description: Die Wallet einer Seite, wie von Didit aus den Chain-Daten aufgelöst.
      properties:
        address:
          type: string
          description: >-
            Die Wallet. Auf einem Memo-Netzwerk die klassische Adresse (eine
            XRP-X-Adresse wird in ihre klassische Adresse und ihr Tag
            aufgeteilt); auf Lightning die Knoten-ID des Zahlungsempfängers oder
            die Lightning-Adresse.
        memo:
          type: string
          description: >-
            Das Destination-Tag oder Memo, das Teil der Wallet ist; `""` für
            keines.
        source:
          type: string
          enum:
            - declared
            - x_address
            - largest_input
            - only_non_change_output
            - amount_match
            - invoice_payee
            - updated
          description: >-
            Woher die Wallet stammt: `declared` (Ihre Anfrage), `x_address` (aus
            einer XRP-X-Adresse aufgeteilt), `largest_input` (die
            UTXO-Input-Adresse mit dem größten Beitrag),
            `only_non_change_output` (der einzige UTXO-Output, der kein
            Wechselgeld ist), `amount_match` (der eine UTXO-Output, der den
            Überweisungsbetrag zahlt), `invoice_payee` (der Zahlungsempfänger,
            den eine Lightning-Zahlungsanforderung benennt), `updated`
            (nachträglich mit `action: update_originator_wallet` festgelegt).
    TravelRuleUtxoEntry:
      type: object
      description: >-
        Eine Eingabe oder Ausgabe einer UTXO-Transaktion, wie sie von der
        Blockchain erfasst wurde.
      required:
        - address
      properties:
        address:
          type: string
          maxLength: 128
        amount:
          type: string
          nullable: true
          description: >-
            Dezimal-Zeichenkette in der Einheit des Coins selbst (BTC, nicht
            Satoshis). Optional.
          example: '0.0125'
        txid:
          type: string
          maxLength: 128
          description: Optional. Die Transaktion, deren Output ein Input ausgibt.
        vout:
          type: integer
          nullable: true
          minimum: 0
          description: Optional. Der Index des Outputs, den ein Input ausgibt.
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: >-
        Der API-Schlüssel Ihrer Anwendung, aus Entwickler -> API-Schlüssel in
        der Business Console. Der Primärschlüssel hat Vollzugriff. Ein benannter
        Schlüssel kann im Geltungsbereich eingeschränkt werden: keine, Lese-
        oder Schreibberechtigung pro Ressource, beschränkt auf bestimmte
        Workflows oder genehmigte Sitzungen, auf eine Liste von IP-Adressen und
        auf ein Ablaufdatum. 401 bedeutet, dass der Schlüssel falsch, widerrufen
        oder abgelaufen ist; 403 bedeutet, dass kein Schlüssel gesendet wurde,
        der Schlüssel keinen Zugriff auf diese Ressource oder Aktion hat oder
        die Anfrage von einer Adresse außerhalb seiner IP-Liste stammte; 404 bei
        einer Sitzungsroute bedeutet, dass die Sitzung außerhalb der Workflows
        oder Status des Schlüssels liegt. Ein Schlüssel ohne Medienzugriff
        erhält Bild-, Video- und PDF-URLs als null, und ein Schlüssel ohne
        Schreibberechtigung für Sitzungen erhält Sitzungslinks und Token als
        null. Siehe https://docs.didit.me/console/api-keys.

````

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