> For the complete documentation index, see [llms.txt](https://docs.thewalletcrew.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.thewalletcrew.io/api-reference/advanced/enrolment-forms.md).

# Enrolment Forms

## List enrolment forms for the tenant

> 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.\
> &#x20;           \
> 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.

```json
{"openapi":"3.1.1","info":{"title":"Neostore internal API","version":"v1"},"tags":[{"name":"EnrolmentForms"}],"servers":[{"url":"https://app.neostore.cloud","description":"Production Server"},{"url":"https://app-qa.neostore.cloud","description":"Staging Server"}],"security":[{"admin-bearer":["tenant.configuration.enrolment:read"]},{"apiKey":[]}],"components":{"securitySchemes":{"admin-bearer":{"type":"oauth2","flows":{"implicit":{"authorizationUrl":"https://auth.neostore.cloud/authorize?audience=https://app.neostore.cloud/api/","scopes":{}}}},"apiKey":{"type":"apiKey","name":"X-API-KEY","in":"header"}},"schemas":{"EnrolmentFormListItem":{"required":["hasForm","localeResourceCount","name"],"type":"object","properties":{"name":{"type":"string","description":"Name of the form, unique within the tenant, and the last segment of its public URL."},"flow":{"type":["null","string"],"description":"Flow executed when a customer registers through this form. Null when the stored form has none."},"localeResourceCount":{"type":"integer","description":"Number of locale resource directories the form pulls its translations from.","format":"int32"},"hasForm":{"type":"boolean","description":"Whether the form declares any fields to fill in."}},"additionalProperties":false,"description":"Enrolment form returned by the list endpoint."}}},"paths":{"/api/{tenantId}/admin/enrolmentForms":{"get":{"tags":["EnrolmentForms"],"summary":"List enrolment forms for the tenant","description":"Returns every `customerRegistration` layout of the tenant, ordered by name, with enough of each\nform to render a list without reading them one by one.\n            \nLayout files that cannot be parsed are left out: their `type` is precisely what cannot be read,\nso there is no way to tell whether they are enrolment forms. Reading one by name still reports it.","parameters":[{"name":"tenantId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Enrolment forms returned.","content":{"text/plain":{"schema":{"type":"array","items":{"description":"Enrolment form returned by the list endpoint.","$ref":"#/components/schemas/EnrolmentFormListItem"}}},"application/json":{"schema":{"type":"array","items":{"description":"Enrolment form returned by the list endpoint.","$ref":"#/components/schemas/EnrolmentFormListItem"}}},"text/json":{"schema":{"type":"array","items":{"description":"Enrolment form returned by the list endpoint.","$ref":"#/components/schemas/EnrolmentFormListItem"}}}}}}}}}}
```

## Create an enrolment form

> Writes a new \`layouts/{name}.yml\`. The name must be one the tenant configuration validator\
> accepts, so a new form cannot be the reason validation starts failing.

```json
{"openapi":"3.1.1","info":{"title":"Neostore internal API","version":"v1"},"tags":[{"name":"EnrolmentForms"}],"servers":[{"url":"https://app.neostore.cloud","description":"Production Server"},{"url":"https://app-qa.neostore.cloud","description":"Staging Server"}],"security":[{"admin-bearer":["tenant.configuration.enrolment:write"]},{"apiKey":[]}],"components":{"securitySchemes":{"admin-bearer":{"type":"oauth2","flows":{"implicit":{"authorizationUrl":"https://auth.neostore.cloud/authorize?audience=https://app.neostore.cloud/api/","scopes":{}}}},"apiKey":{"type":"apiKey","name":"X-API-KEY","in":"header"}},"schemas":{"CreateEnrolmentFormRequest":{"required":["name"],"type":"object","properties":{"name":{"minLength":1,"type":"string","description":"Name of the form. Must contain only letters, digits, hyphens or underscores, from 1 to 50\ncharacters, because it becomes a file name and a public URL segment."},"flow":{"type":["null","string"],"description":"Flow executed when a customer registers through this form. Required unless `yaml` is used,\nin which case the flow is read from it."},"localization":{"description":"Localization wiring. Omitted means the form pulls no locale resources.","$ref":"#/components/schemas/EnrolmentFormLocalization"},"yaml":{"type":["null","string"],"description":"Complete file to store, verbatim. Mutually exclusive with `flow` and `localization`."}},"additionalProperties":false,"description":"Request body to create an enrolment form."},"EnrolmentFormLocalization":{"type":"object","properties":{"resources":{"type":"array","items":{"type":"string"},"description":"Locale resource directories, e.g. `/locales/fields/`. Order matters: when the same key is\ndefined in more than one directory, the last one wins. Each directory holds one file per culture,\nmanaged through the enrolment locale endpoints."}},"additionalProperties":false,"description":"Localization wiring of an enrolment form."},"EnrolmentFormDefinition":{"required":["localization","name","yaml"],"type":"object","properties":{"name":{"type":"string","description":"Name of the form."},"flow":{"type":["null","string"],"description":"Flow executed when a customer registers through this form. Null when the stored form has none —\nwhich the form needs to work, so writing it back through this API requires one."},"localization":{"description":"Localization wiring of the form.","$ref":"#/components/schemas/EnrolmentFormLocalization"},"yaml":{"type":"string","description":"The stored file, verbatim."}},"additionalProperties":false,"description":"Full definition of an enrolment form, returned by the get/create/save endpoints."},"ProblemDetails":{"type":"object","properties":{"type":{"type":["null","string"]},"title":{"type":["null","string"]},"status":{"type":["null","integer"],"format":"int32"},"detail":{"type":["null","string"]},"instance":{"type":["null","string"]}},"additionalProperties":{}},"HttpValidationProblemDetails":{"type":"object","allOf":[{"$ref":"#/components/schemas/ProblemDetails"}],"properties":{"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}},"additionalProperties":{}}}},"paths":{"/api/{tenantId}/admin/enrolmentForms":{"post":{"tags":["EnrolmentForms"],"summary":"Create an enrolment form","description":"Writes a new `layouts/{name}.yml`. The name must be one the tenant configuration validator\naccepts, so a new form cannot be the reason validation starts failing.","parameters":[{"name":"tenantId","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"description":"Request body to create an enrolment form.","$ref":"#/components/schemas/CreateEnrolmentFormRequest"}},"text/json":{"schema":{"description":"Request body to create an enrolment form.","$ref":"#/components/schemas/CreateEnrolmentFormRequest"}},"application/*+json":{"schema":{"description":"Request body to create an enrolment form.","$ref":"#/components/schemas/CreateEnrolmentFormRequest"}}},"required":true},"responses":{"201":{"description":"Enrolment form created.","content":{"text/plain":{"schema":{"description":"Full definition of an enrolment form, returned by the get/create/save endpoints.","$ref":"#/components/schemas/EnrolmentFormDefinition"}},"application/json":{"schema":{"description":"Full definition of an enrolment form, returned by the get/create/save endpoints.","$ref":"#/components/schemas/EnrolmentFormDefinition"}},"text/json":{"schema":{"description":"Full definition of an enrolment form, returned by the get/create/save endpoints.","$ref":"#/components/schemas/EnrolmentFormDefinition"}}}},"400":{"description":"Name, flow or the resulting configuration is invalid.","content":{"text/plain":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ProblemDetails"},{"$ref":"#/components/schemas/HttpValidationProblemDetails"}]}},"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ProblemDetails"},{"$ref":"#/components/schemas/HttpValidationProblemDetails"}]}},"text/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ProblemDetails"},{"$ref":"#/components/schemas/HttpValidationProblemDetails"}]}}}},"409":{"description":"A form with this name already exists.","content":{"text/plain":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ProblemDetails"},{"$ref":"#/components/schemas/HttpValidationProblemDetails"}]}},"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ProblemDetails"},{"$ref":"#/components/schemas/HttpValidationProblemDetails"}]}},"text/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ProblemDetails"},{"$ref":"#/components/schemas/HttpValidationProblemDetails"}]}}}}}}}}}
```

## Get an enrolment form

> Returns the modelled properties of the form together with the stored file verbatim in \`yaml\`, so\
> a caller can render a form editor and a YAML editor from one request.

```json
{"openapi":"3.1.1","info":{"title":"Neostore internal API","version":"v1"},"tags":[{"name":"EnrolmentForms"}],"servers":[{"url":"https://app.neostore.cloud","description":"Production Server"},{"url":"https://app-qa.neostore.cloud","description":"Staging Server"}],"security":[{"admin-bearer":["tenant.configuration.enrolment:read"]},{"apiKey":[]}],"components":{"securitySchemes":{"admin-bearer":{"type":"oauth2","flows":{"implicit":{"authorizationUrl":"https://auth.neostore.cloud/authorize?audience=https://app.neostore.cloud/api/","scopes":{}}}},"apiKey":{"type":"apiKey","name":"X-API-KEY","in":"header"}},"schemas":{"EnrolmentFormDefinition":{"required":["localization","name","yaml"],"type":"object","properties":{"name":{"type":"string","description":"Name of the form."},"flow":{"type":["null","string"],"description":"Flow executed when a customer registers through this form. Null when the stored form has none —\nwhich the form needs to work, so writing it back through this API requires one."},"localization":{"description":"Localization wiring of the form.","$ref":"#/components/schemas/EnrolmentFormLocalization"},"yaml":{"type":"string","description":"The stored file, verbatim."}},"additionalProperties":false,"description":"Full definition of an enrolment form, returned by the get/create/save endpoints."},"EnrolmentFormLocalization":{"type":"object","properties":{"resources":{"type":"array","items":{"type":"string"},"description":"Locale resource directories, e.g. `/locales/fields/`. Order matters: when the same key is\ndefined in more than one directory, the last one wins. Each directory holds one file per culture,\nmanaged through the enrolment locale endpoints."}},"additionalProperties":false,"description":"Localization wiring of an enrolment form."},"ProblemDetails":{"type":"object","properties":{"type":{"type":["null","string"]},"title":{"type":["null","string"]},"status":{"type":["null","integer"],"format":"int32"},"detail":{"type":["null","string"]},"instance":{"type":["null","string"]}},"additionalProperties":{}},"HttpValidationProblemDetails":{"type":"object","allOf":[{"$ref":"#/components/schemas/ProblemDetails"}],"properties":{"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}},"additionalProperties":{}}}},"paths":{"/api/{tenantId}/admin/enrolmentForms/{name}":{"get":{"tags":["EnrolmentForms"],"summary":"Get an enrolment form","description":"Returns the modelled properties of the form together with the stored file verbatim in `yaml`, so\na caller can render a form editor and a YAML editor from one request.","parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"tenantId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Enrolment form returned.","content":{"text/plain":{"schema":{"description":"Full definition of an enrolment form, returned by the get/create/save endpoints.","$ref":"#/components/schemas/EnrolmentFormDefinition"}},"application/json":{"schema":{"description":"Full definition of an enrolment form, returned by the get/create/save endpoints.","$ref":"#/components/schemas/EnrolmentFormDefinition"}},"text/json":{"schema":{"description":"Full definition of an enrolment form, returned by the get/create/save endpoints.","$ref":"#/components/schemas/EnrolmentFormDefinition"}}}},"400":{"description":"Name is invalid.","content":{"text/plain":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ProblemDetails"},{"$ref":"#/components/schemas/HttpValidationProblemDetails"}]}},"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ProblemDetails"},{"$ref":"#/components/schemas/HttpValidationProblemDetails"}]}},"text/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ProblemDetails"},{"$ref":"#/components/schemas/HttpValidationProblemDetails"}]}}}},"404":{"description":"Enrolment form not found.","content":{"text/plain":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ProblemDetails"},{"$ref":"#/components/schemas/HttpValidationProblemDetails"}]}},"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ProblemDetails"},{"$ref":"#/components/schemas/HttpValidationProblemDetails"}]}},"text/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ProblemDetails"},{"$ref":"#/components/schemas/HttpValidationProblemDetails"}]}}}},"409":{"description":"The stored file cannot be parsed.","content":{"text/plain":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ProblemDetails"},{"$ref":"#/components/schemas/HttpValidationProblemDetails"}]}},"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ProblemDetails"},{"$ref":"#/components/schemas/HttpValidationProblemDetails"}]}},"text/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ProblemDetails"},{"$ref":"#/components/schemas/HttpValidationProblemDetails"}]}}}}}}}}}
```

## Save an enrolment form

> Replaces the form identified by name. The name in the route is authoritative and\
> the form cannot be renamed.\
> &#x20;           \
> 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.

```json
{"openapi":"3.1.1","info":{"title":"Neostore internal API","version":"v1"},"tags":[{"name":"EnrolmentForms"}],"servers":[{"url":"https://app.neostore.cloud","description":"Production Server"},{"url":"https://app-qa.neostore.cloud","description":"Staging Server"}],"security":[{"admin-bearer":["tenant.configuration.enrolment:write"]},{"apiKey":[]}],"components":{"securitySchemes":{"admin-bearer":{"type":"oauth2","flows":{"implicit":{"authorizationUrl":"https://auth.neostore.cloud/authorize?audience=https://app.neostore.cloud/api/","scopes":{}}}},"apiKey":{"type":"apiKey","name":"X-API-KEY","in":"header"}},"schemas":{"SaveEnrolmentFormRequest":{"type":"object","properties":{"flow":{"type":["null","string"],"description":"Flow executed when a customer registers through this form. Required unless `yaml` is used."},"localization":{"description":"Localization wiring. Omitted keeps the stored resource directories; provided replaces them, so an\nempty list clears them.","$ref":"#/components/schemas/EnrolmentFormLocalization"},"yaml":{"type":["null","string"],"description":"Complete file to store, verbatim. Mutually exclusive with `flow` and `localization`."}},"additionalProperties":false,"description":"Request body to save an existing enrolment form."},"EnrolmentFormLocalization":{"type":"object","properties":{"resources":{"type":"array","items":{"type":"string"},"description":"Locale resource directories, e.g. `/locales/fields/`. Order matters: when the same key is\ndefined in more than one directory, the last one wins. Each directory holds one file per culture,\nmanaged through the enrolment locale endpoints."}},"additionalProperties":false,"description":"Localization wiring of an enrolment form."},"EnrolmentFormDefinition":{"required":["localization","name","yaml"],"type":"object","properties":{"name":{"type":"string","description":"Name of the form."},"flow":{"type":["null","string"],"description":"Flow executed when a customer registers through this form. Null when the stored form has none —\nwhich the form needs to work, so writing it back through this API requires one."},"localization":{"description":"Localization wiring of the form.","$ref":"#/components/schemas/EnrolmentFormLocalization"},"yaml":{"type":"string","description":"The stored file, verbatim."}},"additionalProperties":false,"description":"Full definition of an enrolment form, returned by the get/create/save endpoints."},"ProblemDetails":{"type":"object","properties":{"type":{"type":["null","string"]},"title":{"type":["null","string"]},"status":{"type":["null","integer"],"format":"int32"},"detail":{"type":["null","string"]},"instance":{"type":["null","string"]}},"additionalProperties":{}},"HttpValidationProblemDetails":{"type":"object","allOf":[{"$ref":"#/components/schemas/ProblemDetails"}],"properties":{"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}},"additionalProperties":{}}}},"paths":{"/api/{tenantId}/admin/enrolmentForms/{name}":{"put":{"tags":["EnrolmentForms"],"summary":"Save an enrolment form","description":"Replaces the form identified by name. The name in the route is authoritative and\nthe form cannot be renamed.\n            \nA form whose stored YAML no longer parses can only be saved through `yaml`, which replaces the\nwhole file — the typed path has nothing it can safely merge into.","parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"tenantId","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"description":"Request body to save an existing enrolment form.","$ref":"#/components/schemas/SaveEnrolmentFormRequest"}},"text/json":{"schema":{"description":"Request body to save an existing enrolment form.","$ref":"#/components/schemas/SaveEnrolmentFormRequest"}},"application/*+json":{"schema":{"description":"Request body to save an existing enrolment form.","$ref":"#/components/schemas/SaveEnrolmentFormRequest"}}},"required":true},"responses":{"200":{"description":"Enrolment form saved.","content":{"text/plain":{"schema":{"description":"Full definition of an enrolment form, returned by the get/create/save endpoints.","$ref":"#/components/schemas/EnrolmentFormDefinition"}},"application/json":{"schema":{"description":"Full definition of an enrolment form, returned by the get/create/save endpoints.","$ref":"#/components/schemas/EnrolmentFormDefinition"}},"text/json":{"schema":{"description":"Full definition of an enrolment form, returned by the get/create/save endpoints.","$ref":"#/components/schemas/EnrolmentFormDefinition"}}}},"400":{"description":"Name, flow or the resulting configuration is invalid.","content":{"text/plain":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ProblemDetails"},{"$ref":"#/components/schemas/HttpValidationProblemDetails"}]}},"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ProblemDetails"},{"$ref":"#/components/schemas/HttpValidationProblemDetails"}]}},"text/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ProblemDetails"},{"$ref":"#/components/schemas/HttpValidationProblemDetails"}]}}}},"404":{"description":"Enrolment form not found.","content":{"text/plain":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ProblemDetails"},{"$ref":"#/components/schemas/HttpValidationProblemDetails"}]}},"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ProblemDetails"},{"$ref":"#/components/schemas/HttpValidationProblemDetails"}]}},"text/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ProblemDetails"},{"$ref":"#/components/schemas/HttpValidationProblemDetails"}]}}}},"409":{"description":"The stored file cannot be parsed and the request does not replace it entirely.","content":{"text/plain":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ProblemDetails"},{"$ref":"#/components/schemas/HttpValidationProblemDetails"}]}},"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ProblemDetails"},{"$ref":"#/components/schemas/HttpValidationProblemDetails"}]}},"text/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ProblemDetails"},{"$ref":"#/components/schemas/HttpValidationProblemDetails"}]}}}}}}}}}
```

## Delete an enrolment form

> Removes \`layouts/{name}.yml\`.\
> &#x20;           \
> \## This breaks live links, and the API cannot tell you which\
> &#x20;           \
> 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.\
> &#x20;           \
> \*\*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.\
> &#x20;           \
> Locale resource directories are left alone: they are shared between forms, so removing one form must\
> not take another form's translations with it.

```json
{"openapi":"3.1.1","info":{"title":"Neostore internal API","version":"v1"},"tags":[{"name":"EnrolmentForms"}],"servers":[{"url":"https://app.neostore.cloud","description":"Production Server"},{"url":"https://app-qa.neostore.cloud","description":"Staging Server"}],"security":[{"admin-bearer":["tenant.configuration.enrolment:write"]},{"apiKey":[]}],"components":{"securitySchemes":{"admin-bearer":{"type":"oauth2","flows":{"implicit":{"authorizationUrl":"https://auth.neostore.cloud/authorize?audience=https://app.neostore.cloud/api/","scopes":{}}}},"apiKey":{"type":"apiKey","name":"X-API-KEY","in":"header"}},"schemas":{"ProblemDetails":{"type":"object","properties":{"type":{"type":["null","string"]},"title":{"type":["null","string"]},"status":{"type":["null","integer"],"format":"int32"},"detail":{"type":["null","string"]},"instance":{"type":["null","string"]}},"additionalProperties":{}},"HttpValidationProblemDetails":{"type":"object","allOf":[{"$ref":"#/components/schemas/ProblemDetails"}],"properties":{"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}},"additionalProperties":{}}}},"paths":{"/api/{tenantId}/admin/enrolmentForms/{name}":{"delete":{"tags":["EnrolmentForms"],"summary":"Delete an enrolment form","description":"Removes `layouts/{name}.yml`.\n            \n## This breaks live links, and the API cannot tell you which\n            \nA form is served publicly at `/{tenantId}/{name}`. That URL is what gets printed on QR codes,\nembedded in campaigns and handed to partners, and short links created by the redirect engine resolve\nto it by name at request time — from the redirect store, not from the configuration. So there is no\nway for this endpoint to enumerate what points at the form: deleting it starts returning 404 to\ntraffic that is already in the wild, and re-creating a form under the same name is the only way back.\n            \n**Callers must warn explicitly and name the form before calling this.** The one class of reference\nthat *can* be checked is other layouts using the form as their `errorLayoutName`; that is refused\nwith a conflict rather than silently breaking them.\n            \nLocale resource directories are left alone: they are shared between forms, so removing one form must\nnot take another form's translations with it.","parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}},{"name":"tenantId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Enrolment form deleted. Its public URL now returns 404."},"400":{"description":"Name is invalid.","content":{"text/plain":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ProblemDetails"},{"$ref":"#/components/schemas/HttpValidationProblemDetails"}]}},"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ProblemDetails"},{"$ref":"#/components/schemas/HttpValidationProblemDetails"}]}},"text/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ProblemDetails"},{"$ref":"#/components/schemas/HttpValidationProblemDetails"}]}}}},"404":{"description":"Enrolment form not found.","content":{"text/plain":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ProblemDetails"},{"$ref":"#/components/schemas/HttpValidationProblemDetails"}]}},"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ProblemDetails"},{"$ref":"#/components/schemas/HttpValidationProblemDetails"}]}},"text/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ProblemDetails"},{"$ref":"#/components/schemas/HttpValidationProblemDetails"}]}}}},"409":{"description":"The form is used as an error layout by another layout, or the stored file cannot be parsed.","content":{"text/plain":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ProblemDetails"},{"$ref":"#/components/schemas/HttpValidationProblemDetails"}]}},"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ProblemDetails"},{"$ref":"#/components/schemas/HttpValidationProblemDetails"}]}},"text/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ProblemDetails"},{"$ref":"#/components/schemas/HttpValidationProblemDetails"}]}}}}}}}}}
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.thewalletcrew.io/api-reference/advanced/enrolment-forms.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
