fepli
API resources

Editions

An edition (Saison in the admin) is one holiday period of the programme, such as "Herbstferien 2026". Every offer, application and payment belongs to an edition, and an edition's phases decide what happens when: when organisers enter offers, when families apply, when participant lists are released.

The edition model

  • Name
    uuid
    Type
    string
    Description

    The edition's identifier.

  • Name
    name
    Type
    string
    Description

    The name of the edition.

  • Name
    alias
    Type
    string
    Description

    A URL-safe name. Accepted wherever an edition is named, as in ?edition=herbstferien-2026.

  • Name
    emoji
    Type
    string
    Description

    An emoji the admin shows next to the name, as a short code such as :fallen_leaf:.

  • Name
    archived
    Type
    boolean
    Description

    Whether the edition is archived.

  • Name
    online
    Type
    boolean
    Description

    Whether its offers are shown on the public website right now, and so to anonymous API callers.

  • Name
    editableForHosts
    Type
    boolean
    Description

    Whether organisers may change and delete their offers right now: during an editing phase, or at any time if the edition has no editing phase. Creating offers needs an editing phase that is running right now.

  • Name
    participantListReleased
    Type
    boolean
    Description

    Whether organisers may see their participant lists right now.

  • Name
    hostsCanAssign
    Type
    boolean
    Description

    Whether organisers may assign participants themselves.

  • Name
    hostsCanPublish
    Type
    boolean
    Description

    Whether organisers may approve and publish their own offers.

  • Name
    usePayments
    Type
    boolean
    Description

    Whether fees of this edition are collected through fepli.

  • Name
    holiday
    Type
    object
    Description

    The holiday period itself, with begin and end.

  • Name
    tasks
    Type
    object[]
    Description

    The phases of the edition, as configured in the admin. Each has a uuid, a type (such as holiday, host_editing_stage, show_offers, application_system, allocation or publish_lists), a title, a description, periodBegin and periodEnd, alwaysActive, and active for whether it is running right now. Application phases also carry applicationSystem (firstcome or lot), maxApplications, maxApplicationsDay, maxWaitlist and allowAnonymous. Empty values in tasks are returned as null.

  • Name
    hosts
    Type
    reference[]
    Description

    The organisers the edition is restricted to. Empty means every organiser can take part.

  • Name
    offersCount
    Type
    integer
    Description

    The number of offers in the edition.

  • Name
    createdAt
    Type
    timestamp
    Description

    When the edition was created.


GET/editions

List all editions

Returns a page of editions, newest first. Organiser users see all editions too.

Optional filters

  • Name
    archived
    Type
    boolean
    Description

    true for archived editions only, false for the live ones only.

  • Name
    q
    Type
    string
    Description

    Only editions whose name contains this text.

  • Name
    page, itemsPerPage
    Type
    integer
    Description

    See Pagination.

Request

GET·/editions
curl "https://ferienpass-musterstadt.de/api/editions?archived=false" \
  -H "Authorization: Bearer $FEPLI_TOKEN"

Response

[
  {
    "uuid": "01913e5c-2b4a-7d10-9f3e-6a1c2e7b4d01",
    "name": "Herbstferien 2026",
    "alias": "herbstferien-2026",
    "emoji": ":fallen_leaf:",
    "archived": false,
    "online": true,
    "editableForHosts": false,
    "participantListReleased": false,
    "hostsCanAssign": false,
    "hostsCanPublish": false,
    "usePayments": true,
    "holiday": {
      "begin": "2026-10-12T00:00:00+02:00",
      "end": "2026-10-24T23:59:59+02:00"
    },
    "tasks": [
      {
        "uuid": "01913e5d-7a8b-7c9d-8e0f-1a2b3c4d5e17",
        "type": "application_system",
        "title": "Anmeldephase",
        "description": null,
        "periodBegin": "2026-09-01T08:00:00+02:00",
        "periodEnd": "2026-09-30T23:59:59+02:00",
        "alwaysActive": false,
        "active": true,
        "applicationSystem": "firstcome",
        "maxApplications": 5,
        "maxApplicationsDay": null,
        "maxWaitlist": 2,
        "allowAnonymous": false
      }
    ],
    "hosts": [],
    "offersCount": 86,
    "createdAt": "2026-05-04T09:30:00+02:00"
  }
]

GET/editions/{uuid}

Retrieve an edition

Returns one edition. The path takes the UUID, not the alias. Every offer and application carries its edition's UUID in edition.

Request

GET·/editions/{uuid}
curl https://ferienpass-musterstadt.de/api/editions/01913e5c-2b4a-7d10-9f3e-6a1c2e7b4d01 \
  -H "Authorization: Bearer $FEPLI_TOKEN"

POST/editions

Create an edition

Creates an edition. Admins only. The alias is made from the name; if another edition has that alias already, the answer is 409, so choose another name.

A new edition has no phases. They are set up in the admin afterwards, under the edition's Zeiträume. Until then the edition counts as running throughout:

  • it is online right away, so its published offers show on the website and to anonymous callers,
  • organisers may change their offers, and their participant lists are released,
  • families can't apply yet, since there is no application phase,
  • organiser users can't create offers yet, since there is no editing phase.

