Zum Inhalt springen

My Account

Kunde

My 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.

GET

/api/{version}/customers/me

The shopper's profile — the ShopUser plus the email and primary billing address.

AuthentifizierungToken erforderlichRequires the shopper's own access token from /customer/auth/token, sent as Authorization: Bearer …. Every response is scoped to that shopper.

Antworten

curl -X GET \
  'https://<your-shop-domain>/api/2026-04-01/customers/me' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer <customer_access_token>'
Antwort200Beispielstruktur
{
  "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"
    }
  }
}
GET

/api/{version}/customers/me/orders

The shopper's own orders, newest first. Bound to ShopUserId (precise per-shopper ownership).

AuthentifizierungToken erforderlichRequires the shopper's own access token from /customer/auth/token, sent as Authorization: Bearer …. Every response is scoped to that shopper.

Query-Parameter

NameTypBeschreibung
limit
optional
integer (int32)
offset
optional
integer (int32)
curl -X GET \
  'https://<your-shop-domain>/api/2026-04-01/customers/me/orders' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer <customer_access_token>'
Antwort200Beispielstruktur
{
  "orders": [
    {
      "id": "00000000-0000-0000-0000-000000000000",
      "number": "string",
      "status": "string",
      "date": "2026-04-01T12:00:00Z",
      "total": 1,
      "line_items": 1
    }
  ]
}
GET

/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=….

AuthentifizierungToken erforderlichRequires the shopper's own access token from /customer/auth/token, sent as Authorization: Bearer …. Every response is scoped to that shopper.

Pfad-Parameter

NameTypBeschreibung
id
erforderlich
string (uuid)

Antworten

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>'
Antwort200Beispielstruktur
{
  "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"
    }
  }
}
GET

/api/{version}/customers/me/addresses

The shopper's saved addresses (their own AddressItem rows).

AuthentifizierungToken erforderlichRequires the shopper's own access token from /customer/auth/token, sent as Authorization: Bearer …. Every response is scoped to that shopper.
curl -X GET \
  'https://<your-shop-domain>/api/2026-04-01/customers/me/addresses' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer <customer_access_token>'
Antwort200Beispielstruktur
{
  "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"
    }
  ]
}
PUT

/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.

AuthentifizierungToken erforderlichRequires the shopper's own access token from /customer/auth/token, sent as Authorization: Bearer …. Every response is scoped to that shopper.

Pfad-Parameter

NameTypBeschreibung
id
erforderlich
string (uuid)

Request-Body

application/json, text/json, application/*+json · optional

UpdateAddressRequest

Body for PUT customers/me/addresses/{id} — the editable contact fields of a saved address.

  • first_namestringnullable
  • last_namestringnullable
  • companystringnullable
  • departmentstringnullable
  • streetstringnullable
  • zip_codestringnullable
  • locationstringnullable
  • country_idstring (uuid)nullable
  • phone_numberstringnullable
  • mobile_numberstringnullable
  • fax_numberstringnullable
  • emailstringnullable
  • websitestringnullable
  • title_idstring (uuid)nullable

Antworten

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"
}'
Antwort200Beispielstruktur
{
  "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.

  • errorsstringnullable

    Human-readable description of what went wrong, e.g. Not Found, Invalid page_info.

  • codestringnullable

    Machine-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 of PUT customers/me/addresses/{id}.

  • first_namestringnullable

    Given name. Null when the tenant stores only a company on this address.

  • last_namestringnullable
  • companystringnullable
  • departmentstringnullable
  • streetstringnullable

    Street and house number as one line — the shop does not model them separately here.

  • zip_codestringnullable

    Postal code as free text, so it survives non-numeric formats.

  • locationstringnullable

    City / town.

  • country_idstring (uuid)nullable

    Id 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_numberstringnullable
  • mobile_numberstringnullable
  • fax_numberstringnullable
  • emailstringnullable

    Contact email on the address itself — unrelated to the account's login email.

  • websitestringnullable
  • title_idstring (uuid)nullable

    Id 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.

  • addressesCustomerAddressDto[]nullable

    The shopper's saved addresses. Always present; an empty array when they have none. The profile's default_address is the billing address and is not necessarily one of these rows.

CustomerAddressResponse

Envelope returned by PUT customers/me/addresses/{id} — the address as saved.

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.

  • numberstringnullable

    The 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).

  • statusstringnullable

    The 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 ShopUserId the access token was issued for.

  • emailstringnullable

    The 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_activeboolean

    Whether the account may sign in and check out. A disabled account still reads its own profile.

  • is_email_confirmedboolean

    Whether the email has been confirmed. Only blocks token issuance when the shop is configured to require confirmation.

  • typestringnullable

    The account type as its enum name: Customer, Corporate or Reseller. Drives tenant-side pricing; new members may be added in a later API version.

  • default_addressCustomerAddressDto

CustomerProfileResponse

Envelope returned by GET customers/me.

StorefrontCheckoutAddressDto

  • idstring (uuid)nullable
  • first_namestringnullable
  • last_namestringnullable
  • companystringnullable
  • departmentstringnullable
  • vat_numberstringnullable

    Company VAT / UID number, when the tenant collects one at checkout.

  • streetstringnullable
  • po_boxstringnullable
  • zip_codestringnullable
  • locationstringnullable
  • emailstringnullable
  • phone_numberstringnullable
  • mobile_numberstringnullable
  • country_codestringnullable
  • country_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)
  • numberstringnullable

    The shop's own order number. Null only for an order placed before one was assigned.

  • statusstringnullable

    Fulfilment status, e.g. Open. Same vocabulary as GET /customers/me/orders.

  • datestring (date-time)
  • currencystringnullable
  • price_includes_taxboolean

    When true, the line and total figures below are tax-inclusive.

  • line_itemsStorefrontOrderLineDto[]nullable
  • subtotalnumber (double)

    Sum of the lines before the order-level discount.

  • discountnumber (double)
  • discount_codestringnullable

    The coupon applied at checkout, or null.

  • shipping_amountnumber (double)
  • shipping_method_namestringnullable
  • totalnumber (double)

    Payable total, rounded the way the shop rounds this currency.

  • commentsstringnullable
  • payment_typestringnullable

    The payment method the buyer chose, e.g. Invoice. Null when none was recorded.

  • tracking_urlstringnullable

    Carrier tracking URL, once the shop has entered one. Null until the order ships — poll this read, there is no webhook for it.

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)nullable

    The variant (article) ordered — the id POST /cart/items takes, for a re-order.

  • product_idstring (uuid)nullable

    The product the variant belongs to.

  • titlestringnullable
  • skustringnullable
  • descriptionstringnullable
  • quantitynumber (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_tax basis.

StorefrontOrderResponse

Envelope returned by GET /orders/{id} and GET /customers/me/orders/{id} — the same order shape whichever door the caller came in through.

UpdateAddressRequest

Body for PUT customers/me/addresses/{id} — the editable contact fields of a saved address.

  • first_namestringnullable
  • last_namestringnullable
  • companystringnullable
  • departmentstringnullable
  • streetstringnullable
  • zip_codestringnullable
  • locationstringnullable
  • country_idstring (uuid)nullable
  • phone_numberstringnullable
  • mobile_numberstringnullable
  • fax_numberstringnullable
  • emailstringnullable
  • websitestringnullable
  • title_idstring (uuid)nullable