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

# Elenco regole Monitoraggio delle transazioni API

> Elenca le regole KYT della tua applicazione, preset e personalizzate, con filtri e ordinamento per prestazioni. Didit Management API.

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

<pre>
  \`List the transaction-monitoring rules of my Didit application.

  Endpoint:
  GET [https://verification.didit.me/v3/transactions/rules/](https://verification.didit.me/v3/transactions/rules/)

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

  Query parameters (all optional):

  * source: PRESET | CUSTOM
  * category, mode (ACTIVE | DISABLED | TEST), bundle, search
  * ordering: comma-separated from run\_count, approved\_pct, reviewed\_pct, declined\_pct, latest\_triggered\_at, title, created\_at, source (prefix with - for descending; default source,-run\_count)
  * limit, offset for pagination

  Behavior:

  * The list returns your custom rules plus any library presets you have installed (see the install endpoint).
  * Each row carries the full rule configuration (scope, conditions, aggregation, actions) plus execution counters (run\_count, approved/reviewed/declined percentages, latest\_triggered\_at).
  * Titles are unique per application - read this list before creating a rule to avoid a duplicate-title 400.

  Full guide: /transaction-monitoring/rules-api.\`
</pre>

Incolla in


## OpenAPI

````yaml it/openapi-25.json GET /v3/transactions/rules/
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/rules/:
    get:
      tags:
        - Transactions
      summary: Elenca regole
      description: >-
        Elenca le regole di monitoraggio delle transazioni dell'applicazione: le
        tue regole personalizzate più i preset della libreria che hai
        installato. Filtra per origine, categoria, modalità, bundle o ricerca a
        testo libero; ordina con `ordering` (run_count, approved_pct,
        reviewed_pct, declined_pct, latest_triggered_at, title, created_at,
        source, ciascuno con un prefisso `-` opzionale).
      operationId: listTransactionRules
      parameters:
        - name: source
          in: query
          required: false
          schema:
            type: string
            enum:
              - PRESET
              - CUSTOM
          description: PRESET o CUSTOM
        - name: category
          in: query
          required: false
          schema:
            type: string
          description: Filtra per categoria di regola
        - name: mode
          in: query
          required: false
          schema:
            type: string
            enum:
              - ACTIVE
              - DISABLED
              - TEST
          description: ACTIVE, DISABLED o TEST
        - name: bundle
          in: query
          required: false
          schema:
            type: string
          description: Filtra i preset per bundle
        - name: search
          in: query
          required: false
          schema:
            type: string
          description: >-
            Corrispondenza senza distinzione tra maiuscole e minuscole rispetto
            a titolo e descrizione
        - name: ordering
          in: query
          required: false
          schema:
            type: string
          description: >-
            Campi di ordinamento separati da virgole, predefinito
            source,-run_count
        - name: limit
          in: query
          required: false
          schema:
            type: integer
          description: Dimensione della pagina
        - name: offset
          in: query
          required: false
          schema:
            type: integer
          description: Offset di pagina
      responses:
        '200':
          description: Regole impaginate.
          content:
            application/json:
              schema:
                type: object
                properties:
                  count:
                    type: integer
                  next:
                    type: string
                    nullable: true
                  previous:
                    type: string
                    nullable: true
                  results:
                    type: array
                    items:
                      $ref: '#/components/schemas/TransactionRuleDetail'
      security:
        - ApiKeyAuth: []
      x-codeSamples:
        - lang: curl
          label: curl
          source: >-
            curl -X GET
            'https://verification.didit.me/v3/transactions/rules/?source=CUSTOM&ordering=-run_count'
            \
              -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.rules.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.rules.list()) {
              console.log(item);
            }
        - lang: go
          label: Go
          source: "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\niter := client.Transactions.Rules.ListAutoPaging(ctx, didit.TransactionsRulesListParams{})\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().rules().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->rules->list() as $item) {
                print_r($item->toArray());
            }
        - lang: ruby
          label: Ruby
          source: |-
            require "didit"

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

            didit.transactions.rules.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.Rules.ListAsync())

            {
                Console.WriteLine(JsonSerializer.Serialize(item));
            }
components:
  schemas:
    TransactionRuleDetail:
      type: object
      properties:
        uuid:
          type: string
          format: uuid
        title:
          type: string
          description: >-
            Nome della regola. Univoco per applicazione tra le regole non
            eliminate; i duplicati restituiscono 400.
        description:
          type: string
          nullable: true
        category:
          type: string
          description: >-
            Tema di rischio utilizzato per il raggruppamento e la reportistica,
            ad es. finance, aml_ctf, anomaly_detection, fatf,
            device_intelligence, crypto_monitoring, travel_rule,
            responsible_gaming, e_commerce.
        mode:
          type: string
          enum:
            - ACTIVE
            - DISABLED
            - TEST
          description: >-
            ACTIVE valuta in produzione. TEST valuta e registra le esecuzioni
            delle regole senza mai modificare punteggio o stato: è la modalità
            iniziale consigliata. DISABLED viene ignorato.
        evaluation_mode:
          type: string
          enum:
            - ALL
            - ANY
          default: ALL
          description: >-
            Indica se ogni condizione deve corrispondere (ALL) o almeno una
            (ANY). Viene ignorato quando le condizioni utilizzano group_index.
        scope:
          $ref: '#/components/schemas/TransactionRuleScope'
        conditions:
          type: array
          items:
            $ref: '#/components/schemas/TransactionRuleCondition'
        aggregation:
          type: array
          items:
            $ref: '#/components/schemas/TransactionRuleAggregation'
        actions:
          type: array
          items:
            $ref: '#/components/schemas/TransactionRuleAction'
        metadata:
          type: object
          description: Metadati a struttura libera memorizzati sulla regola.
        severity:
          type: string
          enum:
            - UNKNOWN
            - LOW
            - MEDIUM
            - HIGH
            - CRITICAL
          nullable: true
          description: >-
            Gravità informativa applicata dalle regole di libreria; non
            impostabile per le regole personalizzate.
        source:
          type: string
          enum:
            - PRESET
            - CUSTOM
          description: >-
            Le regole PRESET provengono dalla libreria
            (installazione/disinstallazione, modifiche solo alla modalità); le
            regole CUSTOM sono interamente tue.
        library_key:
          type: string
          nullable: true
          description: >-
            Identificatore stabile di libreria; null per le regole
            personalizzate.
        latest_triggered_at:
          type: string
          format: date-time
          nullable: true
        run_count:
          type: integer
          description: Quante transazioni corrispondono a questa regola.
        approved_count:
          type: integer
        reviewed_count:
          type: integer
        declined_count:
          type: integer
        awaiting_user_count:
          type: integer
        approved_pct:
          type: number
        reviewed_pct:
          type: number
        declined_pct:
          type: number
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
    TransactionRuleScope:
      type: object
      properties:
        transaction_types:
          type: array
          items:
            type: string
          description: >-
            Limita ai tipi di transazione, ad es. finance, kyc, travel_rule,
            user_event. Vuoto o mancante = nessuna limitazione.
        directions:
          type: array
          items:
            type: string
            enum:
              - INBOUND
              - OUTBOUND
          description: >-
            Limita alle direzioni della transazione (senza distinzione tra
            maiuscole e minuscole in scrittura).
        action_types:
          type: array
          items:
            type: string
          description: Limita ai tuoi valori di action_type, ad es. withdrawal, deposit.
      description: >-
        A quali transazioni si applica la regola. Sono accettate solo queste tre
        chiavi.
    TransactionRuleCondition:
      type: object
      required:
        - field
        - operator
      properties:
        field:
          type: string
          description: >-
            Percorso del campo della transazione da valutare. Campi principali:
            amount, currency, direction, action_type, score, severity,
            transaction_type, payment_details, preferred_currency_amount
            (utilizza amount_in_default_currency come fallback),
            default_currency_code, subject_country, counterparty_country,
            subject_vendor_data, counterparty_vendor_data,
            subject_device_fingerprint, counterparty_device_fingerprint,
            subject_browser_family, subject_browser_version, subject_platform,
            subject_accept_language, subject_session_age_ms, subject_ip_country,
            counterparty_ip_country, subject_ip_address,
            counterparty_ip_address, subject_payment_method_type,
            subject_payment_method_country, subject_payment_method_fingerprint,
            subject_payment_method_account_id (e i corrispettivi
            counterparty_payment_method_*), travel_rule_status,
            travel_rule_required, travel_rule_obligations_count,
            counterparty_dd_status (la tua decisione sulla controparte Travel
            Rule: APPROVED, RESTRICTED o BLOCKED, un'entità conforme al suo
            marchio), counterparty_risk_level (LOW, MEDIUM o HIGH; HIGH mentre
            il tuo screening della controparte è contrassegnato con un flag),
            counterparty_jurisdiction (il paese del VASP di controparte),
            counterparty_responsiveness (RESPONSIVE, UNRESPONSIVE o UNKNOWN),
            subject_days_since_previous_transaction, tags e custom_values.<key>
            per qualsiasi chiave inviata in custom_properties durante la
            creazione della transazione. I campi con codice paese accettano
            ISO-2 o ISO-3; entrambi i lati vengono normalizzati a ISO-3 prima
            del confronto.
        operator:
          type: string
          enum:
            - eq
            - ne
            - gt
            - gte
            - lt
            - lte
            - in
            - not_in
            - contains
            - not_contains
            - contains_any
            - regex
            - fuzzy_match
            - exists
            - is_not_empty
            - is_not_null
            - not_exists
            - is_empty
            - is_null
          description: >-
            Operatore di confronto. in/not_in verificano l'appartenenza (il
            valore può essere un elenco o un singolo scalare).
            contains/not_contains sono controlli di sottostringa senza
            distinzione tra maiuscole e minuscole rispetto a un valore stringa.
            contains_any accetta un elenco di stringhe e trova una
            corrispondenza se una qualsiasi è una sottostringa senza distinzione
            tra maiuscole e minuscole del valore del campo. regex confronta il
            pattern del valore con il campo. fuzzy_match effettua il confronto
            con la stringa del valore con la soglia di punteggio (`score`)
            richiesta (0-100). gt/gte/lt/lte non trovano mai corrispondenze se
            uno dei due lati è mancante. exists/is_not_empty/is_not_null (alias)
            e not_exists/is_empty/is_null (alias) sono controlli di presenza che
            ignorano `value`.
        value:
          description: >-
            Valore di confronto. La sua struttura dipende dall'operatore e da
            value_type; omettilo per gli operatori di controllo di presenza.
            Tutti gli altri operatori richiedono un valore che non sia `null` o
            un elenco vuoto, altrimenti la regola viene rifiutata con `400`.
            `contains_any` richiede un elenco di stringhe, mentre `contains`,
            `not_contains` e `regex` richiedono una singola stringa.
        value_type:
          type: string
          enum:
            - list
            - field
            - relative_date
          description: >-
            Interpretazione opzionale del valore. `list`: il valore è l'UUID di
            un elenco e le voci dell'elenco diventano il valore di confronto.
            `field`: il valore è il percorso di un altro campo, confrontato
            campo per campo. `relative_date`: il valore è un oggetto data
            relativa, ad es. {"direction": "past", "unit": "days", "amount":
            30}.
        score:
          type: number
          minimum: 0
          maximum: 100
          description: >-
            Obbligatorio quando operator è fuzzy_match: la soglia di similarità
            da 0 a 100.
        group_index:
          type: integer
          description: >-
            Logica raggruppata opzionale. Quando una qualsiasi condizione
            include group_index, le condizioni che condividono un indice formano
            un gruppo e la valutazione raggruppata sostituisce evaluation_mode.
        group_logic:
          type: string
          enum:
            - AND
            - OR
          default: AND
          description: Come si combinano le condizioni ALL'INTERNO di un gruppo.
        groups_logic:
          type: string
          enum:
            - AND
            - OR
          default: OR
          description: >-
            Come si combinano i risultati TRA i gruppi. Letto dalla prima
            condizione.
      description: >-
        Una condizione legge solo la transazione valutata: non filtra mai la
        finestra di aggregazione.
    TransactionRuleAggregation:
      type: object
      required:
        - value
      properties:
        metric:
          type: string
          enum:
            - count
            - sum
            - max
            - min
            - avg
            - distinct_count
          default: count
          description: >-
            In che modo vengono aggregate le transazioni storiche
            corrispondenti. unique_count è accettato come alias di
            distinct_count.
        field:
          type: string
          default: amount
          description: >-
            Campo aggregato tramite sum/max/min/avg/distinct_count. Ignorato per
            count.
        operator:
          type: string
          enum:
            - eq
            - ne
            - gt
            - gte
            - lt
            - lte
          default: eq
          description: Confronto applicato alla metrica calcolata.
        value:
          type: number
          description: Soglia con cui viene confrontata la metrica calcolata.
        window:
          type: string
          pattern: ^\d+(m|h|d)$
          default: 1d
          description: >-
            Finestra retrospettiva che termina alla data txn_date della
            transazione: <N>m (MINUTI, non mesi), <N>h (ore) o <N>d (giorni), ad
            es. 30m, 24h, 7d, 30d.
        filters:
          type: object
          additionalProperties: true
          description: >-
            Limita quali transazioni storiche vengono aggregate. Le chiavi sono
            percorsi di campo dal catalogo dei campi di condizione; un valore
            pari a "__current__" fa riferimento al valore dello stesso campo
            sulla transazione in fase di valutazione (ad es.
            {"subject_vendor_data": "__current__"} delimita l'intervallo allo
            stesso soggetto), e un valore di tipo elenco indica l'appartenenza.
            I record senza il valore raggruppato non vengono mai raggruppati
            insieme: quando la transazione in fase di valutazione non ha alcun
            valore per un campo "__current__" (nessuna controparte, nessuna
            impronta digitale del dispositivo), l'aggregazione non corrisponde,
            indipendentemente dal suo operatore. I filtri confrontano SOLO per
            uguaglianza o appartenenza: non esiste un filtro lt/gte, quindi un
            intervallo come "transazioni storiche inferiori a 10.000" non può
            essere espresso qui. Imposta invece l'intervallo sulla metrica (la
            metrica max con operatore lt mantiene ogni transazione
            nell'intervallo al di sotto della soglia).
      description: >-
        Controllo di velocità sulle transazioni storiche dell'applicazione
        all'interno della finestra temporale. Ogni voce di aggregazione deve
        corrispondere affinché la regola corrisponda, indipendentemente da
        evaluation_mode. Un'aggregazione vincola solo la finestra; la
        transazione in fase di valutazione è vincolata dall'ambito e dalle
        condizioni, quindi ripeti direction, currency o transaction_type su
        entrambe le metà quando la regola li prevede.
    TransactionRuleAction:
      oneOf:
        - $ref: '#/components/schemas/TransactionRuleActionAddScore'
        - $ref: '#/components/schemas/TransactionRuleActionChangeStatus'
        - $ref: '#/components/schemas/TransactionRuleActionAddTags'
        - $ref: '#/components/schemas/TransactionRuleActionAddNote'
        - $ref: '#/components/schemas/TransactionRuleActionAddToList'
        - $ref: '#/components/schemas/TransactionRuleActionOpenCase'
      discriminator:
        propertyName: type
        mapping:
          add_score: '#/components/schemas/TransactionRuleActionAddScore'
          change_status: '#/components/schemas/TransactionRuleActionChangeStatus'
          add_tags: '#/components/schemas/TransactionRuleActionAddTags'
          add_note: '#/components/schemas/TransactionRuleActionAddNote'
          add_to_list: '#/components/schemas/TransactionRuleActionAddToList'
          open_case: '#/components/schemas/TransactionRuleActionOpenCase'
      description: >-
        Un'azione della regola. Una regola può averne diverse; vengono tutte
        applicate insieme in caso di corrispondenza. Le regole in modalità TEST
        registrano ciò che avrebbero fatto senza applicare alcuna azione.
    TransactionRuleActionAddScore:
      type: object
      required:
        - type
        - value
      properties:
        type:
          type: string
          enum:
            - add_score
        value:
          type: integer
          description: >-
            Punti aggiunti al punteggio di rischio della transazione. Possono
            essere negativi.
      description: >-
        Aggiungi punti al punteggio di rischio cumulativo della transazione; il
        totale determina lo stato tramite le soglie di revisione/rifiuto
        dell'applicazione.
    TransactionRuleActionChangeStatus:
      type: object
      required:
        - type
        - value
      properties:
        type:
          type: string
          enum:
            - change_status
        value:
          type: string
          enum:
            - APPROVED
            - IN_REVIEW
            - DECLINED
            - AWAITING_USER
          description: >-
            Stato da impostare immediatamente, a prescindere dal punteggio.
            Chiave alias: status.
        workflow_id:
          type: string
          format: uuid
          description: >-
            OBBLIGATORIO quando il valore è AWAITING_USER: il workflow di
            verifica che il soggetto è invitato a completare. Chiave alias:
            remediation_workflow_id. Didit crea una sessione di correzione
            ospitata per il soggetto quando la regola si attiva.
      description: >-
        Imposta direttamente lo stato della transazione. DECLINED prevale sempre
        tra le regole corrispondenti.
    TransactionRuleActionAddTags:
      type: object
      required:
        - type
      properties:
        type:
          type: string
          enum:
            - add_tags
        tag_uuid:
          type: string
          format: uuid
          description: Tag dell'applicazione esistente da associare.
        tag_name:
          type: string
          description: >-
            Nome del tag da associare; creato al primo utilizzo (salvato in
            maiuscolo). Fornisci tag_uuid o tag_name.
        tag_color:
          type: string
          description: >-
            Colore esadecimale utilizzato quando tag_name crea un nuovo tag, ad
            es. #007AFE.
      description: Collega un tag dell'applicazione alla transazione corrispondente.
    TransactionRuleActionAddNote:
      type: object
      required:
        - type
        - note
      properties:
        type:
          type: string
          enum:
            - add_note
        note:
          type: string
          description: >-
            Testo della nota allegato alla transazione (autore: Rule Engine).
            Alias chiave: valore.
      description: >-
        Collega una nota automatica dell'analista alla transazione
        corrispondente.
    TransactionRuleActionAddToList:
      type: object
      required:
        - type
        - list_id
      properties:
        type:
          type: string
          enum:
            - add_to_list
        list_id:
          type: string
          format: uuid
          description: Elenco a cui aggiungere il vendor_data del soggetto.
      description: >-
        Aggiungi il vendor_data del soggetto a una blocklist, lista consentita o
        lista personalizzata.
    TransactionRuleActionOpenCase:
      type: object
      required:
        - type
      properties:
        type:
          type: string
          enum:
            - open_case
        blueprint:
          type: string
          format: uuid
          description: >-
            UUID del blueprint del caso; il valore predefinito è il blueprint
            predefinito dell'applicazione.
        grouping:
          type: string
          enum:
            - by_applicant
            - by_rule_and_applicant
          description: >-
            Indica se le corrispondenze ripetute vengono aggregate in un unico
            caso per richiedente o uno per regola+richiedente.
        attach_matched_transaction:
          type: boolean
          description: Collega la transazione corrispondente al caso.
      description: >-
        Apri (o aggiungi a) un caso di indagine. Viene applicata solo la prima
        azione open_case su una regola.
  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.