Skip to content

Customers

Customer Fields

FieldTypeDescription
idUUIDUnique identifier
emailstringEmail address (unique)
first_name / last_namestringDisplay name
activeboolWhether the account is active
default_billing_address_idUUID?Default billing address
default_shipping_address_idUUID?Default shipping address
custom_fieldsobjectFree-form extra data

password_hash is never returned by the API.

Addresses

Each customer can have multiple saved addresses. An address contains:

FieldDescription
first_name / last_nameName on the address
companyOptional company name
streetStreet and house number
cityCity
zipPostal code
country_codeISO 3166-1 alpha-2 (e.g. DE, US)
phoneOptional phone number

Registration & Login

Customers register and log in via the Store API:

bash
# Register
curl -X POST http://localhost:8080/api/v1/store/auth/register \
  -H 'Content-Type: application/json' \
  -d '{"email": "jane@example.com", "password": "secret", "first_name": "Jane", "last_name": "Doe"}'

# Login
curl -X POST http://localhost:8080/api/v1/store/auth/login \
  -H 'Content-Type: application/json' \
  -d '{"email": "jane@example.com", "password": "secret"}'

The login response contains access_token and refresh_token, identical in structure to admin JWTs.

Guest Orders

Customers do not need an account to place an order. Guest orders have no customer_id and billing/shipping addresses are stored directly on the order.

Admin Management

Admins can list, view, update, and delete customers via the Admin API or the admin panel. Customer passwords are never exposed — a password reset flow should be implemented via a plugin or custom endpoint.

RBAC

Customers have no access to the Admin API. They can only access their own account data, order history, and cart via the Store API using their JWT.

Released under the MIT License.