Consents
A consent records that a family or a host agreed to something, or declined it: a consent form of an edition or an offer, such as permission to take photos, or the general terms. Consents can expire and can be revoked.
All consent endpoints need ROLE_ADMIN.
Every decision is a record of its own and stays the proof of what was declared, by whom and when. Deciding again adds a record; declining a consent in effect revokes it and adds a declined record. A revocation is final: consenting again is a new record. Records can't be deleted one by one.
Consents after a deletion
Deleting an account or a participant is not a revocation. A consent that was given stays in force, because what it allowed may go on: the photos stay published. Its record stays as the proof, without account and participant, and keeps the names of the person and of whoever declared. Declined consents, and consents for offers that haven't begun, are deleted with the person.
To revoke along with a deletion, call Revoke a consent for each consent first, then delete. The website and the admin ask the same question in their deletion dialogs.
A record is deleted once the consent is over (revoked, expired, or done with its offer or edition where its form says so) and the retention period for proofs has passed, three years from the end of that year unless the admin set another.
The consent model
- Name
uuid- Type
- string
- Description
The consent's identifier.
- Name
type- Type
- string
- Description
form_consentfor a consent to a form of an edition or an offer,consentfor the general one.
- Name
form- Type
- object
- Description
For consents to a form: the form's
uuid, itstitle, itssubject(who it is collected for:participant,accountorhost),compulsory(compulsory,opt-inorforce_decision) and itstext. Forms that wereopt-outreadforce_decision: opt-out is no longer offered.
- Name
account- Type
- reference
- Description
The account that gave the consent. Left out once the account is deleted.
- Name
participant- Type
- reference
- Description
The participant the consent is for. Left out once the participant is deleted.
- Name
offer- Type
- reference
- Description
The offer the consent is for.
- Name
edition- Type
- reference
- Description
The edition the consent is for.
- Name
decision- Type
- integer
- Description
1if consent was given,0if it was declined.
- Name
signedAt- Type
- timestamp
- Description
When the consent was given.
- Name
signedBy- Type
- string
- Description
Who declared, when it wasn't the account holder: a guardian deciding through the link to the attendance, or an admin recording the consent in the admin. Never changes after the record is made.
- Name
signedVia- Type
- string
- Description
How the decision arrived:
link(a guardian through the link to the attendance),account(the family signed in on the website),guest(the application form without an account),admin(in the admin) orapi(reserved; no endpoint records a decision yet). Left out for records made before this was recorded.
- Name
revokedAt- Type
- timestamp
- Description
When the consent was revoked.
- Name
revokedBy- Type
- string
- Description
Who recorded the revocation: the account holder, an admin, or the API client (a person's name or the service account's). Left out for revocations made before this was recorded.
- Name
validUntil- Type
- timestamp
- Description
When the consent expires.
- Name
valid- Type
- boolean
- Description
Whether the record is in effect: not revoked and not expired. Check
decisionas well: a declined consent can bevalidtoo.
- Name
createdAt- Type
- timestamp
- Description
When the record was created.
/consentsList all consents
Returns a page of consents, newest first.
Optional filters
- Name
account- Type
- string
- Description
Only consents of this account (UUID, or e-mail address within your own tenant).
- Name
participant- Type
- string
- Description
Only consents for this participant (UUID).
- Name
offer- Type
- string
- Description
Only consents to forms of this offer (UUID).
- Name
edition- Type
- string
- Description
Only consents to forms of this edition (UUID or alias).
- Name
revoked- Type
- boolean
- Description
truefor revoked consents only,falseto leave them out.
- Name
page, itemsPerPage- Type
- integer
- Description
See Pagination.
curl -G https://example.fepli.eu/api/consents \
-H "Authorization: Bearer $FEPLI_TOKEN" \
--data-urlencode "account=familie.mueller@example.org" \
-d revoked=false
Response
[
{
"uuid": "0192d0e9-6d7e-7f80-9a1b-2c3d4e5f6a31",
"type": "form_consent",
"form": {
"uuid": "01913e5e-8b9c-7d0e-9f1a-2b3c4d5e6f32",
"title": "Fotoerlaubnis",
"subject": "participant",
"compulsory": "opt-in",
"text": "Ich bin damit einverstanden, dass Fotos meines Kindes …"
},
"account": {
"uuid": "0191c7b2-4d5e-7f60-8a1b-2c3d4e5f6a05",
"name": "Anna Müller"
},
"participant": {
"uuid": "0191c7b3-1f2a-7c4d-8e5f-6a7b8c9d0e06",
"name": "Lena Müller"
},
"edition": {
"uuid": "01913e5c-2b4a-7d10-9f3e-6a1c2e7b4d01",
"name": "Herbstferien 2026",
"alias": "herbstferien-2026"
},
"decision": 1,
"signedAt": "2026-09-01T08:02:57+02:00",
"signedVia": "account",
"valid": true,
"createdAt": "2026-09-01T08:02:57+02:00"
}
]
/consents/{uuid}Retrieve a consent
Returns one consent.
curl https://example.fepli.eu/api/consents/0192d0e9-6d7e-7f80-9a1b-2c3d4e5f6a31 \
-H "Authorization: Bearer $FEPLI_TOKEN"
/consents/{uuid}/revokeRevoke a consent
Revokes a consent on the family's behalf, for example after they sent a signed paper form. The request has no body. Returns the revoked consent, with revokedAt and revokedBy set; the record itself stays. The revocation also appears in the admin's Betroffenenrechte log.
Whoever relies on the consent is told by e-mail: the organisers of the offer for a consent to an offer's form, the team and the organisers for a consent to an edition's form.
Only a consent that was given (decision 1) can be revoked; a declined one answers 403. A consent that is already revoked can't be revoked again (409).
curl -X POST https://example.fepli.eu/api/consents/0192d0e9-6d7e-7f80-9a1b-2c3d4e5f6a31/revoke \
-H "Authorization: Bearer $FEPLI_TOKEN"