Sessions (Release Health)
Endpoint public, authentifié par X-Pionne-Token. Utilisé par les SDKs
pour ouvrir et clore une session de release health (Sentry-equivalent du
« release tracking »).
POST /api/sessions
Section intitulée « POST /api/sessions »POST https://api.pionne.app/sessionsContent-Type: application/jsonX-Pionne-Token: pio_live_…
{ "session_id": "0d8c1a47-9a87-4cc0-a8fa-3a8ce6f77c43", "status": "ok", "release": "1.4.2", "environment":"production", "app_version":"1.4.2", "os_name": "iOS", "user_id_anon":"a8e4...", "duration_ms":12340, "app_id": "fr.example.app"}| Champ | Type | Notes |
|---|---|---|
session_id (req.) | uuid | UUID v4 généré par le SDK. Sert de clé d’idempotence. |
status (req.) | enum | ok, crashed, errored, abnormal, exited |
release | string | Version logique de l’app (1.4.2, 2026.05-staging) |
app_version | string | Version native si différente de release |
os_name | string | iOS, Android, Web |
user_id_anon | string | ID anonymisé pour le calcul crash-free users |
duration_ms | int | Durée de la session avant fermeture, en millisecondes |
app_id | string | Bundle ID. Stocké pour visibilité — non vérifié côté serveur sur cet endpoint (les sessions ne contiennent pas de PII, le check bundle_id reste actif sur /ingest). |
Comportement
Section intitulée « Comportement »- Idempotent sur
(project_id, session_id). Tu peux POSTer plusieurs fois la même session ; seul lestatuspeut être upgrader (jamais rétrogradé :crashed>abnormal>errored>exited>ok). - Rate limit : 2000 requêtes/min/projet.
- Les champs immutables (
release,environment,os_name…) ne sont pris en compte que sur le premier POST. Les POST suivants ne mettent à jour questatus,duration_msetended_at.
Réponses
Section intitulée « Réponses »202 Accepted{ "ok": true, "session_id": "0d8c1a47-…" }| Code | Cas |
|---|---|
202 | Session créée ou mise à jour. |
401 | Token absent / invalide. |
422 | Payload invalide (status hors-enum, UUID malformé…). |
429 | Rate limit dépassé (2000/min/projet). |