> ## Documentation Index
> Fetch the complete documentation index at: https://docs.orbit.devotel.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Documents KYC et cycle de vie du profil de conformité

> Téléchargez vos documents KYC une seule fois, référencez-les par leur identifiant doc_… dans les profils de conformité et les enregistrements de Sender-ID, et renouvelez-les avant leur expiration pour éviter le blocage de vos numéros.

# Documents KYC et cycle de vie du profil de conformité

Les marchés réglementés ne se contentent pas d'un « faites-moi confiance » — un opérateur ou un régulateur exige
une preuve de votre identité avant d'autoriser l'activation d'un numéro de téléphone ou l'acheminement de trafic par un Sender ID.
Orbit modélise cette preuve comme deux éléments qui vous appartiennent : une **bibliothèque
de documents** (les fichiers eux-mêmes) et des **profils de conformité** (l'identité
structurée que les documents viennent étayer). Cette page explique ce qu'un profil capture,
comment les documents passent du téléchargement à la réutilisation puis au renouvellement, où le même document
est référencé, et comment anticiper une expiration avant qu'elle ne vous coûte un
numéro.

Tous les endpoints ci-dessous sont enracinés sur
`https://api.orbit.devotel.io/api/v1/compliance`.

<Note>
  Orbit stocke vos documents, les transmet à l'opérateur et affiche
  leur statut de revue — **l'approbation finale est toujours accordée par l'opérateur ou
  le régulateur de chaque pays**, et non par la plateforme. La fourniture et le renouvellement
  des documents eux-mêmes restent de votre responsabilité.
</Note>

***

## Qu'est-ce qu'un profil de conformité

Un **profil de conformité** (`cprof_…`) est un ensemble d'identité réglementaire : qui
est l'utilisateur final, pour quel cas d'usage, dans quel pays. Les opérateurs examinent le
profil comme un tout — approuvez-le une fois et chaque numéro ou sender couvert par ce profil
peut l'utiliser.

| Champ                        | Ce qu'il capture                                                                                                                                                                                                                                                                                   |
| ---------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `name`                       | Votre libellé pour le profil, par ex. « Numéros locaux DE — Acme GmbH ».                                                                                                                                                                                                                           |
| `use_case`                   | À quoi sert l'identité : `phone_number_purchase`, `sms_sender_id_alphanumeric`, `sms_10dlc_brand_us`, `sms_10dlc_campaign_us`, `sms_tfv_us`, `whatsapp_business_verification`, `rcs_brand_verification`, `email_domain_verification`, `voice_carrier_kyc`, `other`.                                |
| `country_code` / `countries` | Le ou les marchés auxquels le profil répond. Obligatoire pour les cas d'usage de numéros de téléphone et de Sender-ID ; facultatif pour les cas indépendants du pays (WhatsApp, RCS, email).                                                                                                       |
| `end_user_type`              | `business` ou `individual` — les régulateurs appliquent des règles documentaires différentes à chacun.                                                                                                                                                                                             |
| données structurées          | Les champs typés exigés par le pays (dénomination sociale enregistrée, adresse, numéro fiscal, …) définis via `PUT /compliance-profiles/:id/data`. Vérifiez exactement quels champs un pays exige avec le [regulatory-preview endpoint](/numbers/regulatory-preview) avant de commencer à remplir. |

Le statut propre d'un profil évolue de `draft` → `pending_review` → `approved` (ou
`rejected` / `partially_rejected`), puis vers `expired` lorsque sa fenêtre de validité
se referme. Seul un profil `approved` satisfait les contrôles d'un pays.

***

## Le cycle de vie d'un document

Les documents vivent dans une **bibliothèque** à l'échelle du tenant, indépendante de tout
profil individuel. Téléchargez un passeport une seule fois et vous pourrez l'attacher à un profil
de numéro de téléphone allemand aujourd'hui et réutiliser le même fichier pour un enregistrement
de Sender-ID demain — sans second téléchargement.

### 1. Téléchargement

