fepli
DevelopersAPI resources

Editions

An edition is one period of the programme, such as the autumn holidays of a holiday programme ("Herbstferien 2026") or a term of courses. Every offer, attendance and payment belongs to an edition, and an edition's tasks decide what happens when: when hosts 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 hosts may create, change and delete their offers right now: while a host_editing_stage task is active, by its dates or because it is alwaysActive. An edition without a host_editing_stage task is closed to them.

  • Name
    participantListReleased
    Type
    boolean
    Description

    Whether hosts may see their participant lists right now: while a publish_lists task is active, by its dates or because it is alwaysActive. An edition without one keeps the lists closed to them.

  • Name
    hostsCanAssign
    Type
    boolean
    Description

    Whether hosts may assign participants themselves.

  • Name
    hostsCanPublish
    Type
    boolean
    Description

    Whether hosts 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 period in which the offers take place, with begin and end.

  • Name
    tasks
    Type
    object[]
    Description

    The tasks 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 in effect right now. application_system tasks 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 hosts the edition is restricted to. Empty means every host 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. Host 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.

GET/editions
curl "https://example.fepli.eu/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 attendance carries its edition's UUID in edition.

GET/editions/{uuid}
curl https://example.fepli.eu/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 tasks. They are set up in the admin afterwards, under the edition's Zeiträume. Until then:

  • it is online right away, so its published offers show on the website and to anonymous callers,
  • families can't apply yet, since there is no application_system task,
  • host users can't create, change or delete offers yet, since there is no host_editing_stage task,
  • host users can't see participant lists yet, since there is no publish_lists task.

Fees are collected (usePayments is true), the other switches are off, the emoji is picked at random, and every host can take part (hosts is empty; restricting an edition to some hosts 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 hosts may assign participants themselves. Defaults to false.

  • Name
    hostsCanPublish
    Type
    boolean
    Description

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

  • Name
    usePayments
    Type
    boolean
    Description

    Whether fees are collected through fepli. Defaults to true.

POST/editions
curl -X POST https://example.fepli.eu/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": false,
  "participantListReleased": false,
  "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 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 hosts may assign participants themselves.

  • Name
    hostsCanPublish
    Type
    boolean
    Description

    Whether hosts may approve and publish their own offers.

  • Name
    usePayments
    Type
    boolean
    Description

    Whether fees are collected through fepli.

PATCH/editions/{uuid}
curl -X PATCH https://example.fepli.eu/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 tasks, 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.

DELETE/editions/{uuid}
curl -X DELETE https://example.fepli.eu/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 Anmeldungen festschreiben in the admin. Admins only.

The lot drawn in the admin holds its decisions back, and so does every attendance that is created, transitioned, moved or refilled with commit: false. Such attendances 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 attendances the fee falls due. It sends no e-mail. To tell the families, send them a mailing with "to": "attendances" and the attendances it returns: each family gets one e-mail with your text and the status of each of its applications.

The attendances 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. As in the admin, committing also ends the edition's allocation task: an active one ends now.

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

The request needs a JSON body: send {}.

Response

  • Name
    edition
    Type
    reference
    Description

    The edition committed.

  • Name
    attendances
    Type
    array
    Description

    The UUIDs of the attendances committed now. Pass them as attendances to POST /mailings.

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

Response (202 Accepted)

{
  "edition": {
    "uuid": "01913e5c-2b4a-7d10-9f3e-6a1c2e7b4d01",
    "name": "Herbstferien 2026",
    "alias": "herbstferien-2026"
  },
  "attendances": [
    "0192d0e8-3a4b-7c5d-9e6f-7a8b9c0d1e07",
    "0192d0e8-3a4b-7c5d-9e6f-7a8b9c0d1e08"
  ]
}

Was this page helpful?