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

# Activer/désactiver la surveillance AML des entreprises

> Activez ou désactivez la surveillance AML de plusieurs entreprises en un seul appel Didit, avec estimation de coût et résultat par entreprise.



Prompt pour activer ou désactiver la surveillance AML des entreprises
        Copier le prompt dans le presse-papiers



      
      

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



      
      

Coller dans

## Vue d'ensembleActive ou désactive la [surveillance AML continue](https://docs.didit.me/fr/core-technology/aml-screening/continuous-monitoring-aml-screening.md) pour les [entreprises](https://docs.didit.me/fr/entities/businesses/overview.md) sélectionnées, exactement comme l'action **Surveillance AML continue** du Business Console. La Console et cet endpoint exécutent la même opération sous-jacente : les règles, la facturation et les résultats sont donc identiques.Envoyez d'abord `estimate_only: true` pour connaître le nombre d'entreprises sélectionnées, le nombre d'entreprises qui nécessitent un nouveau filtrage AML, le coût unique du filtrage et le coût annuel de la surveillance. Une exécution à blanc n'écrit rien. L'estimation utilise les mêmes noms de champs que l'endpoint des utilisateurs : `users_total` correspond donc au nombre d'entreprises sélectionnées.## Traitement d'une sélection- **Un seul filtrage surveillé par entreprise.** Une entreprise qui a été vérifiée plusieurs fois est surveillée et facturée une seule fois. La désactivation arrête la surveillance sur l'ensemble des filtrages de cette entreprise.
- **Les entreprises sans filtrage AML sont d'abord filtrées.** Didit crée pour elles une nouvelle vérification AML (visible dans l'onglet **Vérifications** de l'entreprise), facturée comme un filtrage AML classique, et active la surveillance sur ce filtrage. Le filtrage utilise la raison sociale (ou le nom d'affichage) et le pays de l'entreprise. Une entreprise sans aucun nom est signalée avec `skipped_no_identity_data` au lieu d'être ignorée silencieusement.
- **Les applications sandbox ne créent jamais de filtrage** (`skipped_sandbox`).
- **Le solde est vérifié au préalable.** L'activation est refusée avec `403` lorsque votre solde ne couvre pas l'estimation. La réponse contient alors l'estimation, afin que vous sachiez combien recharger.
- **Renouvellement annuel.** Une entreprise nouvellement surveillée est facturée au tarif annuel de la surveillance à sa prochaine date de renouvellement, celle que la Console affiche dans la colonne **Surveillance continue**. La désactivation arrête le renouvellement ; elle ne rembourse pas une période déjà facturée.## Sélection et taille du lotSélectionnez des entreprises avec `vendor_data_list`, `didit_internal_id_list`, ou les deux ; les deux listes sont combinées par un opérateur OR. Une requête accepte au maximum **1000 identifiants** au total pour les deux listes. Les identifiants qui ne correspondent à aucune entreprise de votre application sont renvoyés sous `unmatched`, tels qu'envoyés, et ne font jamais échouer la requête : une sélection sans correspondance se termine comme une tâche vide (`total: 0`) avec tous les identifiants listés, selon la même convention que les endpoints de suppression par lot.## Traitement synchrone ou en arrière-planLes sélections de **20 entreprises ou moins** sont traitées de manière synchrone, et l'appel renvoie `200` avec la tâche terminée. Les sélections plus importantes renvoient `202` avec une tâche `PENDING` ; interrogez [Obtenir la tâche de surveillance AML](https://docs.didit.me/fr/management-api/aml-monitoring/get-job.md) jusqu'à ce que `status` vaille `COMPLETED` ou `FAILED`. Dans les deux cas, la tâche contient une entrée `results` par entreprise, avec son `outcome`.| `outcome` | Signification |
| - | - |
| `enabled` | Surveillance activée sur un filtrage AML existant. |
| `screened_and_enabled` | Un nouveau filtrage AML a été créé (facturé) et la surveillance y a été activée. |
| `already_enabled` | La surveillance était déjà active ; rien n'a changé, rien n'a été facturé. |
| `disabled` | Surveillance désactivée sur tous les filtrages de l'entreprise. |
| `skipped_no_identity_data` | L'entreprise n'a ni raison sociale ni nom d'affichage à filtrer. |
| `skipped_sandbox` | Application sandbox ; aucun filtrage n'est créé. |
| `failed_provider` | Le filtrage n'a pas pu être terminé. Réessayez plus tard. |
| `failed_insufficient_balance` | Le solde s'est épuisé pendant l'exécution de la tâche. |## WebhooksL'activation ou la désactivation de la surveillance n'émet aucun webhook propre. Une fois la surveillance active, les refiltrages continuent de déclencher les événements habituels `status.updated` et `data.updated` décrits dans [Surveillance AML continue](https://docs.didit.me/fr/core-technology/aml-screening/continuous-monitoring-aml-screening.md).## AutorisationsToute clé API active de l'application peut appeler cet endpoint. Les clés API Didit sont **limitées à l'application, et non au rôle** : les [rôles et autorisations](https://docs.didit.me/fr/console/roles-permissions.md) de la Console déterminent ce qu'une *personne* peut faire dans la Console, et ne sont pas évalués pour le trafic de la Management API.## Voir aussi- [Obtenir la tâche de surveillance AML](https://docs.didit.me/fr/management-api/aml-monitoring/get-job.md)
- [Activer ou désactiver la surveillance AML des utilisateurs](https://docs.didit.me/fr/management-api/aml-monitoring/toggle-users.md)
- [Surveillance AML continue](https://docs.didit.me/fr/core-technology/aml-screening/continuous-monitoring-aml-screening.md)
- [Filtrage AML d'une entreprise](https://docs.didit.me/fr/business-verification/aml.md)
- [Lister les entreprises](https://docs.didit.me/fr/management-api/businesses/list.md)


## OpenAPI

````yaml fr/openapi-25.json POST /v3/businesses/aml-monitoring/
openapi: 3.0.0
info:
  version: 3.0.0
  title: Didit Verification API
  description: API de vérification d'identité. Authentifiez-vous avec l'en-tête x-api-key.
servers:
  - url: https://verification.didit.me
security: []
tags: []
paths:
  /v3/businesses/aml-monitoring/:
    post:
      tags:
        - AML Ongoing Monitoring
      summary: Activer ou désactiver la surveillance AML continue pour les entreprises
      description: "Active ou désactive la surveillance AML continue pour les entreprises sélectionnées, avec la même sémantique que la Business Console. Exactement un filtrage AML surveillé est conservé par entreprise, ainsi un profil vérifié plusieurs fois est surveillé et facturé une seule fois\_; la désactivation coupe la surveillance sur tous les filtrages du profil. Les entreprises sans aucun filtrage AML sont d'abord analysées (facturées comme un filtrage AML standard) lorsqu'elles disposent de la raison sociale ou du nom d'affichage nécessaire\_; sinon, elles sont signalées comme `skipped_no_identity_data`.\n\nDéfinissez `estimate_only: true` pour prévisualiser les volumes et les coûts sans rien écrire. Les sélections de 20 profils ou moins sont traitées immédiatement et renvoient `200` avec la tâche terminée\_; les sélections plus importantes renvoient `202` et s'exécutent en arrière-plan - interrogez [Get AML monitoring job](#get-/v3/aml-monitoring/jobs/-job_id-/) avec le `job_id` renvoyé. L'activation est refusée avec `403` lorsque le solde de l'organisation ne couvre pas l'estimation. Les identifiants qui ne correspondent à rien sont listés dans `unmatched` et ne font jamais échouer la requête\_: une sélection sans correspondance se termine comme une tâche vide (`total` égal à 0), selon la même convention que les endpoints de suppression par lot."
      operationId: toggle_businesses_aml_monitoring
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - is_enabled
              description: >-
                Sélectionnez des entreprises avec `vendor_data_list`,
                `didit_internal_id_list`, ou les deux (les deux listes sont
                combinées avec un opérateur OU). Au maximum 1000 identifiants
                par requête sur l'ensemble des deux listes.
              properties:
                is_enabled:
                  type: boolean
                  description: true pour activer la surveillance, false pour la désactiver.
                estimate_only:
                  type: boolean
                  default: false
                  description: >-
                    Si true, renvoie l'estimation des coûts et n'effectue aucune
                    écriture : aucun filtrage, aucune facturation, aucune tâche.
                vendor_data_list:
                  type: array
                  items:
                    type: string
                  description: >-
                    Vos propres identifiants des entreprises à basculer, mis en
                    correspondance exacte avec ceux transmis.
                didit_internal_id_list:
                  type: array
                  items:
                    type: string
                    format: uuid
                  description: >-
                    Identifiants internes Didit des entreprises à basculer - le
                    `didit_internal_id` renvoyé par les endpoints de création,
                    de récupération et de liste.
            examples:
              Estimate first:
                summary: Prévisualiser le coût sans écriture
                value:
                  is_enabled: true
                  estimate_only: true
                  vendor_data_list:
                    - company-123
                    - company-456
              Enable:
                summary: Activer la surveillance pour deux entreprises
                value:
                  is_enabled: true
                  vendor_data_list:
                    - company-123
                    - company-456
              Disable:
                summary: Désactiver la surveillance par l'identifiant interne Didit
                value:
                  is_enabled: false
                  didit_internal_id_list:
                    - 3f1c0d3e-8f0a-4c2e-9a3d-9b1f5f4a2c11
      responses:
        '200':
          description: >-
            L'estimation (lorsque `estimate_only` est true) ou la tâche terminée
            pour une sélection traitée en ligne.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AMLMonitoringToggleResult'
        '202':
          description: >-
            Les sélections plus volumineuses s'exécutent en arrière-plan.
            Interrogez l'endpoint du job avec `job_id` ; `results` se remplit au
            fur et à mesure du traitement des profils.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AMLMonitoringJob'
        '400':
          description: >-
            Erreur de validation : `is_enabled` manquant, aucun sélecteur, ou
            plus de 1000 identifiants sur l'ensemble des deux listes.
        '401':
          description: Clé API manquante ou invalide.
        '403':
          description: >-
            Solde insuffisant pour activer la surveillance pour cette sélection.
            La réponse contient l'`estimate` afin que vous puissiez recharger le
            montant approprié.
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                  estimate:
                    type: object
                    description: >-
                      Aperçu du coût. Renvoyé directement lorsque estimate_only
                      est vrai (rien n'est écrit).
                    properties:
                      users_total:
                        type: integer
                        description: Profils correspondant à la sélection.
                      already_enabled:
                        type: integer
                        description: >-
                          Profils déjà surveillés (aucune action lors de
                          l'activation ; ce sont ceux que la désactivation
                          désactive).
                      with_existing_aml:
                        type: integer
                        description: >-
                          Profils dont le filtrage AML existant passera en mode
                          surveillé (aucun nouveau filtrage).
                      needing_screening:
                        type: integer
                        description: >-
                          Profils sans aucun filtrage AML qui seront d'abord
                          filtrés (facturés comme un filtrage AML standard).
                      skipped_no_identity_data:
                        type: integer
                        description: >-
                          Profils ne pouvant pas faire l'objet d'un filtrage en
                          raison de données d'identité manquantes.
                      skipped_blocked:
                        type: integer
                        description: >-
                          Utilisateurs bloqués qui seront ignorés (toujours 0
                          pour les entreprises).
                      estimated_screening_cost_usd:
                        type: number
                        example: 0.2
                        description: Coût ponctuel des nouveaux filtrages.
                      estimated_annual_monitoring_cost_usd:
                        type: number
                        example: 0.07
                        description: >-
                          Coût de surveillance annuel des profils qui
                          deviendront surveillés.
                      balance_sufficient:
                        type: boolean
                        description: >-
                          Indique si le solde de l'organisation couvre le
                          filtrage ainsi que la première année de surveillance.
      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: >-
            Aperçu du coût. Renvoyé directement lorsque estimate_only est vrai
            (rien n'est écrit).
          properties:
            users_total:
              type: integer
              description: Profils correspondant à la sélection.
            already_enabled:
              type: integer
              description: >-
                Profils déjà surveillés (aucune action lors de l'activation ; ce
                sont ceux que la désactivation désactive).
            with_existing_aml:
              type: integer
              description: >-
                Profils dont le filtrage AML existant passera en mode surveillé
                (aucun nouveau filtrage).
            needing_screening:
              type: integer
              description: >-
                Profils sans aucun filtrage AML qui seront d'abord filtrés
                (facturés comme un filtrage AML standard).
            skipped_no_identity_data:
              type: integer
              description: >-
                Profils ne pouvant pas faire l'objet d'un filtrage en raison de
                données d'identité manquantes.
            skipped_blocked:
              type: integer
              description: >-
                Utilisateurs bloqués qui seront ignorés (toujours 0 pour les
                entreprises).
            estimated_screening_cost_usd:
              type: number
              example: 0.2
              description: Coût ponctuel des nouveaux filtrages.
            estimated_annual_monitoring_cost_usd:
              type: number
              example: 0.07
              description: >-
                Coût de surveillance annuel des profils qui deviendront
                surveillés.
            balance_sufficient:
              type: boolean
              description: >-
                Indique si le solde de l'organisation couvre le filtrage ainsi
                que la première année de surveillance.
            unmatched:
              type: array
              items:
                type: string
              description: >-
                Identifiants de la requête ne correspondant à aucun profil dans
                cette application, exactement tels qu'envoyés.
        - 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 lorsque le traitement active la surveillance, false
                lorsqu'il la désactive.
            target_type:
              type: string
              enum:
                - user
                - business
              description: Quelle famille de profils la tâche active ou désactive.
            total:
              type: integer
              description: Profils traités par la tâche.
            processed:
              type: integer
              description: Profils traités jusqu'à présent.
            outcomes:
              type: object
              description: >-
                Compteurs de résultats par enregistrement. Chaque profil
                sélectionné est associé à exactement un compteur ; rien n'est
                ignoré silencieusement.
              properties:
                enabled:
                  type: integer
                  description: Surveillance activée sur un filtrage AML existant.
                screened_and_enabled:
                  type: integer
                  description: >-
                    Un nouveau filtrage AML a été créé (facturé) et la
                    surveillance y a été activée.
                already_enabled:
                  type: integer
                  description: >-
                    La surveillance était déjà active ; rien n'a changé et rien
                    n'a été facturé.
                disabled:
                  type: integer
                  description: >-
                    Surveillance désactivée sur l'ensemble des filtrages AML du
                    profil.
                skipped_no_identity_data:
                  type: integer
                  description: >-
                    Ignoré : le profil ne contient pas le nom complet, la date
                    de naissance et le pays (utilisateurs) ou un nom
                    (entreprises) nécessaires pour le filtrage.
                skipped_blocked:
                  type: integer
                  description: 'Ignoré : l''utilisateur est bloqué.'
                skipped_sandbox:
                  type: integer
                  description: 'Ignoré : application en sandbox, aucun filtrage n''est créé.'
                failed_provider:
                  type: integer
                  description: Le filtrage n'a pas pu être effectué ; réessayez plus tard.
                failed_insufficient_balance:
                  type: integer
                  description: Le solde a été épuisé pendant l'exécution de la tâche.
            results:
              type: array
              description: "Une entrée par profil traité, dans l'ordre de traitement. S'allonge pendant l'exécution de la tâche\_; complet une fois que le statut est COMPLETED. Enregistré pour les tâches démarrées via l'API."
              items:
                type: object
                properties:
                  didit_internal_id:
                    type: string
                    format: uuid
                    description: Identifiant interne Didit du profil.
                  vendor_data:
                    type: string
                    nullable: true
                    description: Votre propre identifiant pour le profil.
                  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: >-
                Message d'échec générique lorsque le statut est FAILED ; la
                cause détaillée est conservée côté plateforme.
            created_at:
              type: string
              format: date-time
            completed_at:
              type: string
              format: date-time
              nullable: true
            estimate:
              type: object
              description: >-
                Aperçu du coût. Renvoyé directement lorsque estimate_only est
                vrai (rien n'est écrit).
              properties:
                users_total:
                  type: integer
                  description: Profils correspondant à la sélection.
                already_enabled:
                  type: integer
                  description: >-
                    Profils déjà surveillés (aucune action lors de l'activation
                    ; ce sont ceux que la désactivation désactive).
                with_existing_aml:
                  type: integer
                  description: >-
                    Profils dont le filtrage AML existant passera en mode
                    surveillé (aucun nouveau filtrage).
                needing_screening:
                  type: integer
                  description: >-
                    Profils sans aucun filtrage AML qui seront d'abord filtrés
                    (facturés comme un filtrage AML standard).
                skipped_no_identity_data:
                  type: integer
                  description: >-
                    Profils ne pouvant pas faire l'objet d'un filtrage en raison
                    de données d'identité manquantes.
                skipped_blocked:
                  type: integer
                  description: >-
                    Utilisateurs bloqués qui seront ignorés (toujours 0 pour les
                    entreprises).
                estimated_screening_cost_usd:
                  type: number
                  example: 0.2
                  description: Coût ponctuel des nouveaux filtrages.
                estimated_annual_monitoring_cost_usd:
                  type: number
                  example: 0.07
                  description: >-
                    Coût de surveillance annuel des profils qui deviendront
                    surveillés.
                balance_sufficient:
                  type: boolean
                  description: >-
                    Indique si le solde de l'organisation couvre le filtrage
                    ainsi que la première année de surveillance.
            unmatched:
              type: array
              items:
                type: string
              description: >-
                Identifiants de la requête ne correspondant à aucun profil dans
                cette application, exactement tels qu'envoyés. Ils ne font pas
                partie de la tâche.
    AMLMonitoringJob:
      type: object
      properties:
        job_id:
          type: string
          format: uuid
        status:
          type: string
          enum:
            - PENDING
            - PROCESSING
            - COMPLETED
            - FAILED
        is_enabled:
          type: boolean
          description: >-
            true lorsque le traitement active la surveillance, false lorsqu'il
            la désactive.
        target_type:
          type: string
          enum:
            - user
            - business
          description: Quelle famille de profils la tâche active ou désactive.
        total:
          type: integer
          description: Profils traités par la tâche.
        processed:
          type: integer
          description: Profils traités jusqu'à présent.
        outcomes:
          type: object
          description: >-
            Compteurs de résultats par enregistrement. Chaque profil sélectionné
            est associé à exactement un compteur ; rien n'est ignoré
            silencieusement.
          properties:
            enabled:
              type: integer
              description: Surveillance activée sur un filtrage AML existant.
            screened_and_enabled:
              type: integer
              description: >-
                Un nouveau filtrage AML a été créé (facturé) et la surveillance
                y a été activée.
            already_enabled:
              type: integer
              description: >-
                La surveillance était déjà active ; rien n'a changé et rien n'a
                été facturé.
            disabled:
              type: integer
              description: >-
                Surveillance désactivée sur l'ensemble des filtrages AML du
                profil.
            skipped_no_identity_data:
              type: integer
              description: >-
                Ignoré : le profil ne contient pas le nom complet, la date de
                naissance et le pays (utilisateurs) ou un nom (entreprises)
                nécessaires pour le filtrage.
            skipped_blocked:
              type: integer
              description: 'Ignoré : l''utilisateur est bloqué.'
            skipped_sandbox:
              type: integer
              description: 'Ignoré : application en sandbox, aucun filtrage n''est créé.'
            failed_provider:
              type: integer
              description: Le filtrage n'a pas pu être effectué ; réessayez plus tard.
            failed_insufficient_balance:
              type: integer
              description: Le solde a été épuisé pendant l'exécution de la tâche.
        results:
          type: array
          description: "Une entrée par profil traité, dans l'ordre de traitement. S'allonge pendant l'exécution de la tâche\_; complet une fois que le statut est COMPLETED. Enregistré pour les tâches démarrées via l'API."
          items:
            type: object
            properties:
              didit_internal_id:
                type: string
                format: uuid
                description: Identifiant interne Didit du profil.
              vendor_data:
                type: string
                nullable: true
                description: Votre propre identifiant pour le profil.
              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: >-
            Message d'échec générique lorsque le statut est FAILED ; la cause
            détaillée est conservée côté plateforme.
        created_at:
          type: string
          format: date-time
        completed_at:
          type: string
          format: date-time
          nullable: true
        estimate:
          type: object
          description: >-
            Aperçu du coût. Renvoyé directement lorsque estimate_only est vrai
            (rien n'est écrit).
          properties:
            users_total:
              type: integer
              description: Profils correspondant à la sélection.
            already_enabled:
              type: integer
              description: >-
                Profils déjà surveillés (aucune action lors de l'activation ; ce
                sont ceux que la désactivation désactive).
            with_existing_aml:
              type: integer
              description: >-
                Profils dont le filtrage AML existant passera en mode surveillé
                (aucun nouveau filtrage).
            needing_screening:
              type: integer
              description: >-
                Profils sans aucun filtrage AML qui seront d'abord filtrés
                (facturés comme un filtrage AML standard).
            skipped_no_identity_data:
              type: integer
              description: >-
                Profils ne pouvant pas faire l'objet d'un filtrage en raison de
                données d'identité manquantes.
            skipped_blocked:
              type: integer
              description: >-
                Utilisateurs bloqués qui seront ignorés (toujours 0 pour les
                entreprises).
            estimated_screening_cost_usd:
              type: number
              example: 0.2
              description: Coût ponctuel des nouveaux filtrages.
            estimated_annual_monitoring_cost_usd:
              type: number
              example: 0.07
              description: >-
                Coût de surveillance annuel des profils qui deviendront
                surveillés.
            balance_sufficient:
              type: boolean
              description: >-
                Indique si le solde de l'organisation couvre le filtrage ainsi
                que la première année de surveillance.
        unmatched:
          type: array
          items:
            type: string
          description: >-
            Identifiants de la requête ne correspondant à aucun profil dans
            cette application, exactement tels qu'envoyés. Ils ne font pas
            partie de la tâche.
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: >-
        La clé API de votre application, issue de Développeurs -> Clés API dans
        la Business Console. La clé principale dispose d'un accès complet. Une
        clé nommée peut être restreinte : aucun, lecture ou écriture par
        ressource, limitée à certains workflows ou aux sessions approuvées, à
        une liste d'adresses IP et à une date d'expiration. 401 signifie que la
        clé est incorrecte, révoquée ou expirée ; 403 signifie qu'aucune clé n'a
        été envoyée, que la clé n'a pas accès à cette ressource ou action, ou
        que la requête provient d'une adresse hors de sa liste d'IP ; 404 sur
        une route de session signifie que la session est hors des workflows ou
        des statuts de la clé. Une clé sans accès aux médias reçoit les URL
        d'images, de vidéos et de PDF à null, et une clé sans accès en écriture
        aux sessions reçoit les liens et tokens de session à null. Voir
        https://docs.didit.me/console/api-keys.

````

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