This documentation is currently under development. Certain sections are not yet complete and will be added shortly.
For the complete documentation index, see llms.txt. This page is also available as Markdown.

Customer

Returns the account of the holder identified by the customer token.

get
/api/{tenantId}/customer

The account holds the data carried by the customer token, completed with the holder's stored data when the tenant identifies holders. The response always carries an authenticationToken the pages can reuse.

Authorizations
AuthorizationstringRequired

a JWT token describing the customer

Path parameters
tenantIdstringRequired
Responses
200

Account returned.

A holder's account as the enrolment pages exchange it: a flat JSON object whose properties are the tenant's enrolment form fields, plus the well-known keys below.

Other propertiesanyOptional
get/api/{tenantId}/customer
GET /api/{tenantId}/customer HTTP/1.1
Host: app.neostore.cloud
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
  "ANY_ADDITIONAL_PROPERTY": "anything"
}

Submits an enrolment form: validates the holder's data, identifies the holder, and, when a flow is named, creates or updates the holder in the customer directory.

post
/api/{tenantId}/customer

The data is first validated against the tenant's rules. The holder is then identified by caller: A back-office user or API key with the tenant.customer:write scope (in-store enrolment): the account is completed with the holder's stored data. Without flow, the call returns 202 with userExists and the completed account under challenge.account. With flow, setting neo.createNew to true creates a new holder even when one already matches.A holder with a customer token: the token must identify the holder (401 otherwise).Any other caller: depending on the tenant's settings, the holder may have to confirm their identity first; the call then returns 202 and a verification message is sent to the holder. A 202 body is { "userExists": true|false|null, "challenge": ... }; for an email verification, challenge is { "email": ... }, and a link to continue is mailed to the holder.

Path parameters
tenantIdstringRequired
Query parameters
flowstringOptional

Name of one of the tenant's customer registration flows. Omitted, the data is only validated and completed, nothing is saved. Set, the flow creates or updates the holder (and typically issues the pass), and the response carries neo.redirect = complete.

Body

A holder's account as the enrolment pages exchange it: a flat JSON object whose properties are the tenant's enrolment form fields, plus the well-known keys below.

Other propertiesanyOptional
Responses
200

Account validated, and created or updated when a flow was named.

A holder's account as the enrolment pages exchange it: a flat JSON object whose properties are the tenant's enrolment form fields, plus the well-known keys below.

Other propertiesanyOptional
post/api/{tenantId}/customer
POST /api/{tenantId}/customer HTTP/1.1
Host: app.neostore.cloud
Content-Type: application/json
Accept: */*
Content-Length: 38

{
  "ANY_ADDITIONAL_PROPERTY": "anything"
}
{
  "ANY_ADDITIONAL_PROPERTY": "anything"
}

Exchanges a proof of identity from a sign-in provider for a customer token valid 24 hours.

post
/api/{tenantId}/customer/authenticate

Send the returned token on the customer endpoints as Authorization: neo-customer <token>.

Path parameters
tenantIdstringRequired
Query parameters
providerstringOptional

Sign-in provider: otp, hmac_email, apple, google, facebook, line, actito, livestore, secutix.movementId. Only the providers enabled for the tenant are available.

Body
anyOptional
Responses
200

Token issued.

stringOptional
post/api/{tenantId}/customer/authenticate
POST /api/{tenantId}/customer/authenticate HTTP/1.1
Host: app.neostore.cloud
Content-Type: application/json
Accept: */*
text

Last updated