Concepts
Fuseaux horaires
Les instants sont au format ISO 8601 en UTC. Là où une personne lit une heure, l’heure locale du lieu figure à côté, avec le fuseau horaire de l’événement.
Deux sortes d’heures
Les instants indiquent quand quelque chose s’est produit ou se produira : une inscription, un paiement, une arrivée, le début d’une session. Ils sont au format ISO 8601 en UTC, avec les millisecondes et un Z, et leur nom se termine par Utc :
"checkedInUtc": "2026-11-12T07:58:12.000Z"Les heures locales sont ce qu’une personne sur place lit dans le programme. Les sessions, les créneaux, les codes de réduction et les périodes de vente les portent à côté de l’instant, à l’heure propre du lieu, sans fuseau, et leur nom se termine par Local :
{
"title": "Opening keynote: software that finds its way",
"startsUtc": "2026-11-12T08:30:00.000Z",
"startsLocal": "2026-11-12T09:30",
"timeZone": "Europe/Amsterdam"
}L’événement indique le fuseau horaire IANA de son lieu dans timeZone. Ses startDate et endDate sont de simples dates sur place.
Laquelle utiliser
- Pour comparer, trier, stocker ou calculer : l’instant, en UTC.
- Pour afficher une heure à quelqu’un : l’heure locale telle quelle, ou l’instant converti dans le
timeZonede l’événement. Jamais dans le fuseau de votre serveur : une session à 9 h 30 à Amsterdam a lieu à 9 h 30 pour tous ceux qui y vont, où que se trouve leur ordinateur. - Les changements d’heure sont déjà pris en compte : une session le dernier dimanche d’octobre a le bon instant UTC pour son heure locale.
Envoyer des heures
Les instants que vous envoyez (salesEndUtc, endsUtc) sont lus en UTC quoi qu’ils indiquent : un décalage comme +01:00 est respecté, une heure sans décalage est en UTC, jamais dans le fuseau du serveur. Il en va de même pour updatedSince.
Une nouvelle session peut être indiquée en heure locale (startsLocal, endsLocal), qu’AttendBeacon convertit avec le fuseau horaire de l’événement, ou en UTC (startsUtc, endsUtc). L’heure locale est généralement celle dont vous disposez : c’est celle sur laquelle l’intervenant s’est engagé.
curl -X POST "https://attendbeacon.com/api/v1/events/b3ac0000-0000-4000-8000-000000000001/sessions" \
-H "Authorization: Bearer $ATTENDBEACON_KEY" \
-H "Content-Type: application/json" \
-d '{ "title": "Closing keynote: what we learned", "kind": "keynote", "startsLocal": "2026-11-13T16:30", "endsLocal": "2026-11-13T17:15" }'await fetch(`${base}/events/${eventId}/sessions`, {
method: "POST",
headers: { Authorization: `Bearer ${key}`, "Content-Type": "application/json" },
body: JSON.stringify({ title: "Closing keynote: what we learned", kind: "keynote", startsLocal: "2026-11-13T16:30", endsLocal: "2026-11-13T17:15" })
});Les jours dans les synthèses
Là où l’API compte par jour (le rythme des ventes), les jours sont ceux du lieu, dans son fuseau horaire : une inscription à 0 h 30 à Amsterdam compte pour ce jour-là, et non pour la veille en UTC.