Admin API

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.