Schémas et champs additionnels
Détail du fonctionnement du schéma événement d'un agenda et des champs additionnels.
Le schéma événement d'un agenda
Un agenda propose à sa création un formulaire événement dérivant d'un schéma événement standardisé sur la plateforme. Les champs constitutifs de ce schema sont définis sous la clé schema.fields de la configuration d'un agenda.
{
"title": ...,
"summary": {...},
"settings": {...},
...,
"schema": {
"fields": [
...
]
},
...
}
Chaque champ est détaillé par les clés suivantes:
| Clés | Type | Description | Valeurs |
|---|---|---|---|
field | texte | Le code du champ, dérive du label initial | Exemple : thematiques |
fieldType | texte | Le type du champ | Exemples : checkbox, radio, select, multiselect, integer, multilingual, textarea, markdown, text... |
label, info, placeholder, sub | texte | Texte ou multilingue. Des valeurs de labels utilisés pour l'affichage du champ sur le formulaire. | Exemple : { "fr": "Thématiques" } |
optional | booléen | Par défaut true. Le caractère optionnel du champ. Si celui-ci est false, le champ doit être informé pour toute création ou mise à jour de l'événement. | |
options | objet[] | Liste d'options pour les champs à choix (ex : radio, checkbox, select...). Pour les créations/mises à jour d'événement, c'est la sous-clé id de l'option à préciser qui doit être spécifiée dans le corps de requête en face du nom du champ. | Exemple : [{"id": 1, "label": {"fr": "Musique"}, "value": "musique"}] |
schemaType | texte | Le type de schéma d'où provient le champ : event pour les champs standards, agenda ou network pour les champs additionnels. | |
languages | texte[] | La liste des langues en cas de champs texte multilingues. Liste vide pour les champ où les choix de langues sont libres | Exemple ["fr", "de"] |
Par exemple, le titre d'un événement est décrit comme ceci:
{
"languages": [],
"field": "title",
"fieldType": "text",
"optional": false,
"max": 150,
"label": {
"fr": "Titre",
"en": "Title",
"it": "Titolo",
"de": "Titel",
"es": "Título"
},
"placeholder": {
"fr": "Le titre de votre événement",
"en": "Title of your event",
"it": "Il titolo del tuo evento",
"de": "Titel Ihrer Veranstaltung",
"es": "El título de su evento"
},
"purpose": {
"fr": "Titre de l'événement",
"en": "Title of the event",
"es": "Nombre del evento"
},
"schemaType": "event"
}
Les champs additionnels
Le schéma standard événement peut être complété de champs dits additionnels, définits soit à l'échelle d'un agenda, soit d'un réseau. Lorsque c'est le cas, ces champs apparaissent dans la configuration schema et ont un schemaType qui précise la provenance de cette ajout: agenda ou network.
Types
Le type de chaque champ est précisé sous la clé fieldType. Un type se décline principalement en trois catégories:
- Les champs textuels: texte simple, texte multi-ligne, HTML, markdown, multilingue. Dans ces cas, les valeurs sont directement associées aux clés "field" des champs sans conversion particulière.
- Les champs à options: liste à choix unique, à choix multiple, select ou multi-select. Les valeurs associées aux clés dans ce cas sont les identifiants des options sélectionnées (voir exemple ci dessous).
- Les champs à fichiers: ceux-cis ne sont pas manipulables par API
En voici la liste complète:
| Type | Clé | À options | Multilinguisme possible |
|---|---|---|---|
| Radio | radio | x | |
| Checkbox | checkbox | x | |
| Select | select | x | |
| Multiselect | multiselect | x | |
| Entier | integer | ||
| Nombre | number | ||
| Texte | text | x | |
| Texte multiligne | textearea | x | |
| Markdown | markdown | x | |
| HTML | html | x | |
| Image | image | ||
| Fichier | file |
Exemple
Le cas le plus fréquent que l'on retrouve est qu'un formulaire événement standard soit complété d'un champ de catégories ou thématiques: un champ à choix de type radio ou checkbox:
{
"field": "categories",
"label": "Catégories",
"optional": false,
"options": [
{
"id": 1,
"value": "balade-decouverte-visite",
"label": "Balade - découverte - visite"
},
{
"id": 2,
"value": "conference-rencontre-debat",
"label": "Conférence - rencontre - débat"
},
{
"id": 3,
"value": "exposition",
"label": "Exposition"
},
{
"id": 4,
"value": "fete-salon-marche",
"label": "Fête - salon - marché"
},
{
"id": 5,
"value": "musique",
"label": "Musique"
},
...
],
"fieldType": "checkbox",
"schemaType": "network"
}
Les événements saisis et lus dans l'agenda verront leurs données complétées d'une clé reprenant el nom du champ additionnel: categories:
{
"title": { "fr": "Festival d'été" },
...
"categories": [4],
...
}