Logo

SPOCK

Suivi Projets Organisation et Contrôles rocKet
Retour

Documentation API

SPOCK offre une API permettant d'accéder en temps réel aux informations soit d'un stabtraj public, soit d'une campagne et des projets, stabtraj, lancements, recups et propulseurs associés.
GET Requête API en lecture
Les requêtes en lecture doivent être effectuées sur la page api par GET. Les paramètres à transmettre sont les suivants :
  • object : type d'objet demandé string
  • id* : numéro d'identification interne de l'objet. integer
  • key* : clé servant de jeton d'authentification, propre à la campagne ou au stabtraj public. string (40)
* non requis si object = motor
Exemple :
GET https://www.planete-sciences.org/espace/spock/index.php?p=api&object=campaign&id=42&key=0123456789abcdef0123456789abcdef
GET https://www.planete-sciences.org/espace/spock/index.php?p=api&object=motor
Voici les objets et leurs caractéristiques accessibles en lecture :

  • id : numéro d'identification interne unique integer
  • name : nom string
  • year : année integer (4)
  • owner_id : numéro d'identification interne unique du propriétaire integer
  • owner_name : nom du propriétaire string
  • rocketry : true si mode rocketry (pages altimètres et arbitrage) boolean
  • shuttle : true si mode navette (page navette) boolean
  • motors : tableau des numéros d'identification interne uniques des propulseurs proposés array(integer)
  • launchpads : tableau des noms des rampes array(string)
  • projects : tableau des projets array(Project::id => object Project)
  • launches : tableau des lancements array(Launch::id => object Launch)
  • rso : tableau des incidents pyro array(RSO::id => object RSO)

  • id : numéro d'identification interne unique integer
  • campaign : numéro d'identification interne unique de la campagne parent integer
  • source_id : numéro d'identification unique dans l'environnement source integer
  • source_name : nom de l'environnement source string
    • poolzor : Poolzor espace
    • rocketry : SCAE Rocketry Challenge
    • cspace : SCAE C'Space
    • cansat_lycee : SCAE CanSat lycéen
    • interne : projet créé dans SPOCK
  • type : type string (1)
    • µ : Microfusée
    • M : Minifusée
    • R : Minifusée Rocketry Challenge
    • F : Fusée Expérimentale
    • C : CanSat
    • B : Ballon
  • registration : matricule string
  • name : nom string
  • club : nom du club string
  • phone : numéro de téléphone string
  • vehicle : true si le projet est véhiculé boolean
  • time_clubtent : temps de chronologie estimé en tente club, en minutes integer
  • time_launchpad : temps de chronologie estimé en rampe, en minutes integer
  • stabtraj : tableau des stabtrajs array(StabTraj::sheet => object StabTraj)

  • id : numéro d'identification interne unique integer
  • project : numéro d'identification interne unique du projet parent integer
  • sheet : numéro de feuille integer
  • Forme_ogive : forme de l'ogive string
    • 0 : Parabolique
    • 1 : Ogivale
    • 2 : Conique
  • Long_ogive : longueur de l'ogive en mm integer
  • D_og : diamètre à la base de l'ogive en mm integer
  • D_ref : diamètre de référence en mm integer
  • Nb_trans : nombre de transitions integer
  • l_j|r|s1 : longueur de la transition j|r|s en mm integer
  • D1_j|r|s1 : diamètre avant la transition j|r|s en mm integer
  • D2_j|r|s1 : diamètre après la transition j|r|s en mm integer
  • X_j|r|s1 : position de la transition j|r|s en mm integer
  • m_ail|can2 : emplenture des ailerons (canards) en mm integer
  • n_ail|can2 : saumon des ailerons (canards) en mm integer
  • p_ail|can2 : flèche des ailerons (canards) en mm integer
  • E_ail|can2 : envergure des ailerons (canards) en mm integer
  • ep_ail|can2 : epaisseur des ailerons (canards) en mm integer
  • Q_ail|can2 : nombre d'ailerons (canards) en mm integer
  • X_ail|can2 : position des ailerons (canards) en mm integer
  • D_ail|can2 : diamètre aux ailerons (canards) en mm integer
  • propu : numéro d'identification interne unique du propulseur integer
  • propu_name : nom complet du propulseur string
  • propu_cat : categorie du propulseur string
  • dep_moteur : choix du délai du propulseur integer
  • dep_reglage : réglage du délai par forage integer
  • propu_insert : propulseur integer
    • 0 : mesures sans Propulseur
    • 1 : mesures avec Propulseur vide
    • 2 : mesures avec Propulseur plein
  • XpropuRef : position du propulseur en mm integer
  • MasseSans : masse en kg float
  • XcgSans : position du centre de masse en mm integer
  • Long_tot : longueur totale en mm integer
  • Cx : cx float
  • L_rampe : longueur de la rampe en mm float
  • Beta_rampe : inclinaison de la rampe en ° integer
  • Type_rampe : type de rampe string
    • 0 : Rail
    • 1 : Cage
  • T_ini3 : temps initial en s float
  • V_ini3 : vitesse initiale en m/s integer
  • Z_ini3 : altitude initiale en m integer
  • X_ini3 : position initiale en m integer
  • prop_ini3 : Δt allumage du propulseur après T_ini en s float
  • F_para|satellite|satellite24 : type de parachute string
    • 0 : Disque
    • 1 : Croix
    • 2 : Autre
  • Re_para|satellite|satellite24 : rayon extérieur du parachute OU surface de référence si F_ = autre float
  • Ri_para|satellite|satellite24 : rayon intérieur du parachute en mm integer
  • Cx_para|satellite|satellite24 : cx du parachute float
  • m_satellite|satellite24 : masse du satellite en kg float
  • t_satellite|satellite24 : temps de largage du satellite en s float
  • couleur_fusee5 : couleur principale de la fusée string
  • couleur_para5 : couleur principale des parachutes string
  • autonomie5 : autonomie du séquenceur, en minutes integer
  • telem5 : informations concernant la télémétrie string
  • flag5 : true si une dérogation au cahier des charges est nécéssaire boolean
  • note5 : notes de contrôle string
  • time : timestamp de la dernière ouverture integer
