Aller au contenu

API d'événement

L’API Event représente un processus qui évolue au fil du temps et qui finit par se terminer. La création d’un événement renvoie un event_id  ; les mises à jour et les appels de clôture utilisent cet identifiant pour rester attachés au même cycle de vie.

POST /event/create
POST /event/update
POST /event/close

Le corps de la requête doit être JSON et les champs inconnus sont rejetés. Si un Gateway privé active PUSHGO_TOKEN, incluez Authorization: Bearer <token>.

En-têteObligatoireDescriptif
Content-Type: application/jsonOuiFormat du corps de la requête.
Authorization: Bearer <token>Dépendant du GatewayRequis uniquement lorsqu’un Gateway privé active PUSHGO_TOKEN.
/event/create -> event_id
|
+-> /event/update can be called many times
|
+-> /event/close marks the event as ended
ChampTapezObligatoireDescriptif
channel_idstringOuiID du Channel cible.
passwordstringOuiMot de passe Channel, généralement de 8 à 128 caractères.
op_idstringNonClé d’idempotence ; généré et renvoyé en cas d’omission.
thing_idstringNonAssociez cette répartition d’événement à un Thing existant.
ciphertextstringNonCharge utile de texte chiffré E2EE en option.
ItinéraireChamps professionnels obligatoires
/event/createtitle, status, message, severity, event_time
/event/updateevent_id, status, message, severity, event_time
/event/closeevent_id, status, message, severity, event_time
ChampTapezRègles
event_idstringObligatoire pour la mise à jour et la fermeture ; ne doit pas être envoyé lors de la création.
titlestringObligatoire lors de la création ; facultatif lors de la mise à jour et de la fermeture.
descriptionstringFacultatif ; les chaînes vides sont traitées comme manquantes.
statusstringRequis; non vide, maximum 24 caractères.
messagestringRequis; non vide, maximum 512 caractères.
severitystringRequis; uniquement critical, high, normal, low.
event_timenumberRequis; lorsque cette mise à jour s’est produite, en millisecondes Unix.
started_atnumberCréer uniquement ; heure globale de début de l’événement.
ended_atnumberFermer uniquement ; heure globale de fin de l’événement.
tagsstring[]Jusqu’à 32 éléments, 64 caractères maximum chacun, découpés et dédupliqués.
imagesstring[]Jusqu’à 32 URL d’images, de 2 048 caractères maximum chacune.
attrsobjectCorrectif d’objet ; null supprime une clé  ; les tableaux ne sont pas autorisés.
metadataobjectValeurs scalaires uniquement ; clé <= 64, valeur <= 512.
Fenêtre de terminal
curl -X POST https://gateway.pushgo.dev/event/create \
-H "Content-Type: application/json" \
-d '{
"channel_id": "YOUR_CHANNEL_ID",
"password": "YOUR_CHANNEL_PASSWORD",
"title": "Production deployment",
"status": "running",
"message": "Deployment started",
"severity": "normal",
"event_time": 1713750000000,
"started_at": 1713750000000,
"attrs": {
"service": "api",
"revision": "8f3c2a1"
}
}'

Réponse :

{
"success": true,
"data": {
"channel_id": "YOUR_CHANNEL_ID",
"op_id": "op-20260422-001",
"event_id": "8a1fc4b3d9f04fd2857f92f66f7cc5d1",
"accepted": true
},
"error": null,
"error_code": null
}

Enregistrez le event_id renvoyé  ; les appels de mise à jour et de clôture en ont besoin.

Fenêtre de terminal
curl -X POST https://gateway.pushgo.dev/event/update \
-H "Content-Type: application/json" \
-d '{
"channel_id": "YOUR_CHANNEL_ID",
"password": "YOUR_CHANNEL_PASSWORD",
"event_id": "8a1fc4b3d9f04fd2857f92f66f7cc5d1",
"status": "publishing",
"message": "Image pushed, publishing release",
"severity": "normal",
"event_time": 1713750300000,
"attrs": {
"progress": 0.75
}
}'

/event/update peut être appelé plusieurs fois. Chaque mise à jour doit décrire le changement actuel et non répéter tout l’historique.

Fenêtre de terminal
curl -X POST https://gateway.pushgo.dev/event/close \
-H "Content-Type: application/json" \
-d '{
"channel_id": "YOUR_CHANNEL_ID",
"password": "YOUR_CHANNEL_PASSWORD",
"event_id": "8a1fc4b3d9f04fd2857f92f66f7cc5d1",
"status": "success",
"message": "Production deployment completed",
"severity": "normal",
"event_time": 1713750600000,
"ended_at": 1713750600000,
"attrs": {
"progress": 1
}
}'

En cas d’échec, utilisez status=failed et augmentez severity le cas échéant.

Si l’événement se produit sur une entité persistante, incluez thing_id.

{
"channel_id": "YOUR_CHANNEL_ID",
"password": "YOUR_CHANNEL_PASSWORD",
"thing_id": "3b7fd2e87d7d4d6d9c7f3a318ac21f02",
"title": "Database lag",
"status": "open",
"message": "Replica lag exceeded 30 seconds",
"severity": "high",
"event_time": 1713750000000,
"started_at": 1713750000000
}

Thing identifie l’objet ; Event décrit le processus qui lui arrive.

Les API Event utilisent l’enveloppe de réponse partagée. accepted=true signifie que le Gateway est entré dans la répartition, et non que chaque appareil a affiché une notification système.

StatutRaison typique
400Champ requis pour l’itinéraire manquant, champ inconnu, severity non valide, attrs non valide.
401Jeton privé Gateway Bearer manquant ou erroné.
404Channel ou event_id n’existe pas.
413Le corps de la requête dépasse 32 Ko.
503L’distribution n’a pas pleinement réussi.