> 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/bloomreach.md).

# Bloomreach

## Get the Bloomreach configuration

> Returns the non-secret Bloomreach configuration for this tenant and whether an API key secret is currently stored.\
> Returns 404 when Bloomreach is not configured.\
> The API key secret itself is never returned.

```json
{"openapi":"3.1.1","info":{"title":"Neostore internal API","version":"v1"},"tags":[{"name":"Bloomreach"}],"servers":[{"url":"https://app.neostore.cloud","description":"Production Server"},{"url":"https://app-qa.neostore.cloud","description":"Staging Server"}],"security":[{"admin-bearer":["tenant.bloomreach.settings: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":{"BloomreachConfigurationResponse":{"required":["apiKeyId","baseUrl","hasApiKeySecret","projectToken"],"type":"object","properties":{"projectToken":{"minLength":1,"type":"string","description":"Bloomreach project token."},"baseUrl":{"type":"string","description":"Bloomreach API base URL.","format":"uri"},"apiKeyId":{"minLength":1,"type":"string","description":"API key ID used for Basic authentication."},"hasApiKeySecret":{"type":"boolean","description":"Whether an API key secret is currently stored in the secret repository."},"cache":{"description":"Cache duration settings.","$ref":"#/components/schemas/BloomreachCacheResponse"}},"additionalProperties":false,"description":"Response body for Bloomreach configuration."},"BloomreachCacheResponse":{"type":"object","properties":{"customer":{"type":["null","string"],"description":"Cache duration for customer lookups.","format":"date-span"}},"additionalProperties":false,"description":"Cache section of the Bloomreach GET response body."},"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/extensions/bloomreach":{"get":{"tags":["Bloomreach"],"summary":"Get the Bloomreach configuration","description":"Returns the non-secret Bloomreach configuration for this tenant and whether an API key secret is currently stored.\nReturns 404 when Bloomreach is not configured.\nThe API key secret itself is never returned.","parameters":[{"name":"tenantId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Configuration returned.","content":{"text/plain":{"schema":{"description":"Response body for Bloomreach configuration.","$ref":"#/components/schemas/BloomreachConfigurationResponse"}},"application/json":{"schema":{"description":"Response body for Bloomreach configuration.","$ref":"#/components/schemas/BloomreachConfigurationResponse"}},"text/json":{"schema":{"description":"Response body for Bloomreach configuration.","$ref":"#/components/schemas/BloomreachConfigurationResponse"}}}},"401":{"description":"Caller not authenticated.","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"}]}}}},"403":{"description":"Caller lacks required scope.","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":"Bloomreach is not configured for this tenant.","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"}]}}}}}}}}}
```

## Set Bloomreach configuration

> Validates credentials against the Bloomreach API, then saves the configuration to \`server/bloomreach.yml\`.\
> Omit \`apiKeySecret\` to update settings without rotating the secret (the existing stored secret is used for the credential check).

```json
{"openapi":"3.1.1","info":{"title":"Neostore internal API","version":"v1"},"tags":[{"name":"Bloomreach"}],"servers":[{"url":"https://app.neostore.cloud","description":"Production Server"},{"url":"https://app-qa.neostore.cloud","description":"Staging Server"}],"security":[{"admin-bearer":["tenant.bloomreach.settings: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":{"SetBloomreachRequest":{"required":["apiKeyId","baseUrl","projectToken"],"type":"object","properties":{"projectToken":{"minLength":1,"type":"string","description":"Bloomreach project token."},"baseUrl":{"type":"string","description":"Bloomreach API base URL.","format":"uri"},"apiKeyId":{"minLength":1,"type":"string","description":"API key ID used for Basic authentication."},"apiKeySecret":{"type":["null","string"],"description":"API key secret used for Basic authentication.\nStored in the secret repository under `BLOOMREACH-APIKEYSECRET`.\nWhen omitted, the existing secret is preserved."},"cache":{"description":"Cache duration settings.","$ref":"#/components/schemas/SetBloomreachCacheRequest"}},"additionalProperties":false,"description":"Request body for setting Bloomreach configuration."},"SetBloomreachCacheRequest":{"type":"object","properties":{"customer":{"type":["null","string"],"description":"Cache duration for customer lookups.","format":"date-span"}},"additionalProperties":false,"description":"Cache section of the Bloomreach PUT request body."},"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/extensions/bloomreach":{"put":{"tags":["Bloomreach"],"summary":"Set Bloomreach configuration","description":"Validates credentials against the Bloomreach API, then saves the configuration to `server/bloomreach.yml`.\nOmit `apiKeySecret` to update settings without rotating the secret (the existing stored secret is used for the credential check).","parameters":[{"name":"tenantId","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"description":"Request body for setting Bloomreach configuration.","$ref":"#/components/schemas/SetBloomreachRequest"}},"text/json":{"schema":{"description":"Request body for setting Bloomreach configuration.","$ref":"#/components/schemas/SetBloomreachRequest"}},"application/*+json":{"schema":{"description":"Request body for setting Bloomreach configuration.","$ref":"#/components/schemas/SetBloomreachRequest"}}},"required":true},"responses":{"204":{"description":"Configuration saved."},"400":{"description":"Request body is invalid or the credentials failed to validate against the Bloomreach API.","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"}]}}}},"401":{"description":"Caller not authenticated.","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"}]}}}},"403":{"description":"Caller lacks required scope.","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/bloomreach.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.
