Skip to main content

Schemas and Additional Fields

Details on how the event schema of an agenda and additional fields work.

The Event Schema of an Agenda​

An agenda offers at creation an event form derived from a standardized event schema on the platform. The fields that make up this schema are defined under the schema.fields key of an agenda's configuration.

{
"title": ...,
"summary": {...},
"settings": {...},
...,
"schema": {
"fields": [
...
]
},
...
}

Each field is described by the following keys:

KeysTypeDescriptionValues
fieldstringThe field code, derived from the initial labelExample: thematiques
fieldTypestringThe field typeExamples: checkbox, radio, select, multiselect, integer, multilingual, textarea, markdown, text...
label, info, placeholder, substringText or multilingual. Label values used for displaying the field on the form.Example: { "fr": "Thématiques" }
optionalbooleantrue by default. Whether the field is optional. If set to false, the field must be filled in for any event creation or update.
optionsobject[]List of options for choice fields (e.g.: radio, checkbox, select...). For event creation/updates, it is the option's id sub-key that must be specified in the request body next to the field name.Example: [{"id": 1, "label": {"fr": "Musique"}, "value": "musique"}]
schemaTypestringThe schema type the field originates from: event for standard fields, agenda or network for additional fields.
languagesstring[]The list of languages for multilingual text fields. Empty list for fields where language choices are freeExample ["fr", "de"]

For example, an event's title is described as follows:

{
"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"
}

Additional Fields​

The standard event schema can be supplemented with so-called additional fields, defined either at the agenda level or at the network level. When this is the case, these fields appear in the schema configuration and have a schemaType that specifies the origin of this addition: agenda or network.

Types​

Each field's type is specified under the fieldType key. A type mainly falls into three categories:

  • Text fields: simple text, multi-line text, HTML, markdown, multilingual. In these cases, values are directly associated with the field's "field" keys without any particular conversion.
  • Option fields: single choice list, multiple choice, select or multi-select. The values associated with the keys in this case are the identifiers of the selected options (see example below).
  • File fields: these cannot be manipulated via the API

Here is the complete list:

TypeKeyHas optionsMultilingual support
Radioradiox
Checkboxcheckboxx
Selectselectx
Multiselectmultiselectx
Integerinteger
Numbernumber
Texttextx
Textareatexteareax
Markdownmarkdownx
HTMLhtmlx
Imageimage
Filefile

Example​

The most common case is that a standard event form is supplemented with a categories or themes field: a choice field of type radio or 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"
}

Events entered and read in the agenda will have their data supplemented with a key using the additional field name: categories:

{
"title": { "fr": "Festival d'été" },
...
"categories": [4],
...
}