Enrolment Forms
Returns every customerRegistration layout of the tenant, ordered by name, with enough of each form to render a list without reading them one by one.
Layout files that cannot be parsed are left out: their type is precisely what cannot be read, so there is no way to tell whether they are enrolment forms. Reading one by name still reports it.
Authorization
Requires tenant.configuration.enrolment:read scope.
Enrolment forms returned.
Enrolment form returned by the list endpoint.
Name of the form, unique within the tenant, and the last segment of its public URL.
Flow executed when a customer registers through this form. Null when the stored form has none.
Number of locale resource directories the form pulls its translations from.
Whether the form declares any fields to fill in.
GET /api/{tenantId}/admin/enrolmentForms HTTP/1.1
Host: app.neostore.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
Enrolment forms returned.
[
{
"name": "text",
"flow": null,
"localeResourceCount": 1,
"hasForm": true
}
]Request body to create an enrolment form.
Name of the form. Must contain only letters, digits, hyphens or underscores, from 1 to 50 characters, because it becomes a file name and a public URL segment.
Flow executed when a customer registers through this form. Required unless yaml is used,
in which case the flow is read from it.
Complete file to store, verbatim. Mutually exclusive with flow and localization.
Enrolment form created.
Full definition of an enrolment form, returned by the get/create/save endpoints.
Name of the form.
Flow executed when a customer registers through this form. Null when the stored form has none — which the form needs to work, so writing it back through this API requires one.
The stored file, verbatim.
Name, flow or the resulting configuration is invalid.
A form with this name already exists.
POST /api/{tenantId}/admin/enrolmentForms HTTP/1.1
Host: app.neostore.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 77
{
"name": "text",
"flow": null,
"localization": {
"resources": [
"text"
]
},
"yaml": null
}{
"name": "text",
"flow": null,
"localization": {
"resources": [
"text"
]
},
"yaml": "text"
}Enrolment form returned.
Full definition of an enrolment form, returned by the get/create/save endpoints.
Name of the form.
Flow executed when a customer registers through this form. Null when the stored form has none — which the form needs to work, so writing it back through this API requires one.
The stored file, verbatim.
Name is invalid.
Enrolment form not found.
The stored file cannot be parsed.
GET /api/{tenantId}/admin/enrolmentForms/{name} HTTP/1.1
Host: app.neostore.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
{
"name": "text",
"flow": null,
"localization": {
"resources": [
"text"
]
},
"yaml": "text"
}Replaces the form identified by name. The name in the route is authoritative and the form cannot be renamed.
A form whose stored YAML no longer parses can only be saved through yaml, which replaces the whole file — the typed path has nothing it can safely merge into.
Authorization
Requires tenant.configuration.enrolment:write scope.
Request body to save an existing enrolment form.
Flow executed when a customer registers through this form. Required unless yaml is used.
Complete file to store, verbatim. Mutually exclusive with flow and localization.
Enrolment form saved.
Full definition of an enrolment form, returned by the get/create/save endpoints.
Name of the form.
Flow executed when a customer registers through this form. Null when the stored form has none — which the form needs to work, so writing it back through this API requires one.
The stored file, verbatim.
Name, flow or the resulting configuration is invalid.
Enrolment form not found.
The stored file cannot be parsed and the request does not replace it entirely.
PUT /api/{tenantId}/admin/enrolmentForms/{name} HTTP/1.1
Host: app.neostore.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 63
{
"flow": null,
"localization": {
"resources": [
"text"
]
},
"yaml": null
}{
"name": "text",
"flow": null,
"localization": {
"resources": [
"text"
]
},
"yaml": "text"
}Removes layouts/{name}.yml.
This breaks live links, and the API cannot tell you which
A form is served publicly at /{tenantId}/{name}. That URL is what gets printed on QR codes, embedded in campaigns and handed to partners, and short links created by the redirect engine resolve to it by name at request time — from the redirect store, not from the configuration. So there is no way for this endpoint to enumerate what points at the form: deleting it starts returning 404 to traffic that is already in the wild, and re-creating a form under the same name is the only way back.
Callers must warn explicitly and name the form before calling this. The one class of reference that can be checked is other layouts using the form as their errorLayoutName; that is refused with a conflict rather than silently breaking them.
Locale resource directories are left alone: they are shared between forms, so removing one form must not take another form's translations with it.
Authorization
Requires tenant.configuration.enrolment:write scope.
Enrolment form deleted. Its public URL now returns 404.
No content
Name is invalid.
Enrolment form not found.
The form is used as an error layout by another layout, or the stored file cannot be parsed.
DELETE /api/{tenantId}/admin/enrolmentForms/{name} HTTP/1.1
Host: app.neostore.cloud
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
No content
Last updated

