API-Referenz-Navigation
My Account
KundeMy Account groups 5 operations on the customer tier.
Requires the shopper's own access token from /customer/auth/token, sent as Authorization: Bearer …. Every response is scoped to that shopper.
/api/{version}/customers/me
The shopper's profile — the ShopUser plus the email and primary billing address.
/customer/auth/token, sent as Authorization: Bearer …. Every response is scoped to that shopper.Antworten
- 200CustomerProfileResponseOK
- 403ApiErrorResponseForbidden
curl -X GET \
'https://<your-shop-domain>/api/2026-04-01/customers/me' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer <customer_access_token>'{
"customer": {
"id": "00000000-0000-0000-0000-000000000000",
"email": "string",
"is_active": true,
"is_email_confirmed": true,
"type": "string",
"default_address": {
"id": "00000000-0000-0000-0000-000000000000",
"first_name": "string",
"last_name": "string",
"company": "string",
"department": "string",
"street": "string",
"zip_code": "string",
"location": "string",
"country_id": "00000000-0000-0000-0000-000000000000",
"phone_number": "string",
"mobile_number": "string",
"fax_number": "string",
"email": "string",
"website": "string",
"title_id": "00000000-0000-0000-0000-000000000000"
}
}
}/api/{version}/customers/me/orders
The shopper's own orders, newest first. Bound to ShopUserId (precise per-shopper ownership).
/customer/auth/token, sent as Authorization: Bearer …. Every response is scoped to that shopper.Query-Parameter
| Name | Typ | Beschreibung |
|---|---|---|
| limit optional | integer (int32) | |
| offset optional | integer (int32) |
Antworten
- 200CustomerOrderListResponseOK
- 403ApiErrorResponseForbidden
curl -X GET \
'https://<your-shop-domain>/api/2026-04-01/customers/me/orders' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer <customer_access_token>'{
"orders": [
{
"id": "00000000-0000-0000-0000-000000000000",
"number": "string",
"status": "string",
"date": "2026-04-01T12:00:00Z",
"total": 1,
"line_items": 1
}
]
}/api/{version}/customers/me/orders/{id}
One of the shopper's own orders, in full — the lines, addresses, totals and tracking link that the summary list above deliberately leaves out. Ownership is the ShopUserId match, so no hash is needed; an order that is not the caller's is a 404, never another shopper's receipt. The payload is the same order shape a guest gets from GET /orders/{id}?hash=….
/customer/auth/token, sent as Authorization: Bearer …. Every response is scoped to that shopper.Pfad-Parameter
| Name | Typ | Beschreibung |
|---|---|---|
| id erforderlich | string (uuid) |
Antworten
- 200StorefrontOrderResponseOK
- 403ApiErrorResponseForbidden
- 404ApiErrorResponseNot Found
curl -X GET \
'https://<your-shop-domain>/api/2026-04-01/customers/me/orders/<id>' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer <customer_access_token>'{
"order": {
"id": "00000000-0000-0000-0000-000000000000",
"number": "string",
"status": "string",
"date": "2026-04-01T12:00:00Z",
"currency": "string",
"price_includes_tax": true,
"line_items": [
{
"id": "00000000-0000-0000-0000-000000000000",
"variant_id": "00000000-0000-0000-0000-000000000000",
"product_id": "00000000-0000-0000-0000-000000000000",
"title": "string",
"sku": "string",
"description": "string",
"quantity": 1,
"unit_price": 1,
"unit_price_with_tax": 1,
"line_total": 1
}
],
"subtotal": 1,
"discount": 1,
"discount_code": "string",
"shipping_amount": 1,
"shipping_method_name": "string",
"total": 1,
"comments": "string",
"payment_type": "string",
"tracking_url": "string",
"shipping_address": {
"id": "00000000-0000-0000-0000-000000000000",
"first_name": "string",
"last_name": "string",
"company": "string",
"department": "string",
"vat_number": "string",
"street": "string",
"po_box": "string",
"zip_code": "string",
"location": "string",
"email": "string",
"phone_number": "string",
"mobile_number": "string",
"country_code": "string",
"country_name": "string"
},
"billing_address": {
"id": "00000000-0000-0000-0000-000000000000",
"first_name": "string",
"last_name": "string",
"company": "string",
"department": "string",
"vat_number": "string",
"street": "string",
"po_box": "string",
"zip_code": "string",
"location": "string",
"email": "string",
"phone_number": "string",
"mobile_number": "string",
"country_code": "string",
"country_name": "string"
}
}
}/api/{version}/customers/me/addresses
The shopper's saved addresses (their own AddressItem rows).
/customer/auth/token, sent as Authorization: Bearer …. Every response is scoped to that shopper.Antworten
- 200CustomerAddressListResponseOK
- 403ApiErrorResponseForbidden
curl -X GET \
'https://<your-shop-domain>/api/2026-04-01/customers/me/addresses' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer <customer_access_token>'{
"addresses": [
{
"id": "00000000-0000-0000-0000-000000000000",
"first_name": "string",
"last_name": "string",
"company": "string",
"department": "string",
"street": "string",
"zip_code": "string",
"location": "string",
"country_id": "00000000-0000-0000-0000-000000000000",
"phone_number": "string",
"mobile_number": "string",
"fax_number": "string",
"email": "string",
"website": "string",
"title_id": "00000000-0000-0000-0000-000000000000"
}
]
}/api/{version}/customers/me/addresses/{id}
Update one of the shopper's own saved addresses. Ownership is enforced by the ShopUserId match — an address that is not the caller's (or does not exist) is a 404, never another shopper's row.
/customer/auth/token, sent as Authorization: Bearer …. Every response is scoped to that shopper.Pfad-Parameter
| Name | Typ | Beschreibung |
|---|---|---|
| id erforderlich | string (uuid) |
Request-Body
application/json, text/json, application/*+json · optional
UpdateAddressRequestBody for PUT customers/me/addresses/{id} — the editable contact fields of a saved address.
first_namestringnullablelast_namestringnullablecompanystringnullabledepartmentstringnullablestreetstringnullablezip_codestringnullablelocationstringnullablecountry_idstring (uuid)nullablephone_numberstringnullablemobile_numberstringnullablefax_numberstringnullableemailstringnullablewebsitestringnullabletitle_idstring (uuid)nullable
Antworten
- 200CustomerAddressResponseOK
- 403ApiErrorResponseForbidden
- 404ApiErrorResponseNot Found
- 422ApiErrorResponseUnprocessable Content
curl -X PUT \
'https://<your-shop-domain>/api/2026-04-01/customers/me/addresses/<id>' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer <customer_access_token>' \
-H 'Content-Type: application/json' \
-d '{
"first_name": "string",
"last_name": "string",
"company": "string",
"department": "string",
"street": "string",
"zip_code": "string",
"location": "string",
"country_id": "00000000-0000-0000-0000-000000000000",
"phone_number": "string",
"mobile_number": "string",
"fax_number": "string",
"email": "string",
"website": "string",
"title_id": "00000000-0000-0000-0000-000000000000"
}'{
"address": {
"id": "00000000-0000-0000-0000-000000000000",
"first_name": "string",
"last_name": "string",
"company": "string",
"department": "string",
"street": "string",
"zip_code": "string",
"location": "string",
"country_id": "00000000-0000-0000-0000-000000000000",
"phone_number": "string",
"mobile_number": "string",
"fax_number": "string",
"email": "string",
"website": "string",
"title_id": "00000000-0000-0000-0000-000000000000"
}
}Schemas
ApiErrorResponse
The error envelope every non-2xx response from this API uses. Documentation shape: actions build it as an anonymous object, so this type exists to give the OpenAPI document a schema to point at.
errorsstringnullableHuman-readable description of what went wrong, e.g.
Not Found,Invalid page_info.codestringnullableMachine-readable error code. Only a few endpoints (checkout) emit one; omitted everywhere else.
CustomerAddressDto
A saved address of the shopper. The same shape is returned by GET customers/me (as
default_address), GET customers/me/addresses and PUT customers/me/addresses/{id},
and mirrors the fields accepted by Cloudwawi.Shop.Api.V2026_04_01.Customer.UpdateAddressRequest — every writable field comes
back on the read.
idstring (uuid)The address id. Feeds the
{id}segment ofPUT customers/me/addresses/{id}.first_namestringnullableGiven name. Null when the tenant stores only a company on this address.
last_namestringnullablecompanystringnullabledepartmentstringnullablestreetstringnullableStreet and house number as one line — the shop does not model them separately here.
zip_codestringnullablePostal code as free text, so it survives non-numeric formats.
locationstringnullableCity / town.
country_idstring (uuid)nullableId of the tenant's country row, not an ISO code. Only meaningful against the same tenant, and null on an address that was saved without one.
phone_numberstringnullablemobile_numberstringnullablefax_numberstringnullableemailstringnullableContact email on the address itself — unrelated to the account's login email.
websitestringnullabletitle_idstring (uuid)nullableId of the tenant's salutation/title row (Mr, Mrs, …), or null when unset.
CustomerAddressListResponse
Envelope returned by GET customers/me/addresses. Unpaged: every address owned by the shopper is
returned in one response, in no guaranteed order.
The shopper's saved addresses. Always present; an empty array when they have none. The profile's
default_addressis the billing address and is not necessarily one of these rows.
CustomerAddressResponse
Envelope returned by PUT customers/me/addresses/{id} — the address as saved.
addressCustomerAddressDto
CustomerOrderListResponse
Envelope returned by GET customers/me/orders. Offset-paged via limit (1–250, default 50)
and offset — unlike the admin tier, which is cursor-paged. There is no total count and no
Link header: a page shorter than limit is the last one.
The shopper's own orders, newest first. Always present; an empty array past the last page or when the shopper has never ordered.
CustomerOrderSummaryDto
One of the shopper's orders as it appears in GET customers/me/orders. A summary only: this API
version has no single-order read and no line-item detail, so the individual products are represented
by their count.
idstring (uuid)The order id.
numberstringnullableThe human-facing order number the tenant's numbering scheme assigned. Null on an order that was never numbered (still a draft on the tenant side).
statusstringnullableThe order status as its enum name (for example
Open,Delivered,Cancelled). Members may be added in a later API version — treat an unknown value as "unrecognised", not an error.datestring (date-time)The order date, with offset. The list is sorted by this field, newest first.
totalnumber (double)Gross order total, tax included, in the order's own currency. The currency itself is not part of this summary in this API version.
line_itemsinteger (int32)How many line items the order has. Zero is possible on a tenant-created empty order.
CustomerProfileDto
The authenticated shopper's own profile, as returned by GET customers/me.
idstring (uuid)The shopper id — the
ShopUserIdthe access token was issued for.emailstringnullableThe login email, read from the linked application user. Null when the shopper row has no linked login (a guest-created account that was never given credentials).
is_activebooleanWhether the account may sign in and check out. A disabled account still reads its own profile.
is_email_confirmedbooleanWhether the email has been confirmed. Only blocks token issuance when the shop is configured to require confirmation.
typestringnullableThe account type as its enum name:
Customer,CorporateorReseller. Drives tenant-side pricing; new members may be added in a later API version.default_addressCustomerAddressDto
StorefrontCheckoutAddressDto
idstring (uuid)nullablefirst_namestringnullablelast_namestringnullablecompanystringnullabledepartmentstringnullablevat_numberstringnullableCompany VAT / UID number, when the tenant collects one at checkout.
streetstringnullablepo_boxstringnullablezip_codestringnullablelocationstringnullableemailstringnullablephone_numberstringnullablemobile_numberstringnullablecountry_codestringnullablecountry_namestringnullable
StorefrontOrderDto
Versioned (2026-04-01) storefront representation of a placed order — the receipt.
Everything here is the order as charged: line prices are the ones the buyer paid, not the
catalog's current ones, so a later price change never rewrites a past receipt. Money is decimal in
currency; price_includes_tax says whether the figures are gross.
idstring (uuid)numberstringnullableThe shop's own order number. Null only for an order placed before one was assigned.
statusstringnullableFulfilment status, e.g.
Open. Same vocabulary asGET /customers/me/orders.datestring (date-time)currencystringnullableprice_includes_taxbooleanWhen true, the line and total figures below are tax-inclusive.
subtotalnumber (double)Sum of the lines before the order-level discount.
discountnumber (double)discount_codestringnullableThe coupon applied at checkout, or
null.shipping_amountnumber (double)shipping_method_namestringnullabletotalnumber (double)Payable total, rounded the way the shop rounds this currency.
commentsstringnullablepayment_typestringnullableThe payment method the buyer chose, e.g.
Invoice. Null when none was recorded.tracking_urlstringnullableCarrier tracking URL, once the shop has entered one. Null until the order ships — poll this read, there is no webhook for it.
shipping_addressStorefrontCheckoutAddressDtobilling_addressStorefrontCheckoutAddressDto
StorefrontOrderLineDto
One line of a placed order. id addresses the line itself; product_id and
variant_id point back into the catalog, and either may be null for a line whose product has
since been deleted — a receipt outlives the catalog entry it was cut from.
idstring (uuid)variant_idstring (uuid)nullableThe variant (article) ordered — the id
POST /cart/itemstakes, for a re-order.product_idstring (uuid)nullableThe product the variant belongs to.
titlestringnullableskustringnullabledescriptionstringnullablequantitynumber (double)unit_pricenumber (double)Net unit price as charged.
unit_price_with_taxnumber (double)Gross unit price as charged.
line_totalnumber (double)Line total, following the order's
price_includes_taxbasis.
StorefrontOrderResponse
Envelope returned by GET /orders/{id} and GET /customers/me/orders/{id} — the same
order shape whichever door the caller came in through.
orderStorefrontOrderDto
UpdateAddressRequest
Body for PUT customers/me/addresses/{id} — the editable contact fields of a saved address.
first_namestringnullablelast_namestringnullablecompanystringnullabledepartmentstringnullablestreetstringnullablezip_codestringnullablelocationstringnullablecountry_idstring (uuid)nullablephone_numberstringnullablemobile_numberstringnullablefax_numberstringnullableemailstringnullablewebsitestringnullabletitle_idstring (uuid)nullable
