Flush batch d'événements de navigation cross-tenant
POST/accounts/v0/cross-tenant-navigations
Persiste un batch d'événements de navigation cross-tenant remontés
depuis le frontend (useCrossTenantNavigationFlush, MOCOSAG-260)
vers la table partitionnée audit.cross_tenant_navigations.
- Idempotent. Rejouer le même
Idempotency-Keyretourne201avec compteurdedupedreflétant les rejets de la contrainteUNIQUE (actor_id, idempotency_key). - Self-write only. L'
actor_email_hash(sha256(request.user.email)[:16]) est calculé côté serveur à partir de l'acteur authentifié et appliqué à chaque ligne persistée. Le client n'a plus à le fournir (MOCOSAG-263). - RBAC. Acteur non porteur de
CROSS_TENANT_ROLES→403. - Plafond.
events.length > 100→400 BATCH_TOO_LARGE. - Rate-limit. ≥
10 batchs/min/actor_id(HTTP 429 +Retry-After). sendBeaconfallback. Commenavigator.sendBeaconne supporte pas les headers custom, l'Idempotency-Keypeut être passé en query-param?idempotency_key=…. Le header reste prioritaire si les deux sont présents.
Request
Responses
- 201
- 400
- 401
- 403
- 429
- 500
Batch persisté (au moins partiellement)
Response Headers
Location
URI de référence pour le batch traité, construite à partir du
request_id du premier event accepté.
Requête invalide. code possibles :
batch_too_large(plus de 100 events)validation_error(payload mal formé)unsupported_active_role(rôle non dansCROSS_TENANT_ROLES)
Unauthorized
Acteur non porteur d'un rôle CROSS_TENANT_ROLES. Justification
ADR-0023 §4.1 : l'endpoint est par construction inaccessible aux
acteurs non cross-tenant ; l'existence est publique via OpenAPI
donc pas d'oracle d'énumération métier.
Too many requests
Response Headers
Retry-After
Unexpected error