> ## 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 Business (KYB) 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-business outcome.

Endpoint: POST https://verification.didit.me/v3/businesses/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 business: a company that verified several times is monitored and billed once. Disabling turns monitoring off across all of the business's screenings.
\- Businesses without any AML screening are screened first (billed as a regular AML screening) using their legal name (or display name) and country; a business with no name is reported as skipped_no_identity_data.
\- 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/businesses/aml-monitoring/' \
-H 'x-api-key: YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{"is_enabled": true, "estimate_only": true, "vendor_data_list": ["company-123", "company-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": []
}
(users_total counts the selected businesses; the estimate shape is shared with the users endpoint.)

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

Response 200 (20 businesses 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": "business",
"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": "company-123", "outcome": "enabled"},
\{"didit_internal_id": "<uuid>", "vendor_data": "company-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 businesses are processed.

Per-business outcome values: enabled, screened_and_enabled, already_enabled, disabled, skipped_no_identity_data, skipped_sandbox, failed_provider, failed_insufficient_balance (skipped_blocked is always 0 for businesses).

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 businesses that are already monitored, with no second screening and no second bill. Disabling an unmonitored business 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/businesses/overview.md)에 대해 [지속적인 AML 모니터링](https://docs.didit.me/ko/core-technology/aml-screening/continuous-monitoring-aml-screening.md)을 켜거나 끌 수 있습니다. 이 작업은 기업 콘솔의 **지속적인 AML 모니터링** 작업과 정확히 같습니다. 콘솔과 이 엔드포인트는 동일한 기본 작업을 실행하므로 규칙, 과금, 결과가 같습니다.먼저 `estimate_only: true`를 보내면 선택된 기업 수, 새 AML 스크리닝이 필요한 기업 수, 일회성 스크리닝 비용, 연간 모니터링 비용을 확인할 수 있습니다. 시험 실행(dry-run)은 아무것도 기록하지 않습니다. 추정 결과는 사용자 엔드포인트와 같은 필드 이름을 사용하므로 `users_total`은 선택된 기업의 수입니다.## 선택 항목 처리 방식- **기업당 하나의 스크리닝만 모니터링됩니다.** 여러 번 인증한 기업은 한 번만 모니터링되고 한 번만 과금됩니다. 비활성화하면 해당 기업의 모든 스크리닝에 대한 모니터링이 꺼집니다.
- **AML 스크리닝이 없는 기업은 먼저 스크리닝됩니다.** Didit은 이런 기업에 대해 새 AML 인증을 만들고(기업의 **인증** 탭에 표시됨), 일반 AML 스크리닝과 같이 과금하며 해당 스크리닝에 모니터링을 활성화합니다. 스크리닝에는 기업의 법적 명칭(또는 표시 이름)과 국가가 사용됩니다. 이름이 전혀 없는 기업은 조용히 제외되지 않고 `skipped_no_identity_data`로 보고됩니다.
- **샌드박스 애플리케이션은 스크리닝을 만들지 않습니다**(`skipped_sandbox`).
- **잔액은 먼저 확인합니다.** 잔액이 예상 비용을 충당하지 못하면 활성화 요청은 `403`으로 거부되며, 응답에는 추정 결과가 포함되어 충전해야 할 금액을 알 수 있습니다.
- **연간 갱신.** 새로 모니터링되는 기업은 다음 갱신일에 연간 모니터링 가격이 청구됩니다. 이 날짜는 콘솔의 **지속적인 모니터링** 열에 표시되는 날짜와 같습니다. 비활성화하면 갱신이 중지되지만, 이미 청구된 기간은 환불되지 않습니다.## 선택 항목과 일괄 처리 크기`vendor_data_list`, `didit_internal_id_list`, 또는 둘 다로 기업을 선택할 수 있습니다. 두 목록은 OR로 결합됩니다. 요청에는 두 목록을 합쳐 최대 **1000개의 식별자**를 담을 수 있습니다. 애플리케이션의 어떤 기업과도 일치하지 않는 식별자는 보낸 그대로 `unmatched`에 반환되며, 요청을 실패시키지 않습니다. 일치하는 기업이 하나도 없는 선택은 `total: 0`인 빈 작업으로 완료되고 모든 식별자가 나열됩니다. 이는 일괄 삭제 엔드포인트와 같은 규칙입니다.## 즉시 처리 또는 백그라운드 처리**기업 20개 이하**를 선택하면 즉시 처리되며, 호출은 완료된 작업과 함께 `200`을 반환합니다. 더 큰 선택은 `PENDING` 작업과 함께 `202`를 반환합니다. `status`가 `COMPLETED` 또는 `FAILED`가 될 때까지 [AML 모니터링 작업 조회](https://docs.didit.me/ko/management-api/aml-monitoring/get-job.md)를 주기적으로 호출하세요. 어느 경우든 작업에는 기업마다 `outcome`이 포함된 `results` 항목이 하나씩 들어 있습니다.| `outcome` | 의미 |
| - | - |
| `enabled` | 기존 AML 스크리닝에서 모니터링이 활성화되었습니다. |
| `screened_and_enabled` | 새 AML 스크리닝이 생성되었고(과금됨) 해당 스크리닝에서 모니터링이 활성화되었습니다. |
| `already_enabled` | 모니터링이 이미 활성 상태였으므로 변경되거나 과금된 항목이 없습니다. |
| `disabled` | 기업의 모든 스크리닝에서 모니터링이 꺼졌습니다. |
| `skipped_no_identity_data` | 스크리닝할 법적 명칭이나 표시 이름이 기업에 없습니다. |
| `skipped_sandbox` | 샌드박스 애플리케이션이므로 스크리닝이 생성되지 않습니다. |
| `failed_provider` | 스크리닝을 완료할 수 없습니다. 나중에 다시 시도하세요. |
| `failed_insufficient_balance` | 작업이 실행되는 동안 잔액이 부족해졌습니다. |## 웹훅모니터링 전환 자체는 웹훅을 보내지 않습니다. 모니터링이 켜진 후에는 재스크리닝 때마다 [지속적인 AML 모니터링](https://docs.didit.me/ko/core-technology/aml-screening/continuous-monitoring-aml-screening.md)에 설명된 일반 `status.updated` 및 `data.updated` 이벤트가 발생합니다.## 권한애플리케이션의 활성 API 키라면 누구나 이 엔드포인트를 호출할 수 있습니다. 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-users.md)
- [지속적인 AML 모니터링](https://docs.didit.me/ko/core-technology/aml-screening/continuous-monitoring-aml-screening.md)
- [기업 AML 스크리닝](https://docs.didit.me/ko/business-verification/aml.md)
- [기업 목록 조회](https://docs.didit.me/ko/management-api/businesses/list.md)


## OpenAPI

````yaml ko/openapi-25.json POST /v3/businesses/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/businesses/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_businesses_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:
                    - company-123
                    - company-456
              Enable:
                summary: 기업 2곳에 대한 모니터링 활성화
                value:
                  is_enabled: true
                  vendor_data_list:
                    - company-123
                    - company-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/businesses/aml-monitoring/' \
              -H 'x-api-key: YOUR_API_KEY' \
              -H 'Content-Type: application/json' \
              -d '{"is_enabled": true, "vendor_data_list": ["company-123", "company-456"]}'
        - lang: python
          label: Python
          source: |-
            from didit import Didit

            # Reads DIDIT_API_KEY.
            client = Didit()

            result = client.businesses.set_aml_monitoring(
                is_enabled=True,
                estimate_only=True,
                vendor_data_list=["company-123", "company-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.businesses.setAmlMonitoring({
              is_enabled: true,
              estimate_only: true,
              vendor_data_list: ["company-123", "company-456"],
            });
            console.log(result);
        - lang: go
          label: Go
          source: "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Businesses.SetAMLMonitoring(ctx, didit.BusinessesSetAMLMonitoringParams{\n\tIsEnabled:      true,\n\tEstimateOnly:   didit.Bool(true),\n\tVendorDataList: didit.Some([]string{\"company-123\", \"company-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.BusinessesSetAmlMonitoringParams;


            // Reads DIDIT_API_KEY.

            Didit client = new Didit();


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

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

            result = didit.businesses.set_aml_monitoring(
              is_enabled: true,
              estimate_only: true,
              vendor_data_list: ["company-123", "company-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.Businesses.SetAmlMonitoringAsync(new
            BusinessesSetAmlMonitoringParams

            {
                IsEnabled = true,
                EstimateOnly = true,
                VendorDataList = new string[] { "company-123", "company-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.