> ## 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/desativar monitorização AML de empresas via API

> Ative ou desative a monitorização AML contínua de várias empresas numa chamada da API Didit, com estimativa de custos e resultado por empresa.



Prompt para ativar ou desativar a monitorização AML de empresas
        Copiar o prompt para a área de transferência



      
      

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



      
      

Colar em

## Visão geralAtiva ou desativa a [Monitorização AML contínua](https://docs.didit.me/pt/core-technology/aml-screening/continuous-monitoring-aml-screening.md) para as [empresas](https://docs.didit.me/pt/entities/businesses/overview.md) selecionadas, exatamente como a ação **Monitorização AML contínua** na Business Console. A Console e este endpoint executam a mesma operação subjacente, pelo que as regras, a faturação e os resultados são idênticos.Envie primeiro `estimate_only: true` para ver quantas empresas estão selecionadas, quantas precisam de uma nova triagem AML, o custo único da triagem e o custo anual da monitorização. Uma simulação não grava nada. A estimativa usa os mesmos nomes de campos do endpoint de utilizadores, pelo que `users_total` é o número de empresas selecionadas.## Como é processada uma seleção- **Uma triagem monitorizada por empresa.** Uma empresa que foi verificada várias vezes é monitorizada e faturada uma única vez. Desativar a monitorização desliga-a em todas as triagens dessa empresa.
- **As empresas sem triagem AML são submetidas a triagem primeiro.** A Didit cria uma nova verificação AML para elas (visível no separador **Verificações** da empresa), faturada como uma triagem AML normal, e ativa a monitorização nessa verificação. A triagem usa a designação legal (ou o nome de apresentação) e o país da empresa. Uma empresa sem qualquer nome é indicada como `skipped_no_identity_data` em vez de ser ignorada sem aviso.
- **As aplicações de sandbox nunca criam triagens** (`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 saber quanto deve carregar.
- **Renovação anual.** Uma empresa recém-monitorizada é faturada pelo preço anual de monitorização na sua próxima data de renovação, a mesma data que a Console mostra na coluna **Monitorização contínua**. Desativar a monitorização interrompe a renovação, mas não reembolsa um período já faturado.## Seleção e tamanho do loteSelecione empresas com `vendor_data_list`, `didit_internal_id_list`, ou ambos; as duas listas são combinadas com OR. Um pedido aceita no máximo **1000 identificadores** no total das duas listas. Os identificadores que não correspondem a nenhuma empresa da sua aplicação são devolvidos em `unmatched`, exatamente como enviados, e nunca fazem o pedido falhar: uma seleção sem correspondências é concluída como uma tarefa vazia (`total: 0`) com todos os identificadores listados, seguindo a mesma convenção que os endpoints de eliminação em lote.## Em linha ou em segundo planoSeleções de **20 empresas ou menos** são processadas em linha, e a chamada devolve `200` com a tarefa concluída. Seleções maiores devolvem `202` com uma tarefa `PENDING`. Consulte [Obter tarefa de monitorização AML](https://docs.didit.me/pt/management-api/aml-monitoring/get-job.md) até que `status` seja `COMPLETED` ou `FAILED`. Em qualquer dos casos, a tarefa inclui uma entrada `results` por empresa, com o respetivo `outcome`.| `outcome` | Significado |
| - | - |
| `enabled` | Monitorização ativada numa triagem AML existente. |
| `screened_and_enabled` | Foi criada uma nova triagem AML (faturada) e a monitorização foi ativada nela. |
| `already_enabled` | A monitorização já estava ativa; nada foi alterado e nada foi faturado. |
| `disabled` | Monitorização desativada em todas as triagens da empresa. |
| `skipped_no_identity_data` | A empresa não tem designação legal nem nome de apresentação para analisar. |
| `skipped_sandbox` | Aplicação de sandbox; não é criada nenhuma triagem. |
| `failed_provider` | A triagem não pôde ser concluída. Tente novamente mais tarde. |
| `failed_insufficient_balance` | O saldo esgotou-se enquanto a tarefa estava em execução. |## WebhooksAtivar ou desativar a monitorização não emite nenhum webhook próprio. Quando a monitorização estiver ativa, as reanálises continuam a disparar os eventos habituais `status.updated` e `data.updated`, descritos em [Monitorização AML contínua](https://docs.didit.me/pt/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 **âmbito por aplicação, não por função**: as [funções e permissões](https://docs.didit.me/pt/console/roles-permissions.md) da Console determinam o que uma *pessoa* pode fazer na Console e não são avaliadas para o tráfego da Management API.## Relacionados- [Obter tarefa de monitorização AML](https://docs.didit.me/pt/management-api/aml-monitoring/get-job.md)
- [Ativar ou desativar a monitorização AML para utilizadores](https://docs.didit.me/pt/management-api/aml-monitoring/toggle-users.md)
- [Monitorização AML contínua](https://docs.didit.me/pt/core-technology/aml-screening/continuous-monitoring-aml-screening.md)
- [Triagem AML de empresas](https://docs.didit.me/pt/business-verification/aml.md)
- [Listar empresas](https://docs.didit.me/pt/management-api/businesses/list.md)


## OpenAPI

````yaml pt/openapi-25.json POST /v3/businesses/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/businesses/aml-monitoring/:
    post:
      tags:
        - AML Ongoing Monitoring
      summary: Ativar ou desativar a monitorização AML contínua para empresas
      description: >-
        Ativa ou desativa a monitorização AML contínua para as empresas
        selecionadas, com a mesma semântica da Business Console. É mantida
        exatamente uma triagem AML monitorizada por empresa, pelo que um perfil
        que tenha sido verificado várias vezes é monitorizado e faturado uma
        única vez; a desativação desliga a monitorização em todas as triagens do
        perfil. As empresas sem qualquer triagem AML são analisadas primeiro
        (faturadas como uma triagem AML normal) quando possuem a denominação
        social ou nome comercial necessário; caso contrário, são reportadas como
        `skipped_no_identity_data`.


        Defina `estimate_only: true` para pré-visualizar contagens e custos sem
        escrever nada. As seleções de 20 perfis ou menos são resolvidas
        imediatamente e devolvem `200` com a tarefa concluída; seleções maiores
        devolvem `202` e são executadas em segundo plano - faça pedidos
        repetidos a [Obter tarefa de monitorização
        AML](#get-/v3/aml-monitoring/jobs/-job_id-/) com o `job_id` devolvido. A
        ativação é recusada com `403` quando o saldo da organização não cobre a
        estimativa. Os identificadores que não correspondam a nenhum registo são
        listados em `unmatched` e nunca fazem falhar o pedido: uma seleção que
        não corresponda a nada conclui como uma tarefa vazia (`total` 0), a
        mesma convenção aplicada aos endpoints de eliminação em lote.
      operationId: toggle_businesses_aml_monitoring
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - is_enabled
              description: >-
                Selecione empresas com `vendor_data_list`,
                `didit_internal_id_list` ou ambos (as duas listas são combinadas
                com o operador OR). No máximo 1000 identificadores por pedido no
                total, nas duas listas.
              properties:
                is_enabled:
                  type: boolean
                  description: true para ativar a monitorização, false para a desativar.
                estimate_only:
                  type: boolean
                  default: false
                  description: >-
                    Quando for true, devolve a estimativa de custos e não
                    realiza gravações: sem triagem, sem faturação e sem tarefa.
                vendor_data_list:
                  type: array
                  items:
                    type: string
                  description: >-
                    Os seus próprios identificadores das empresas a alternar,
                    correspondidos exatamente como foram enviados.
                didit_internal_id_list:
                  type: array
                  items:
                    type: string
                    format: uuid
                  description: >-
                    IDs internos da Didit das empresas a alternar - o
                    `didit_internal_id` devolvido pelos endpoints de criação,
                    obtenção e listagem.
            examples:
              Estimate first:
                summary: Pré-visualizar o custo sem efetuar alterações
                value:
                  is_enabled: true
                  estimate_only: true
                  vendor_data_list:
                    - company-123
                    - company-456
              Enable:
                summary: Ativar a monitorização para duas empresas
                value:
                  is_enabled: true
                  vendor_data_list:
                    - company-123
                    - company-456
              Disable:
                summary: Desativar a monitorização 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 a tarefa concluída
            para uma seleção processada inline.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AMLMonitoringToggleResult'
        '202':
          description: >-
            Seleções maiores são executadas em segundo plano. Consulte
            periodicamente o endpoint de tarefas com o `job_id`; o campo
            `results` vai sendo preenchido à medida que os perfis são
            processados.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AMLMonitoringJob'
        '400':
          description: >-
            Erro de validação: `is_enabled` em falta, nenhum seletor ou mais de
            1000 identificadores em ambas as listas.
        '401':
          description: Chave de API em falta ou inválida.
        '403':
          description: >-
            Saldo insuficiente para ativar a monitorização para esta seleção. A
            resposta inclui o `estimate` para que possa carregar saldo com o
            montante correto.
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                  estimate:
                    type: object
                    description: >-
                      Pré-visualização do custo. Devolvida diretamente quando
                      estimate_only é true (nada é gravado).
                    properties:
                      users_total:
                        type: integer
                        description: Perfis correspondidos pela seleção.
                      already_enabled:
                        type: integer
                        description: >-
                          Perfis já monitorizados (nada a fazer ao ativar; são
                          estes que a desativação desliga).
                      with_existing_aml:
                        type: integer
                        description: >-
                          Perfis cuja triagem AML existente será alterada para
                          monitorizada (sem nova triagem).
                      needing_screening:
                        type: integer
                        description: >-
                          Perfis sem qualquer triagem AML que serão submetidos a
                          triagem primeiro (faturada como uma triagem AML
                          normal).
                      skipped_no_identity_data:
                        type: integer
                        description: >-
                          Perfis que não podem ser submetidos a triagem porque
                          faltam dados de identidade.
                      skipped_blocked:
                        type: integer
                        description: >-
                          Utilizadores bloqueados que serão ignorados (sempre 0
                          para empresas).
                      estimated_screening_cost_usd:
                        type: number
                        example: 0.2
                        description: Custo único das novas triagens.
                      estimated_annual_monitoring_cost_usd:
                        type: number
                        example: 0.07
                        description: >-
                          Custo anual de monitorização dos perfis que passarão a
                          ser monitorizados.
                      balance_sufficient:
                        type: boolean
                        description: >-
                          Se o saldo da organização cobre a triagem mais o
                          primeiro ano de monitorização.
      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: >-
            Pré-visualização do custo. Devolvida diretamente quando
            estimate_only é true (nada é gravado).
          properties:
            users_total:
              type: integer
              description: Perfis correspondidos pela seleção.
            already_enabled:
              type: integer
              description: >-
                Perfis já monitorizados (nada a fazer ao ativar; são estes que a
                desativação desliga).
            with_existing_aml:
              type: integer
              description: >-
                Perfis cuja triagem AML existente será alterada para
                monitorizada (sem nova triagem).
            needing_screening:
              type: integer
              description: >-
                Perfis sem qualquer triagem AML que serão submetidos a triagem
                primeiro (faturada como uma triagem AML normal).
            skipped_no_identity_data:
              type: integer
              description: >-
                Perfis que não podem ser submetidos a triagem porque faltam
                dados de identidade.
            skipped_blocked:
              type: integer
              description: >-
                Utilizadores bloqueados que serão ignorados (sempre 0 para
                empresas).
            estimated_screening_cost_usd:
              type: number
              example: 0.2
              description: Custo único das novas triagens.
            estimated_annual_monitoring_cost_usd:
              type: number
              example: 0.07
              description: >-
                Custo anual de monitorização dos perfis que passarão a ser
                monitorizados.
            balance_sufficient:
              type: boolean
              description: >-
                Se o saldo da organização cobre a triagem mais o primeiro ano de
                monitorização.
            unmatched:
              type: array
              items:
                type: string
              description: >-
                Identificadores do pedido que não corresponderam a nenhum perfil
                nesta aplicação, exatamente como foram 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 trabalho ativa a monitorização, false quando a
                desativa.
            target_type:
              type: string
              enum:
                - user
                - business
              description: Qual a família de perfis que a tarefa ativa/desativa.
            total:
              type: integer
              description: Perfis que a tarefa processa.
            processed:
              type: integer
              description: Perfis processados até ao momento.
            outcomes:
              type: object
              description: >-
                Contadores de resultados por registo. Cada perfil selecionado
                corresponde exatamente a um contador; nada é ignorado
                silenciosamente.
              properties:
                enabled:
                  type: integer
                  description: Monitorização ativada numa triagem AML existente.
                screened_and_enabled:
                  type: integer
                  description: >-
                    Foi criada uma nova triagem AML (faturada) e ativada a
                    monitorização na mesma.
                already_enabled:
                  type: integer
                  description: >-
                    A monitorização já se encontrava ativa; nada foi alterado e
                    nada foi faturado.
                disabled:
                  type: integer
                  description: Monitorização desativada em todas as triagens 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 (utilizadores) ou um nome (empresas)
                    necessários para a triagem.
                skipped_blocked:
                  type: integer
                  description: 'Ignorado: o utilizador está bloqueado.'
                skipped_sandbox:
                  type: integer
                  description: 'Ignorado: aplicação em sandbox, nenhuma triagem é criada.'
                failed_provider:
                  type: integer
                  description: >-
                    Não foi possível concluir a triagem; tente novamente mais
                    tarde.
                failed_insufficient_balance:
                  type: integer
                  description: O saldo esgotou-se enquanto a tarefa estava em execução.
            results:
              type: array
              description: >-
                Uma entrada por perfil processado, pela ordem de processamento.
                Aumenta enquanto a tarefa é executada; completa assim que o
                estado for COMPLETED. Registada para tarefas iniciadas através
                da API.
              items:
                type: object
                properties:
                  didit_internal_id:
                    type: string
                    format: uuid
                    description: ID interno da Didit do perfil.
                  vendor_data:
                    type: string
                    nullable: true
                    description: O 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 estado é FAILED; a causa
                detalhada é mantida do lado da plataforma.
            created_at:
              type: string
              format: date-time
            completed_at:
              type: string
              format: date-time
              nullable: true
            estimate:
              type: object
              description: >-
                Pré-visualização do custo. Devolvida diretamente quando
                estimate_only é true (nada é gravado).
              properties:
                users_total:
                  type: integer
                  description: Perfis correspondidos pela seleção.
                already_enabled:
                  type: integer
                  description: >-
                    Perfis já monitorizados (nada a fazer ao ativar; são estes
                    que a desativação desliga).
                with_existing_aml:
                  type: integer
                  description: >-
                    Perfis cuja triagem AML existente será alterada para
                    monitorizada (sem nova triagem).
                needing_screening:
                  type: integer
                  description: >-
                    Perfis sem qualquer triagem AML que serão submetidos a
                    triagem primeiro (faturada como uma triagem AML normal).
                skipped_no_identity_data:
                  type: integer
                  description: >-
                    Perfis que não podem ser submetidos a triagem porque faltam
                    dados de identidade.
                skipped_blocked:
                  type: integer
                  description: >-
                    Utilizadores bloqueados que serão ignorados (sempre 0 para
                    empresas).
                estimated_screening_cost_usd:
                  type: number
                  example: 0.2
                  description: Custo único das novas triagens.
                estimated_annual_monitoring_cost_usd:
                  type: number
                  example: 0.07
                  description: >-
                    Custo anual de monitorização dos perfis que passarão a ser
                    monitorizados.
                balance_sufficient:
                  type: boolean
                  description: >-
                    Se o saldo da organização cobre a triagem mais o primeiro
                    ano de monitorização.
            unmatched:
              type: array
              items:
                type: string
              description: >-
                Identificadores do pedido que não corresponderam a nenhum perfil
                nesta aplicação, exatamente como foram enviados. 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 trabalho ativa a monitorização, false quando a
            desativa.
        target_type:
          type: string
          enum:
            - user
            - business
          description: Qual a família de perfis que a tarefa ativa/desativa.
        total:
          type: integer
          description: Perfis que a tarefa processa.
        processed:
          type: integer
          description: Perfis processados até ao momento.
        outcomes:
          type: object
          description: >-
            Contadores de resultados por registo. Cada perfil selecionado
            corresponde exatamente a um contador; nada é ignorado
            silenciosamente.
          properties:
            enabled:
              type: integer
              description: Monitorização ativada numa triagem AML existente.
            screened_and_enabled:
              type: integer
              description: >-
                Foi criada uma nova triagem AML (faturada) e ativada a
                monitorização na mesma.
            already_enabled:
              type: integer
              description: >-
                A monitorização já se encontrava ativa; nada foi alterado e nada
                foi faturado.
            disabled:
              type: integer
              description: Monitorização desativada em todas as triagens 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 (utilizadores) ou um nome (empresas) necessários para a
                triagem.
            skipped_blocked:
              type: integer
              description: 'Ignorado: o utilizador está bloqueado.'
            skipped_sandbox:
              type: integer
              description: 'Ignorado: aplicação em sandbox, nenhuma triagem é criada.'
            failed_provider:
              type: integer
              description: Não foi possível concluir a triagem; tente novamente mais tarde.
            failed_insufficient_balance:
              type: integer
              description: O saldo esgotou-se enquanto a tarefa estava em execução.
        results:
          type: array
          description: >-
            Uma entrada por perfil processado, pela ordem de processamento.
            Aumenta enquanto a tarefa é executada; completa assim que o estado
            for COMPLETED. Registada para tarefas iniciadas através da API.
          items:
            type: object
            properties:
              didit_internal_id:
                type: string
                format: uuid
                description: ID interno da Didit do perfil.
              vendor_data:
                type: string
                nullable: true
                description: O 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 estado é FAILED; a causa
            detalhada é mantida do lado da plataforma.
        created_at:
          type: string
          format: date-time
        completed_at:
          type: string
          format: date-time
          nullable: true
        estimate:
          type: object
          description: >-
            Pré-visualização do custo. Devolvida diretamente quando
            estimate_only é true (nada é gravado).
          properties:
            users_total:
              type: integer
              description: Perfis correspondidos pela seleção.
            already_enabled:
              type: integer
              description: >-
                Perfis já monitorizados (nada a fazer ao ativar; são estes que a
                desativação desliga).
            with_existing_aml:
              type: integer
              description: >-
                Perfis cuja triagem AML existente será alterada para
                monitorizada (sem nova triagem).
            needing_screening:
              type: integer
              description: >-
                Perfis sem qualquer triagem AML que serão submetidos a triagem
                primeiro (faturada como uma triagem AML normal).
            skipped_no_identity_data:
              type: integer
              description: >-
                Perfis que não podem ser submetidos a triagem porque faltam
                dados de identidade.
            skipped_blocked:
              type: integer
              description: >-
                Utilizadores bloqueados que serão ignorados (sempre 0 para
                empresas).
            estimated_screening_cost_usd:
              type: number
              example: 0.2
              description: Custo único das novas triagens.
            estimated_annual_monitoring_cost_usd:
              type: number
              example: 0.07
              description: >-
                Custo anual de monitorização dos perfis que passarão a ser
                monitorizados.
            balance_sufficient:
              type: boolean
              description: >-
                Se o saldo da organização cobre a triagem mais o primeiro ano de
                monitorização.
        unmatched:
          type: array
          items:
            type: string
          description: >-
            Identificadores do pedido que não corresponderam a nenhum perfil
            nesta aplicação, exatamente como foram enviados. Não fazem parte da
            tarefa.
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: >-
        A chave de API da sua aplicação, a partir de Programadores -> Chaves de
        API na Business Console. A chave principal tem acesso total. Uma chave
        nomeada pode ter o âmbito definido: nenhum, 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á
        incorreta, 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 o
        pedido veio de um endereço fora da sua lista de IP; 404 numa rota de
        sessão significa que a sessão está fora dos fluxos ou estados da chave.
        Uma chave sem acesso a multimédia recebe URLs de imagens, vídeos e PDFs
        como nulos, e uma chave sem permissão de escrita em sessões recebe
        ligações de sessão e tokens como nulos. Consulte
        https://docs.didit.me/console/api-keys.

````

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