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

# Ativar ou desativar monitoramento AML de usuários na API

> Ative ou desative o monitoramento contínuo AML da Didit para vários usuários, com simulação de custo, job consultável e resultado por usuário.



Prompt para ativar ou desativar o monitoramento AML de usuários
        Copiar o prompt para a área de transferência



      
      

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



      
      

Colar em

## Visão geralAtiva ou desativa o [monitoramento AML contínuo](https://docs.didit.me/pt-br/core-technology/aml-screening/continuous-monitoring-aml-screening.md) das [entidades de usuário](https://docs.didit.me/pt-br/entities/users/overview.md) selecionadas, exatamente como faz a ação **Monitoramento contínuo AML** no Business Console. O Console e este endpoint executam a mesma operação subjacente, então as regras, o faturamento e os resultados são idênticos.Envie primeiro `estimate_only: true` para ver quantos usuários estão selecionados, quantos precisam de uma nova análise AML, o custo único da análise e o custo anual do monitoramento. Uma simulação (dry-run) não grava nada.## Quando usar- **Onboarding programático**: ative o monitoramento de usuários que você importou ou criou pela API sem precisar analisá-los de novo manualmente.
- **Desligamento de usuários**: interrompa o monitoramento, e a respectiva renovação anual, de usuários que saíram da sua plataforma.
- **Controle de custos**: visualize o impacto exato de uma seleção no custo antes de confirmá-la.## Como uma seleção é processada- **Uma análise monitorada por usuário.** Um usuário que se verificou várias vezes é monitorado e cobrado uma única vez. A desativação desliga o monitoramento em todas as análises desse usuário.
- **Usuários sem Análise AML são analisados primeiro.** A Didit cria uma nova verificação AML para eles (visível na aba **Verificações** do usuário), cobrada como uma Análise AML comum, e ativa o monitoramento nela. Isso exige o nome completo, a data de nascimento e o país do usuário; um usuário sem algum desses dados recebe o status `skipped_no_identity_data` em vez de ser descartado silenciosamente.
- **Usuários bloqueados são ignorados** (`skipped_blocked`). Aplicações de sandbox nunca criam análises (`skipped_sandbox`).
- **O saldo é verificado antecipadamente.** A ativação é recusada com `403` quando o seu saldo não cobre a estimativa, e a resposta inclui a estimativa para que você saiba quanto recarregar.
- **Renovação anual.** Um usuário recém-monitorado é cobrado pelo preço anual do monitoramento na próxima data de renovação, a mesma data que o Console mostra na coluna **Monitoramento contínuo**. A desativação interrompe a renovação; ela não reembolsa um período já cobrado.## Seleção e tamanho do loteSelecione usuários com `vendor_data_list`, `didit_internal_id_list` ou ambos; as duas listas são combinadas com OR. Uma requisição aceita no máximo **1000 identificadores** somando as duas listas. Identificadores que não correspondem a nenhum usuário da sua aplicação são retornados em `unmatched`, exatamente como foram enviados, e nunca fazem a requisição falhar: uma seleção sem nenhuma correspondência é concluída como um job vazio (`total: 0`) com todos os identificadores listados, a mesma convenção dos endpoints de exclusão em lote.## Processamento imediato ou em segundo planoSeleções de **20 usuários ou menos** são processadas imediatamente e a chamada retorna `200` com o job concluído. Seleções maiores retornam `202` com um job `PENDING`; consulte [Obter job de monitoramento AML](https://docs.didit.me/pt-br/management-api/aml-monitoring/get-job.md) periodicamente até que `status` seja `COMPLETED` ou `FAILED`. Em ambos os casos, o job traz uma entrada em `results` por usuário, com o respectivo `outcome`.| `outcome` | Significado |
| - | - |
| `enabled` | Monitoramento ativado em uma triagem AML existente. |
| `screened_and_enabled` | Uma nova triagem AML foi criada (e cobrada) e o monitoramento foi ativado nela. |
| `already_enabled` | O monitoramento já estava ativo; nada foi alterado e nada foi cobrado. |
| `disabled` | Monitoramento desativado em todas as triagens AML do usuário. |
| `skipped_no_identity_data` | O usuário não tem o nome completo, a data de nascimento ou o país necessários para a triagem. |
| `skipped_blocked` | O usuário está bloqueado. |
| `skipped_sandbox` | Aplicação de sandbox; nenhuma triagem é criada. |
| `failed_provider` | Não foi possível concluir a triagem. Tente novamente mais tarde. |
| `failed_insufficient_balance` | O saldo acabou enquanto o job estava em execução. |## WebhooksAtivar ou desativar o monitoramento não emite nenhum webhook próprio. Com o monitoramento ativo, as novas análises continuam disparando os eventos habituais `status.updated` e `data.updated` descritos em [Monitoramento AML contínuo](https://docs.didit.me/pt-br/core-technology/aml-screening/continuous-monitoring-aml-screening.md).## PermissõesQualquer chave de API ativa da aplicação pode chamar este endpoint. As chaves de API da Didit têm **escopo de aplicação, não de função**: as [funções e permissões](https://docs.didit.me/pt-br/console/roles-permissions.md) do Console definem o que uma *pessoa* pode fazer no Console e não são consideradas no tráfego da Management API.## Relacionados- [Obter tarefa de monitoramento AML](https://docs.didit.me/pt-br/management-api/aml-monitoring/get-job.md)
- [Ativar ou desativar o monitoramento AML de empresas](https://docs.didit.me/pt-br/management-api/aml-monitoring/toggle-businesses.md)
- [Monitoramento AML contínuo](https://docs.didit.me/pt-br/core-technology/aml-screening/continuous-monitoring-aml-screening.md)
- [API de Triagem AML](https://docs.didit.me/pt-br/standalone-apis/aml-screening.md)
- [Listar usuários](https://docs.didit.me/pt-br/management-api/users/list.md)


## OpenAPI

````yaml pt-br/openapi-25.json POST /v3/users/aml-monitoring/
openapi: 3.0.0
info:
  version: 3.0.0
  title: Didit Verification API
  description: API de verificação de identidade. Autentique-se com o cabeçalho x-api-key.
servers:
  - url: https://verification.didit.me
security: []
tags: []
paths:
  /v3/users/aml-monitoring/:
    post:
      tags:
        - AML Ongoing Monitoring
      summary: Ativar ou desativar o monitoramento AML contínuo para usuários
      description: >-
        Ativa ou desativa o monitoramento contínuo AML para os usuários
        selecionados, com a mesma semântica do Business Console. Exatamente uma
        análise AML monitorada é mantida por usuário, de modo que um perfil
        verificado várias vezes é monitorado e cobrado uma única vez; a
        desativação desliga o monitoramento em todas as análises do perfil.
        Usuários sem nenhuma análise AML são analisados primeiro (cobrados como
        uma Análise AML comum) quando têm o nome completo, a data de nascimento
        e o país necessários; caso contrário, são reportados como
        `skipped_no_identity_data`.


        Defina `estimate_only: true` para visualizar contagens e custos sem
        gravar nada. Seleções de 20 perfis ou menos são resolvidas imediatamente
        e retornam `200` com o job concluído; seleções maiores retornam `202` e
        são executadas em segundo plano. Consulte periodicamente [Obter job de
        monitoramento AML](#get-/v3/aml-monitoring/jobs/-job_id-/) com o
        `job_id` retornado. A ativação é recusada com `403` quando o saldo da
        organização não cobre a estimativa. Identificadores sem correspondência
        são listados em `unmatched` e nunca fazem a requisição falhar: uma
        seleção sem nenhuma correspondência é concluída como um job vazio
        (`total` 0), a mesma convenção dos endpoints de exclusão em lote.
      operationId: toggle_users_aml_monitoring
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - is_enabled
              description: >-
                Selecione usuários com `vendor_data_list`,
                `didit_internal_id_list` ou ambos (as duas listas são combinadas
                com OR). No máximo 1000 identificadores por requisição, somando
                as duas listas.
              properties:
                is_enabled:
                  type: boolean
                  description: true para ativar o monitoramento, false para desativá-lo.
                estimate_only:
                  type: boolean
                  default: false
                  description: >-
                    Quando verdadeiro, retorna a estimativa de custo e não
                    realiza nenhuma gravação: sem triagem, sem faturamento, sem
                    tarefa.
                vendor_data_list:
                  type: array
                  items:
                    type: string
                  description: >-
                    Seus próprios identificadores dos usuários a alternar,
                    comparados exatamente como enviados.
                didit_internal_id_list:
                  type: array
                  items:
                    type: string
                    format: uuid
                  description: >-
                    IDs internos da Didit dos usuários cujo status será
                    alternado: o `didit_internal_id` retornado pelos endpoints
                    de criação, consulta e listagem.
            examples:
              Estimate first:
                summary: Pré-visualizar o custo sem gravar
                value:
                  is_enabled: true
                  estimate_only: true
                  vendor_data_list:
                    - user-123
                    - user-456
              Enable:
                summary: Ativar o monitoramento para dois usuários
                value:
                  is_enabled: true
                  vendor_data_list:
                    - user-123
                    - user-456
              Disable:
                summary: Desativar o monitoramento pelo ID interno da Didit
                value:
                  is_enabled: false
                  didit_internal_id_list:
                    - 3f1c0d3e-8f0a-4c2e-9a3d-9b1f5f4a2c11
      responses:
        '200':
          description: >-
            A estimativa (quando `estimate_only` é true) ou o job concluído para
            uma seleção processada na própria requisição.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AMLMonitoringToggleResult'
        '202':
          description: >-
            Seleções maiores são executadas em segundo plano. Consulte
            periodicamente o endpoint do job com `job_id`; `results` é
            preenchido à medida que os perfis são processados.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AMLMonitoringJob'
        '400':
          description: >-
            Erro de validação: `is_enabled` ausente, nenhum seletor ou mais de
            1000 identificadores somando as duas listas.
        '401':
          description: Chave de API ausente ou inválida.
        '403':
          description: >-
            Saldo insuficiente para habilitar o monitoramento desta seleção. A
            resposta inclui a `estimate` para que você possa recarregar o valor
            correto.
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                  estimate:
                    type: object
                    description: >-
                      Prévia de custo. Retornada diretamente quando
                      estimate_only é true (nada é gravado).
                    properties:
                      users_total:
                        type: integer
                        description: Perfis correspondentes à seleção.
                      already_enabled:
                        type: integer
                        description: >-
                          Perfis já monitorados (nada a fazer ao ativar; são
                          estes que a desativação desliga).
                      with_existing_aml:
                        type: integer
                        description: >-
                          Perfis cuja análise AML existente passará a ser
                          monitorada (sem nova análise).
                      needing_screening:
                        type: integer
                        description: >-
                          Perfis sem nenhuma análise AML, que serão analisados
                          primeiro (cobrado como uma análise AML comum).
                      skipped_no_identity_data:
                        type: integer
                        description: >-
                          Perfis que não podem ser analisados porque faltam
                          dados de identidade.
                      skipped_blocked:
                        type: integer
                        description: >-
                          Usuários bloqueados que serão ignorados (sempre 0 para
                          empresas).
                      estimated_screening_cost_usd:
                        type: number
                        example: 0.2
                        description: Custo único das novas análises.
                      estimated_annual_monitoring_cost_usd:
                        type: number
                        example: 0.07
                        description: >-
                          Custo anual de monitoramento dos perfis que passarão a
                          ser monitorados.
                      balance_sufficient:
                        type: boolean
                        description: >-
                          Se o saldo da organização cobre a triagem mais o
                          primeiro ano de monitoramento.
      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: >-
            Prévia de custo. Retornada diretamente quando estimate_only é true
            (nada é gravado).
          properties:
            users_total:
              type: integer
              description: Perfis correspondentes à seleção.
            already_enabled:
              type: integer
              description: >-
                Perfis já monitorados (nada a fazer ao ativar; são estes que a
                desativação desliga).
            with_existing_aml:
              type: integer
              description: >-
                Perfis cuja análise AML existente passará a ser monitorada (sem
                nova análise).
            needing_screening:
              type: integer
              description: >-
                Perfis sem nenhuma análise AML, que serão analisados primeiro
                (cobrado como uma análise AML comum).
            skipped_no_identity_data:
              type: integer
              description: >-
                Perfis que não podem ser analisados porque faltam dados de
                identidade.
            skipped_blocked:
              type: integer
              description: >-
                Usuários bloqueados que serão ignorados (sempre 0 para
                empresas).
            estimated_screening_cost_usd:
              type: number
              example: 0.2
              description: Custo único das novas análises.
            estimated_annual_monitoring_cost_usd:
              type: number
              example: 0.07
              description: >-
                Custo anual de monitoramento dos perfis que passarão a ser
                monitorados.
            balance_sufficient:
              type: boolean
              description: >-
                Se o saldo da organização cobre a triagem mais o primeiro ano de
                monitoramento.
            unmatched:
              type: array
              items:
                type: string
              description: >-
                Identificadores da requisição que não corresponderam a nenhum
                perfil nesta aplicação, exatamente como enviados.
        - 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 quando o job ativa o monitoramento, false quando o
                desativa.
            target_type:
              type: string
              enum:
                - user
                - business
              description: Qual família de perfis a tarefa ativa ou desativa.
            total:
              type: integer
              description: Perfis que o job processa.
            processed:
              type: integer
              description: Perfis processados até agora.
            outcomes:
              type: object
              description: >-
                Contadores de resultado por registro. Cada perfil selecionado
                corresponde a exatamente um contador; nada é ignorado
                silenciosamente.
              properties:
                enabled:
                  type: integer
                  description: Monitoramento ativado em uma análise AML existente.
                screened_and_enabled:
                  type: integer
                  description: >-
                    Uma nova análise AML foi criada (cobrada) e o monitoramento
                    foi ativado nela.
                already_enabled:
                  type: integer
                  description: >-
                    O monitoramento já estava ativo; nada foi alterado e nada
                    foi cobrado.
                disabled:
                  type: integer
                  description: Monitoramento desativado em todas as análises AML do perfil.
                skipped_no_identity_data:
                  type: integer
                  description: >-
                    Ignorado: o perfil não tem o nome completo, a data de
                    nascimento e o país (usuários) ou um nome (empresas)
                    necessários para a análise.
                skipped_blocked:
                  type: integer
                  description: 'Ignorado: o usuário está bloqueado.'
                skipped_sandbox:
                  type: integer
                  description: 'Ignorado: aplicação de sandbox, nenhuma análise é criada.'
                failed_provider:
                  type: integer
                  description: >-
                    Não foi possível concluir a análise; tente novamente mais
                    tarde.
                failed_insufficient_balance:
                  type: integer
                  description: O saldo acabou enquanto a tarefa estava em execução.
            results:
              type: array
              description: >-
                Uma entrada por perfil processado, na ordem de processamento.
                Cresce enquanto o job é executado; fica completa quando o status
                é COMPLETED. Registrado para jobs iniciados pela API.
              items:
                type: object
                properties:
                  didit_internal_id:
                    type: string
                    format: uuid
                    description: ID interno da Didit para o perfil.
                  vendor_data:
                    type: string
                    nullable: true
                    description: Seu próprio identificador para o perfil.
                  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: >-
                Mensagem genérica de falha quando o status é FAILED; a causa
                detalhada é mantida no lado da plataforma.
            created_at:
              type: string
              format: date-time
            completed_at:
              type: string
              format: date-time
              nullable: true
            estimate:
              type: object
              description: >-
                Prévia de custo. Retornada diretamente quando estimate_only é
                true (nada é gravado).
              properties:
                users_total:
                  type: integer
                  description: Perfis correspondentes à seleção.
                already_enabled:
                  type: integer
                  description: >-
                    Perfis já monitorados (nada a fazer ao ativar; são estes que
                    a desativação desliga).
                with_existing_aml:
                  type: integer
                  description: >-
                    Perfis cuja análise AML existente passará a ser monitorada
                    (sem nova análise).
                needing_screening:
                  type: integer
                  description: >-
                    Perfis sem nenhuma análise AML, que serão analisados
                    primeiro (cobrado como uma análise AML comum).
                skipped_no_identity_data:
                  type: integer
                  description: >-
                    Perfis que não podem ser analisados porque faltam dados de
                    identidade.
                skipped_blocked:
                  type: integer
                  description: >-
                    Usuários bloqueados que serão ignorados (sempre 0 para
                    empresas).
                estimated_screening_cost_usd:
                  type: number
                  example: 0.2
                  description: Custo único das novas análises.
                estimated_annual_monitoring_cost_usd:
                  type: number
                  example: 0.07
                  description: >-
                    Custo anual de monitoramento dos perfis que passarão a ser
                    monitorados.
                balance_sufficient:
                  type: boolean
                  description: >-
                    Se o saldo da organização cobre a triagem mais o primeiro
                    ano de monitoramento.
            unmatched:
              type: array
              items:
                type: string
              description: >-
                Identificadores da requisição que não corresponderam a nenhum
                perfil nesta aplicação, exatamente como enviados. Eles não fazem
                parte da tarefa.
    AMLMonitoringJob:
      type: object
      properties:
        job_id:
          type: string
          format: uuid
        status:
          type: string
          enum:
            - PENDING
            - PROCESSING
            - COMPLETED
            - FAILED
        is_enabled:
          type: boolean
          description: true quando o job ativa o monitoramento, false quando o desativa.
        target_type:
          type: string
          enum:
            - user
            - business
          description: Qual família de perfis a tarefa ativa ou desativa.
        total:
          type: integer
          description: Perfis que o job processa.
        processed:
          type: integer
          description: Perfis processados até agora.
        outcomes:
          type: object
          description: >-
            Contadores de resultado por registro. Cada perfil selecionado
            corresponde a exatamente um contador; nada é ignorado
            silenciosamente.
          properties:
            enabled:
              type: integer
              description: Monitoramento ativado em uma análise AML existente.
            screened_and_enabled:
              type: integer
              description: >-
                Uma nova análise AML foi criada (cobrada) e o monitoramento foi
                ativado nela.
            already_enabled:
              type: integer
              description: >-
                O monitoramento já estava ativo; nada foi alterado e nada foi
                cobrado.
            disabled:
              type: integer
              description: Monitoramento desativado em todas as análises AML do perfil.
            skipped_no_identity_data:
              type: integer
              description: >-
                Ignorado: o perfil não tem o nome completo, a data de nascimento
                e o país (usuários) ou um nome (empresas) necessários para a
                análise.
            skipped_blocked:
              type: integer
              description: 'Ignorado: o usuário está bloqueado.'
            skipped_sandbox:
              type: integer
              description: 'Ignorado: aplicação de sandbox, nenhuma análise é criada.'
            failed_provider:
              type: integer
              description: Não foi possível concluir a análise; tente novamente mais tarde.
            failed_insufficient_balance:
              type: integer
              description: O saldo acabou enquanto a tarefa estava em execução.
        results:
          type: array
          description: >-
            Uma entrada por perfil processado, na ordem de processamento. Cresce
            enquanto o job é executado; fica completa quando o status é
            COMPLETED. Registrado para jobs iniciados pela API.
          items:
            type: object
            properties:
              didit_internal_id:
                type: string
                format: uuid
                description: ID interno da Didit para o perfil.
              vendor_data:
                type: string
                nullable: true
                description: Seu próprio identificador para o perfil.
              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: >-
            Mensagem genérica de falha quando o status é FAILED; a causa
            detalhada é mantida no lado da plataforma.
        created_at:
          type: string
          format: date-time
        completed_at:
          type: string
          format: date-time
          nullable: true
        estimate:
          type: object
          description: >-
            Prévia de custo. Retornada diretamente quando estimate_only é true
            (nada é gravado).
          properties:
            users_total:
              type: integer
              description: Perfis correspondentes à seleção.
            already_enabled:
              type: integer
              description: >-
                Perfis já monitorados (nada a fazer ao ativar; são estes que a
                desativação desliga).
            with_existing_aml:
              type: integer
              description: >-
                Perfis cuja análise AML existente passará a ser monitorada (sem
                nova análise).
            needing_screening:
              type: integer
              description: >-
                Perfis sem nenhuma análise AML, que serão analisados primeiro
                (cobrado como uma análise AML comum).
            skipped_no_identity_data:
              type: integer
              description: >-
                Perfis que não podem ser analisados porque faltam dados de
                identidade.
            skipped_blocked:
              type: integer
              description: >-
                Usuários bloqueados que serão ignorados (sempre 0 para
                empresas).
            estimated_screening_cost_usd:
              type: number
              example: 0.2
              description: Custo único das novas análises.
            estimated_annual_monitoring_cost_usd:
              type: number
              example: 0.07
              description: >-
                Custo anual de monitoramento dos perfis que passarão a ser
                monitorados.
            balance_sufficient:
              type: boolean
              description: >-
                Se o saldo da organização cobre a triagem mais o primeiro ano de
                monitoramento.
        unmatched:
          type: array
          items:
            type: string
          description: >-
            Identificadores da requisição que não corresponderam a nenhum perfil
            nesta aplicação, exatamente como enviados. Eles não fazem parte da
            tarefa.
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: >-
        Chave de API da sua aplicação, em Developers -> API keys no Business
        Console. A chave principal tem acesso total. Uma chave nomeada pode ter
        escopo restrito: nenhum acesso, leitura ou escrita por recurso, limitada
        a alguns fluxos ou a sessões aprovadas, a uma lista de endereços IP e a
        uma data de validade. 401 significa que a chave está errada, revogada ou
        expirada; 403 significa que nenhuma chave foi enviada, que a chave não
        tem acesso a este recurso ou ação, ou que a requisição veio de um
        endereço fora da sua lista de IPs; 404 em uma rota de sessão significa
        que a sessão está fora dos fluxos ou status da chave. Uma chave sem
        acesso a mídia recebe URLs de imagem, vídeo e PDF como null, e uma chave
        sem permissão de escrita em sessões recebe links e tokens de sessão como
        null. Consulte https://docs.didit.me/console/api-keys.

````

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