Requête
POST /demande-acces
{
"card_id": "<no carte acces>|null"::string,
"zone_id": "<id zone>"::string,
"room_id": "<id pièce>|null"::string,
"door_id": "<id porte>|null"::string,
"date_heure": "<ISO-8601>"::string
}
- La carte peut être
nullsi c’est un accès sans carte ou que le capteur signalant l’accès ne fournit pas cette information - La zone sera toujours présente
- La pièce peut être omise (
null) si l’accès demandé est pour la zone complète et non pas une pièce spécifique - La porte concernée peut également être donnée (ou
nullsinon)
Réponse
- 200 OK si on ne veut pas bloquer l’accès
- 403 Forbidden si on veut bloquer l’accès
- 400 Bad Request si la requête n’a pas le bon format ou n’est pas cohérente (e.g. zone inconnue)
Définition de l’API d’événement
Voir ces pages pour les détails des événements et des actions
Requête
POST /evenement-securite
{
"nom": "<nom événement>"::string,
"heure": "<ISO-8601>"::string,
"zone": "<id zone>"::string,
"parametres": [
{"parametre": "<nom paramètre>"::string, "valeur": "<valeur>"::string},
{"parametre": "<nom paramètre>"::string, "valeur": "<valeur>"::string},
]::array(object({parametre, valeur})
}
Où <nom événement> et <nom paramètre> correspondent aux valeurs énumérées ci-haut.
Réponse
200 OK
{
"actions": [
{
"nom": "<nom action>"::string,
"parametres": [
{ "parametre": "<nom paramètre>"::string, "valeur": "<valeur>"::string},
{ "parametre": "<nom paramètre>"::string, "valeur": "<valeur>"::string},
]
}
]
}
Où <nom action> et <nom paramètre> correspondent aux valeurs définies dans cette liste
Exceptions
- HTTP 400 : Si la requête n’a pas le bon format
- HTTP 400 : Si la requête n’est pas cohérente (e.g. il manque un paramètre requis pour un événement précis)
- HTTP 500 : Toute autre erreur
{
"message": "<message d'erreur>"::string
}
Définition de l’API de réinitialisation
Requête
POST /reinitialiser
Contenu vide
Réponse
200 OK
Contenu vide
Note éditoriale
Nous ne prétendons pas que le design de ces actions est parfait. Comme dans la “vraie vie”, il faut composer avec des Apis ou spécifications qui ne sont pas toujours idéales. 😉
Définition de l’API d’état d’urgence
Cette route permet de récupérer l’état de toutes les zones et les portes d’un bâtiment, en lui passant l’identifiant du bâtiment.
Requête (V1)
À utiliser avec les fonctionnalités 1 et 1.5
GET /v1/emergencies/0/buildings-state/{building-id}
Réponse
200 OK
{
"id": "{building-id}"::string,
"agents": {
"demandés": 1::int,
},
"zones": [
{
"id": "zone1"::string,
"etat_incendie": "AUCUN" | "PROBABLE" | "CONFIRMÉ"::enum,
"présence_de_fumée": true::bool,
"ventilation_vitesse_distribution": 80::int,
"ventilation_vitesse_retour": 45::int,
},
{
"id": "zone2"::string,
"etat_incendie": "AUCUN" | "PROBABLE" | "CONFIRMÉ"::enum,
"présence_de_fumée": false::bool,
"ventilation": "ouverte" | "fermée"::enum
}
],
"portes": [
{
"id": "door1"::string,
"fermée": true::bool,
"verrouillée": true::bool
},
{
"id": "door2"::string,
"fermée": true::bool,
"verrouillée": false::bool
}
]
}
Requête (V2)
À utiliser avec les fonctionnalités 2 et +
NOTE: Vous pouvez remplacer la v1 par la v2 (pas nécessaire de supporter les deux versions en parallèle).
GET /v2/emergencies/0/buildings-state/{building-id}
Réponse
200 OK
{
"id": "{building-id}"::string,
"agents": {
"demandés": 1::int,
},
"zones": [
{
"id": "zone1"::string,
"etat_incendie": "AUCUN" | "PROBABLE" | "CONFIRMÉ"::enum,
"présence_de_fumée": true::bool,
"ventilation_vitesse_distribution": 80::int,
"ventilation_vitesse_retour": 45::int,
"occupation_actuelle": 12::int,
"occupants_identifiés": ["idul1", "idul2", "idul3"]::array(string),
"acces_consecutifs_par_personne": {
"idul1": 3::int,
"idul3": 1::int
}
},
{
"id": "zone2"::string,
"etat_incendie": "AUCUN" | "PROBABLE" | "CONFIRMÉ"::enum,
"présence_de_fumée": false::bool,
"ventilation": "ouverte" | "fermée"::enum,
"occupation_actuelle": 12::int,
"occupants_identifiés": ["idul1", "idul2", "idul3"]::array(string),
"acces_consecutifs_par_personne": {
"idul1": 3::int,
"idul3": 1::int
}
}
],
"portes": [
{
"id": "door1"::string,
"fermée": true::bool,
"verrouillée": true::bool
},
{
"id": "door2"::string,
"fermée": true::bool,
"verrouillée": false::bool
}
]
}
Exceptions
- HTTP 404 : bâtiment inexistant (building-id n’existe pas)
Précisions
- L’identifiant de l’urgence (
/0) sera toujours0pour l’instant. Dans le futur, on pourrait vouloir regrouper tous les événements d’une même urgence, mais ne tentez pas de le faire dans le cadre du projet, ce ne sera pas demandé. - Une zone doit avoir la ventilation appropriée selon son type, donc soit ventilationVitesseDistribution et ventilationVitesseRetour, soit ventilation.
- Pour
etat_incendie, si un feu est probable ou confirmé dans une AUTRE zone du même building, la zone elle-même reste tout de même dans l’étant “AUCUN” puisque cette zone-ci n’est pas en feu. - Les champs
ventilation_vitesse_distribution,ventilation_vitesse_retouretventilationdépendent du type de ventilation du building. Ce sera soit un ou l’autre. Vous pouvez retourner les autres champs avec une valeur null, ou ne pas les retourner du tout.