> ## Documentation Index
> Fetch the complete documentation index at: https://docs.floral.so/llms.txt
> Use this file to discover all available pages before exploring further.

# Administrér deltagelse i arrangementer

> Hent arrangementer, tilmeld og opdatér deltagere, registrér fremmøde, og afslut eller ret det gennem Florals offentlige API.

Arrangementshandlingerne læser arbejdsområdets arrangementer, holder en deltagerliste i takt med et andet system og registrerer fremmøde efter arrangementet. API'et følger de samme regler som Floral-appen: kapacitet, venteliste, tilmeldingsperiode og afslutning af fremmøde fungerer ens.

## Forudsætninger

* Arbejdsområdet har tilføjelsen Arrangementer, og tokenets ejer kan bruge Work i arbejdsområdet.
* Tokenet har `events:read` for at læse arrangementer og deltagere og `events:write` for at ændre dem. Hvert scope giver kun sin egen adgang; et skrivetoken kan ikke læse.
* Du ser kun de arrangementer, som tokenets ejer kan se i Floral. Et arrangement eller en deltager, du ikke kan se, giver `404 NOT_FOUND`, præcis som hvis det ikke fandtes.

Hvis arbejdsområdet ikke har adgang til tilføjelsen Arrangementer, giver alle arrangementshandlinger `404 FEATURE_DISABLED`.

Angiv værdierne én gang i din shell, før du kører eksemplerne:

```bash theme={null}
export FLORAL_BASE_URL="https://app.floral.so/api/v1"
export FLORAL_WORKSPACE="dit-arbejdsomraade"
export FLORAL_TOKEN="floral_pat_..."
```

Brug en personlig adgangsnøgle, der er oprettet til arbejdsområdet. Eksemplerne bruger kunstige id'er og værdier. Erstat dem med værdier fra dit arbejdsområde.

<Warning>
  Gem `FLORAL_TOKEN` i et hemmelighedslager uden for lokal udvikling. Læg det aldrig i kildekode eller logs.
</Warning>

## Hent og filtrér arrangementer

Arrangementslisten bruger uigennemsigtig cursor-paginering med højst 50 elementer pr. side. Filtrér efter planlægningsstatus, afslutning af fremmøde, ejer eller et lokalt datointerval.

```bash theme={null}
curl --get --fail-with-body \
  --url "$FLORAL_BASE_URL/workspaces/$FLORAL_WORKSPACE/events" \
  --header "Authorization: Bearer $FLORAL_TOKEN" \
  --data-urlencode "planningStatus=READY" \
  --data-urlencode "from=2026-09-01" \
  --data-urlencode "to=2026-09-30" \
  --data-urlencode "sort=starts-asc" \
  --data-urlencode "limit=20"
```

Send en `nextCursor`, der ikke er `null`, som `cursor` med de samme filtre og den samme sortering for at hente næste side.

## Hent et arrangement og dets version

```bash theme={null}
curl --request GET --fail-with-body --include \
  --url "$FLORAL_BASE_URL/workspaces/$FLORAL_WORKSPACE/events/42" \
  --header "Authorization: Bearer $FLORAL_TOKEN"
```

Den stærke `ETag`-header og feltet `version` indeholder arrangementets aktuelle version. Du skal bruge den for at afslutte fremmødet.

## Hent deltagere

Deltagere returneres i tilmeldingsrækkefølge. Filtrér efter tilmeldingsstatus, fremmødestatus eller CRM-matchstatus.

```bash theme={null}
curl --get --fail-with-body \
  --url "$FLORAL_BASE_URL/workspaces/$FLORAL_WORKSPACE/events/42/participants" \
  --header "Authorization: Bearer $FLORAL_TOKEN" \
  --data-urlencode "registrationState=REGISTERED" \
  --data-urlencode "limit=50"
```

Hver deltager har et UUID som `id` og sin egen `version`. Objektet `responses` indeholder kun almindelige tilmeldingssvar.

## Læs begrænsede svar

Svar på felter, der er markeret som begrænsede, for eksempel kost- eller tilgængelighedsbehov, er aldrig en del af deltagerressourcen. Kun arrangementets arrangør eller en administrator i arbejdsområdet kan læse dem gennem en separat handling:

```bash theme={null}
curl --request GET --fail-with-body \
  --url "$FLORAL_BASE_URL/workspaces/$FLORAL_WORKSPACE/events/42/participants/0f8b6c1e-3a52-4d6e-9b7a-2c4e5f6a7b8c/restricted-responses" \
  --header "Authorization: Bearer $FLORAL_TOKEN"
```

Alle andre får `403 FORBIDDEN`. Gem kun svarene, så længe du har brug for dem til arrangementets logistik.

## Tilmeld en deltager

Tilmelding kræver en `Idempotency-Key`. Svarene valideres mod arrangementets tilmeldingsformular.

```bash theme={null}
export REGISTRATION_KEY="01J5C7A2B9M4K8T1Q6D3R0V5XZ"

curl --request POST --fail-with-body --include \
  --url "$FLORAL_BASE_URL/workspaces/$FLORAL_WORKSPACE/events/42/participants" \
  --header "Authorization: Bearer $FLORAL_TOKEN" \
  --header "Content-Type: application/json" \
  --header "Idempotency-Key: $REGISTRATION_KEY" \
  --data '{
    "name": "Ada Jensen",
    "email": "ada@example.com",
    "companyName": "Acme Nordic",
    "responses": { "session_track": "Operations" }
  }'
```

