Aller au contenu

API d'objet

L’API Thing représente des objets de longue durée qui changent au fil du temps, tels que des serveurs, des salles, des capteurs, des services réseau ou des tâches de longue durée. La création d’un Thing renvoie un thing_id  ; les appels de mise à jour, d’archivage et de suppression utilisent cet identifiant.

POST /thing/create
POST /thing/update
POST /thing/archive
POST /thing/delete

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.
/thing/create -> thing_id
|
+-> /thing/update can be called many times
|
+-> /thing/archive inactive but history remains
|
+-> /thing/delete removed or retired
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.
ciphertextstringNonCharge utile de texte chiffré E2EE en option.
ItinéraireChamps professionnels obligatoires
/thing/createobserved_at
/thing/updatething_id, observed_at
/thing/archivething_id, observed_at
/thing/deletething_id, observed_at
ChampTapezRègles
thing_idstringRequis pour la mise à jour, l’archivage et la suppression ; ne doit pas être envoyé lors de la création.
titlestringRecommandé lors de la création ; le Gateway ne rejette actuellement pas le title manquant.
descriptionstringFacultatif ; les chaînes vides sont traitées comme manquantes.
tagsstring[]Jusqu’à 32 éléments, 64 caractères maximum chacun, découpés et dédupliqués.
primary_imagestringURL facultative, 2 048 caractères maximum.
imagesstring[]Jusqu’à 32 URL d’images, de 2 048 caractères maximum chacune.
created_atnumberCréer uniquement ; revient à observed_at en cas d’omission.
deleted_atnumberSupprimer uniquement ; revient à observed_at en cas d’omission.
observed_atnumberRequis; temps d’observation pour cette mise à jour d’état, millisecondes Unix.
external_idsobjectmodèle de clé [A-Za-z0-9_:.\-], clé <= 64 ; la valeur est string ou null.
location_type + location_valuestring + stringDoit apparaître ensemble ; le type est physical, geo, cloud, datacenter ou logical.
attrsobjectCorrectif d’objet ; null supprime une clé  ; les tableaux ne sont pas autorisés ; un seul niveau d’objet imbriqué.
metadataobjectValeurs scalaires uniquement ; clé <= 64, valeur <= 512.
Fenêtre de terminal
curl -X POST https://gateway.pushgo.dev/thing/create \
-H "Content-Type: application/json" \
-d '{
"channel_id": "YOUR_CHANNEL_ID",
"password": "YOUR_CHANNEL_PASSWORD",
"title": "Home NAS",
"description": "Primary storage in the living room rack",
"observed_at": 1713750000000,
"tags": ["nas", "home"],
"location_type": "physical",
"location_value": "home/living-room",
"attrs": {
"online": true,
"disk_used": 0.72,
"temperature": 43.2
}
}'

Réponse :

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

Enregistrez le thing_id renvoyé ; la mise à jour, l’archivage et la suppression des appels en ont besoin.

Fenêtre de terminal
curl -X POST https://gateway.pushgo.dev/thing/update \
-H "Content-Type: application/json" \
-d '{
"channel_id": "YOUR_CHANNEL_ID",
"password": "YOUR_CHANNEL_PASSWORD",
"thing_id": "8a1fc4b3d9f04fd2857f92f66f7cc5d1",
"observed_at": 1713750600000,
"attrs": {
"disk_used": 0.74,
"temperature": 44.1
}
}'

attrs est un correctif. Vous n’avez pas besoin d’envoyer l’état complet à chaque fois. Pour supprimer une clé, transmettez null.

{
"attrs": {
"temporary_alarm": null
}
}

L’archive concerne les objets qui ne sont plus actifs mais qui doivent conserver l’historique.

Fenêtre de terminal
curl -X POST https://gateway.pushgo.dev/thing/archive \
-H "Content-Type: application/json" \
-d '{
"channel_id": "YOUR_CHANNEL_ID",
"password": "YOUR_CHANNEL_PASSWORD",
"thing_id": "8a1fc4b3d9f04fd2857f92f66f7cc5d1",
"observed_at": 1713751200000,
"attrs": {
"online": false
}
}'

Utilisez /thing/delete lorsqu’un objet est supprimé ou retiré.

Fenêtre de terminal
curl -X POST https://gateway.pushgo.dev/thing/delete \
-H "Content-Type: application/json" \
-d '{
"channel_id": "YOUR_CHANNEL_ID",
"password": "YOUR_CHANNEL_PASSWORD",
"thing_id": "8a1fc4b3d9f04fd2857f92f66f7cc5d1",
"observed_at": 1713751800000,
"deleted_at": 1713751800000
}'

Thing représente un objet persistant. Les alertes associées peuvent utiliser Message avec thing_id  ; les processus associés peuvent utiliser Event avec thing_id.

ScénarioModèle
CPU NAS actuel, température, utilisation du disqueThing
Un avertissement de disque sur le NASMessage + thing_id
Sauvegarde NAS du début à la finEvent + thing_id

Les API Thing 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
400observed_at manquant, champ inconnu, attrs ou external_ids non valide.
401Jeton privé Gateway Bearer manquant ou erroné.
404Channel ou thing_id n’existe pas.
413Le corps de la requête dépasse 32 Ko.
503L’distribution n’a pas pleinement réussi.