API-Referenz
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
- Modul
crewWird mit moduleOff abgelehnt, solange der Veranstalter das Modul für die Veranstaltung ausgeschaltet hat.
Parameter
Pfad
eventIdstring (uuid)erforderlichThe 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.
Standard:
100
Antworten
- 200 A page of crew. CrewMemberList
Felder
dataCrewMember[]The items of this page.
Felder anzeigen
crewMemberIdstring (uuid)Their id.
eventIdstring (uuid)The event's id.
namestring oder nullTheir name. Null without people:read.
emailstring oder nullTheir address. Null without people:read.
phonestring oder 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) oder 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) oder 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).
Einer von:
included,withheld,erased
nextCursorstring oder 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.
Ablehnungen
invalidKey keyExpired keyRevoked rateLimited missingScope moduleOff eventNotFound invalidCursor
Anfrage
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 Beispielantwort
{
"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
- Modul
crewWird mit moduleOff abgelehnt, solange der Veranstalter das Modul für die Veranstaltung ausgeschaltet hat.
Parameter
Pfad
eventIdstring (uuid)erforderlichThe 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.
Standard:
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.
Antworten
- 200 A page of shifts. ShiftList
Felder
dataShift[]The items of this page.
Felder anzeigen
shiftIdstring (uuid)The shift's id.
eventIdstring (uuid)The event's id.
rolestringWhat it is: door, infoDesk, room and others.
placeobjectWhere.
Felder anzeigen
kindstringDoor, room, area or other.
idstring (uuid) oder nullThe door or room.
namestring oder 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) oder nullWhen it last changed, in UTC.
nextCursorstring oder 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.
Ablehnungen
invalidKey keyExpired keyRevoked rateLimited missingScope moduleOff eventNotFound invalidCursor invalidUpdatedSince invalidRequest
Anfrage
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 Beispielantwort
{
"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."
}Die Anleitungen und diese Website sind in Ihrer Sprache. Die Beschreibungen in der API-Referenz selbst sind auf Englisch, so wie die API selbst spricht.