fepli
API resources

Participants

A participant (Teilnehmer:in) is the person who takes part in an offer, usually a child of a family account. Participants can also exist without an account, for example when a young person applies on their own.

All participant endpoints need ROLE_PARTICIPANTS_ADMIN. Retrieving, changing, deleting and pseudonymising a single participant also need ROLE_ADMIN; without it, the participant is a 404.

The participant model

  • Name
    uuid
    Type
    string
    Description

    The participant's identifier.

  • Name
    firstname
    Type
    string
    Description

    The first name.

  • Name
    lastname
    Type
    string
    Description

    The last name.

  • Name
    name
    Type
    string
    Description

    The full name.

  • Name
    dateOfBirth
    Type
    timestamp
    Description

    The date of birth (midnight of that day).

  • Name
    age
    Type
    integer
    Description

    The age in years, today.

  • Name
    email
    Type
    string
    Description

    The e-mail address in effect: the participant's own, or else the account's.

  • Name
    ownEmail
    Type
    string
    Description

    The participant's own e-mail address, if one was entered.

  • Name
    phone, mobile
    Type
    string
    Description

    The phone numbers in effect: the participant's own, or else the account's.

  • Name
    ownPhone, ownMobile
    Type
    string
    Description

    The participant's own phone numbers, if entered.

  • Name
    address
    Type
    object
    Description

    The postal address, with street, postalCode, city and country.

  • Name
    account
    Type
    reference
    Description

    The family account the participant belongs to. Missing for participants without an account.

  • Name
    attendances
    Type
    object
    Description

    How many applications the participant has, by state: confirmed, waitlisted, waiting and rejected. total counts every application except withdrawn and unfulfilled ones.

  • Name
    createdAt
    Type
    timestamp
    Description

    When the participant was created.

  • Name
    piiMasked
    Type
    boolean
    Description

    Whether personal data was left out because you may not see it. See Masked personal data.


GET/participants

List all participants

Returns a page of participants, ordered by last name and first name.

Optional filters

  • Name
    q
    Type
    string
    Description

    Only participants whose name contains this text.

  • Name
    account
    Type
    string
    Description

    Only participants of this account (UUID or e-mail address).

  • Name
    edition
    Type
    string
    Description

    Only participants who applied for an offer of this edition (UUID or alias).

  • Name
    offer
    Type
    string
    Description

    Only participants who applied for this offer (UUID).

  • Name
    withoutAccount
    Type
    boolean
    Description

    true for participants without an account, false for those with one.

  • Name
    createdSince
    Type
    timestamp
    Description

    Only participants created since this moment.

  • Name
    page, itemsPerPage
    Type
    integer
    Description

    See Pagination.

Request

GET·/participants
curl -G https://ferienpass-musterstadt.de/api/participants \
  -H "Authorization: Bearer $FEPLI_TOKEN" \
  --data-urlencode "account=familie.mueller@example.org"

Response

[
  {
    "uuid": "0191c7b3-1f2a-7c4d-8e5f-6a7b8c9d0e06",
    "firstname": "Lena",
    "lastname": "Müller",
    "name": "Lena Müller",
    "dateOfBirth": "2015-04-12T00:00:00+02:00",
    "age": 11,
    "email": "familie.mueller@example.org",
    "mobile": "0170 1234567",
    "address": {
      "street": "Lindenallee 12",
      "postalCode": "12345",
      "city": "Musterstadt",
      "country": "de"
    },
    "account": {
      "uuid": "0191c7b2-4d5e-7f60-8a1b-2c3d4e5f6a05",
      "name": "Anna Müller"
    },
    "attendances": {
      "confirmed": 2,
      "waitlisted": 1,
      "waiting": 0,
      "rejected": 0,
      "total": 3
    },
    "createdAt": "2025-06-02T19:20:11+02:00",
    "piiMasked": false
  }
]

GET/participants/{uuid}

Retrieve a participant

Returns one participant. Their applications are listed with GET /attendances?participant={uuid}.

Request

GET·/participants/{uuid}
curl https://ferienpass-musterstadt.de/api/participants/0191c7b3-1f2a-7c4d-8e5f-6a7b8c9d0e06 \
  -H "Authorization: Bearer $FEPLI_TOKEN"

POST/participants

Create a participant

Creates a participant, with or without an account. A participant without an account needs their own email.

Required attributes

  • Name
    firstname
    Type
    string
    Description

    The first name, up to 255 characters.

  • Name
    lastname
    Type
    string
    Description

    The last name, up to 255 characters.

Optional attributes

  • Name
    dateOfBirth
    Type
    date
    Description

    The date of birth, such as 2015-04-12. Must be in the past.

  • Name
    account
    Type
    string
    Description

    The family account (UUID or e-mail address).

  • Name
    email
    Type
    string
    Description

    The participant's own e-mail address. Leave it out to use the account's.

  • Name
    phone, mobile
    Type
    string
    Description

    The participant's own phone numbers.

  • Name
    address
    Type
    object
    Description

    street, postalCode, city and country (two letters, defaults to de).

Request

POST·/participants
curl -X POST https://ferienpass-musterstadt.de/api/participants \
  -H "Authorization: Bearer $FEPLI_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "firstname": "Paul",
    "lastname": "Müller",
    "dateOfBirth": "2018-11-03",
    "account": "familie.mueller@example.org"
  }'

The response (201 Created) holds the new participant.


PATCH/participants/{uuid}

Update a participant

Changes a participant. The attributes are the same as for creating a participant; send only what you want to change.

account moves the participant to another family; "account": null detaches them from their account. email, phone and mobile set the participant's own contact details; null falls back to the account's.

Request

PATCH·/participants/{uuid}
curl -X PATCH https://ferienpass-musterstadt.de/api/participants/0191c7b3-1f2a-7c4d-8e5f-6a7b8c9d0e06 \
  -H "Authorization: Bearer $FEPLI_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"dateOfBirth": "2015-04-21"}'

DELETE/participants/{uuid}

Delete a participant

Deletes a participant together with their applications. Responds with 204 No Content.

If a paid receipt refers to one of their applications, the participant can't be deleted (409). Pseudonymise them instead.

Request

DELETE·/participants/{uuid}
curl -X DELETE https://ferienpass-musterstadt.de/api/participants/0191c7b3-2e3f-7a4b-9c5d-6e7f8a9b0c16 \
  -H "Authorization: Bearer $FEPLI_TOKEN"

POST/participants/{uuid}/pseudonymize

Pseudonymise a participant

Erases the participant's personal data. The participant record is deleted; their applications are kept under a random pseudonym, so receipts and statistics stay intact. Afterwards, the participant is a 404.

The request has no body, and the response is 204 No Content.

Request

POST·/participants/{uuid}/pseudonymize
curl -X POST https://ferienpass-musterstadt.de/api/participants/0191c7b3-1f2a-7c4d-8e5f-6a7b8c9d0e06/pseudonymize \
  -H "Authorization: Bearer $FEPLI_TOKEN"

Was this page helpful?