Aller au contenu

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 https://api.pionne.app/sessions
Content-Type: application/json
X-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"
}
ChampTypeNotes
session_id (req.)uuidUUID v4 généré par le SDK. Sert de clé d’idempotence.
status (req.)enumok, crashed, errored, abnormal, exited
releasestringVersion logique de l’app (1.4.2, 2026.05-staging)
app_versionstringVersion native si différente de release
os_namestringiOS, Android, Web
user_id_anonstringID anonymisé pour le calcul crash-free users
duration_msintDurée de la session avant fermeture, en millisecondes
app_idstringBundle 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).
  • Idempotent sur (project_id, session_id). Tu peux POSTer plusieurs fois la même session ; seul le status peut ê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 que status, duration_ms et ended_at.
202 Accepted
{ "ok": true, "session_id": "0d8c1a47-…" }
CodeCas
202Session créée ou mise à jour.
401Token absent / invalide.
422Payload invalide (status hors-enum, UUID malformé…).
429Rate limit dépassé (2000/min/projet).