`POST /compliance/documents` accepte un téléchargement `multipart/form-data` et
renvoie l'identifiant de bibliothèque du document, qui commence toujours par `doc_` :

```bash theme={null}
curl -X POST https://api.orbit.devotel.io/api/v1/compliance/documents \
  -H "Authorization: Bearer $ORBIT_API_KEY" \
  -F "type=business_registration" \
  -F "country_code=DE" \
  -F "file=@/path/to/registration.pdf"
```

| Accepté             | Valeurs                                                                                                                                                                                     |
| ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Types de documents  | `id_card`, `passport`, `drivers_license`, `utility_bill`, `bank_statement`, `business_registration`, `vat_certificate`, `lease_agreement`, `proof_of_address`, `power_of_attorney`, `other` |
| Formats de fichiers | JPEG, PNG, WebP, PDF                                                                                                                                                                        |
| Taille max          | 10 Mo                                                                                                                                                                                       |

Les fichiers sont chiffrés avant de quitter l'API et conservés dans un stockage privé ;
rien dans un identifiant `doc_…` n'est devinable ni partageable en dehors de votre
organisation. Listez la bibliothèque à tout moment avec `GET /compliance/documents`.

### 2. Référence par identifiant `doc_…`

Un document seul est inerte — il ne remplit un rôle réglementaire que lorsqu'il est
**attaché à un profil** avec un rôle :

```bash theme={null}
curl -X POST https://api.orbit.devotel.io/api/v1/compliance/compliance-profiles/cprof_abc123/documents \
  -H "Authorization: Bearer $ORBIT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "document_id": "doc_k7f2m9x1ab", "role": "business_doc" }'
```

Les rôles (`id_proof`, `address_proof`, `business_doc`, `authorization`,
`other`) indiquent à l'opérateur quelle exigence le document satisfait. Le
même identifiant `doc_…` peut jouer un rôle différent dans un profil différent.

### 3. Expiration

De nombreux régulateurs considèrent les documents comme périmés passé un âge fixe — Ofcom au Royaume-Uni,
BNetzA en Allemagne et l'ARCEP en France, entre autres, exigent généralement qu'une pièce d'identité ou un justificatif de
domicile ne date pas de plus de 3 à 12 mois. Orbit enregistre un `expires_at`
par document attaché ; une fois un document expiré, il cesse de compter pour les
exigences du pays même si le fichier lui-même reste dans votre bibliothèque.

### 4. Renouvellement

Le renouvellement est un nouveau téléchargement, pas une modification : téléchargez le document de remplacement,
attachez-le au profil dans le même rôle, puis détachez (et supprimez éventuellement,
avec `DELETE /compliance/documents/:id`) le document expiré. Les profils
déjà `approved` restent approuvés pendant que vous remplacez le document — la
soumission est ré-examinée à la prochaine utilisation.

<Warning>
  La suppression d'un document est refusée tant qu'il est encore attaché à un profil.
  Détachez-le d'abord de chaque profil, puis supprimez-le.
</Warning>

***

## Où les documents sont réutilisés

L'identifiant `doc_…` est l'unique pointeur que trois surfaces produit partagent :

1. **Enregistrement de Sender-ID.** Chaque entrée de pays dans
   [Sender-ID Registration](/compliance/sender-id-registration) porte des
   `document_refs` : une liste d'identifiants `doc_…` étayant le dépôt pour ce pays.
   La route d'enregistrement n'accepte jamais de fichiers — référencez les identifiants de la bibliothèque
   déjà téléchargés, et le même document couvre autant de pays que ceux qui
   l'acceptent.
2. **Aperçu réglementaire des numéros.** Le contrôle
   [regulatory-preview](/numbers/regulatory-preview) renvoie
   `compliance_profile_satisfies: true` uniquement lorsqu'un profil couvre chaque
   champ requis **et** que ses documents attachés ne sont pas expirés — un
   document expiré fait passer l'indicateur à `false` même sur un profil par
   ailleurs complet.
