> 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-locales.md).

# Enrolment Locales

## List enrolment locale resource directories

> Returns every \`locales/\`-rooted resource directory referenced by an enrolment form's\
> \`internationalization.resources\`, together with the forms that reference it and the cultures it\
> already has a file for.

```json
{"openapi":"3.1.1","info":{"title":"Neostore internal API","version":"v1"},"tags":[{"name":"EnrolmentLocales"}],"servers":[{"url":"https://app.neostore.cloud","description":"Production Server"},{"url":"https://app-qa.neostore.cloud","description":"Staging Server"}],"security":[{"admin-bearer":["tenant.configuration.enrolmentFormLocale: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":{"EnrolmentLocaleResourceListItem":{"required":["cultures","formNames","resourceDir"],"type":"object","properties":{"resourceDir":{"type":"string","description":"Directory name under `locales/`, e.g. `fields` for `locales/fields/`."},"formNames":{"type":"array","items":{"type":"string"},"description":"Enrolment forms whose `internationalization.resources` reference this directory."},"cultures":{"type":"array","items":{"type":"string"},"description":"Cultures that have a stored file directly inside the directory."}},"additionalProperties":false,"description":"Resource directory returned by the list endpoint."}}},"paths":{"/api/{tenantId}/admin/enrolmentForms/locales":{"get":{"tags":["EnrolmentLocales"],"summary":"List enrolment locale resource directories","description":"Returns every `locales/`-rooted resource directory referenced by an enrolment form's\n`internationalization.resources`, together with the forms that reference it and the cultures it\nalready has a file for.","parameters":[{"name":"tenantId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Resource directories returned.","content":{"text/plain":{"schema":{"type":"array","items":{"description":"Resource directory returned by the list endpoint.","$ref":"#/components/schemas/EnrolmentLocaleResourceListItem"}}},"application/json":{"schema":{"type":"array","items":{"description":"Resource directory returned by the list endpoint.","$ref":"#/components/schemas/EnrolmentLocaleResourceListItem"}}},"text/json":{"schema":{"type":"array","items":{"description":"Resource directory returned by the list endpoint.","$ref":"#/components/schemas/EnrolmentLocaleResourceListItem"}}}}}}}}}}
```

## GET /api/{tenantId}/admin/enrolmentForms/locales/{culture}/{resourceDir}

> Get an enrolment locale resource file

```json
{"openapi":"3.1.1","info":{"title":"Neostore internal API","version":"v1"},"tags":[{"name":"EnrolmentLocales"}],"servers":[{"url":"https://app.neostore.cloud","description":"Production Server"},{"url":"https://app-qa.neostore.cloud","description":"Staging Server"}],"security":[{"admin-bearer":["tenant.configuration.enrolmentFormLocale: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":{"EnrolmentLocaleResourceCulture":{"required":["culture","formNames","resourceDir","values"],"type":"object","properties":{"resourceDir":{"type":"string","description":"Directory name, as in Neo.Web.Api.Admin.Controllers.Enrolment.EnrolmentLocalesController.EnrolmentLocaleResourceListItem.ResourceDir."},"culture":{"type":"string","description":"Culture the content is stored under, e.g. `en`."},"formNames":{"type":"array","items":{"type":"string"},"description":"Enrolment forms whose `internationalization.resources` reference this directory."},"values":{"description":"The stored tree: nested objects of string leaves."}},"additionalProperties":false,"description":"One culture's stored content, returned by the get and built by the save endpoint."},"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/locales/{culture}/{resourceDir}":{"get":{"tags":["EnrolmentLocales"],"summary":"Get an enrolment locale resource file","parameters":[{"name":"culture","in":"path","required":true,"schema":{"type":"string"}},{"name":"resourceDir","in":"path","required":true,"schema":{"type":"string"}},{"name":"tenantId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Resource file returned.","content":{"text/plain":{"schema":{"description":"One culture's stored content, returned by the get and built by the save endpoint.","$ref":"#/components/schemas/EnrolmentLocaleResourceCulture"}},"application/json":{"schema":{"description":"One culture's stored content, returned by the get and built by the save endpoint.","$ref":"#/components/schemas/EnrolmentLocaleResourceCulture"}},"text/json":{"schema":{"description":"One culture's stored content, returned by the get and built by the save endpoint.","$ref":"#/components/schemas/EnrolmentLocaleResourceCulture"}}}},"400":{"description":"Resource or culture 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":"No file stored for this resource and culture.","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 locale resource file

> Merges the request into the culture's stored tree: only the keys present in the request are touched,\
> and every key already stored elsewhere in the tree is preserved. A key set to \`null\`, or to a\
> blank string, is removed — M:Neo.Web.Api.Admin.Controllers.Wallet.ILocaleResourceRepository.Write(System.String,System.String,System.String,System.Collections.Generic.IReadOnlyList{System.ValueTuple{System.String\[],System.String}},System.Threading.CancellationToken) applies that rule to every\
> locale file, not just this one. An empty object leaves the tree exactly as it is stored.

```json
{"openapi":"3.1.1","info":{"title":"Neostore internal API","version":"v1"},"tags":[{"name":"EnrolmentLocales"}],"servers":[{"url":"https://app.neostore.cloud","description":"Production Server"},{"url":"https://app-qa.neostore.cloud","description":"Staging Server"}],"security":[{"admin-bearer":["tenant.configuration.enrolmentFormLocale: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/locales/{culture}/{resourceDir}":{"put":{"tags":["EnrolmentLocales"],"summary":"Save an enrolment locale resource file","description":"Merges the request into the culture's stored tree: only the keys present in the request are touched,\nand every key already stored elsewhere in the tree is preserved. A key set to `null`, or to a\nblank string, is removed — M:Neo.Web.Api.Admin.Controllers.Wallet.ILocaleResourceRepository.Write(System.String,System.String,System.String,System.Collections.Generic.IReadOnlyList{System.ValueTuple{System.String[],System.String}},System.Threading.CancellationToken) applies that rule to every\nlocale file, not just this one. An empty object leaves the tree exactly as it is stored.","parameters":[{"name":"culture","in":"path","required":true,"schema":{"type":"string"}},{"name":"resourceDir","in":"path","required":true,"schema":{"type":"string"}},{"name":"tenantId","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{}},"text/json":{"schema":{}},"application/*+json":{"schema":{}}}},"responses":{"204":{"description":"Resource file saved."},"400":{"description":"Resource, culture or the request body 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":"The stored file cannot be parsed, so the request cannot be merged into it.","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-locales.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.
