Votre flotte, gérée par code.
Tout ce que vous pouvez faire par app dans le panel fonctionne aussi en appel REST : créer des app IDs avec code d'enrôlement, lister votre flotte, désactiver ou supprimer des apps. Conçue pour les scripts et les agents IA — une clé API statique, du JSON simple, sans SDK.
Authentification
Créez une clé API dans le panel, sous Paramètres → Clés API. La clé (pz_live_…) n'est affichée qu'une seule fois — conservez-la en lieu sûr. Envoyez-la comme token Bearer à chaque requête :
curl https://poisonzero.com/api/v1/apps \
-H "Authorization: Bearer pz_live_..."
Endpoints
POST /v1/apps
Crée une app et un code d'enrôlement en un seul appel. Body optionnel : {"name": "…"} (100 caractères max.). Répond 201 avec appId, enrollCode et enrollCodeExpiresAt — tout ce qu'une machine doit savoir pour s'enrôler.
curl -X POST https://poisonzero.com/api/v1/apps \
-H "Authorization: Bearer $PZ_API_KEY" \
-H "Content-Type: application/json" \
-d '{"name": "build-server-07"}'
GET /v1/apps
Liste votre flotte : appId, name, status (pending / active / revoked), platform, agentVersion, lastSeenAt, createdAt.
curl https://poisonzero.com/api/v1/apps -H "Authorization: Bearer $PZ_API_KEY"
GET /v1/apps/{appId}
Renvoie une seule app. Les IDs inconnus — y compris les apps d'autrui — répondent 404.
curl https://poisonzero.com/api/v1/apps/k7x2m9q4w1bz8r3tj6vn -H "Authorization: Bearer $PZ_API_KEY"
POST /v1/apps/{appId}/enroll-code
Crée un nouveau code d'enrôlement pour une app existante, p. ex. pour reprovisionner une machine. Les codes sont à usage unique, valables 30 jours.
curl -X POST https://poisonzero.com/api/v1/apps/k7x2m9q4w1bz8r3tj6vn/enroll-code -H "Authorization: Bearer $PZ_API_KEY"
POST /v1/apps/{appId}/revoke
Désactive une app : le statut passe à revoked et les identifiants du daemon cessent immédiatement de fonctionner. Même effet que « Révoquer » dans le panel.
curl -X POST https://poisonzero.com/api/v1/apps/k7x2m9q4w1bz8r3tj6vn/revoke -H "Authorization: Bearer $PZ_API_KEY"
DELETE /v1/apps/{appId}
Supprime une app définitivement : app, configuration, identité du daemon, codes d'enrôlement ouverts et ses entrées de la file de révision. Les logs d'audit sont conservés. Répond 204.
curl -X DELETE https://poisonzero.com/api/v1/apps/k7x2m9q4w1bz8r3tj6vn -H "Authorization: Bearer $PZ_API_KEY"
Provisionner 50 daemons en une boucle
Chaque appel renvoie un app ID et son code d'enrôlement — directement exploitables dans votre automatisation de flotte (Ansible, boucle SSH, MDM). Les daemons s'enrôlent eux-mêmes au premier démarrage :
for i in $(seq -w 1 50); do
curl -s -X POST https://poisonzero.com/api/v1/apps \
-H "Authorization: Bearer $PZ_API_KEY" \
-H "Content-Type: application/json" \
-d "{\"name\": \"daemon-$i\"}"
done
Erreurs
Toutes les erreurs partagent la même forme : {"error": {"code": "…", "message": "…"}}. 401 — clé absente/invalide/révoquée ou compte désactivé. 404 — endpoint inconnu ou app ID inconnu/étranger. 400 — validation (p. ex. invalid_name, limit_reached).
Lisible par machine : version Markdown · spec OpenAPI 3. La facturation ne change pas : les daemons actifs sont comptés chaque nuit, quelle que soit leur origine.