1 disponibles en fonction de Nb_trans
2 _can indisponibles si Q_can = 0
3 indisponible si toutes les conditions initiales sont nulles
4 _satellite(2) indisponibles si t_satellite(2) = 0
5 indisponible si sheet > 0

  • id : numéro d'identification interne unique integer
  • project : numéro d'identification interne unique du projet parent integer
  • arrived : timestamp d'arrivée à l'accueil integer
  • altimeter : numéro d'altimètre - 42 par défaut si Campaign::rocketry = false integer
  • safety_checks_progress : avancée des contrôles, sur 100 integer
  • safety_checks_approved : timestamp de validation des contrôles integer
  • ready : heure HH:mm à laquelle le projet sera prêt à partir en ZAS string
  • embarked : true si le projet a quitté la base vie boolean
  • zas : timestamp d'arrivée en ZAS integer
  • launchpad : numéro d'ordre de la rampe integer
  • launchpad_name : nom correspondant dans la campagne cf Campaign::launchpads string
  • launched : timestamp du lancement integer
  • result : résultat du lancement string
    • nominal : nominal
    • nominal_disqualified : disqualifié - disponible si Project::type = R
    • ballistic : balistique
    • destroyed : destruction en vol
    • lost : perdu
  • motors* : tableau des numéros d'identification interne uniques des propulseurs utilisés array(integer)
  • recovered : true si récupéré boolean
  • location : localisation object Location
  • note : note associée string
* vide avant lancement, le détail des moteurs étant alors disponible via le stabtraj.

  • id : numéro d'identification interne unique integer
  • project : numéro d'identification interne unique du projet parent integer
  • ignition : timestamp de la mise à feu integer
  • motor : numéro d'identification interne unique du propulseur concerné integer
  • report : rapport d'incident string

  • id : numéro d'identification interne unique integer
  • category : categorie string
    • micro : Microfusée
    • minif : Minifusée
    • minifex : Minifusée Expérimentale
    • fusex : Fusée Expérimentale
    • cansat : CanSat
  • name_full : nom complet intégrant les informations de délai string
  • name : nom string
  • manufacturer : fabricant string
  • length : longueur integer
  • diameter : diamètre integer
  • weight_total : masse initiale float
  • weight_burnout : masse après combustion float
  • delays : délais disponibles array(integer)
  • delay_settings : réglages de délai disponibles array(integer)

  • id : numéro d'identification interne unique integer
  • launch : numéro d'identification interne unique du lancement parent integer
  • latitude : latitude GNSS float
  • longitude : longitude GNSS float
  • error : marge d'erreur GNSS, en mètres float
  • time : timestamp de création integer
