Aller au contenu principal

Création d'un événement

Méthode usuelle

POST /v2/agendas/{agendaUID}/events

En bref

Cette route permet la création d'un événement dans le contexte d'un agenda. Ceci signifie qu'au delà des valeurs des champs standard de l'événement, les valeurs associées aux champs additionnels de l'agenda peuvent être définis.

  • agendaUID est l'identifiant unique de l'agenda où les événements sont référencés
  • Une authentification en écriture par jeton d'accès est requise
  • Un paramètre lang peut être précisé en entête (lang:fr) pour simplifier le formatage d'événements monolingues
  • Pour les événements physiques/in situ, il est nécessaire de les lier à un lieu par son identifiant. Ce dernier doit être connu au moment de la création de l'événement.
  • Les données définissant l'événement doivent être placées sous une clé data en corps de requête.

Exemples

Cas le plus basique

À minima, un événement doit avoir les informations suivantes de définies: un titre, une description courte, une plage horaire, un lieu.

node.js
import axios from 'axios';
import getImageURL from './getImageURL.js';
import getAccessToken from './getAccessToken.js';
import getAgendaUID from './getAgendaUID.js';
import getLocationUID from './getLocationUID.js';

const {
data: {
event: createdEvent,
},
} = await axios({
method: 'post',
url: `https://api.openagenda.com/v2/agendas/${getAgendaUID()}/events`,
headers: {
'access-token': getAccessToken(),
'content-type': 'application/json',
'lang': 'fr',
},
data: {
title: 'Un été au ciné, cinéma en plein air - Donne moi des ailes',
description: 'De Nicolas Vanier - 2019 / 1h53 - Avec Louis Vazquez, Jean-Paul Rouve, Mélanie Doutey',
locationUid: getLocationUID(),
timings: [{
begin: '2025-08-06T21:30:00.000+0200',
end: '2025-08-06T23:30:00.000+0200'
}],
}
});

Un événement multilingue

Les champs title, description, longDescription, keywords et conditions sont multilingues. Les variantes de chaque langue sont à placer derrière des clés correspondant au code langue.

node.js
...

const {
data: {
event: createdEvent,
},
} = await axios({
method: 'post',
url: `https://api.openagenda.com/v2/agendas/${getAgendaUID()}/events`,
headers: {
'access-token': getAccessToken(),
'content-type': 'application/json',
},
data: {
title: {
fr: 'Un été au ciné, cinéma en plein air - Donne moi des ailes',
en: 'A summer at the movies, open-air cinema - Give me wings',
},
description: {
fr: 'De Nicolas Vanier - 2019 / 1h53 - Avec Louis Vazquez, Jean-Paul Rouve, Mélanie Doutey',
en: 'From Nicola Vanier - 2019 / 1h53 - With Louis Vazquez, Jean-Paul Rouve, Mélanie Doutey',
},
keywords: {
fr: ['ciné', 'projection'],
en: ['movies', 'projection'],
},
...
},
});

Un événement avec champs additionnels

Voir ici pour des détails sur le fonctionnement des champs additionnels.

Pour cet exemple, l'agenda à le champ additionnel suivant de défini:

{
"field": "thematique",
"label": "Thématique",
"optional": false,
"options": [
{
"id": 15,
"value": "vie-associative",
"label": "Vie associative"
},
{
"id": 8,
"value": "numerique",
"label": "Numérique"
},
{
"id": 61,
"value": "culture",
"label": "Culture"
},
...
],
"fieldType": "checkbox",
"schemaType": "network"
},

L'événement créé doit être associé à la thématique Culture:

...

const {
data: {
event: createdEvent,
},
} = await axios({
method: 'post',
url: `https://api.openagenda.com/v2/agendas/${getAgendaUID()}/events`,
headers: {
'access-token': getAccessToken(),
'content-type': 'application/json',
},
data: {
title: {
fr: 'Un été au ciné, cinéma en plein air - Donne moi des ailes',
},
...,
thematique: [61],
},
});

Événement avec image fournie par fichier

node.js & axios
import FormData from 'form-data';
import fs from 'fs';
import path from 'path';
import axios from 'axios';
import getAccessToken from './getAccessToken.js';
import getAgendaUID from './getAgendaUID.js';

const imageStream = fs.createReadStream(path.resolve('./image.png'));

const form = new FormData();

form.append('data', JSON.stringify({
title: `Titre de l'événement`,
description: `Description courte de l'événement`,
attendanceMode: 2,
onlineAccessLink: 'https://openagenda.com',
timings: [{
begin: '2025-08-30T10:00:00+0200',
end: '2025-08-30T11:00:00+0200',
}]
));
form.append('image', imageStream);

await axios({
method: 'POST',
url: `https://api.openagenda.com/v2/agendas/${getAgendaUID()}/events`,
headers: {
...form.getHeaders(),
'access-token': await getAccessToken(),
},
data: form,
});

Création par identifiant externe

Un événement peut être créé via un identifiant externe à OpenAgenda. La même route sert également pour les mise à jour, lorsqu'un événement existe déjà pour l'identifiant donné:

PUT /v2/agendas/{agendaUID}/events/ext/{key}/{value}

En bref

  • key est le nom de l'identifiant, value sa valeur
  • Si l'événement existe déjà, il sera mis à jour
  • Un événement peut être associé à plusieurs identifiants externes
  • Un événement associé à un ou plusieurs identifiants externes garde un identifiant OpenAgenda unique UID.