Conceitos
Fusos horários
Os momentos são ISO 8601 em UTC. Onde uma pessoa lê uma hora, a hora local do evento está ao lado, com o fuso horário do evento.
Dois tipos de hora
Os momentos são quando algo aconteceu ou vai acontecer: uma inscrição, um pagamento, um registo de entrada, o início de uma sessão. São ISO 8601 em UTC, com milissegundos e um Z, e os seus nomes terminam em Utc:
"checkedInUtc": "2026-11-12T07:58:12.000Z"As horas locais são o que uma pessoa no local lê no programa. Sessões, turnos, códigos de desconto e períodos de vendas trazem-nas ao lado do momento, na hora do próprio local, sem fuso, e os seus nomes terminam em Local:
{
"title": "Opening keynote: software that finds its way",
"startsUtc": "2026-11-12T08:30:00.000Z",
"startsLocal": "2026-11-12T09:30",
"timeZone": "Europe/Amsterdam"
}O evento indica o fuso horário IANA do seu local em timeZone. O seu startDate e endDate são datas simples no local.
Qual usar
- Para comparar, ordenar, guardar ou calcular: o momento, em UTC.
- Para mostrar uma hora a alguém: a hora local tal como está, ou o momento convertido para o
timeZonedo evento. Nunca para o fuso do seu servidor: uma sessão às 09:30 em Amesterdão é às 09:30 para todos os que vão, esteja onde estiver o seu portátil. - As mudanças de hora já estão incluídas: uma sessão no último domingo de outubro tem o momento UTC certo para a sua hora local.
Enviar horas
Os momentos que envia (salesEndUtc, endsUtc) são lidos como UTC, digam o que disserem: um desvio como +01:00 é respeitado, uma hora sem desvio é UTC, nunca o fuso do servidor. updatedSince funciona da mesma forma.
Uma nova sessão pode ser indicada na hora local (startsLocal, endsLocal) e a AttendBeacon converte-a com o fuso horário do evento, ou em UTC (startsUtc, endsUtc). A hora local é normalmente o que tem: é o que o orador combinou.
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" })
});Dias nos resumos
Onde a API conta por dia (o ritmo de vendas), os dias são os dias do local no seu fuso horário, por isso uma inscrição às 00:30 em Amesterdão conta nesse dia, e não no dia anterior em UTC.