Le service ‹identifiant_point›/xml permet de récupérer les données complètes d'un point, et non juste un extrait choisi, comme le fait, par exemple, ask/itemStatus.
Type de requête
Requête HTTP GET
Données en entrée
L'identifiant du point est inclus dans l'URL du service, qui n'accepte aucun paramètre.
Exemple de requête
Appeler le service pour le point dont l'identifiant est 1234 se fait via l'URL suivante.
<siteUrl>/1234/xml
Données de retour
Le format précis des données de retour varie selon la configuration d'HubSessions. Certains champs concernant les points peuvent être activés ou non; des schémas de catégorie peuvent être activés ou non et se référer à des catégories étant spécifiques à un HubSessions, etc. De plus, chaque extension HubSessions peut ajouter des champs custom.
Voici un exemple.
<Item type="object" id="357" iid="357" className="Item">
<!-- Main metadata -->
<title>Gaëtan Delannay – Rédaction de l’API HubSessions</title>
<creator>gdy999</creator>
<created type="DateTime">2024/12/11 12:22:22.374198 GMT+2</created>
<modified type="DateTime">2025/10/14 08:21:00.374198 GMT+2</modified>
<itemDate type="DateTime">2025/10/14 12:00:00 GMT+2</itemDate>
<state>accepted</state>
<category>coldcase</category>
<inserted type="DateTime">2025/10/08 15:24:19.815091 GMT+2</inserted>
<itemNb type="int">3</itemNb>
<itemRef>#0003</itemRef>
<proposingGroup>fsf</proposingGroup>
<late type="bool">False</late>
<description>
<p>Il s'agit de documenter enfin cet édifice bâti depuis tant d'années.</p>
</description>
<decision>
<p>Le vieux barbu s'y colle le plus vite possible !</p>
</decision>
<decisionType>101</decisionType>
<!-- Object history -->
<record type="object" className="History">
<data type="list" count="6">
<e type="object" className="Link">
<addition type="bool">True</addition>
<field>annexes</field>
<login>admin</login>
<state>accepted</state>
<date type="DateTime">2025/10/14 08:21:00.374198 GMT+2</date>
<comment>Annexe: Exigences de l'ETNIC</comment>
</e>
<e type="object" className="Trigger">
<transition>accept</transition>
<login>admin</login>
<state>accepted</state>
<date type="DateTime">2025/10/14 14:00:00 GMT+2</date>
<comment/>
</e>
<e type="object" className="Trigger">
<transition>freeze</transition>
<login>admin</login>
<state>frozen</state>
<date type="DateTime">2025/10/13 23:05:00 GMT+2</date>
<comment/>
</e>
<e type="object" className="Trigger">
<transition>publish</transition>
<login>admin</login>
<state>published</state>
<date type="DateTime">2025/10/10 13:10:00 GMT+2</date>
<comment/>
</e>
<e type="object" className="Trigger">
<transition>validate</transition>
<login>admin</login>
<state>validated</state>
<date type="DateTime">2025/10/08 12:00:00 GMT+2</date>
<comment/>
</e>
<e type="object" className="Trigger">
<transition>_init_</transition>
<login>admin</login>
<state>created</state>
<date type="DateTime">2025/10/01 17:00:00 GMT+2</date>
<comment/>
</e>
</data>
<modified type="DateTime">2025/10/14 08:21:00.374198 GMT+2</modified>
</record>
<!-- Annexes -->
<annexes type="list" count="2">
<e><siteUrl>/333/xml</e>
<e><siteUrl>/666/xml</e>
</annexes>
<!-- Tied and preferred meetings -->
<preferredMeeting type="list" count="1">
<e><siteUrl>/321/xml</e>
</preferredMeeting>
<meeting type="list" count="1">
<e><siteUrl>/321/xml</e>
</meeting>
</Item>
Les attributs id et iid du tag principal Item représentent l’identifiant de base de données interne à HubSessions concernant ce point.
Métadonnées principales
Le titre du point (tag title), obligatoire, est un descriptif court du sujet à discuter en séance. Il peut néanmoins se tenir sur plusieurs lignes, mais ne peut pas contenir de formatage: il s'agit de texte brut.
Comme pour tout objet Appy, on trouvera, au sein des métadonnées, le créateur du point (tag creator : il s’agit du login de la personne telle que connu par HubSessions), la date de création (tag created) et de dernière modification (tag modified) du point, ainsi que la date-valeur (tag itemDate). À partir du moment où un point est inséré dans une séance, cette date-valeur est la date de la séance. Avant cela, la date correspond à la date de la dernière transition de workflow qui a été franchie par le point (voir tag record).
Ensuite, l’état du point (tag state) permet notamment de savoir si la décision le concernant a déjà été prise, et, si oui, si elle a été acceptée ou non. Les états possibles sont décrits ici.
Différents schémas de catégorisation d'un point peuvent être activés. Sur l'exemple, deux schémas sont activés: les catégories et les types de décision. La catégorie d'un point (tag category) se réfère à un schéma dont la sémantique précise varie d'un HubSessions à l'autre. Quant au type de décision (tag decisionType, un peu plus bas), sa sémantique est plus restrictive: il doit s'agit d'une catégorisation qui détermine un typage lié à la décision qui a été prise. D'autres schémas peuvent être activés. La liste complète des schémas et de leurs caractéristiques fait l'objet du tableau ci-dessous.
Nom |
Tag sur le point |
Nombre de valeurs possibles sur le point |
Description |
Catégorie |
category |
Une et une seule (obligatoire) |
Sémantique variable d'un HubSessions à l'autre. Ce schéma contient un petit nombre de catégories (inférieur à 50 en général); l'utilisateur doit choisir une seule catégorie par point (quand le schéma est activé, le champ est obligatoire). |
Nature |
nature |
Une et une seule (obligatoire) |
Sémantique à nouveau variable d'un HubSessions à l'autre, une nature représente une catégorie de haut niveau, fondamentale. Le nombre de natures est en général inférieur à 10. |
Type de point |
itemType |
Une et une seule (obligatoire) |
Schéma additionel à sémantique variable. Schéma devant être à faible nombre de catégories (inférieur à 50 en général). |
Classificateur |
classifier |
De zéro à une ou de zéro à plusieurs |
Schéma à sémantique à nouveau variable, mais dont le nombre de catégories peut être grand (plusieurs centaines, voire milliers). Selon la configuration de l'HubSessions, sur un point, on peut choisir un ou plusieurs classificateurs à définir dans le champ classifier de chaque point. |
Bases légales |
laws |
De zéro à plusieurs |
Schéma à sémantique précise: il définit les bases légales qui sous-tendent le point et sa décision. Il faut que la formalisation des bases légales soit activée pour que ce champ soit utilisé. |
Type de décision |
decisionType |
De zéro à une, ou une et une seule |
Schéma à sémantique restreinte: il définit un typage qui doit être spécifique à la décision prise. Selon les HubSessions, le champ peut être optionnel ou obligatoire. |
Sur certains HubSessions,
- dans le cas d'une valeur unique (comme, dans l'exemple, pour les tags category et decisionType), la valeur correspond à l'attribut categoryId de l'objet de type Category qui est lié au point;
- dans le cas de plusieurs valeurs, c'est pareil, mais les valeurs sont incluses dans un tag de type liste, comme sur cet exemple:
<classifier type="list" count="3">
<e>aeroports</e>
<e>agriculture</e>
<e>agwPouvoirsSpeciaux</e>
</classifier>
Dans d'autres configurations, qu'il y ait une ou plusieurs valeurs, chaque valeur atomique, au lieu de reprendre uniquement le contenu de l'attribut categoryId, contient aussi le titre de la catégorie, comme sur cet exemple.
<classifier type="list" count="3">
<e>aeroports - Aéroports</e>
<e>agriculture - Agriculture</e>
<e>agwPouvoirsSpeciaux - AGW pouvoirs spéciaux</e>
</classifier>
Enfin, il se peut que, quel que soit le nombre de valeurs (une ou plusieurs), le tag se manifeste par une liste de liens vers les objets de type Category, comme illustré ci-dessous.
<nature type="list" count="1">
<e><siteUrl>/6765/xml</e>
</nature>
Les tags suivants complètent les métadonnées du point:
- le tag inserted donne la date à laquelle le point a été inséré dans la séance ;
- le tag itemNumber donne le numéro d’ordre du point au sein de la séance ;
- la référence du point (tag itemRef) est la référence interne du point dans HubSessions. Elle est souvent basée sur la date de la séance et le numéro du point. Chaque extension HubSessions peut définir sa propre nomenclature.
- Le groupe proposant est le service, défini au sein d’HubSessions, qui propose le point. Le tag proposingGroup contient l'identifiant de groupe.
- Le booléen late précise si le point était inséré dès la publication provisoire de l’ordre du jour (valeur False) ou s’il a été inséré après (valeur True).
- La description du point (tag description) est, en général, un texte court au format XHTML, donnant quelques détails au sujet du point; détails apparaissant dans l’ordre du jour de la séance, et peut-être répétés dans le PV également.
- Le tag decision, enfin, contient, au format XHTML, la description textuelle de la décision.
Historique
Comme pour tout type d’objet Appy, un point dispose de son historique, dans le tag record. L’exemple comprend 2 types d'entrées, des transitions de workflow et des ajouts d'objets liés. Voici les types d'entrées qu'on peut trouver dans l'historique d'un point.
Nom |
Classe |
Description |
Transition de workflow |
Trigger |
Une transition de workflow a été déclenchée sur le point. Le nom technique de la transition est noté dans le tag transition. S'il s'agissait de la création du point, la transition virtuelle nommée _init_ est mentionnée. L'état dans lequel le point est arrivé suite à ce déclenchement est noté dans le tag state. La liste des états possibles d'un point se trouve ici. |
Ajout d'un objet lié |
Link |
Un sous-objet a été lié à l'objet dont l'historique est présenté. Dans l'exemple, il s'agit de l'ajout d'une annexe. Le tag field donne le nom du champ via lequel le lien a été fait (champ Appy de type Ref). Le tag booléen addition est True si l'objet lié a été créé pour l'occasion, ou s'il s'agissait d'un objet existant qui a été lié à l'objet principal. |
Suppression d'un objet lié |
Unlink |
Un sous-objet a été dissocié de l'objet dont l'historique est présenté. Il n'y a pas d'entrée de ce type dans l'exemple. Les tags sont similaires aux entrées de type Link, mais au lieu de l'attribut addition, une telle entrée contient l'attribut deletion, qui est True si l'objet lié a été supprimé de la base de données, or False s'il a été dissocié de l'objet principal, mais existe toujours. |
Changement de données |
Change |
Des données ont été modifiées sur le point. À partir d'un certain état (configurable), l'historisation des changements de données sur les points est en général activé. Dès lors, ces changements se retrouvent dans l'historique du point. Voici un exemple, représentant un changement dans le titre du point. L'entrée dans l'historique contient, via le sous-tag changes, un dictionnaire de données contenant, pour chaque champ modifié (ici, un seule, title), la valeur précédemment d'application.
<e type="object" className="Change">
<changes type="dict">
<entry type="object">
<k>title</k>
<v>Loterie nationale</v>
</entry>
</changes>
<login>chick</login>
<state>published</state>
<date type="DateTime">2024/12/23 15:58:19.943000 GMT+1</date>
<comment/>
</e> |
Déclenchement d'une action |
Action |
Une action a été déclenchée sur le point, qui n'est pas une transition de workflow, et n'a donc pas changé l'état du point. Notez qu'une transition de workflow, s'il s'agit d'une autotransition, ne change pas non plus l'état du point. |
Événément spécifique |
Custom |
Appy permet de définit des événements spécifiques. |
Vous aurez constaté que, quel que soit le type d'entrée dans l'historique (ces entrées étant appelées des événements), il existe une série de sous-tags étant communs à tous les types d'événements:
- le login de l'utilisateur (technique ou humain) ayant déclenché l'événement (tag login);
- l'état du point après que l'événement ait eu lieu (tag state), même si l'événement n'y a pas touché;
- la date et heure de l'événement (tag date);
- un commentaire textuel éventuel (tag comment).
Annexes
Une ou plusieurs annexes peuvent être jointes à un point. Un annexe est un fichier binaire auquel des métadonnées sont associées, comme un type logique (indépendant du format du fichier) et un nom (pouvant être différent du nom du fichier uploadé).
Chaque annexe est un objet Appy à part entière. La liste des annexes à un point contient juste les URLs des services permettant d'aller, via des requêtes HTTP GET additionnelles, consulter leur contenu (métadonnées et contenu binaire).
<annexes type="list" count="2">
<e><siteUrl>/333/xml</e>
<e><siteUrl>/666/xml</e>
</annexes>
Le service ‹identifiant_annexe›/xml décrit le format retourné par une requête GET sur l'une de ces URL.
Liens vers les séances
Le tag preferredMeeting se réfère à la séance à laquelle le groupe proposant a souhaité que l'on discute de son point. Il ne s'agit que d'un souhait: le gestionnaire de séance peut, une fois le point dans ses mains, décider de l'affecter à la séance souhaitée ou à toute autre séance ultérieure (mais pas à une séance antérieure). La séance dans laquelle le point se trouve réellement est mentionnée dans le tag meeting. Même s'il n'y a qu'une seule séance préférée et effective par point, les tags correspondants se représentent sous la forme de listes.
<preferredMeeting type="list" count="1">
<e><siteUrl>/321/xml</e>
</preferredMeeting>
<meeting type="list" count="1">
<e><siteUrl>/321/xml</e>
</meeting>
Le service ‹identifiant_séance›/xml décrit le format retourné par une requête GET sur l'une de ces URL.