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

# Monitoratge AML per a empreses: activar o desactivar API

> Activa o desactiva el monitoratge AML de diverses empreses en una crida de l'API de Didit, amb estimació de cost i resultat per empresa.



Prompt per activar o desactivar el monitoratge AML per a empreses
        Copia el prompt al porta-retalls



      
      

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



      
      

Enganxa a

## Visió generalActiva o desactiva el [monitoratge AML continu](https://docs.didit.me/ca/core-technology/aml-screening/continuous-monitoring-aml-screening.md) per a les [empreses](https://docs.didit.me/ca/entities/businesses/overview.md) seleccionades, exactament com l'acció **Monitoratge AML continu** de la Business Console. La Console i aquest endpoint executen la mateixa operació subjacent, de manera que les regles, la facturació i els resultats són idèntics.Envia primer `estimate_only: true` per veure quantes empreses estan seleccionades, quantes necessiten un nou Cribratge AML, el cost únic del cribratge i el cost anual del monitoratge. Una execució de prova no escriu res. L'estimació fa servir els mateixos noms de camp que l'endpoint d'usuaris, de manera que `users_total` és el nombre d'empreses seleccionades.## Com es processa una selecció- **Un cribratge monitoritzat per empresa.** Una empresa que s'ha verificat diverses vegades es monitoritza i es factura una sola vegada. Desactivar-lo desactiva el monitoratge en tots els cribratges d'aquesta empresa.
- **Les empreses sense cribratge AML se sotmeten primer a un cribratge.** Didit crea un nou Cribratge AML per a elles (visible a la pestanya **Verificacions** de l'empresa), facturat com un Cribratge AML habitual, i hi activa el monitoratge. El cribratge utilitza el nom legal (o nom de visualització) i el país de l'empresa. Una empresa sense cap nom es informa com a `skipped_no_identity_data` en lloc de descartar-se en silenci.
- **Les aplicacions de sandbox mai creen cribratges** (`skipped_sandbox`).
- **El saldo es comprova per endavant.** L'activació es rebutja amb `403` quan el saldo no cobreix l'estimació, i la resposta inclou l'estimació perquè sàpigues quant cal recarregar.
- **Renovació anual.** Una empresa que comença a estar monitoritzada es factura al preu anual de monitoratge en la seva propera data de renovació, la mateixa que la Console mostra a la columna **Monitoratge continu**. Desactivar-lo atura la renovació; no reembossa cap període ja facturat.## Selecció i mida del lotSelecciona empreses amb `vendor_data_list`, `didit_internal_id_list`, o amb totes dues; les dues llistes es combinen amb OR. Una sol·licitud accepta com a màxim **1000 identificadors** entre totes dues llistes. Els identificadors que no coincideixen amb cap empresa de la teva aplicació es retornen a `unmatched`, tal com s'han enviat, i mai no fan fallar la sol·licitud: una selecció sense coincidències es completa com a tasca buida (`total: 0`) amb tots els identificadors indicats, igual que als endpoints d'eliminació en lot.## En línia o en segon plaLes seleccions de **20 empreses o menys** es processen en línia i la crida retorna `200` amb la tasca finalitzada. Les seleccions més grans retornen `202` amb una tasca `PENDING`; consulta [Obtenir la tasca de monitoratge AML](https://docs.didit.me/ca/management-api/aml-monitoring/get-job.md) fins que `status` sigui `COMPLETED` o `FAILED`. En tots dos casos, la tasca porta una entrada `results` per empresa amb el seu resultat `outcome`.| `outcome` | Significat |
| - | - |
| `enabled` | Monitoratge activat en un cribratge AML existent. |
| `screened_and_enabled` | S'ha creat un nou cribratge AML (facturat) i s'hi ha activat el monitoratge. |
| `already_enabled` | El monitoratge ja estava actiu; no s'ha canviat res ni s'ha facturat res. |
| `disabled` | Monitoratge desactivat en tots els cribratges de l'empresa. |
| `skipped_no_identity_data` | L'empresa no té cap nom legal ni de visualització per sotmetre-la a un cribratge. |
| `skipped_sandbox` | Aplicació de sandbox; no es crea cap cribratge. |
| `failed_provider` | No s'ha pogut completar el cribratge. Torna-ho a intentar més tard. |
| `failed_insufficient_balance` | El saldo s'ha esgotat mentre s'executava la tasca. |## WebhooksActivar o desactivar el monitoratge no emet cap webhook propi. Un cop el monitoratge s'ha activat, els recribratges continuen generant els esdeveniments habituals `status.updated` i `data.updated` descrits a [Monitoratge AML continu](https://docs.didit.me/ca/core-technology/aml-screening/continuous-monitoring-aml-screening.md).## PermisosQualsevol clau d'API activa de l'aplicació pot cridar aquest endpoint. Les claus d'API de Didit tenen **abast d'aplicació, no de rol**: els [rols i permisos](https://docs.didit.me/ca/console/roles-permissions.md) de la Console determinen què pot fer una *persona* a la Console i no s'avaluen per al trànsit de la Management API.## Relacionats- [Obtenir la tasca de monitoratge AML](https://docs.didit.me/ca/management-api/aml-monitoring/get-job.md)
- [Activar o desactivar el monitoratge AML per als usuaris](https://docs.didit.me/ca/management-api/aml-monitoring/toggle-users.md)
- [Monitoratge AML continu](https://docs.didit.me/ca/core-technology/aml-screening/continuous-monitoring-aml-screening.md)
- [Cribratge AML d'empreses](https://docs.didit.me/ca/business-verification/aml.md)
- [Llistar empreses](https://docs.didit.me/ca/management-api/businesses/list.md)


## OpenAPI

````yaml ca/openapi-25.json POST /v3/businesses/aml-monitoring/
openapi: 3.0.0
info:
  version: 3.0.0
  title: Didit Verification API
  description: API de verificació d'identitat. Autentica't amb la capçalera x-api-key.
servers:
  - url: https://verification.didit.me
security: []
tags: []
paths:
  /v3/businesses/aml-monitoring/:
    post:
      tags:
        - AML Ongoing Monitoring
      summary: Habilita o inhabilita el monitoratge AML continu per a empreses
      description: >-
        Activa o desactiva el monitoratge AML continu per a les empreses
        seleccionades, amb la mateixa semàntica que la Business Console. Es
        manté exactament un cribratge AML monitorat per empresa, de manera que
        un perfil que s'ha verificat diverses vegades es monitora i es factura
        un sol cop; si es desactiva, s'apaga el monitoratge de tots els
        cribratges del perfil. Les empreses sense cap cribratge AML es cribren
        primer (es factura com un cribratge AML habitual) si tenen la raó social
        o el nom visible necessari; en cas contrari, s'informa com a
        `skipped_no_identity_data`.


        Defineix `estimate_only: true` per previsualitzar els recomptes i els
        costos sense escriure res. Les seleccions de 20 perfils o menys es
        resolen en línia i retornen `200` amb el treball completat; les
        seleccions més grans retornen `202` i s'executen en segon pla: consulta
        periòdicament [Get AML monitoring
        job](#get-/v3/aml-monitoring/jobs/-job_id-/) amb el `job_id` retornat.
        L'activació es rebutja amb un error `403` si el saldo de l'organització
        no cobreix l'estimació. Els identificadors que no coincideixen amb res
        es llisten a `unmatched` i mai no fan fallar la sol·licitud: una
        selecció que no coincideix amb res es completa com un treball buit
        (`total` 0), seguint la mateixa convenció que els endpoints d'eliminació
        per lots.
      operationId: toggle_businesses_aml_monitoring
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - is_enabled
              description: >-
                Selecciona empreses amb `vendor_data_list`,
                `didit_internal_id_list`, o amb totes dues (les dues llistes
                s'avaluen amb un OR lògic). Com a màxim 1000 identificadors per
                sol·licitud entre ambdues llistes.
              properties:
                is_enabled:
                  type: boolean
                  description: true per activar el monitoratge, false per desactivar-lo.
                estimate_only:
                  type: boolean
                  default: false
                  description: >-
                    Quan és cert, retorna l'estimació del cost i no realitza cap
                    escriptura: sense cribratge, sense facturació i sense tasca.
                vendor_data_list:
                  type: array
                  items:
                    type: string
                  description: >-
                    Els teus propis identificadors de les empreses a commutar,
                    coincidits exactament com es van enviar.
                didit_internal_id_list:
                  type: array
                  items:
                    type: string
                    format: uuid
                  description: >-
                    ID interns de Didit de les empreses per activar o
                    desactivar: el `didit_internal_id` retornat pels endpoints
                    de creació, obtenció i llistat.
            examples:
              Estimate first:
                summary: Previsualitza el cost sense escriure dades
                value:
                  is_enabled: true
                  estimate_only: true
                  vendor_data_list:
                    - company-123
                    - company-456
              Enable:
                summary: Habilita el monitoratge per a dues empreses
                value:
                  is_enabled: true
                  vendor_data_list:
                    - company-123
                    - company-456
              Disable:
                summary: Desactiva el monitoratge mitjançant l'ID intern de Didit
                value:
                  is_enabled: false
                  didit_internal_id_list:
                    - 3f1c0d3e-8f0a-4c2e-9a3d-9b1f5f4a2c11
      responses:
        '200':
          description: >-
            L'estimació (quan `estimate_only` és cert) o la tasca completada per
            a una selecció processada en línia.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AMLMonitoringToggleResult'
        '202':
          description: >-
            Les seleccions més grans s'executen en segon pla. Consulta
            periòdicament l'endpoint de tasques amb `job_id`; `results` s'omple
            a mesura que es processen els perfils.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AMLMonitoringJob'
        '400':
          description: >-
            Error de validació: falta `is_enabled`, no hi ha cap selector o hi
            ha més de 1000 identificadors entre totes dues llistes.
        '401':
          description: Falta la clau d'API o no és vàlida.
        '403':
          description: >-
            Saldo insuficient per habilitar el monitoratge per a aquesta
            selecció. La resposta inclou l'`estimate` perquè puguis recarregar
            l'import adequat.
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                  estimate:
                    type: object
                    description: >-
                      Vista prèvia del cost. Es retorna directament quan
                      estimate_only és true (no s'escriu res).
                    properties:
                      users_total:
                        type: integer
                        description: Perfils que coincideixen amb la selecció.
                      already_enabled:
                        type: integer
                        description: >-
                          Perfils que ja estan monitorats (res a fer en activar;
                          són els que es desactiven en desactivar).
                      with_existing_aml:
                        type: integer
                        description: >-
                          Perfils el cribratge AML existent dels quals passarà a
                          estar monitorat (sense nou cribratge).
                      needing_screening:
                        type: integer
                        description: >-
                          Perfils sense cap cribratge AML als quals es farà
                          primer un cribratge (facturat com un cribratge AML
                          ordinari).
                      skipped_no_identity_data:
                        type: integer
                        description: >-
                          Perfils que no es poden sotmetre a cribratge perquè
                          manquen dades d'identitat.
                      skipped_blocked:
                        type: integer
                        description: >-
                          Usuaris bloquejats que s'ometran (sempre 0 per a
                          empreses).
                      estimated_screening_cost_usd:
                        type: number
                        example: 0.2
                        description: Cost únic dels nous cribratges.
                      estimated_annual_monitoring_cost_usd:
                        type: number
                        example: 0.07
                        description: >-
                          Cost de monitoratge anual dels perfils que passaran a
                          estar monitorats.
                      balance_sufficient:
                        type: boolean
                        description: >-
                          Si el saldo de l'organització cobreix el cribratge més
                          el primer any de monitoratge.
      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: >-
            Vista prèvia del cost. Es retorna directament quan estimate_only és
            true (no s'escriu res).
          properties:
            users_total:
              type: integer
              description: Perfils que coincideixen amb la selecció.
            already_enabled:
              type: integer
              description: >-
                Perfils que ja estan monitorats (res a fer en activar; són els
                que es desactiven en desactivar).
            with_existing_aml:
              type: integer
              description: >-
                Perfils el cribratge AML existent dels quals passarà a estar
                monitorat (sense nou cribratge).
            needing_screening:
              type: integer
              description: >-
                Perfils sense cap cribratge AML als quals es farà primer un
                cribratge (facturat com un cribratge AML ordinari).
            skipped_no_identity_data:
              type: integer
              description: >-
                Perfils que no es poden sotmetre a cribratge perquè manquen
                dades d'identitat.
            skipped_blocked:
              type: integer
              description: Usuaris bloquejats que s'ometran (sempre 0 per a empreses).
            estimated_screening_cost_usd:
              type: number
              example: 0.2
              description: Cost únic dels nous cribratges.
            estimated_annual_monitoring_cost_usd:
              type: number
              example: 0.07
              description: >-
                Cost de monitoratge anual dels perfils que passaran a estar
                monitorats.
            balance_sufficient:
              type: boolean
              description: >-
                Si el saldo de l'organització cobreix el cribratge més el primer
                any de monitoratge.
            unmatched:
              type: array
              items:
                type: string
              description: >-
                Identificadors de la sol·licitud que no coincideixen amb cap
                perfil d'aquesta aplicació, exactament tal com s'han enviat.
        - 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 quan la tasca activa el monitoratge, false quan el
                desactiva.
            target_type:
              type: string
              enum:
                - user
                - business
              description: Quina família de perfils commuta la tasca.
            total:
              type: integer
              description: Perfils que processa la tasca.
            processed:
              type: integer
              description: Perfils processats fins ara.
            outcomes:
              type: object
              description: >-
                Comptadors de resultats per registre. Cada perfil seleccionat
                s'assigna exactament a un comptador; no s'omet res
                silenciosament.
              properties:
                enabled:
                  type: integer
                  description: Monitoratge activat en un cribratge AML existent.
                screened_and_enabled:
                  type: integer
                  description: >-
                    S'ha creat un nou cribratge AML (facturat) i s'hi ha activat
                    el monitoratge.
                already_enabled:
                  type: integer
                  description: >-
                    El monitoratge ja estava actiu; no s'ha modificat res ni
                    s'ha facturat res.
                disabled:
                  type: integer
                  description: Monitoratge desactivat a tots els cribratges AML del perfil.
                skipped_no_identity_data:
                  type: integer
                  description: >-
                    Omès: el perfil no disposa del nom complet, la data de
                    naixement i el país (usuaris) o del nom (empreses)
                    necessaris per cribrar.
                skipped_blocked:
                  type: integer
                  description: 'Omès: l''usuari està bloquejat.'
                skipped_sandbox:
                  type: integer
                  description: 'Omès: aplicació de sandbox, no es crea cap cribratge.'
                failed_provider:
                  type: integer
                  description: No s'ha pogut completar el cribratge; reintenta-ho més tard.
                failed_insufficient_balance:
                  type: integer
                  description: El saldo s'ha esgotat mentre s'executava la tasca.
            results:
              type: array
              description: >-
                Una entrada per perfil processat, en ordre de processament.
                Creix mentre s'executa la tasca; es completa un cop l'estat és
                COMPLETED. Es registra per a les tasques iniciades mitjançant
                l'API.
              items:
                type: object
                properties:
                  didit_internal_id:
                    type: string
                    format: uuid
                    description: ID intern de Didit del perfil.
                  vendor_data:
                    type: string
                    nullable: true
                    description: El teu propi identificador per al 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: >-
                Missatge d'error genèric quan l'estat és FAILED; la causa
                detallada es manté a la plataforma.
            created_at:
              type: string
              format: date-time
            completed_at:
              type: string
              format: date-time
              nullable: true
            estimate:
              type: object
              description: >-
                Vista prèvia del cost. Es retorna directament quan estimate_only
                és true (no s'escriu res).
              properties:
                users_total:
                  type: integer
                  description: Perfils que coincideixen amb la selecció.
                already_enabled:
                  type: integer
                  description: >-
                    Perfils que ja estan monitorats (res a fer en activar; són
                    els que es desactiven en desactivar).
                with_existing_aml:
                  type: integer
                  description: >-
                    Perfils el cribratge AML existent dels quals passarà a estar
                    monitorat (sense nou cribratge).
                needing_screening:
                  type: integer
                  description: >-
                    Perfils sense cap cribratge AML als quals es farà primer un
                    cribratge (facturat com un cribratge AML ordinari).
                skipped_no_identity_data:
                  type: integer
                  description: >-
                    Perfils que no es poden sotmetre a cribratge perquè manquen
                    dades d'identitat.
                skipped_blocked:
                  type: integer
                  description: Usuaris bloquejats que s'ometran (sempre 0 per a empreses).
                estimated_screening_cost_usd:
                  type: number
                  example: 0.2
                  description: Cost únic dels nous cribratges.
                estimated_annual_monitoring_cost_usd:
                  type: number
                  example: 0.07
                  description: >-
                    Cost de monitoratge anual dels perfils que passaran a estar
                    monitorats.
                balance_sufficient:
                  type: boolean
                  description: >-
                    Si el saldo de l'organització cobreix el cribratge més el
                    primer any de monitoratge.
            unmatched:
              type: array
              items:
                type: string
              description: >-
                Identificadors de la sol·licitud que no coincideixen amb cap
                perfil d'aquesta aplicació, exactament tal com s'han enviat. No
                formen part de la tasca.
    AMLMonitoringJob:
      type: object
      properties:
        job_id:
          type: string
          format: uuid
        status:
          type: string
          enum:
            - PENDING
            - PROCESSING
            - COMPLETED
            - FAILED
        is_enabled:
          type: boolean
          description: true quan la tasca activa el monitoratge, false quan el desactiva.
        target_type:
          type: string
          enum:
            - user
            - business
          description: Quina família de perfils commuta la tasca.
        total:
          type: integer
          description: Perfils que processa la tasca.
        processed:
          type: integer
          description: Perfils processats fins ara.
        outcomes:
          type: object
          description: >-
            Comptadors de resultats per registre. Cada perfil seleccionat
            s'assigna exactament a un comptador; no s'omet res silenciosament.
          properties:
            enabled:
              type: integer
              description: Monitoratge activat en un cribratge AML existent.
            screened_and_enabled:
              type: integer
              description: >-
                S'ha creat un nou cribratge AML (facturat) i s'hi ha activat el
                monitoratge.
            already_enabled:
              type: integer
              description: >-
                El monitoratge ja estava actiu; no s'ha modificat res ni s'ha
                facturat res.
            disabled:
              type: integer
              description: Monitoratge desactivat a tots els cribratges AML del perfil.
            skipped_no_identity_data:
              type: integer
              description: >-
                Omès: el perfil no disposa del nom complet, la data de naixement
                i el país (usuaris) o del nom (empreses) necessaris per cribrar.
            skipped_blocked:
              type: integer
              description: 'Omès: l''usuari està bloquejat.'
            skipped_sandbox:
              type: integer
              description: 'Omès: aplicació de sandbox, no es crea cap cribratge.'
            failed_provider:
              type: integer
              description: No s'ha pogut completar el cribratge; reintenta-ho més tard.
            failed_insufficient_balance:
              type: integer
              description: El saldo s'ha esgotat mentre s'executava la tasca.
        results:
          type: array
          description: >-
            Una entrada per perfil processat, en ordre de processament. Creix
            mentre s'executa la tasca; es completa un cop l'estat és COMPLETED.
            Es registra per a les tasques iniciades mitjançant l'API.
          items:
            type: object
            properties:
              didit_internal_id:
                type: string
                format: uuid
                description: ID intern de Didit del perfil.
              vendor_data:
                type: string
                nullable: true
                description: El teu propi identificador per al 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: >-
            Missatge d'error genèric quan l'estat és FAILED; la causa detallada
            es manté a la plataforma.
        created_at:
          type: string
          format: date-time
        completed_at:
          type: string
          format: date-time
          nullable: true
        estimate:
          type: object
          description: >-
            Vista prèvia del cost. Es retorna directament quan estimate_only és
            true (no s'escriu res).
          properties:
            users_total:
              type: integer
              description: Perfils que coincideixen amb la selecció.
            already_enabled:
              type: integer
              description: >-
                Perfils que ja estan monitorats (res a fer en activar; són els
                que es desactiven en desactivar).
            with_existing_aml:
              type: integer
              description: >-
                Perfils el cribratge AML existent dels quals passarà a estar
                monitorat (sense nou cribratge).
            needing_screening:
              type: integer
              description: >-
                Perfils sense cap cribratge AML als quals es farà primer un
                cribratge (facturat com un cribratge AML ordinari).
            skipped_no_identity_data:
              type: integer
              description: >-
                Perfils que no es poden sotmetre a cribratge perquè manquen
                dades d'identitat.
            skipped_blocked:
              type: integer
              description: Usuaris bloquejats que s'ometran (sempre 0 per a empreses).
            estimated_screening_cost_usd:
              type: number
              example: 0.2
              description: Cost únic dels nous cribratges.
            estimated_annual_monitoring_cost_usd:
              type: number
              example: 0.07
              description: >-
                Cost de monitoratge anual dels perfils que passaran a estar
                monitorats.
            balance_sufficient:
              type: boolean
              description: >-
                Si el saldo de l'organització cobreix el cribratge més el primer
                any de monitoratge.
        unmatched:
          type: array
          items:
            type: string
          description: >-
            Identificadors de la sol·licitud que no coincideixen amb cap perfil
            d'aquesta aplicació, exactament tal com s'han enviat. No formen part
            de la tasca.
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: >-
        La clau d'API de la teva aplicació, des de Developers -> API keys a la
        Business Console. La clau primària té accés complet. Una clau amb nom
        pot tenir l'abast limitat: cap, lectura o escriptura per recurs,
        limitada a determinats fluxos de treball o a sessions aprovades, a una
        llista d'adreces IP i a una data de caducitat. 401 significa que la clau
        és incorrecta, revocada o caducada; 403 significa que no s'ha enviat cap
        clau, que la clau no té accés a aquest recurs o acció, o que la
        sol·licitud prové d'una adreça fora de la seva llista d'IP; 404 en una
        ruta de sessió significa que la sessió està fora dels fluxos de treball
        o estats de la clau. Una clau sense accés a fitxers multimèdia rep els
        URL d'imatge, vídeo i PDF com a null, i una clau sense permís
        d'escriptura de sessions rep els enllaços de sessió i els tokens com a
        null. Consulta https://docs.didit.me/console/api-keys.

````

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