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

# 사용자 AML 모니터링 일괄 설정 API

> 한 번의 호출로 여러 사용자의 지속적인 AML 모니터링을 켜거나 끕니다. 비용 추정 드라이런, 폴링 가능한 작업, 사용자별 결과를 제공합니다. Didit 제공.



사용자 AML 모니터링 전환 프롬프트
        프롬프트를 클립보드에 복사



      
      

\<pre>

\`Goal: Enable or disable ongoing AML monitoring for one or many Didit User entities in a single call, with the same semantics as the Business Console. Preview the cost first with estimate_only, then run the change and read the per-user outcome.

Endpoint: POST https://verification.didit.me/v3/users/aml-monitoring/
Auth header: x-api-key: <DIDIT_API_KEY>
Content-Type: application/json

Request body:
\- is_enabled: boolean (required) - true to enable monitoring, false to disable it.
\- estimate_only: boolean (default false) - when true, returns the cost preview and performs NO writes: no screening, no billing, no job.
\- vendor_data_list: string[] - your own identifiers, matched exactly as sent.
\- didit_internal_id_list: string[] (UUIDs) - the didit_internal_id returned by the create, get and list endpoints.
Provide at least one list; the two are OR'd. At most 1000 identifiers per request across both lists - split larger selections into several calls.

Semantics:
\- One monitored screening per user: a person who verified several times is monitored and billed once. Disabling turns monitoring off across all of the user's screenings.
\- Users without any AML screening are screened first (billed as a regular AML screening) when the profile has a full name, date of birth and country; otherwise the user is reported as skipped_no_identity_data.
\- Blocked users are skipped (skipped_blocked). Sandbox applications never create screenings (skipped_sandbox).
\- Enabling is refused with 403 when the organization balance does not cover the estimate; the response carries the estimate.

curl (estimate first):
curl -X POST 'https://verification.didit.me/v3/users/aml-monitoring/' \
-H 'x-api-key: YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{"is_enabled": true, "estimate_only": true, "vendor_data_list": ["user-123", "user-456"]}'

Response 200 (estimate_only):
\{
"users_total": 2, "already_enabled": 0, "with_existing_aml": 1, "needing_screening": 1,
"skipped_no_identity_data": 0, "skipped_blocked": 0,
"estimated_screening_cost_usd": 0.2, "estimated_annual_monitoring_cost_usd": 0.14,
"balance_sufficient": true, "unmatched": []
}

curl (enable):
curl -X POST 'https://verification.didit.me/v3/users/aml-monitoring/' \
-H 'x-api-key: YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{"is_enabled": true, "vendor_data_list": ["user-123", "user-456"]}'

Response 200 (20 users or fewer - processed inline, already COMPLETED) or 202 (more than 20 - running in the background):
\{
"job_id": "<uuid>", "status": "COMPLETED", "is_enabled": true, "target_type": "user",
"total": 2, "processed": 2,
"outcomes": {"enabled": 1, "screened_and_enabled": 1, "already_enabled": 0, "disabled": 0, "skipped_no_identity_data": 0, "skipped_blocked": 0, "skipped_sandbox": 0, "failed_provider": 0, "failed_insufficient_balance": 0},
"results": [
\{"didit_internal_id": "<uuid>", "vendor_data": "user-123", "outcome": "enabled"},
\{"didit_internal_id": "<uuid>", "vendor_data": "user-456", "outcome": "screened_and_enabled"}
],
"estimate": { ...same shape as above, without unmatched... },
"unmatched": [],
"error": null,                     // generic message when status is FAILED
"created_at": "<datetime>", "completed_at": "<datetime>"
}
On 202, poll GET /v3/aml-monitoring/jobs/{job_id}/ every couple of seconds until status is COMPLETED or FAILED; results fills in as users are processed.

Per-user outcome values: enabled, screened_and_enabled, already_enabled, disabled, skipped_no_identity_data, skipped_blocked, skipped_sandbox, failed_provider, failed_insufficient_balance.

Failure modes:
\- 400 - is_enabled missing, no selector, or more than 1000 identifiers across both lists.
A selection that matches nothing is NOT an error: the job completes with total 0 and every identifier is listed under unmatched (same convention as the batch delete endpoints).
\- 401 - missing/invalid x-api-key.
\- 403 - insufficient balance to enable monitoring for this selection (body: error + estimate).

Idempotency: re-sending an enable returns already_enabled for users that are already monitored, with no second screening and no second bill. Disabling an unmonitored user returns disabled and changes nothing.

For end-to-end Didit integration, paste in the full prompt at /integration/integration-prompt.`

