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

# India DPDP : Vue d'ensemble

> La suite complète de conformité India DPDP Act 2023 : sept points de terminaison pour le scanning des PII, la gestion des décisions, l'enregistrement des événements, les minuteurs réglementaires et les preuves d'audit — avec le flux d'intégration complet.

<Info>
  **Concept :** [Guide India DPDP](/concepts/india-dpdp) | **SDK :** [Python DPDP](/sdk/python/dpdp) | **Cadres :** [Vue d'ensemble de conformité](/api-reference/compliance-overview)
</Info>

La suite India DPDP opérationnalise la **Loi de protection des données personnelles (DPDP), 2023** pour les systèmes d'IA. Là où une vérification de conformité ponctuelle répond « ce texte est-il conforme maintenant ? », la suite DPDP couvre l'intégralité du cycle de vie du parcours d'un sujet des données : détecter les données personnelles indiennes, gater les décisions contre les obligations de la Loi, enregistrer les événements qui prouvent la conformité, suivre les délais statutaires et produire des preuves de qualité audit à la demande.

Les sept points de terminaison se trouvent tous sous un même chemin de base et retournent la même enveloppe, vous pouvez donc les adopter progressivement — commencez par `scan`, ajoutez `session` et `emit` quand vous avez besoin du suivi état, et utilisez `evidence` au moment de l'audit.

```
https://api.responsibleailabs.ai/railscore/v1/compliance/dpdp
```

## Deux façons d'exécuter DPDP

RAIL livre la même capacité DPDP sur deux chemins avec des garanties de flux de données opposées. Cette page documente l'API **hébergée**.

<CardGroup cols={2}>
  <Card title="Hébergée (cette API)" icon="cloud">
    Votre application envoie le contenu à `api.responsibleailabs.ai`. Multi-locataire, portée à l'organisation, facturée par appel. Tout sur cette page s'exécute ici.
  </Card>

  <Card title="Auto-hébergée Enterprise" icon="server">
    L'agent RAIL s'exécute à l'intérieur de votre propre VPC ou environnement cloisonné ; le contenu ne quitte jamais votre infrastructure. Les mêmes sept points de terminaison y sont mirrés pour les déploiements single-locataire et licenciés.
  </Card>
</CardGroup>

## Les sept points de terminaison

| Point de terminaison                        | Méthode | Crédits | Ce qu'il fait                                                                                                                                                                        |
| ------------------------------------------- | ------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| [`/scan`](/api-reference/dpdp-scan)         | POST    | 0.5     | Détecter les PII indiens (Aadhaar avec somme de contrôle Verhoeff, PAN, UPI, mobile et 6 autres), signaux d'enfants (S.9) et dérives d'objectif (S.4). Détecter, masquer ou bloquer. |
| [`/evaluate`](/api-reference/dpdp-evaluate) | POST    | 0.3     | Porte déterministe `allow` / `block` / `require_action` pour une action, mappée aux sections S.4–S.16 de la DPDP.                                                                    |
| [`/emit`](/api-reference/dpdp-emit)         | POST    | 0.1     | Enregistrer 1–50 événements de conformité (consentement, notification, DSR, violation). Démarre automatiquement les minuteurs réglementaires.                                        |
| [`/require`](/api-reference/dpdp-require)   | POST    | 0.3     | Lister les actions requises pour une étape de flux de travail donné.                                                                                                                 |
| [`/evidence`](/api-reference/dpdp-evidence) | POST    | 2.0     | Générer un paquet de preuve de qualité audit (réponse DSR, notification de violation, audit de consentement, rapport annuel du FDS). Plans Pro+.                                     |
| [`/session`](/api-reference/dpdp-session)   | POST    | 0       | Créer ou récupérer une session de conformité état pour un parcours de sujet des données.                                                                                             |
| [`/timers`](/api-reference/dpdp-timers)     | GET     | 0       | Lister les minuteurs de délai réglementaires, filtrés par statut, type ou proximité.                                                                                                 |

<Tip>
  La facturation sur chaque route DPDP est **fire-and-forget par conception** — un problème de facturation ne bloque jamais une décision de conformité. Utilisez [`/verify`](/api-reference/overview) pour une vérification de solde pré-vol quand vous en avez besoin. `session` et `timers` sont toujours gratuits.
</Tip>

## Comment les pièces s'assemblent

Une intégration typique enfile une seule **session** à travers le parcours utilisateur. Les événements que vous `emit` mutent l'état de la session et démarrent les minuteurs statutaires ; `scan` et `evaluate` prennent des décisions à un moment donné ; `evidence` lit la piste accumulée quand un auditeur ou un régulateur demande.

```mermaid theme={null}
flowchart TD
    Start(["Le parcours du sujet des données commence"]) --> Session["POST /session — créer<br/>(objectif requis)"]
    Session --> Notice["POST /emit — notice.shown"]
    Notice --> Consent["POST /emit — consent.granted"]
    Consent --> Scan["POST /scan — détecter PII indien<br/>+ signaux d'enfants + dérive d'objectif"]
    Scan --> Gate{"POST /evaluate<br/>allow / block / require_action?"}
    Gate -- "allow" --> Proceed["Traiter les données"]
    Gate -- "require_action" --> Require["POST /require — lister les obligations"]
    Gate -- "block" --> Stop["Arrêter et remédier"]
    Proceed --> DSR["POST /emit — dsr.received / breach.detected"]
    DSR --> Timers["GET /timers — suivre les délais S.13 / violation"]
    Timers --> Evidence["POST /evidence — paquet d'audit à la demande"]
```

## Enveloppe de réponse

Chaque point de terminaison retourne la même enveloppe à deux clés. `result` contient la charge utile spécifique au point de terminaison ; `credits_consumed` rapporte le coût de l'appel.

```json theme={null}
{
  "result": { "...": "endpoint-specific" },
  "credits_consumed": 0.5
}
```

## Authentification

Tous les chemins requièrent un jeton Bearer — une clé API (`rail_...`) ou un JWT. Passez-le sur chaque requête :

```bash theme={null}
-H "Authorization: Bearer YOUR_RAIL_API_KEY"
```

## Une procédure pas à pas complète

Le flux ci-dessous suit un parcours de demande de prêt de bout en bout. Il utilise [curl](https://curl.se) ; le [SDK Python](/sdk/python/dpdp) reflète chaque appel comme `client.dpdp.*`.

<Steps>
  <Step title="Ouvrir une session">
    Une session lie les événements, les scans et les minuteurs à un parcours d'un seul sujet des données. `config.purpose` est requis.

    ```bash theme={null}
    curl -X POST https://api.responsibleailabs.ai/railscore/v1/compliance/dpdp/session \
      -H "Authorization: Bearer YOUR_RAIL_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{
        "action": "create",
        "config": { "purpose": "loan_advisory", "entity_type": "data_fiduciary" }
      }'
    ```

    La réponse retourne un `session_id` que vous réutilisez sur les appels ultérieurs.
  </Step>

  <Step title="Enregistrer la notification et le consentement">
    `emit` écrit les événements qui prouvent ensuite que vous avez satisfait vos obligations de notification (S.5) et de consentement (S.6).

    ```bash theme={null}
    curl -X POST https://api.responsibleailabs.ai/railscore/v1/compliance/dpdp/emit \
      -H "Authorization: Bearer YOUR_RAIL_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{
        "session_id": "sess_1a2b3c",
        "events": [
          { "type": "notice.shown", "data": { "user_id": "u_42" } },
          { "type": "consent.granted", "data": { "user_id": "u_42", "purpose": "loan_advisory" } }
        ]
      }'
    ```
  </Step>

  <Step title="Scanner le contenu pour les PII indiens">
    Avant de stocker ou d'envoyer la sortie du modèle, scannez-la. `pii_action` peut `detect`, `mask` ou `block`.

    ```bash theme={null}
    curl -X POST https://api.responsibleailabs.ai/railscore/v1/compliance/dpdp/scan \
      -H "Authorization: Bearer YOUR_RAIL_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{
        "content": "Applicant PAN ABCDE1234F, mobile 9876543210.",
        "config": { "pii_action": "mask", "purpose": "loan_advisory" }
      }'
    ```
  </Step>

  <Step title="Gater la décision">
    `evaluate` retourne un verdict déterministe pour l'action que vous êtes sur le point de prendre.

    ```bash theme={null}
    curl -X POST https://api.responsibleailabs.ai/railscore/v1/compliance/dpdp/evaluate \
      -H "Authorization: Bearer YOUR_RAIL_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{
        "action": "make_decision",
        "context": { "user_id": "u_42", "purpose": "loan_advisory" },
        "session_id": "sess_1a2b3c"
      }'
    ```

    Un `verdict` de `require_action` vous dit d'appeler `/require` pour les obligations en attente.
  </Step>

  <Step title="Suivre les délais et produire des preuves">
    Quand un sujet des données exerce un droit ou qu'une violation survient, `emit` démarre le minuteur statutory ; `timers` liste ce qui approche ; `evidence` assemble le paquet d'audit.

    ```bash theme={null}
    # Une demande de droits démarre l'horloge de réponse S.13
    curl -X POST https://api.responsibleailabs.ai/railscore/v1/compliance/dpdp/emit \
      -H "Authorization: Bearer YOUR_RAIL_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{ "events": [ { "type": "dsr.received", "data": { "user_id": "u_42", "request_id": "r_9" } } ] }'

    # Qu'est-ce qui est dû dans les 30 prochains jours ?
    curl "https://api.responsibleailabs.ai/railscore/v1/compliance/dpdp/timers?status=active&approaching_days=30" \
      -H "Authorization: Bearer YOUR_RAIL_API_KEY"
    ```
  </Step>
</Steps>

## Erreurs

Les routes DPDP utilisent les codes de statut HTTP standard. Les problèmes de validation retournent `400` avec un message `error` ; `evidence` sur un plan inférieur à Pro retourne `403` avec `code: TIER_INSUFFICIENT`.

```json theme={null}
{ "error": "Evidence generation requires Pro+ tier.", "code": "TIER_INSUFFICIENT" }
```

<Warning>
  La suite DPDP ne journalise jamais le contenu brut ou les valeurs PII détectées — seulement un fragment court et non-identifiant pour l'analytique. Aadhaar, PAN et autres identifiants sont masqués ou supprimés avant que quoi que ce soit ne soit écrit.
</Warning>

## Où aller ensuite

<CardGroup cols={2}>
  <Card title="Guide India DPDP" icon="book" href="/concepts/india-dpdp">
    Les concepts derrière la suite : obligations, cycle de vie et quel point de terminaison correspond à quelle section de la Loi.
  </Card>

  <Card title="Python SDK : DPDP" icon="python" href="/sdk/python/dpdp">
    Chaque point de terminaison comme une méthode typée `client.dpdp.*`, plus le scanning PII côté client et l'audit système.
  </Card>

  <Card title="Point de terminaison Scan" icon="magnifying-glass-chart" href="/api-reference/dpdp-scan">
    Détection PII indienne, signaux d'enfants et dérive d'objectif en détail.
  </Card>

  <Card title="Point de terminaison Evidence" icon="file-shield" href="/api-reference/dpdp-evidence">
    Paquets de qualité audit pour DSR, violation, consentement et rapports FDS.
  </Card>
</CardGroup>
