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
beginandend.
- Name
tasks- Type
- object[]
- Description
The phases of the edition, as configured in the admin. Each has a
uuid, atype(such asholiday,host_editing_stage,show_offers,application_system,allocationorpublish_lists), atitle, adescription,periodBeginandperiodEnd,alwaysActive, andactivefor whether it is running right now. Application phases also carryapplicationSystem(firstcomeorlot),maxApplications,maxApplicationsDay,maxWaitlistandallowAnonymous. Empty values in tasks are returned asnull.
- 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.
List all editions
Returns a page of editions, newest first. Organiser users see all editions too.
Optional filters
- Name
archived- Type
- boolean
- Description
truefor archived editions only,falsefor 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
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"
}
]
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
curl https://ferienpass-musterstadt.de/api/editions/01913e5c-2b4a-7d10-9f3e-6a1c2e7b4d01 \
-H "Authorization: Bearer $FEPLI_TOKEN"
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
onlineright 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:.nullfor 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
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"
}
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.
nullremoves 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
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 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
curl -X DELETE https://ferienpass-musterstadt.de/api/editions/0196b2c4-8d1e-7f20-a3b4-5c6d7e8f9a10 \
-H "Authorization: Bearer $FEPLI_TOKEN"
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
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.