\</pre>



      
      

붙여넣을 곳

## 개요선택한 [사용자 엔터티](https://docs.didit.me/ko/entities/users/overview.md)에 대해 [지속적인 AML 모니터링](https://docs.didit.me/ko/core-technology/aml-screening/continuous-monitoring-aml-screening.md)을 활성화하거나 비활성화합니다. 이는 비즈니스 콘솔에서 **AML 지속적인 모니터링** 작업을 수행하는 것과 정확히 같습니다. 콘솔과 이 endpoint는 동일한 기본 작업을 실행하므로 규칙, 결제, 결과가 동일합니다.먼저 `estimate_only: true`를 전송하여 선택된 사용자 수, 새 AML 스크리닝이 필요한 사용자 수, 일회성 스크리닝 비용, 연간 모니터링 비용을 확인하십시오. 드라이런에서는 아무것도 기록되지 않습니다.## 사용 시기- **프로그래밍 방식 온보딩**: API를 통해 가져오거나 생성한 사용자에 대해 수동으로 다시 스크리닝하지 않고 모니터링을 켭니다.
- **오프보딩**: 플랫폼을 떠난 사용자에 대해 모니터링과 연간 갱신을 중지합니다.
- **비용 관리**: 선택 항목을 확정하기 전에 정확한 비용 영향을 미리 확인합니다.## 선택 항목 처리 방식- **사용자당 모니터링 스크리닝 1건.** 여러 번 인증한 사용자는 한 번만 모니터링되며 한 번만 청구됩니다. 비활성화하면 해당 사용자의 모든 스크리닝에 대한 모니터링이 꺼집니다.
- **AML 스크리닝이 없는 사용자는 먼저 스크리닝됩니다.** Didit는 이러한 사용자에 대해 새 AML 인증을 생성하고(사용자의 **인증** 탭에 표시됨), 일반 AML 스크리닝과 같이 청구한 뒤 해당 인증에 모니터링을 활성화합니다. 이를 위해서는 사용자의 성명, 생년월일, 국가가 필요합니다. 이 중 하나라도 없는 사용자는 조용히 제외되지 않고 `skipped_no_identity_data`로 보고됩니다.
- **차단된 사용자는 건너뜁니다**(`skipped_blocked`). 샌드박스 애플리케이션은 스크리닝을 생성하지 않습니다(`skipped_sandbox`).
- **잔액은 미리 확인됩니다.** 잔액이 예상 비용을 충당하지 못하면 활성화 요청이 `403`으로 거부되며, 응답에는 예상 비용이 포함되어 충전할 금액을 알 수 있습니다.
- **연간 갱신.** 새로 모니터링되는 사용자는 다음 갱신일에 연간 모니터링 가격이 청구됩니다. 이 날짜는 콘솔의 **지속적인 모니터링** 열에 표시되는 날짜와 같습니다. 비활성화하면 갱신이 중지되지만, 이미 청구된 기간은 환불되지 않습니다.## 선택 항목과 배치 크기`vendor_data_list`, `didit_internal_id_list` 중 하나 또는 둘 다로 사용자를 선택합니다. 두 목록은 OR 조건으로 결합됩니다. 하나의 요청에는 두 목록을 합쳐 최대 **1000개의 식별자**를 포함할 수 있습니다. 애플리케이션에서 일치하는 사용자가 없는 식별자는 전송된 그대로 `unmatched`에 반환되며, 요청을 실패시키지 않습니다. 일치하는 사용자가 없는 선택은 `total: 0`인 빈 작업으로 완료되며, 모든 식별자가 나열됩니다. 이는 일괄 삭제 endpoint와 같은 방식입니다.## 인라인 처리 또는 백그라운드 처리**20명 이하**의 사용자를 선택하면 인라인으로 처리되며, 호출은 완료된 작업과 함께 `200`을 반환합니다. 더 큰 선택은 `PENDING` 작업과 함께 `202`를 반환합니다. `status`가 `COMPLETED` 또는 `FAILED`가 될 때까지 [AML 모니터링 작업 조회](https://docs.didit.me/ko/management-api/aml-monitoring/get-job.md)를 폴링하십시오. 어느 경우든 작업에는 사용자별 `results` 항목이 하나씩 `outcome`과 함께 포함됩니다.| `outcome` | 의미 |
| - | - |
| `enabled` | 기존 AML 스크리닝에서 모니터링이 활성화되었습니다. |
| `screened_and_enabled` | 새 AML 스크리닝이 생성되어(청구됨) 모니터링이 활성화되었습니다. |
| `already_enabled` | 모니터링이 이미 활성 상태였습니다. 변경되지 않았으며 청구되지 않았습니다. |
| `disabled` | 사용자의 모든 스크리닝에서 모니터링이 꺼졌습니다. |
| `skipped_no_identity_data` | 스크리닝에 필요한 성명, 생년월일 또는 국가가 사용자에게 없습니다. |
| `skipped_blocked` | 사용자가 차단되었습니다. |
| `skipped_sandbox` | 샌드박스 애플리케이션입니다. 스크리닝이 생성되지 않습니다. |
| `failed_provider` | 스크리닝을 완료할 수 없습니다. 나중에 다시 시도하십시오. |
| `failed_insufficient_balance` | 작업이 실행되는 동안 잔액이 소진되었습니다. |## webhook모니터링 전환 자체는 webhook을 전송하지 않습니다. 모니터링이 켜지면 재스크리닝 시 [지속적인 AML 모니터링](https://docs.didit.me/ko/core-technology/aml-screening/continuous-monitoring-aml-screening.md)에 설명된 일반 `status.updated` 및 `data.updated` 이벤트가 계속 발생합니다.## 권한애플리케이션의 활성 API 키는 모두 이 endpoint를 호출할 수 있습니다. Didit API 키는 **역할이 아닌 애플리케이션 범위**입니다. 콘솔의 [역할 및 권한](https://docs.didit.me/ko/console/roles-permissions.md)은 콘솔에서 *사람*이 수행할 수 있는 작업을 결정하며, Management API 트래픽에 대해서는 평가되지 않습니다.## 관련 문서- [AML 모니터링 작업 조회](https://docs.didit.me/ko/management-api/aml-monitoring/get-job.md)
- [기업에 대한 AML 모니터링 전환](https://docs.didit.me/ko/management-api/aml-monitoring/toggle-businesses.md)
- [지속적인 AML 모니터링](https://docs.didit.me/ko/core-technology/aml-screening/continuous-monitoring-aml-screening.md)
- [AML 스크리닝 API](https://docs.didit.me/ko/standalone-apis/aml-screening.md)
- [사용자 목록 조회](https://docs.didit.me/ko/management-api/users/list.md)


## OpenAPI

````yaml ko/openapi-25.json POST /v3/users/aml-monitoring/
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/users/aml-monitoring/:
    post:
      tags:
        - AML Ongoing Monitoring
      summary: 사용자에 대한 지속적인 AML 모니터링 활성화 또는 비활성화
      description: >-
        선택한 사용자에 대해 Business Console과 동일한 의미 체계로 지속적인 AML 모니터링을 켜거나 끕니다. 사용자당
        정확히 하나의 모니터링되는 AML 스크리닝이 유지되므로, 여러 번 인증된 프로필도 한 번만 모니터링되고 비용이 청구됩니다.
        비활성화하면 프로필의 모든 스크리닝에 걸쳐 모니터링이 꺼집니다. AML 스크리닝이 전혀 없는 사용자는 필요한 성명, 생년월일 및
        국가가 있는 경우 먼저 스크리닝됩니다(일반 AML 스크리닝으로 청구됨). 그렇지 않은 경우
        `skipped_no_identity_data`로 보고됩니다.


        데이터를 쓰지 않고 개수와 비용을 미리 보려면 `estimate_only: true`로 설정하십시오. 20개 이하의 프로필 선택
        항목은 인라인으로 처리되어 완료된 작업과 함께 `200`을 반환합니다. 더 큰 선택 항목은 `202`를 반환하고 백그라운드에서
        실행되므로 반환된 `job_id`를 사용하여 [AML 모니터링 작업
        조회](#get-/v3/aml-monitoring/jobs/-job_id-/)를 폴링하십시오. 조직 잔액이 예상 금액을 충당하지
        못하는 경우 활성화가 `403`으로 거부됩니다. 일치하는 대상이 없는 식별자는 `unmatched`에 나열되며 요청을 실패
        처리하지 않습니다. 일치하는 항목이 없는 선택은 빈 작업(`total` 0)으로 완료되며, 이는 일괄 삭제 endpoint와
        동일한 규칙입니다.
      operationId: toggle_users_aml_monitoring
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - is_enabled
              description: >-
                `vendor_data_list`, `didit_internal_id_list` 또는 둘 다를 사용하여 사용자를
                선택합니다(두 목록은 OR 조건으로 결합됨). 두 목록을 합쳐 요청당 최대 1,000개의 식별자까지 가능합니다.
              properties:
                is_enabled:
                  type: boolean
                  description: 모니터링을 활성화하려면 true, 비활성화하려면 false입니다.
                estimate_only:
                  type: boolean
                  default: false
                  description: true인 경우, 예상 비용을 반환하며 쓰기 작업(스크리닝, 결제, 작업)을 수행하지 않습니다.
                vendor_data_list:
                  type: array
                  items:
                    type: string
                  description: 상태를 전환할 사용자들의 귀하 고유 식별자 목록이며, 전송된 내용과 정확히 일치합니다.
                didit_internal_id_list:
                  type: array
                  items:
                    type: string
                    format: uuid
                  description: >-
                    토글할 사용자의 Didit 내부 ID입니다. 생성, 조회 및 목록 endpoint에서 반환된
                    `didit_internal_id`입니다.
            examples:
              Estimate first:
                summary: 쓰기 작업 없이 비용 미리보기
                value:
                  is_enabled: true
                  estimate_only: true
                  vendor_data_list:
                    - user-123
                    - user-456
              Enable:
                summary: 사용자 2명에 대한 모니터링 활성화
                value:
                  is_enabled: true
                  vendor_data_list:
                    - user-123
                    - user-456
              Disable:
                summary: Didit 내부 id로 모니터링 비활성화
                value:
                  is_enabled: false
                  didit_internal_id_list:
                    - 3f1c0d3e-8f0a-4c2e-9a3d-9b1f5f4a2c11
      responses:
        '200':
          description: 견적(`estimate_only`가 true인 경우) 또는 인라인으로 처리된 선택 항목에 대한 완료된 작업입니다.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AMLMonitoringToggleResult'
        '202':
          description: >-
            대규모 선택 항목은 백그라운드에서 실행됩니다. `job_id`로 작업 endpoint를 폴링하세요. 프로필이 처리됨에 따라
            `results`가 채워집니다.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AMLMonitoringJob'
        '400':
          description: >-
            유효성 검사 오류: `is_enabled`가 누락되었거나, 선택자가 없거나, 두 목록을 합쳐 식별자가 1000개를
            초과합니다.
        '401':
          description: API 키가 누락되었거나 유효하지 않습니다.
        '403':
          description: >-
            이 선택 항목에 대한 모니터링을 활성화하기 위한 잔액이 부족합니다. 적절한 금액을 충전할 수 있도록 응답에
            `estimate`가 포함됩니다.
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                  estimate:
                    type: object
                    description: 예상 비용입니다. estimate_only가 true인 경우 직접 반환됩니다(아무것도 기록되지 않음).
                    properties:
                      users_total:
                        type: integer
                        description: 선택 조건과 일치하는 프로필 수입니다.
                      already_enabled:
                        type: integer
                        description: 이미 모니터링 중인 프로필(활성화 시 수행할 작업 없음. 비활성화 시 해제되는 대상임).
                      with_existing_aml:
                        type: integer
                        description: 기존 AML 스크리닝이 모니터링 상태로 전환될 프로필 수(신규 스크리닝 없음).
                      needing_screening:
                        type: integer
                        description: AML 스크리닝 이력이 없어 먼저 스크리닝을 진행할 프로필 수(일반 AML 스크리닝으로 청구됨).
                      skipped_no_identity_data:
                        type: integer
                        description: 신원 데이터가 누락되어 스크리닝할 수 없는 프로필 수입니다.
                      skipped_blocked:
                        type: integer
                        description: 건너뛸 차단된 사용자 수입니다(기업의 경우 항상 0).
                      estimated_screening_cost_usd:
                        type: number
                        example: 0.2
                        description: 새 스크리닝의 일회성 비용입니다.
                      estimated_annual_monitoring_cost_usd:
                        type: number
                        example: 0.07
                        description: 모니터링 대상이 될 프로필의 연간 모니터링 비용입니다.
                      balance_sufficient:
                        type: boolean
                        description: 조직 잔액이 스크리닝과 첫해 모니터링 비용을 충당할 수 있는지 여부입니다.
      security:
        - ApiKeyAuth: []
      x-codeSamples:
        - lang: curl
          label: curl
          source: >-
            curl -X POST
            'https://verification.didit.me/v3/users/aml-monitoring/' \
              -H 'x-api-key: YOUR_API_KEY' \
              -H 'Content-Type: application/json' \
              -d '{"is_enabled": true, "vendor_data_list": ["user-123", "user-456"]}'
        - lang: python
          label: Python
          source: |-
            from didit import Didit

            # Reads DIDIT_API_KEY.
            client = Didit()

            result = client.users.set_aml_monitoring(
                is_enabled=True,
                estimate_only=True,
                vendor_data_list=["user-123", "user-456"],
            )
            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.users.setAmlMonitoring({
              is_enabled: true,
              estimate_only: true,
              vendor_data_list: ["user-123", "user-456"],
            });
            console.log(result);
        - lang: go
          label: Go
          source: "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Users.SetAMLMonitoring(ctx, didit.UsersSetAMLMonitoringParams{\n\tIsEnabled:      true,\n\tEstimateOnly:   didit.Bool(true),\n\tVendorDataList: didit.Some([]string{\"user-123\", \"user-456\"}),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
        - lang: java
          label: Java
          source: >-
            import java.util.List;

            import me.didit.Didit;

            import me.didit.types.UsersSetAmlMonitoringParams;


            // Reads DIDIT_API_KEY.

            Didit client = new Didit();


            var result =
            client.users().setAmlMonitoring(UsersSetAmlMonitoringParams.builder()
                    .isEnabled(true)
                    .estimateOnly(true)
                    .vendorDataList(List.of("user-123", "user-456"))
                    .build());
            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->users->setAmlMonitoring([
                'is_enabled' => true,
                'estimate_only' => true,
                'vendor_data_list' => ['user-123', 'user-456'],
            ]);
            print_r($result->toArray());
        - lang: ruby
          label: Ruby
          source: |-
            require "didit"

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

            result = didit.users.set_aml_monitoring(
              is_enabled: true,
              estimate_only: true,
              vendor_data_list: ["user-123", "user-456"]
            )
            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.Users.SetAmlMonitoringAsync(new
            UsersSetAmlMonitoringParams

            {
                IsEnabled = true,
                EstimateOnly = true,
                VendorDataList = new string[] { "user-123", "user-456" },
            });

            Console.WriteLine(JsonSerializer.Serialize(result));
components:
  schemas:
    AMLMonitoringToggleResult:
      oneOf:
        - type: object
          required:
            - users_total
            - already_enabled
            - with_existing_aml
            - needing_screening
            - skipped_no_identity_data
            - skipped_blocked
            - estimated_screening_cost_usd
            - estimated_annual_monitoring_cost_usd
            - balance_sufficient
            - unmatched
          description: 예상 비용입니다. estimate_only가 true인 경우 직접 반환됩니다(아무것도 기록되지 않음).
          properties:
            users_total:
              type: integer
              description: 선택 조건과 일치하는 프로필 수입니다.
            already_enabled:
              type: integer
              description: 이미 모니터링 중인 프로필(활성화 시 수행할 작업 없음. 비활성화 시 해제되는 대상임).
            with_existing_aml:
              type: integer
              description: 기존 AML 스크리닝이 모니터링 상태로 전환될 프로필 수(신규 스크리닝 없음).
            needing_screening:
              type: integer
              description: AML 스크리닝 이력이 없어 먼저 스크리닝을 진행할 프로필 수(일반 AML 스크리닝으로 청구됨).
            skipped_no_identity_data:
              type: integer
              description: 신원 데이터가 누락되어 스크리닝할 수 없는 프로필 수입니다.
            skipped_blocked:
              type: integer
              description: 건너뛸 차단된 사용자 수입니다(기업의 경우 항상 0).
            estimated_screening_cost_usd:
              type: number
              example: 0.2
              description: 새 스크리닝의 일회성 비용입니다.
            estimated_annual_monitoring_cost_usd:
              type: number
              example: 0.07
              description: 모니터링 대상이 될 프로필의 연간 모니터링 비용입니다.
            balance_sufficient:
              type: boolean
              description: 조직 잔액이 스크리닝과 첫해 모니터링 비용을 충당할 수 있는지 여부입니다.
            unmatched:
              type: array
              items:
                type: string
              description: 이 애플리케이션의 어떤 프로필과도 일치하지 않는 요청의 식별자로, 전송된 형태 그대로입니다.
        - type: object
          required:
            - job_id
            - status
            - is_enabled
            - target_type
            - total
            - processed
            - outcomes
            - results
            - error
            - created_at
            - completed_at
            - estimate
            - unmatched
          properties:
            job_id:
              type: string
              format: uuid
            status:
              type: string
              enum:
                - PENDING
                - PROCESSING
                - COMPLETED
                - FAILED
            is_enabled:
              type: boolean
              description: 작업이 모니터링을 활성화하면 true, 비활성화하면 false입니다.
            target_type:
              type: string
              enum:
                - user
                - business
              description: 작업이 전환하는 프로필 패밀리입니다.
            total:
              type: integer
              description: 작업이 처리하는 프로필 수입니다.
            processed:
              type: integer
              description: 지금까지 처리된 프로필 수입니다.
            outcomes:
              type: object
              description: >-
                레코드별 결과 카운터입니다. 선택된 모든 프로필은 정확히 하나의 카운터에 해당하며, 암묵적으로 건너뛰는 프로필은
                없습니다.
              properties:
                enabled:
                  type: integer
                  description: 기존 AML 스크리닝에서 모니터링이 활성화되었습니다.
                screened_and_enabled:
                  type: integer
                  description: 새로운 AML 스크리닝이 생성되었으며(청구됨) 모니터링이 활성화되었습니다.
                already_enabled:
                  type: integer
                  description: 모니터링이 이미 활성화되어 있었으며, 변경된 사항이 없고 청구되지 않았습니다.
                disabled:
                  type: integer
                  description: 프로필의 모든 AML 스크리닝에서 모니터링이 꺼졌습니다.
                skipped_no_identity_data:
                  type: integer
                  description: '건너뜀: 프로필에 스크리닝에 필요한 성명, 생년월일, 국가(사용자) 또는 이름(기업)이 없습니다.'
                skipped_blocked:
                  type: integer
                  description: '건너뜀: 사용자가 차단되었습니다.'
                skipped_sandbox:
                  type: integer
                  description: '건너뜀: 샌드박스 애플리케이션으로 스크리닝이 생성되지 않습니다.'
                failed_provider:
                  type: integer
                  description: 스크리닝을 완료할 수 없습니다. 나중에 다시 시도하세요.
                failed_insufficient_balance:
                  type: integer
                  description: 작업이 실행되는 동안 잔액이 소진되었습니다.
            results:
              type: array
              description: >-
                처리 순서에 따른 처리된 프로필당 항목 1개입니다. 작업이 실행되는 동안 증가하며 상태가 COMPLETED가 되면
                완료됩니다. API를 통해 시작된 작업에 대해 기록됩니다.
              items:
                type: object
                properties:
                  didit_internal_id:
                    type: string
                    format: uuid
                    description: 프로필의 Didit 내부 ID입니다.
                  vendor_data:
                    type: string
                    nullable: true
                    description: 프로필에 대한 귀하 고유의 식별자입니다.
                  outcome:
                    type: string
                    enum:
                      - enabled
                      - screened_and_enabled
                      - already_enabled
                      - disabled
                      - skipped_no_identity_data
                      - skipped_blocked
                      - skipped_sandbox
                      - failed_provider
                      - failed_insufficient_balance
            error:
              type: string
              nullable: true
              description: 상태가 FAILED일 때의 일반 실패 메시지입니다. 자세한 원인은 플랫폼 측에 보관됩니다.
            created_at:
              type: string
              format: date-time
            completed_at:
              type: string
              format: date-time
              nullable: true
            estimate:
              type: object
              description: 예상 비용입니다. estimate_only가 true인 경우 직접 반환됩니다(아무것도 기록되지 않음).
              properties:
                users_total:
                  type: integer
                  description: 선택 조건과 일치하는 프로필 수입니다.
                already_enabled:
                  type: integer
                  description: 이미 모니터링 중인 프로필(활성화 시 수행할 작업 없음. 비활성화 시 해제되는 대상임).
                with_existing_aml:
                  type: integer
                  description: 기존 AML 스크리닝이 모니터링 상태로 전환될 프로필 수(신규 스크리닝 없음).
                needing_screening:
                  type: integer
                  description: AML 스크리닝 이력이 없어 먼저 스크리닝을 진행할 프로필 수(일반 AML 스크리닝으로 청구됨).
                skipped_no_identity_data:
                  type: integer
                  description: 신원 데이터가 누락되어 스크리닝할 수 없는 프로필 수입니다.
                skipped_blocked:
                  type: integer
                  description: 건너뛸 차단된 사용자 수입니다(기업의 경우 항상 0).
                estimated_screening_cost_usd:
                  type: number
                  example: 0.2
                  description: 새 스크리닝의 일회성 비용입니다.
                estimated_annual_monitoring_cost_usd:
                  type: number
                  example: 0.07
                  description: 모니터링 대상이 될 프로필의 연간 모니터링 비용입니다.
                balance_sufficient:
                  type: boolean
                  description: 조직 잔액이 스크리닝과 첫해 모니터링 비용을 충당할 수 있는지 여부입니다.
            unmatched:
              type: array
              items:
                type: string
              description: >-
                이 애플리케이션의 어떤 프로필과도 일치하지 않는 요청의 식별자로, 전송된 형태 그대로입니다. 작업의 일부가
                아닙니다.
    AMLMonitoringJob:
      type: object
      properties:
        job_id:
          type: string
          format: uuid
        status:
          type: string
          enum:
            - PENDING
            - PROCESSING
            - COMPLETED
            - FAILED
        is_enabled:
          type: boolean
          description: 작업이 모니터링을 활성화하면 true, 비활성화하면 false입니다.
        target_type:
          type: string
          enum:
            - user
            - business
          description: 작업이 전환하는 프로필 패밀리입니다.
        total:
          type: integer
          description: 작업이 처리하는 프로필 수입니다.
        processed:
          type: integer
          description: 지금까지 처리된 프로필 수입니다.
        outcomes:
          type: object
          description: 레코드별 결과 카운터입니다. 선택된 모든 프로필은 정확히 하나의 카운터에 해당하며, 암묵적으로 건너뛰는 프로필은 없습니다.
          properties:
            enabled:
              type: integer
              description: 기존 AML 스크리닝에서 모니터링이 활성화되었습니다.
            screened_and_enabled:
              type: integer
              description: 새로운 AML 스크리닝이 생성되었으며(청구됨) 모니터링이 활성화되었습니다.
            already_enabled:
              type: integer
              description: 모니터링이 이미 활성화되어 있었으며, 변경된 사항이 없고 청구되지 않았습니다.
            disabled:
              type: integer
              description: 프로필의 모든 AML 스크리닝에서 모니터링이 꺼졌습니다.
            skipped_no_identity_data:
              type: integer
              description: '건너뜀: 프로필에 스크리닝에 필요한 성명, 생년월일, 국가(사용자) 또는 이름(기업)이 없습니다.'
            skipped_blocked:
              type: integer
              description: '건너뜀: 사용자가 차단되었습니다.'
            skipped_sandbox:
              type: integer
              description: '건너뜀: 샌드박스 애플리케이션으로 스크리닝이 생성되지 않습니다.'
            failed_provider:
              type: integer
              description: 스크리닝을 완료할 수 없습니다. 나중에 다시 시도하세요.
            failed_insufficient_balance:
              type: integer
              description: 작업이 실행되는 동안 잔액이 소진되었습니다.
        results:
          type: array
          description: >-
            처리 순서에 따른 처리된 프로필당 항목 1개입니다. 작업이 실행되는 동안 증가하며 상태가 COMPLETED가 되면
            완료됩니다. API를 통해 시작된 작업에 대해 기록됩니다.
          items:
            type: object
            properties:
              didit_internal_id:
                type: string
                format: uuid
                description: 프로필의 Didit 내부 ID입니다.
              vendor_data:
                type: string
                nullable: true
                description: 프로필에 대한 귀하 고유의 식별자입니다.
              outcome:
                type: string
                enum:
                  - enabled
                  - screened_and_enabled
                  - already_enabled
                  - disabled
                  - skipped_no_identity_data
                  - skipped_blocked
                  - skipped_sandbox
                  - failed_provider
                  - failed_insufficient_balance
        error:
          type: string
          nullable: true
          description: 상태가 FAILED일 때의 일반 실패 메시지입니다. 자세한 원인은 플랫폼 측에 보관됩니다.
        created_at:
          type: string
          format: date-time
        completed_at:
          type: string
          format: date-time
          nullable: true
        estimate:
          type: object
          description: 예상 비용입니다. estimate_only가 true인 경우 직접 반환됩니다(아무것도 기록되지 않음).
          properties:
            users_total:
              type: integer
              description: 선택 조건과 일치하는 프로필 수입니다.
            already_enabled:
              type: integer
              description: 이미 모니터링 중인 프로필(활성화 시 수행할 작업 없음. 비활성화 시 해제되는 대상임).
            with_existing_aml:
              type: integer
              description: 기존 AML 스크리닝이 모니터링 상태로 전환될 프로필 수(신규 스크리닝 없음).
            needing_screening:
              type: integer
              description: AML 스크리닝 이력이 없어 먼저 스크리닝을 진행할 프로필 수(일반 AML 스크리닝으로 청구됨).
            skipped_no_identity_data:
              type: integer
              description: 신원 데이터가 누락되어 스크리닝할 수 없는 프로필 수입니다.
            skipped_blocked:
              type: integer
              description: 건너뛸 차단된 사용자 수입니다(기업의 경우 항상 0).
            estimated_screening_cost_usd:
              type: number
              example: 0.2
              description: 새 스크리닝의 일회성 비용입니다.
            estimated_annual_monitoring_cost_usd:
              type: number
              example: 0.07
              description: 모니터링 대상이 될 프로필의 연간 모니터링 비용입니다.
            balance_sufficient:
              type: boolean
              description: 조직 잔액이 스크리닝과 첫해 모니터링 비용을 충당할 수 있는지 여부입니다.
        unmatched:
          type: array
          items:
            type: string
          description: 이 애플리케이션의 어떤 프로필과도 일치하지 않는 요청의 식별자로, 전송된 형태 그대로입니다. 작업의 일부가 아닙니다.
  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.