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

# 거래 모니터링 규칙 목록 조회 API

> Didit 애플리케이션의 KYT 규칙(프리셋 및 사용자 정의)을 소스, 카테고리, 모드, 번들, 검색어로 필터링하고 성과 기준으로 정렬해 조회합니다.

규칙 목록 API 프롬프트
프롬프트를 클립보드에 복사

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

붙여넣을 곳


## OpenAPI

````yaml ko/openapi-25.json GET /v3/transactions/rules/
openapi: 3.0.0
info:
  version: 3.0.0
  title: Didit Verification API
  description: 신분증 인증 API입니다. x-api-key 헤더로 인증합니다.
servers:
  - url: https://verification.didit.me
security: []
tags: []
paths:
  /v3/transactions/rules/:
    get:
      tags:
        - Transactions
      summary: 규칙 목록 조회
      description: >-
        애플리케이션의 거래 모니터링 규칙(사용자 지정 규칙 및 설치한 라이브러리 프리셋)을 나열합니다. 소스, 카테고리, 모드, 번들
        또는 자유 텍스트 검색으로 필터링할 수 있으며, `ordering`(run_count, approved_pct,
        reviewed_pct, declined_pct, latest_triggered_at, title, created_at,
        source, 각각 선택적으로 `-` 접두사 사용 가능)으로 정렬할 수 있습니다.
      operationId: listTransactionRules
      parameters:
        - name: source
          in: query
          required: false
          schema:
            type: string
            enum:
              - PRESET
              - CUSTOM
          description: PRESET 또는 CUSTOM
        - name: category
          in: query
          required: false
          schema:
            type: string
          description: 규칙 카테고리로 필터링합니다.
        - name: mode
          in: query
          required: false
          schema:
            type: string
            enum:
              - ACTIVE
              - DISABLED
              - TEST
          description: ACTIVE, DISABLED 또는 TEST
        - name: bundle
          in: query
          required: false
          schema:
            type: string
          description: 번들별로 프리셋 필터링
        - name: search
          in: query
          required: false
          schema:
            type: string
          description: 제목 및 설명을 대소문자 구분 없이 일치 검색
        - name: ordering
          in: query
          required: false
          schema:
            type: string
          description: 쉼표로 구분된 정렬 필드이며, 기본값은 source,-run_count입니다.
        - name: limit
          in: query
          required: false
          schema:
            type: integer
          description: 페이지 크기
        - name: offset
          in: query
          required: false
          schema:
            type: integer
          description: 페이지 오프셋
      responses:
        '200':
          description: 페이지네이션된 규칙 목록입니다.
          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: 규칙 이름. 삭제되지 않은 규칙 중에서 애플리케이션당 고유해야 하며, 중복 시 400을 반환합니다.
        description:
          type: string
          nullable: true
        category:
          type: string
          description: >-
            그룹화 및 보고에 사용되는 위험 테마(예: 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는 실시간으로 평가합니다. TEST는 규칙 실행을 평가하고 기록하지만 점수나 상태는 변경하지 않는 권장 시작
            모드입니다. DISABLED는 건너뜁니다.
        evaluation_mode:
          type: string
          enum:
            - ALL
            - ANY
          default: ALL
          description: >-
            모든 조건이 일치해야 하는지(ALL), 아니면 하나 이상 일치해야 하는지(ANY) 여부입니다. 조건에
            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: 규칙에 저장된 자유 형식 메타데이터입니다.
        severity:
          type: string
          enum:
            - UNKNOWN
            - LOW
            - MEDIUM
            - HIGH
            - CRITICAL
          nullable: true
          description: 라이브러리 규칙에 의해 전달되는 정보 제공용 심각도이며, 사용자 지정 규칙에서는 설정할 수 없습니다.
        source:
          type: string
          enum:
            - PRESET
            - CUSTOM
          description: >-
            PRESET 규칙은 라이브러리에서 제공되며(설치/제거, 모드 전용 편집), CUSTOM 규칙은 전적으로 사용자가
            정의합니다.
        library_key:
          type: string
          nullable: true
          description: 고정 라이브러리 식별자입니다. 사용자 정의 규칙의 경우 null입니다.
        latest_triggered_at:
          type: string
          format: date-time
          nullable: true
        run_count:
          type: integer
          description: 이 규칙과 일치한 거래 수입니다.
        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: >-
            finance, kyc, travel_rule, user_event 등 거래 유형으로 제한합니다. 비어 있거나 누락된 경우
            = 제한 없음.
        directions:
          type: array
          items:
            type: string
            enum:
              - INBOUND
              - OUTBOUND
          description: 거래 방향으로 제한합니다(작성 시 대소문자 구분 없음).
        action_types:
          type: array
          items:
            type: string
          description: withdrawal, deposit 등 action_type 값으로 제한합니다.
      description: 규칙이 적용되는 거래입니다. 이 세 가지 키만 허용됩니다.
    TransactionRuleCondition:
      type: object
      required:
        - field
        - operator
      properties:
        field:
          type: string
          description: >-
            평가할 거래 필드 경로입니다. 핵심 필드: amount, currency, direction, action_type,
            score, severity, transaction_type, payment_details,
            preferred_currency_amount(amount_in_default_currency로 대체됨),
            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(및 이에 상응하는
            counterparty_payment_method_* 필드), travel_rule_status,
            travel_rule_required, travel_rule_obligations_count,
            counterparty_dd_status(Travel Rule 거래 상대방에 대한 귀하의 결정: APPROVED,
            RESTRICTED 또는 BLOCKED, 해당 브랜드의 결정을 따르는 엔티티),
            counterparty_risk_level(LOW, MEDIUM 또는 HIGH. 자체 거래 상대방 스크리닝에서 플래그가
            지정된 동안에는 HIGH), counterparty_jurisdiction(상대방 VASP의 국가),
            counterparty_responsiveness(RESPONSIVE, UNRESPONSIVE 또는 UNKNOWN),
            subject_days_since_previous_transaction, tags, 그리고 거래 생성 시
            custom_properties로 제출된 모든 키에 대한 custom_values.<key>입니다. 국가 코드 필드는
            ISO-2 또는 ISO-3 형식을 허용하며, 비교 전에 양측 모두 ISO-3 형식으로 정규화됩니다.
        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: >-
            비교 연산자입니다. in/not_in은 포함 여부를 테스트합니다(값은 목록 또는 단일 스칼라일 수 있음).
            contains/not_contains는 문자열 값에 대한 대소문자를 구분하지 않는 하위 문자열 확인입니다.
            contains_any는 문자열 목록을 받아서 필드 값의 대소문자를 구분하지 않는 하위 문자열과 하나라도 일치하면 참이
            됩니다. regex는 필드에 값 패턴을 대조합니다. fuzzy_match는 필수 `score` 임계값(0-100)을
            사용하여 값 문자열과 비교합니다. gt/gte/lt/lte는 어느 한쪽이라도 누락된 경우 일치하지 않습니다.
            exists/is_not_empty/is_not_null(별칭) 및
            not_exists/is_empty/is_null(별칭)은 `value`를 무시하는 존재 여부 확인입니다.
        value:
          description: >-
            비교 값입니다. 형태는 연산자와 value_type에 따라 달라집니다. 존재 여부 확인 연산자에서는 생략하세요. 다른 모든
            연산자에는 `null`이나 빈 목록이 아닌 값이 필요하며, 그렇지 않으면 규칙이 `400`으로 거부됩니다.
            `contains_any`에는 문자열 목록이 필요하고, `contains`, `not_contains`, `regex`에는
            단일 문자열이 필요합니다.
        value_type:
          type: string
          enum:
            - list
            - field
            - relative_date
          description: >-
            선택 사항인 값 해석 방식입니다. `list`: 값은 목록 UUID이며 목록의 항목이 비교 값이 됩니다. `field`:
            값은 다른 필드 경로이며 필드 대 필드로 비교됩니다. `relative_date`: 값은 상대 날짜 객체입니다(예:
            {"direction": "past", "unit": "days", "amount": 30}).
        score:
          type: number
          minimum: 0
          maximum: 100
          description: 'operator가 fuzzy_match일 때 필수: 0-100 유사도 임계값입니다.'
        group_index:
          type: integer
          description: >-
            선택적 그룹화 로직입니다. 조건에 group_index가 포함되어 있으면 동일한 인덱스를 공유하는 조건들이 그룹을
            형성하며, 그룹화된 평가가 evaluation_mode를 대체합니다.
        group_logic:
          type: string
          enum:
            - AND
            - OR
          default: AND
          description: 그룹 내에서 조건들이 결합되는 방식입니다.
        groups_logic:
          type: string
          enum:
            - AND
            - OR
          default: OR
          description: 그룹 간에 그룹 결과가 결합되는 방식입니다. 첫 번째 조건에서 읽습니다.
      description: 조건은 평가 중인 거래만 읽으며, 집계 윈도우를 필터링하지 않습니다.
    TransactionRuleAggregation:
      type: object
      required:
        - value
      properties:
        metric:
          type: string
          enum:
            - count
            - sum
            - max
            - min
            - avg
            - distinct_count
          default: count
          description: 일치하는 과거 거래가 집계되는 방식입니다. unique_count는 distinct_count의 별칭으로 허용됩니다.
        field:
          type: string
          default: amount
          description: sum/max/min/avg/distinct_count로 집계된 필드입니다. count의 경우 무시됩니다.
        operator:
          type: string
          enum:
            - eq
            - ne
            - gt
            - gte
            - lt
            - lte
          default: eq
          description: 계산된 지표에 적용된 비교입니다.
        value:
          type: number
          description: 계산된 지표가 비교되는 임계값입니다.
        window:
          type: string
          pattern: ^\d+(m|h|d)$
          default: 1d
          description: >-
            거래의 txn_date로 끝나는 룩백 윈도우: <N>m(월이 아닌 분 단위), <N>h(시간) 또는 <N>d(일), 예:
            30m, 24h, 7d, 30d.
        filters:
          type: object
          additionalProperties: true
          description: >-
            집계할 과거 거래를 좁힙니다. 키는 조건 필드 카탈로그의 필드 경로이며, "__current__" 값은 평가 중인 거래의
            동일한 필드 값으로 확인됩니다(예: {"subject_vendor_data": "__current__"}는 윈도우 범위를
            동일한 주체로 한정함). 목록 값은 멤버십을 의미합니다. 그룹화된 값이 없는 레코드는 함께 그룹화되지 않습니다. 평가 중인
            거래에 "__current__" 필드에 대한 값이 없는 경우(거래 상대방 없음, 기기 지문 없음), 연산자에 관계없이
            집계가 일치하지 않습니다. 필터는 일치 여부 또는 멤버십으로만 비교합니다. lt/gte 필터가 없으므로 "10,000
            미만의 과거 거래"와 같은 범위는 여기서 표현할 수 없습니다. 대신 메트릭에 범위를 지정하세요(연산자가 lt인 메트릭
            max는 윈도우 내의 모든 거래를 임계값 미만으로 유지함).
      description: >-
        윈도우 내 애플리케이션의 과거 거래에 대한 빈도 검사(velocity check)입니다. evaluation_mode와 관계없이
        규칙이 일치하려면 모든 집계 항목이 일치해야 합니다. 집계는 윈도우만 제한하며, 평가 대상 거래는 범위와 조건에 의해 제한되므로
        규칙에 필요한 경우 양쪽 모두에 direction, currency 또는 transaction_type을 반복해 지정해야 합니다.
    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: >-
        규칙 작업 하나입니다. 하나의 규칙에 여러 작업이 포함될 수 있으며, 규칙이 일치할 때 모두 함께 적용됩니다. TEST 모드의
        규칙은 어떤 작업도 적용하지 않고 수행되었을 내용만 기록합니다.
    TransactionRuleActionAddScore:
      type: object
      required:
        - type
        - value
      properties:
        type:
          type: string
          enum:
            - add_score
        value:
          type: integer
          description: 거래의 위험 점수에 추가된 점수입니다. 음수일 수 있습니다.
      description: 거래의 누적 위험 점수에 점수를 추가합니다. 총합에 따라 애플리케이션의 검토/거부 임계값을 통해 상태가 결정됩니다.
    TransactionRuleActionChangeStatus:
      type: object
      required:
        - type
        - value
      properties:
        type:
          type: string
          enum:
            - change_status
        value:
          type: string
          enum:
            - APPROVED
            - IN_REVIEW
            - DECLINED
            - AWAITING_USER
          description: '점수와 관계없이 즉시 설정할 상태입니다. 별칭 키: status.'
        workflow_id:
          type: string
          format: uuid
          description: >-
            값이 AWAITING_USER일 때 필수: 대상자가 완료하도록 요청받은 인증 워크플로입니다. 별칭 키:
            remediation_workflow_id. 규칙이 트리거되면 Didit은 대상자를 위한 호스팅 문제 해결 세션을
            생성합니다.
      description: 거래 상태를 직접 설정합니다. 일치하는 규칙들 사이에서 DECLINED가 항상 우선 적용됩니다.
    TransactionRuleActionAddTags:
      type: object
      required:
        - type
      properties:
        type:
          type: string
          enum:
            - add_tags
        tag_uuid:
          type: string
          format: uuid
          description: 연결할 기존 애플리케이션 태그입니다.
        tag_name:
          type: string
          description: >-
            연결할 태그 이름입니다. 처음 사용할 때 생성됩니다(대문자로 저장됨). tag_uuid 또는 tag_name을
            제공하십시오.
        tag_color:
          type: string
          description: 'tag_name으로 새 태그를 생성할 때 사용되는 16진수 색상 코드입니다(예: #007AFE).'
      description: 일치하는 거래에 애플리케이션 태그를 첨부합니다.
    TransactionRuleActionAddNote:
      type: object
      required:
        - type
        - note
      properties:
        type:
          type: string
          enum:
            - add_note
        note:
          type: string
          description: '거래에 첨부된 메모 텍스트입니다(작성자: Rule Engine). 별칭 키: 값.'
      description: 일치하는 거래에 자동 분석가 메모를 첨부합니다.
    TransactionRuleActionAddToList:
      type: object
      required:
        - type
        - list_id
      properties:
        type:
          type: string
          enum:
            - add_to_list
        list_id:
          type: string
          format: uuid
          description: 주체의 vendor_data를 추가할 목록입니다.
      description: 대상자의 vendor_data를 차단 목록, 허용 목록 또는 사용자 지정 목록에 추가합니다.
    TransactionRuleActionOpenCase:
      type: object
      required:
        - type
      properties:
        type:
          type: string
          enum:
            - open_case
        blueprint:
          type: string
          format: uuid
          description: 케이스 블루프린트 UUID. 기본값은 애플리케이션의 기본 블루프린트입니다.
        grouping:
          type: string
          enum:
            - by_applicant
            - by_rule_and_applicant
          description: 반복 일치 항목이 신청자당 하나의 케이스로 통합되는지, 아니면 규칙+신청자당 하나로 통합되는지 여부입니다.
        attach_matched_transaction:
          type: boolean
          description: 일치하는 거래를 케이스에 첨부합니다.
      description: 조사 케이스를 열거나 기존 케이스에 추가합니다. 규칙에서 첫 번째 open_case 작업만 적용됩니다.
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: >-
        Business Console의 Developers -> API keys에서 발급받은 귀하 애플리케이션의 API 키입니다. 기본
        키는 전체 접근 권한을 갖습니다. 이름이 지정된 키는 리소스별 none, read, write 범위로 권한을 제한할 수 있으며
        특정 워크플로나 승인된 세션, IP 주소 목록, 만료일 등으로 제한할 수도 있습니다. 401은 키가 잘못되었거나 폐기되었거나
        만료되었음을 의미합니다. 403은 키가 전송되지 않았거나, 키에 해당 리소스나 작업에 대한 접근 권한이 없거나, 요청이 허용된
        IP 목록 외부 주소에서 발생했음을 의미합니다. 세션 경로에서의 404는 해당 세션이 키의 허용 워크플로 또는 상태 범위를
        벗어났음을 의미합니다. 미디어 접근 권한이 없는 키는 이미지, 비디오, PDF URL을 null로 수신하며, 세션 write
        권한이 없는 키는 세션 링크와 token을 null로 수신합니다.
        https://docs.didit.me/console/api-keys 를 참고하십시오.

````

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