L'API renvoi l'objet demandé et ses enfants au format JSON. En cas d'erreur, un object Error est retourné à la place. Voici une représentation des liens parent - enfant entre les différents objets :
object Campaign
  • array(Project::id => object Project)
    • array(StabTraj::sheet => object StabTraj)
  • array(Launch::id => object Launch)
    • object Location
  • array(RSO::id => object RSO)
PUT Requête API en écriture
Les requêtes en écriture doivent être effectuées sur la page api par PUT. Les paramètres à transmettre au format JSON dans le corps de la requête sont les suivants :
  • object : type d'objet demandé string
  • id : numéro d'identification interne de l'objet integer
  • key : clé servant de jeton d'authentification, propre à la campagne ou au stabtraj publicstring (40)
  • data : propriétés à modifier de l'objet JSON key/value pairs
Exemple :
        PUT 
            https://www.planete-sciences.org/espace/spock/index.php?p=api
            
  • {
    • "object": "stabtraj",
    • "id": 42,
    • "key": "0123456789abcdef0123456789abcdef",
    • "data": {
      • "color_rocket": "Rouge",
      • "color_chutes": "Vert"
      }
    }
Voici les objets et leurs caractéristiques accessibles en écriture :

  • Forme_ogive
  • Long_ogive
  • D_og
  • Nb_trans
  • l_j
  • D1j
  • D2j
  • X_j
  • l_r
  • D1r
  • D2r
  • X_r
  • l_s
  • D1s
  • D2s
  • X_s
  • m_ail
  • n_ail
  • p_ail
  • E_ail
  • ep_ail
  • Q_ail
  • X_ail
  • D_ail
  • m_can
  • n_can
  • p_can
  • E_can
  • ep_can
  • Q_can
  • X_can
  • D_can
  • propu
  • dep_moteur
  • dep_reglage
  • propu_insert
  • XpropuRef
  • MasseSans
  • XcgSans
  • Long_tot
  • Cx
  • L_rampe
  • Beta_rampe
  • Type_rampe
  • T_ini
  • V_ini
  • Z_ini
  • X_ini
  • prop_ini
  • F_para
  • Re_para
  • Ri_para
  • Cx_para
  • m_satellite
  • t_satellite
  • F_satellite
  • Re_satellite
  • Ri_satellite
  • Cx_satellite
  • m_satellite2
  • t_satellite2
  • F_satellite2
  • Re_satellite2
  • Ri_satellite2
  • Cx_satellite2
  • couleur_fusee
  • couleur_para
  • autonomie
L'API renvoi l'objet complet demandé et ses enfants au format JSON de la même façon que pour une requête en lecture. En cas d'erreur, un object Error est retourné à la place.
Erreur dans la requête
En cas d'erreur dans la requete, la réponse est un object Error.

  • error_code : code d'erreur string
    • 400 bad_request : paramètres obligatoires manquants
    • 401 unauthorized : l'id de campagne ou la clé d'API fournie est incorrecte
    • 403 forbidden : accès temporairement bloqué suite à un trop grand nombre de tentatives ratées
    • 404 not_found : l'objet demandé n'a pas été trouvé
    • 405 method_not_allowed : l'objet n'accepte pas le type de requête reçu
    • 409 conflict : l'objet a expressement rejeté la requête qu'il ne peut accepter en raison de son état
  • error_label : description de l'erreur string
Filtrer la réponse
Les caractéristiques de object Launch permettent de filtrer coté client chaque lancement par sa position.
arrived altimeter safety_checks_progress safety_checks_approved embarked zas launchpad launched recovered
Attendu aux altimètres--------
Attendu aux contrôles-------
En cours de qualification------
Qualifié-----
En route vers la ZAS----
En ZAS---
En rampe--
Lancé-
Récupéré / Clos
It ain't rocket science - API -
© Cédrik Mérillou - Planète Sciences