API-referentie
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.
- Scopes
- crew:read
- Module
crewGeweigerd met moduleOff zolang de organisator van het evenement de module heeft uitgezet.
Parameters
pad
eventIdstring (uuid)verplichtThe event's id.
query
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.
Standaard:
100
Antwoorden
- 200 A page of crew. CrewMemberList
Velden
dataCrewMember[]The items of this page.
Velden tonen
crewMemberIdstring (uuid)Their id.
eventIdstring (uuid)The event's id.
namestring of nullTheir name. Null without people:read.
emailstring of nullTheir address. Null without people:read.
phonestring of 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) of 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) of 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).
Een van:
included,withheld,erased
nextCursorstring of 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.
Weigeringen
invalidKey keyExpired keyRevoked rateLimited missingScope moduleOff eventNotFound invalidCursor
Verzoek
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 Voorbeeldantwoord
{
"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.
- Scopes
- crew:read
- Module
crewGeweigerd met moduleOff zolang de organisator van het evenement de module heeft uitgezet.
Parameters
pad
eventIdstring (uuid)verplichtThe event's id.
query
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.
Standaard:
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.
Antwoorden
- 200 A page of shifts. ShiftList
Velden
dataShift[]The items of this page.
Velden tonen
shiftIdstring (uuid)The shift's id.
eventIdstring (uuid)The event's id.
rolestringWhat it is: door, infoDesk, room and others.
placeobjectWhere.
Velden tonen
kindstringDoor, room, area or other.
idstring (uuid) of nullThe door or room.
namestring of 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) of nullWhen it last changed, in UTC.
nextCursorstring of 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.
Weigeringen
invalidKey keyExpired keyRevoked rateLimited missingScope moduleOff eventNotFound invalidCursor invalidUpdatedSince invalidRequest
Verzoek
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 Voorbeeldantwoord
{
"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."
}De handleidingen en deze site zijn in jouw taal. De beschrijvingen in de API-referentie zelf zijn in het Engels, de taal van de API.