API (Technique)
Authentification
Headers, scopes, idempotency.

API — Authentification

Headers acceptés

Platform API key (middleware authenticateApiKey)

Le middleware accepte :

  • x-api-key: <dlk_...>
  • Authorization: Bearer <dlk_...>

Marketplace API key (Gateway)

Le Gateway accepte :

  • x-api-key: <dk_live_...>
  • Authorization: Bearer <dk_live_...>

Note : le Gateway supprime ensuite authorization et x-api-key avant de proxyfier vers l’upstream.

Scopes

Platform API keys

Les scopes sont stockés en base (api_keys.scopes). La structure exacte peut varier selon les modules, mais la valeur par défaut est ['*'].

Marketplace API keys

Les scopes sont évalués au niveau du Gateway (contrôle d’accès par endpoint).

Format supporté :

  • METHOD:PATHPATTERN

API — Authentification

Cette page couvre les mécanismes d’auth côté API. Datalgeria utilise deux familles de clés distinctes.

Platform API keys (middleware authenticateApiKey)

Utilisées pour certaines routes backend (ex: KYC public session creation).

Headers acceptés

HeaderExample
x-api-keydlk_<...>
AuthorizationBearer dlk_<...>

Comportement d’erreur (général)

  • clé absente/invalide: souvent 401
  • clé désactivée/expirée: souvent 403

Marketplace API keys (Gateway)

Utilisées uniquement pour appeler des APIs publiées via le Gateway (/gateway/...).

Headers acceptés

HeaderExample
x-api-keydk_live_<...>
AuthorizationBearer dk_live_<...>

Note: le Gateway retire authorization et x-api-key avant de proxyfier vers l’upstream.

Scopes (Marketplace)

Les scopes sont évalués au niveau du Gateway.

Format

  • METHOD:PATHPATTERN
  • METHOD: GET|POST|PUT|PATCH|DELETE|*
  • PATHPATTERN: glob simple (* = “n’importe quoi”), ex: /v1/*

Exemples

  • GET:/v1/*
  • POST:/documents/extract
  • *:*

Erreur

Si la clé ne couvre pas la requête:

  • 403 avec code: "SCOPE_DENIED" (format sendError)

Expiration / révocation / désactivation

Les clés peuvent être:

  • désactivées (is_active = false)
  • expirées (expires_at)
  • révoquées (revoked_at)

Sur le Gateway, cela se traduit typiquement par:

  • 401 si absente/invalide
  • 403 si désactivée/expirée ou subscription inactive

Idempotency-Key (Marketplace)

Certains endpoints Marketplace supportent l’entête Idempotency-Key (ex: subscribe, create key, rotate key).

  • même Idempotency-Key + même payload → peut renvoyer la réponse précédente
  • même Idempotency-Key + payload différent → 409 IDEMPOTENCY_CONFLICT