Course Registrations
Course Registrations
Abschnitt betitelt „Course Registrations“A CourseRegistration (Anmeldung) expresses the intent of one person (the registrant) to attend one or more courses — optionally together with additional participants (e.g. parent registers children). The registration does not yet book anyone into the course and does not trigger invoicing.
Use CourseRegistration when:
- Staff manually records an incoming paper/email registration.
- A trusted integration pushes registrations from an external portal.
- The public API created one through publicEnrollToCourse.
To finalize a registration into real course attendance, create one or more Course Participants from it.
Create a Registration
Abschnitt betitelt „Create a Registration“Mutation
Abschnitt betitelt „Mutation“mutation CreateCourseRegistration( $courseRegistration: CourseRegistrationCreateInput! $parentID: ID) { createCourseRegistration( courseRegistration: $courseRegistration parentID: $parentID ) { status message id courseRegistration { id registrationType dateOfSale } }}Required fields
Abschnitt betitelt „Required fields“input CourseRegistrationCreateInput { "UID of the person submitting the registration" registrantPersonID: UID!
"COURSE for a main course/program, MODULE for a subsequent sub-course booking" registrationType: CourseRegistrationType!
"At least one course UID" courseIDs: [UID!]!
"Optional additional participants (e.g. children of the registrant)" participantPersonIDs: [UID!]
dateOfSale: Date sellerID: UID # ...plus all BaseObjectInput fields (remarks, validFrom, validTo, ...)}
enum CourseRegistrationType { COURSE MODULE}Minimal variables
Abschnitt betitelt „Minimal variables“{ "parentID": "special://COURSEREGFLDROOT", "courseRegistration": { "registrantPersonID": "8f3a1a8e-...-1c", "registrationType": "COURSE", "courseIDs": ["4a9e2c17-...-b3"] }}Registering multiple persons for multiple courses
Abschnitt betitelt „Registering multiple persons for multiple courses“{ "courseRegistration": { "registrantPersonID": "8f3a1a8e-...-1c", "registrationType": "COURSE", "courseIDs": [ "4a9e2c17-...-b3", "dd45e010-...-77" ], "participantPersonIDs": [ "bb00aa12-...-01", "bb00aa12-...-02" ], "dateOfSale": "2026-04-23" }}When participantPersonIDs is omitted, the registrant is the only participant.
Convenience: enrollCourse
Abschnitt betitelt „Convenience: enrollCourse“enrollCourse is a thin wrapper around createCourseRegistration that uses the currently authenticated user as the registrant. Use it from an authenticated app (student portal, teacher portal) when the JWT already identifies the registrant.
mutation EnrollCourse($input: EnrollCourseInput!) { enrollCourse(input: $input) { success message }}
input EnrollCourseInput { courseID: UID! participantPersonIDs: [UID!]}{ "input": { "courseID": "4a9e2c17-...-b3" }}List Registrations
Abschnitt betitelt „List Registrations“query { courseRegistrations( options: { searchTerm: "Müller" onlyActive: true orderBy: "dateOfSale" orderDirection: DESC limit: 50 } ) { totalCount nodes { id registrationType dateOfSale registrant { id lastName preName } courses { id name } } }}Update / Cancel
Abschnitt betitelt „Update / Cancel“mutation UpdateCourseRegistration( $id: ID! $courseRegistration: CourseRegistrationUpdateInput!) { updateCourseRegistration(id: $id, courseRegistration: $courseRegistration) { status message }}CourseRegistrationUpdateInput does not expose registrantPersonID, courseIDs or participantPersonIDs — those are fixed after creation. To change them, cancel the registration (deleteCourseRegistration) and create a new one.
Authorization
Abschnitt betitelt „Authorization“- All
courseRegistration*mutations and queries require a JWT. createCourseRegistrationchecks insert-access onparentID.updateCourseRegistration/deleteCourseRegistrationchecks write-access on the registration itself.
Related
Abschnitt betitelt „Related“- Public Enrollment — anonymous intake that creates
CourseRegistrationobjects - Course Participants — finalize a registration into a real booking