En gennemført tilmelding giver `201` med en `Location`-header og deltagerens `ETag`. Er arrangementet fuldt og har venteliste, oprettes deltageren med status `WAITLISTED` og en `waitlistPosition`. Er tilmeldingen lukket, eller er arrangementet fuldt uden venteliste, giver handlingen `409 CONFLICT` og opretter intet.

## Opdatér en deltager

Send kun de felter, du vil ændre, sammen med deltagerens nyeste `ETag`. `null` rydder et valgfrit felt.

```bash theme={null}
export PARTICIPANT_ETAG='"v1.ZXhhbXBsZS1wYXJ0aWNpcGFudA"'

curl --request PATCH --fail-with-body --include \
  --url "$FLORAL_BASE_URL/workspaces/$FLORAL_WORKSPACE/events/42/participants/0f8b6c1e-3a52-4d6e-9b7a-2c4e5f6a7b8c" \
  --header "Authorization: Bearer $FLORAL_TOKEN" \
  --header "Content-Type: application/json" \
  --header "If-Match: $PARTICIPANT_ETAG" \
  --data '{"phone": "+45 12 34 56 78"}'
```

Kun arrangementets arrangør eller en administrator i arbejdsområdet kan ændre svar på begrænsede felter. Et kald fra alle andre, der indeholder et begrænset felt, giver `403 FORBIDDEN` og ændrer intet.

## Registrér fremmøde

Registrér op til 500 tilmeldte deltagere i ét kald. Registreringen kræver en `Idempotency-Key`, men ingen `If-Match`, så flere personer kan tjekke gæster ind samtidig.

```bash theme={null}
export CHECK_IN_KEY="01J5C7F4H2N6P9R3S8T1V5W0YA"

curl --request POST --fail-with-body \
  --url "$FLORAL_BASE_URL/workspaces/$FLORAL_WORKSPACE/events/42/attendance" \
  --header "Authorization: Bearer $FLORAL_TOKEN" \
  --header "Content-Type: application/json" \
  --header "Idempotency-Key: $CHECK_IN_KEY" \
  --data '{
    "participantIds": ["0f8b6c1e-3a52-4d6e-9b7a-2c4e5f6a7b8c"],
    "state": "ATTENDED"
  }'
```

Et kald gennemføres helt eller slet ikke. Det afvises med `404 NOT_FOUND`, hvis et ID ikke hører til arrangementet, med `409 INVALID_STATE`, hvis en deltager ikke er tilmeldt, og med `409 INVALID_STATE`, når fremmødet er afsluttet. Svaret viser de deltagere, hvis status blev ændret, og dem, der allerede havde den.

## Afslut fremmødet

Når fremmødet afsluttes, låses det til opfølgning. Handlingen kræver arrangementets nyeste `ETag` og en `Idempotency-Key`. Angiv de tilmeldte deltagere, der ikke mødte op; alle andre, der stadig ikke er registreret, forbliver `UNKNOWN`.

```bash theme={null}
export EVENT_ETAG='"v1.ZXhhbXBsZS1ldmVudA"'
export FINALISE_KEY="01J5C7K8M1P4R7T0V3X6Z9B2DC"

curl --request POST --fail-with-body --include \
  --url "$FLORAL_BASE_URL/workspaces/$FLORAL_WORKSPACE/events/42/attendance/finalise" \
  --header "Authorization: Bearer $FLORAL_TOKEN" \
  --header "Content-Type: application/json" \
  --header "Idempotency-Key: $FINALISE_KEY" \
  --header "If-Match: $EVENT_ETAG" \
  --data '{"noShowParticipantIds": []}'
```

Et arrangement, hvis fremmøde allerede er afsluttet, giver `409 INVALID_STATE`.

## Ret afsluttet fremmøde

Efter afslutningen retter du én deltager ad gangen med en begrundelse. Send deltagerens nyeste `ETag`.

```bash theme={null}
export CORRECTION_KEY="01J5C7Q2S5U8W1Y4A7C0E3G6HJ"

curl --request POST --fail-with-body --include \
  --url "$FLORAL_BASE_URL/workspaces/$FLORAL_WORKSPACE/events/42/participants/0f8b6c1e-3a52-4d6e-9b7a-2c4e5f6a7b8c/attendance-correction" \
  --header "Authorization: Bearer $FLORAL_TOKEN" \
  --header "Content-Type: application/json" \
  --header "Idempotency-Key: $CORRECTION_KEY" \
  --header "If-Match: $PARTICIPANT_ETAG" \
  --data '{"state": "ATTENDED", "reason": "Skrev sig ind ved sideindgangen."}'
```

Floral bevarer den tidligere fremmøderegistrering og markerer den som erstattet, så rettelsernes historik kan revideres.

Floral beskytter skrivekald med to uigennemsigtige værdier:

* Send en unik `Idempotency-Key`, når handlingen kræver det. Et identisk nyt forsøg med samme nøgle gentager resultatet i 24 timer. Hvis nøglen genbruges med et andet kanonisk input til samme handling, får du `409 IDEMPOTENCY_CONFLICT`.
* Send den nyeste stærke `ETag` som `If-Match`, når en eksisterende ressource ændres. En forældet værdi giver `412 VERSION_CONFLICT`, og en manglende værdi giver `428 PRECONDITION_REQUIRED`.

Behold anførselstegnene omkring en `ETag`, og erstat den gemte værdi efter hvert gennemført skrivekald. Se [Driftssikkerhed og nye forsøg](/da/developers/api/reliability) for alle regler om nye forsøg.
