API Projects
Toutes les routes Projects requièrent Authorization: Bearer <user-token>.
Base URL : https://api.pionne.app
Modèle Project
Section intitulée « Modèle Project »{ "id": "prj_a1b2c3", "name": "Acme iOS", "platform": "ios", "bundle_id": "com.acme.app", "token_preview": "pio_live_abcd...", "notify_on_first_seen": true, "notify_on_regression": true, "notify_on_threshold": 100, "events_count_30d": 1245, "created_at": "2026-04-01T10:00:00Z"}bundle_id peut être null tant que le premier event n’est pas arrivé (cf. Bundle ID pinning).
GET /api/projects
Section intitulée « GET /api/projects »Liste les projets de l’user.
Response 200
Section intitulée « Response 200 »{ "data": [ { "id": "prj_a1b2c3", "name": "Acme iOS", "platform": "ios", ... } ]}POST /api/projects
Section intitulée « POST /api/projects »{ "name": "Acme iOS", "platform": "ios", "notify_on_first_seen": true, "notify_on_regression": true, "notify_on_threshold": 100}Response 201
Section intitulée « Response 201 »{ "id": "prj_a1b2c3", "name": "Acme iOS", "platform": "ios", "bundle_id": null, "token": "pio_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"}PATCH /api/projects/\{id\}
Section intitulée « PATCH /api/projects/\{id\} »Met à jour les champs configurables.
{ "name": "Acme iOS Prod", "bundle_id": "com.acme.app", "notify_on_threshold": 500}Modifier ou retirer le bundle_id — code requis
Section intitulée « Modifier ou retirer le bundle_id — code requis »Le bundle_id est le rempart anti-token-theft : changer ou vider ce champ
affaiblit la sécurité du projet, donc l’API exige le code de
suppression du compte (le PIN à 4–8 chiffres défini dans Compte →
Sécurité). Joins-le au body :
{ "bundle_id": "com.acme.app.beta", "deletion_code": "1234"}Réponses possibles :
200— modifié.409deletion_code_not_set— l’utilisateur n’a pas configuré de PIN.422deletion_code_invalid— code absent ou incorrect.
Tous les autres champs (name, notify_*, paused_until…) sont
modifiables sans code.
Response 200
Section intitulée « Response 200 »Le projet à jour.
DELETE /api/projects/\{id\}
Section intitulée « DELETE /api/projects/\{id\} »Supprime le projet et tous ses events. Action irréversible.
{ "deletion_code": "1234" }Le code de suppression est obligatoire (mêmes erreurs que pour la
modification du bundle_id ci-dessus).
Response 204
Section intitulée « Response 204 »POST /api/projects/\{id\}/regenerate
Section intitulée « POST /api/projects/\{id\}/regenerate »Régénère le token. L’ancien token est invalide instantanément — tous les events qui arrivent avec retournent 401.
Response 200
Section intitulée « Response 200 »{ "token": "pio_live_yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy"}GET /api/projects/\{id\}/stats
Section intitulée « GET /api/projects/\{id\}/stats »Stats agrégées sur les 30 derniers jours.
Response 200
Section intitulée « Response 200 »{ "events_total": 1245, "issues_open": 12, "issues_resolved": 4, "events_per_day": [ { "date": "2026-05-04", "count": 42 }, { "date": "2026-05-03", "count": 51 } ], "top_issues": [ { "id": "iss_xxx", "title": "TypeError ...", "events_count": 320 } ]}