Referencia de la API
Crew
Crew, volunteers and shifts.
List crew
GET/events/{eventId}/crew
Lists the event's crew and volunteers with their roles and shifts. Names, addresses and phone numbers need people:read.
- Ámbitos
- crew:read
- Módulo
crewSe rechaza con moduleOff mientras el organizador del evento lo tenga desactivado.
Parámetros
ruta
eventIdstring (uuid)obligatorioThe event's id.
consulta
cursorstringWhere the page starts: nextCursor from the page before, exactly as it was returned. Leave out for the first page.
limitinteger (int32)How many on a page, up to 500.
Por defecto:
100
Respuestas
- 200 A page of crew. CrewMemberList
Campos
dataCrewMember[]The items of this page.
Mostrar los campos
crewMemberIdstring (uuid)Their id.
eventIdstring (uuid)The event's id.
namestring o nullTheir name. Null without people:read.
emailstring o nullTheir address. Null without people:read.
phonestring o nullA number to reach them on the day. Null without people:read.
rolesstring[]The roles they may do: door, infoDesk, room and others.
attendeeIdstring (uuid) o nullTheir crew ticket.
hasTicketbooleanWhether their crew ticket works.
shiftIdsstring (uuid)[]The shifts they are on.
invitedUtcstring (date-time)When they were invited, in UTC.
lastSeenUtcstring (date-time) o nullWhen they last opened the crew app, in UTC.
erasedbooleanWhether the person deleted their data from the event app; then nothing personal is returned, whatever the key may read.
personalDatastringWhether the personal fields are here: included, withheld (the key lacks people:read) or erased (the person deleted their data).
Uno de:
included,withheld,erased
nextCursorstring o nullThe cursor for the next page; null on the last page. Pass it as cursor, with the same filters.
hasMorebooleanWhether there is another page.
- 400 invalidCursor.
- 401 invalidKey, keyExpired, keyRevoked.
- 403 missingScope.
- 404 eventNotFound.
- 409 moduleOff.
- 429 rateLimited.
Rechazos
invalidKey keyExpired keyRevoked rateLimited missingScope moduleOff eventNotFound invalidCursor
Solicitud
curl "https://attendbeacon.com/api/v1/events/b3ac0000-0000-4000-8000-000000000001/crew?limit=2" \
-H "Authorization: Bearer $ATTENDBEACON_KEY"const response = await fetch("https://attendbeacon.com/api/v1/events/b3ac0000-0000-4000-8000-000000000001/crew?limit=2", {
headers: {
Authorization: `Bearer ${process.env.ATTENDBEACON_KEY}`
}
});
if (!response.ok) throw new Error((await response.json()).detail);
const data = await response.json();using System.Net.Http.Headers;
using System.Text;
using var client = new HttpClient();
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", Environment.GetEnvironmentVariable("ATTENDBEACON_KEY"));
using var request = new HttpRequestMessage(HttpMethod.Get, "https://attendbeacon.com/api/v1/events/b3ac0000-0000-4000-8000-000000000001/crew?limit=2");
using var response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
var json = await response.Content.ReadAsStringAsync();import os
import requests
response = requests.get(
"https://attendbeacon.com/api/v1/events/b3ac0000-0000-4000-8000-000000000001/crew", params={"limit": 2},
headers={
"Authorization": f"Bearer {os.environ['ATTENDBEACON_KEY']}"
}
)
response.raise_for_status()
data = response.json()$headers = @{
Authorization = "Bearer $env:ATTENDBEACON_KEY"
}
$data = Invoke-RestMethod -Method Get -Uri "https://attendbeacon.com/api/v1/events/b3ac0000-0000-4000-8000-000000000001/crew?limit=2" -Headers $headers200 Respuesta de ejemplo
{
"data": [
{
"crewMemberId": "b3ac0020-0000-4000-8000-000000000000",
"eventId": "b3ac0000-0000-4000-8000-000000000001",
"name": "Femke de Wit",
"email": "femke.dewit@example.com",
"phone": "+31 6 1234 5601",
"roles": [
"greeter",
"infoDesk"
],
"attendeeId": "b3ac001f-0000-4000-8000-000000000000",
"hasTicket": true,
"shiftIds": [
"b3ac0021-0000-4000-8000-000000000002",
"b3ac0021-0000-4000-8000-00000000000a"
],
"invitedUtc": "2026-09-24T21:40:47.963Z",
"lastSeenUtc": "2026-10-13T21:40:47.963Z",
"erased": false,
"personalData": "included"
},
{
"crewMemberId": "b3ac0020-0000-4000-8000-000000000001",
"eventId": "b3ac0000-0000-4000-8000-000000000001",
"name": "Joris van Dam",
"email": "joris.vandam@example.com",
"phone": "+31 6 1234 5602",
"roles": [
"door",
"swag"
],
"attendeeId": "b3ac001f-0000-4000-8000-000000000001",
"hasTicket": true,
"shiftIds": [
"b3ac0021-0000-4000-8000-000000000000",
"b3ac0021-0000-4000-8000-000000000001"
],
"invitedUtc": "2026-09-25T21:40:47.963Z",
"lastSeenUtc": "2026-10-12T20:40:47.963Z",
"erased": false,
"personalData": "included"
}
],
"nextCursor": "YzE6MDYzOTI1OTY5MjQ3OTYzMDAwMHxiM2FjMDAyMDAwMDA0MDAwODAwMDAwMDAwMDAwMDAwMQ",
"hasMore": true
}400 invalidCursor.
{
"type": "https://attendbeacon.com/developers/errors#invalidCursor",
"title": "The cursor is not valid",
"status": 400,
"detail": "Pass nextCursor exactly as a list returned it, with the same filters.",
"instance": "/api/v1/events/b3ac0000-0000-4000-8000-000000000001/crew",
"code": "invalidCursor",
"traceId": "00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01",
"error": "Pass nextCursor exactly as a list returned it, with the same filters."
}List shifts
GET/events/{eventId}/shifts
Lists crew and volunteer shifts in time order: where, when, how many are needed and how many are on it.
- Ámbitos
- crew:read
- Módulo
crewSe rechaza con moduleOff mientras el organizador del evento lo tenga desactivado.
Parámetros
ruta
eventIdstring (uuid)obligatorioThe event's id.
consulta
cursorstringWhere the page starts: nextCursor from the page before, exactly as it was returned. Leave out for the first page.
limitinteger (int32)How many on a page, up to 500.
Por defecto:
100updatedSincestring (date-time)Only what changed at or after this moment, in UTC unless it says otherwise. Pass the newest updatedUtc your last sync saw.
Respuestas
- 200 A page of shifts. ShiftList
Campos
dataShift[]The items of this page.
Mostrar los campos
shiftIdstring (uuid)The shift's id.
eventIdstring (uuid)The event's id.
rolestringWhat it is: door, infoDesk, room and others.
placeobjectWhere.
Mostrar los campos
kindstringDoor, room, area or other.
idstring (uuid) o nullThe door or room.
namestring o nullIts name.
startsUtcstring (date-time)When it starts, in UTC.
endsUtcstring (date-time)When it ends, in UTC.
startsLocalstringWhen it starts, in the venue's time.
endsLocalstringWhen it ends, in the venue's time.
timeZonestringThe venue's time zone.
neededinteger (int32)How many it needs.
assignedinteger (int32)How many are on it.
openinteger (int32)Places still open.
crewMemberIdsstring (uuid)[]Who is on it.
updatedUtcstring (date-time) o nullWhen it last changed, in UTC.
nextCursorstring o nullThe cursor for the next page; null on the last page. Pass it as cursor, with the same filters.
hasMorebooleanWhether there is another page.
- 400 invalidCursor, invalidUpdatedSince, invalidRequest.
- 401 invalidKey, keyExpired, keyRevoked.
- 403 missingScope.
- 404 eventNotFound.
- 409 moduleOff.
- 429 rateLimited.
Rechazos
invalidKey keyExpired keyRevoked rateLimited missingScope moduleOff eventNotFound invalidCursor invalidUpdatedSince invalidRequest
Solicitud
curl "https://attendbeacon.com/api/v1/events/b3ac0000-0000-4000-8000-000000000001/shifts?limit=2" \
-H "Authorization: Bearer $ATTENDBEACON_KEY"const response = await fetch("https://attendbeacon.com/api/v1/events/b3ac0000-0000-4000-8000-000000000001/shifts?limit=2", {
headers: {
Authorization: `Bearer ${process.env.ATTENDBEACON_KEY}`
}
});
if (!response.ok) throw new Error((await response.json()).detail);
const data = await response.json();using System.Net.Http.Headers;
using System.Text;
using var client = new HttpClient();
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", Environment.GetEnvironmentVariable("ATTENDBEACON_KEY"));
using var request = new HttpRequestMessage(HttpMethod.Get, "https://attendbeacon.com/api/v1/events/b3ac0000-0000-4000-8000-000000000001/shifts?limit=2");
using var response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
var json = await response.Content.ReadAsStringAsync();import os
import requests
response = requests.get(
"https://attendbeacon.com/api/v1/events/b3ac0000-0000-4000-8000-000000000001/shifts", params={"limit": 2},
headers={
"Authorization": f"Bearer {os.environ['ATTENDBEACON_KEY']}"
}
)
response.raise_for_status()
data = response.json()$headers = @{
Authorization = "Bearer $env:ATTENDBEACON_KEY"
}
$data = Invoke-RestMethod -Method Get -Uri "https://attendbeacon.com/api/v1/events/b3ac0000-0000-4000-8000-000000000001/shifts?limit=2" -Headers $headers200 Respuesta de ejemplo
{
"data": [
{
"shiftId": "b3ac6705-0000-4000-8000-000000000000",
"eventId": "b3ac0000-0000-4000-8000-000000000001",
"role": "infoDesk",
"place": {
"kind": "area",
"id": null,
"name": "Registration desk"
},
"startsUtc": "2026-11-12T06:30:00.000Z",
"endsUtc": "2026-11-12T09:00:00.000Z",
"startsLocal": "2026-11-12T07:30",
"endsLocal": "2026-11-12T10:00",
"timeZone": "Europe/Amsterdam",
"needed": 3,
"assigned": 2,
"open": 1,
"crewMemberIds": [
"b3ac6703-0000-4000-8000-000000000000",
"b3ac6703-0000-4000-8000-000000000001"
],
"updatedUtc": "2026-10-06T21:40:47.963Z"
},
{
"shiftId": "b3ac0021-0000-4000-8000-000000000000",
"eventId": "b3ac0000-0000-4000-8000-000000000001",
"role": "door",
"place": {
"kind": "door",
"id": "b3ac0010-0000-4000-8000-000000000000",
"name": null
},
"startsUtc": "2026-11-12T07:00:00.000Z",
"endsUtc": "2026-11-12T10:00:00.000Z",
"startsLocal": "2026-11-12T08:00",
"endsLocal": "2026-11-12T11:00",
"timeZone": "Europe/Amsterdam",
"needed": 2,
"assigned": 2,
"open": 0,
"crewMemberIds": [
"b3ac0020-0000-4000-8000-000000000001",
"b3ac0020-0000-4000-8000-000000000005"
],
"updatedUtc": "2026-10-14T21:40:49.222Z"
}
],
"nextCursor": "YzE6MDYzOTMwMDYzNjAwMDAwMDAwMHxiM2FjMDAyMTAwMDA0MDAwODAwMDAwMDAwMDAwMDAwMA",
"hasMore": true
}400 invalidCursor, invalidUpdatedSince, invalidRequest.
{
"type": "https://attendbeacon.com/developers/errors#invalidCursor",
"title": "The cursor is not valid",
"status": 400,
"detail": "Pass nextCursor exactly as a list returned it, with the same filters.",
"instance": "/api/v1/events/b3ac0000-0000-4000-8000-000000000001/shifts",
"code": "invalidCursor",
"traceId": "00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01",
"error": "Pass nextCursor exactly as a list returned it, with the same filters."
}Las guías y este sitio están en tu idioma. Las descripciones de la referencia de la API están en inglés, el idioma de la propia API.