Fees are collected (usePayments is true), the other switches are off, the emoji is picked at random, and every organiser can take part (hosts is empty; restricting an edition to some organisers is done in the admin). The edition's activity log in the admin records who created it.

Required attributes

  • Name
    name
    Type
    string
    Description

    The name, up to 255 characters.

Optional attributes

  • Name
    emoji
    Type
    string
    Description

    The emoji as a short code, such as :sunflower:. null for none.

  • Name
    archived
    Type
    boolean
    Description

    Whether the edition starts archived. Defaults to false.

  • Name
    hostsCanAssign
    Type
    boolean
    Description

    Whether organisers may assign participants themselves. Defaults to false.

  • Name
    hostsCanPublish
    Type
    boolean
    Description

    Whether organisers may approve and publish their own offers. Defaults to false.

  • Name
    usePayments
    Type
    boolean
    Description

    Whether fees are collected through fepli. Defaults to true.

Request

POST·/editions
curl -X POST https://ferienpass-musterstadt.de/api/editions \
  -H "Authorization: Bearer $FEPLI_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"name": "Sommerferien 2027", "emoji": ":sunflower:"}'

Response (201 Created)

{
  "uuid": "0196b2c4-8d1e-7f20-a3b4-5c6d7e8f9a10",
  "name": "Sommerferien 2027",
  "alias": "sommerferien-2027",
  "emoji": ":sunflower:",
  "archived": false,
  "online": true,
  "editableForHosts": true,
  "participantListReleased": true,
  "hostsCanAssign": false,
  "hostsCanPublish": false,
  "usePayments": true,
  "holiday": null,
  "tasks": [],
  "hosts": [],
  "offersCount": 0,
  "createdAt": "2026-09-22T10:15:00+02:00"
}

PATCH/editions/{uuid}

Update an edition

Changes the general settings of an edition. Admins only. The phases (tasks) are managed in the admin.

The alias always follows the name: renaming an edition changes its alias, and links or filters that use the old one, such as ?edition=herbstferien-2026, stop working. Integrations that keep a reference should store the uuid. A name whose alias another edition has already is a 409.

Optional attributes

  • Name
    name
    Type
    string
    Description

    The name, up to 255 characters.

  • Name
    emoji
    Type
    string
    Description

    The emoji. null removes it.

  • Name
    archived
    Type
    boolean
    Description

    Archive or restore the edition.

  • Name
    hostsCanAssign
    Type
    boolean
    Description

    Whether organisers may assign participants themselves.

  • Name
    hostsCanPublish
    Type
    boolean
    Description

    Whether organisers may approve and publish their own offers.

  • Name
    usePayments
    Type
    boolean
    Description

    Whether fees are collected through fepli.

Request

PATCH·/editions/{uuid}
curl -X PATCH https://ferienpass-musterstadt.de/api/editions/01913e5c-2b4a-7d10-9f3e-6a1c2e7b4d01 \
  -H "Authorization: Bearer $FEPLI_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"hostsCanPublish": true}'

The response holds the changed edition.


DELETE/editions/{uuid}

Delete an edition

Deletes an edition. Admins only. Responds with 204 No Content.

While the edition still has offers, it can't be deleted (409). Move the offers to another edition (send edition when you update an offer) or delete them first. The admin, unlike the API, deletes an edition's offers along with it.

Its phases, its activity log, its comments and the notification texts set up for this edition are deleted with it. Consent forms of the edition are kept, without the edition.

Request

DELETE·/editions/{uuid}
curl -X DELETE https://ferienpass-musterstadt.de/api/editions/0196b2c4-8d1e-7f20-a3b4-5c6d7e8f9a10 \
  -H "Authorization: Bearer $FEPLI_TOKEN"

POST/editions/{uuid}/commit-decisions

Commit held-back decisions

Commits every decision that is held back in the edition, like Zulosungen festschreiben in the admin. Admins only.

The lot drawn in the admin holds its decisions back, and so does every application that is created, transitioned, moved or refilled with commit: false. Such applications show heldBack: true, and GET /attendances?edition=…&heldBack=true lists them.

The call commits all of them for the whole edition at once, not per offer. For confirmed applications the fee falls due. With notify, the families get their decision letters: one e-mail per e-mail address, listing the decisions committed now.

The applications are released right away and show heldBack: false after the call; the rest is done in the background, shortly after. The API answers 202 Accepted with the edition. As in the admin, committing also ends the edition's allocation phase: a running allocation task ends now.

If nothing is held back in the edition, the answer is 409.

Optional attributes

The request needs a JSON body: send {} to commit without letters.

  • Name
    notify
    Type
    boolean
    Description

    Send the decision letters. Defaults to false.

Request

POST·/editions/{uuid}/commit-decisions
curl -X POST https://ferienpass-musterstadt.de/api/editions/01913e5c-2b4a-7d10-9f3e-6a1c2e7b4d01/commit-decisions \
  -H "Authorization: Bearer $FEPLI_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"notify": true}'

The response (202 Accepted) holds the edition.

Was this page helpful?