3. **Blocage à l'achat de numéro.** Acheter un numéro dans un pays réglementé
   sans profil satisfaisant place le numéro en `pending_compliance`:
   il est débité, mais ne s'activera pas tant qu'un profil approuvé n'est pas
   attaché. Si la date limite de vérification de l'opérateur passe alors que le numéro est
   toujours en attente, le numéro peut être libéré automatiquement — voir
   [Number Lifecycle](/numbers/lifecycle) pour la libération et la récupération.

***

## Surveillez l'expiration avant qu'elle ne vous coûte un numéro

Orbit déduit des alertes d'expiration par numéro à partir des horodatages qu'il
stocke déjà : le `expires_at` de chaque document, et la date limite de vérification de l'opérateur sur
les numéros en attente `pending_compliance`. Lisez-les avec :

```bash theme={null}
curl "https://api.orbit.devotel.io/api/v1/numbers/document-expiry-alerts" \
  -H "Authorization: Bearer $ORBIT_API_KEY"
```

Chaque alerte indique le numéro, l'expiration contraignante la plus proche
(`earliest_expiry_at`), si elle provient d'un document ou de la date limite
de l'opérateur (`earliest_expiry_source`), le nombre entier de jours avant expiration
(négatif une fois celle-ci passée), et une `suggested_action` :

* `renew` — encore valide mais dans votre fenêtre d'alerte ; téléchargez le
  remplacement dès maintenant.
* `renew_or_release` — déjà expiré ; renouvelez immédiatement ou décidez de laisser
  partir le numéro.

La fenêtre d'anticipation est de 30 jours par défaut. Ajustez-la par organisation avec
le paramètre `numbers.document_expiry_alert_days` (1 à 365 jours), ou prévisualisez une
fenêtre différente à la demande avec le paramètre de requête `?days=`. Les lignes de la réponse
sont triées par urgence croissante ; un inventaire à risque très volumineux est plafonné et
rapporte `truncated: true`, donc resserrez la fenêtre si vous atteignez le plafond.

***

## Tenant-owned by design

La répartition des responsabilités est délibérée :

| Orbit (la plateforme)                                                                                                                                    | Vous (le tenant)                                                                                       |
| -------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------ |
| Chiffre et stocke chaque document une seule fois, dans le périmètre de votre organisation.                                                               | Fournir des documents véridiques et à jour dès le départ.                                              |
| Transmet le profil et ses documents à chaque opérateur et rapporte le statut de revue par fournisseur.                                                   | Choisir quels profils un document étaye, et dans quel rôle.                                            |
| Signale les documents proches de l'expiration ou expirés, par numéro.                                                                                    | Télécharger les remplacements et les ré-attacher avant qu'un document n'expire.                        |
| Applique les contrôles — les senders non enregistrés et les profils insatisfaits n'activent pas les numéros et ne passent pas les vérifications d'envoi. | Maintenir exacts les champs structurés du profil lorsque les coordonnées de votre entreprise changent. |

Orbit n'invente ni ne renouvelle automatiquement les documents d'identité pour votre compte — le
régulateur vérifie *votre* identité, donc un renouvellement commence toujours par un
nouveau téléchargement de votre part. Ce que la plateforme garantit, c'est qu'un document que vous
fournissez une fois est réutilisable partout où il est accepté, et que vous verrez son
expiration arriver avec assez de temps pour agir.

***

## Références associées

* [Sender-ID Registration](/compliance/sender-id-registration) — enregistrement par pays
  étayé par des `document_refs`.
* [Regulatory Preview](/numbers/regulatory-preview) — vérifiez quels champs et
  documents un pays exige avant l'achat.
* [Number Lifecycle](/numbers/lifecycle) — ce qui arrive à un numéro bloqué en
  `pending_compliance`, et la libération/récupération.
* [Country Compliance Requirements](/compliance/country-requirements) — quels
  types de senders et documents chaque pays accepte.
* [API Reference → Compliance](/api-reference/endpoints/compliance) — schémas
  complets de requêtes/réponses.
