E-commerce API

Launch, sell, and track orders effortlessly

Base URL: https://api.wemasy.nl/api
ⓘ The token stays in this browser tab only (sessionStorage) and is sent to the WEMASY API only. Don't use production tokens on shared computers.

AttributesAll

Get all attributes with pagination and search

POST /services/webshop/v1/attributes/all Auth

AttributesCreate

Create a new attribute with optional terms

POST /services/webshop/v1/attributes/create Auth

AttributesDelete

Archive (soft delete) single or multiple attributes by setting archived = 1 Handles both single delete and bulk delete

POST /services/webshop/v1/attributes/delete Auth

AttributesDropdown

Get attributes formatted for dropdown/select components Includes terms for each attribute

POST /services/webshop/v1/attributes/dropdown Auth

AttributesGet

Get a single attribute by ID with its terms

POST /services/webshop/v1/attributes/get Auth

AttributesUpdate

Update an existing attribute and its terms

POST /services/webshop/v1/attributes/update Auth

Booking plans

Public pricing plans

POST /services/webshop/v1/public/booking-plans/get Public

Which Services appear on the Membership table: - Block selected product_ids → those Services (order preserved) - No selection → all active recurring Services except bare add-ons The Service toggle `show_in_pricing_table` does NOT gate visibility. It only unlocks marketing on the card (badge, highlight, bullets, compare). Checkout: one Service = one plan, so the plan IS the checkout product.

BookingResourceDropdown

POST /services/webshop/v1/public/booking-resources/dropdown Public

BookingsCalendar

POST /services/webshop/v1/customer/bookings/calendar Auth

BookingsCancel

POST /services/webshop/v1/customer/bookings/cancel Auth

BookingsMove

POST /services/webshop/v1/customer/bookings/move Auth

Categories

List Categories

POST /services/webshop/v1/categories/all Auth

Get Category

POST /services/webshop/v1/categories/get Auth

Create Category

POST /services/webshop/v1/categories/create Auth

Update Category

POST /services/webshop/v1/categories/update Auth

Delete Category

POST /services/webshop/v1/categories/delete Auth

Export Categories

POST /services/webshop/v1/categories/export Auth

Community - Visitor

My Community Roles

POST /services/webshop/v1/customer/community/roles Auth

The signed-in (verified) visitor's roles on this site: resident always, plus what the owner approved or gave.

Ask For A Community Role

POST /services/webshop/v1/customer/community/roles/request Auth

A verified visitor asks to be a business owner (optionally of one listing) or an organisation on this site. It waits for the owner; nothing is mailed from this.

CreditsGive

POST /services/webshop/v1/customer/credits/give Auth

CreditsWallet

POST /services/webshop/v1/customer/credits/wallet Auth

Customer Auth - Public

Register customer account

POST /services/webshop/v1/customer/auth/register Public

Creates a new customer account under the given project and returns a sanctum bearer token — the customer is logged in immediately without waiting on email verification. A verification email is sent, and any past guest orders with the same email are linked to the new account in the background.

Log in customer

POST /services/webshop/v1/customer/auth/login Public

Authenticates a customer and returns a sanctum bearer token to use on subsequent requests. Accounts with an unverified email can still log in.

Request password reset

POST /services/webshop/v1/customer/auth/password/forgot Public

Emails a password reset link to the customer. Responds with a generic success message whether or not the email matches an existing account, so the response cannot be used to probe which emails are registered. The link expires after 60 minutes.

Reset customer password

POST /services/webshop/v1/customer/auth/password/reset Public

Sets a new password using a token delivered by email. On success the email is also marked verified, since completing the reset flow proves email ownership.

Accept invitation

POST /services/webshop/v1/customer/auth/invitation/accept Public

Submitted by the storefront's accept-invitation page after the customer clicks the link from their invitation email. Validates the token, sets the customer's password, marks the email verified (reaching the inbox + entering the token proves ownership) and issues a sanctum bearer token so the customer is signed in immediately.

Customer Dashboard - Authenticated

Log out customer

POST /services/webshop/v1/customer/auth/logout Auth

Revokes the sanctum token used for the current request. Other tokens issued to the same customer (for example from other devices) remain valid.

Resend verification email

POST /services/webshop/v1/customer/auth/verify-email/resend Auth

Sends a fresh verification link to the authenticated customer's inbox. Returns 200 even when the customer is already verified, so callers can fire-and-forget without branching.

Get customer profile

POST /services/webshop/v1/customer/profile/get Auth

Returns the full profile of the currently authenticated customer, including default billing/shipping address snapshots and email verification status.

Update customer profile

POST /services/webshop/v1/customer/profile/update Auth

Updates the authenticated customer's name, phone, and default billing country / postcode (used for phone + postal validation and checkout prefills). Email changes are deferred to a dedicated re-verification flow.

Update cart-reminder consent

POST /services/webshop/v1/customer/preferences/cart-reminder Auth

Toggles the authenticated customer's opt-in for abandoned-cart reminder emails. Setting `enabled` to true records a fresh consent (timestamp + text version + IP); setting it to false marks the consent as withdrawn.

Update default addresses

POST /services/webshop/v1/customer/addresses/update Auth

Updates the customer's default billing and shipping address snapshots. These are used to prefill checkout on future orders. Both fields are optional and independent (you can update only billing, only shipping, or both).

List customer orders

POST /services/webshop/v1/customer/orders/list Auth

Returns a paginated list of the authenticated customer's past orders, most recent first. Only completed checkout orders are returned — quotes are excluded.

Get customer order detail

POST /services/webshop/v1/customer/orders/get Auth

Returns the full detail of a single order belonging to the authenticated customer — line items, totals, billing/shipping snapshot, payment status. Requesting an order that belongs to a different customer returns 404.

Reorder a past order

POST /services/webshop/v1/customer/orders/reorder Auth

Appends every line item from a past order onto the authenticated customer's active shopping cart at current prices. Stock is NOT checked here — the cart's existing checkout flow validates availability when the customer proceeds to pay. Only products that have been deleted or disabled in the catalog are skipped (their rows can't be inserted). Shipping methods and discount codes are NOT carried over — the customer re-selects shipping at checkout, and automatic discounts (customer-tier, sale, campaign) re-evaluate against the cart's current state.

Ask a question about an order

POST /services/webshop/v1/customer/orders/question Auth

Opens a ticket in the shop's helpdesk inbox, linked to the order number, from the signed-in customer's own email (a verified sender). The shop replies by email. Only the customer's own orders (404 otherwise), only when the shop has the helpdesk with an active inbox (422 otherwise), and at most a few questions an hour (429).

List the authenticated customer's booking reservations + memberships

POST /services/webshop/v1/customer/bookings/list Auth

Industry pattern (Mindbody / Shopify booking apps): - My orders → catalog payment receipts (slot-only booking checkouts are excluded) - My invoices → receipts for paid bookings + catalog - My bookings → operational items: slot reservations + active memberships Abandoned `expired` payment holds are hidden from this list.

Get a single booking reservation OR membership belonging to the customer

POST /services/webshop/v1/customer/bookings/get Auth

Pass item_kind=membership (or booking_id like "m12") for subscriptions.

The guest's open waitlist places (times still to come), soonest first

POST /services/webshop/v1/customer/waitlist/list Auth

Leave one of the guest's own waitlist places

POST /services/webshop/v1/customer/waitlist/leave Auth

List my memberships

POST /services/webshop/v1/customer/memberships/list Auth

Cancel my membership

POST /services/webshop/v1/customer/memberships/cancel Auth

Pause my membership

POST /services/webshop/v1/customer/memberships/pause Auth

End the pause of my membership

POST /services/webshop/v1/customer/memberships/resume Auth

List customer quotes

POST /services/webshop/v1/customer/quotes/list Auth

Returns a paginated list of quote requests the authenticated customer has submitted, most recent first. Quotes are separate from orders — they carry no payment and exist for shops that offer a request-a-quote flow alongside regular checkout.

POST /services/webshop/v1/customer/invoices/list Auth
POST /services/webshop/v1/customer/invoices/download Auth

Change password

POST /services/webshop/v1/customer/password/change Auth

Changes the authenticated customer's password. Requires the current password as confirmation. All existing tokens (on this and every other device) are revoked and a fresh token is returned for this session — the client must swap it into storage and headers to stay logged in.

Delete customer account

POST /services/webshop/v1/customer/account/delete Auth

Permanently deletes the authenticated customer. Requires the current password as confirmation. Past orders are retained (invoice/tax retention) with their customer link removed.

Request email change (step 1 of 2)

POST /services/webshop/v1/customer/email/change/request Auth

Starts the change flow: validates the new address, stores a 6-digit OTP against the customer (max one pending at a time), sends the OTP to the new address and a security alert to the current address. Finish the change by submitting the code to the verify endpoint within 10 minutes.

Verify email change (step 2 of 2)

POST /services/webshop/v1/customer/email/change/verify Auth

Submits the 6-digit code received at the new email address. On success the email is changed, marked verified (entering the code proves ownership of the new inbox) and every existing token is revoked — the customer must log in again with the new address on every device.

Claim guest cart

POST /services/webshop/v1/customer/cart/claim Auth

Attaches a guest shopping cart (identified by its session token) to the authenticated customer, so the cart they built before logging in follows them into their account. Only unassigned carts can be claimed.

Customers Dashboard (Platform)

List Customers (picker)

POST /services/webshop/v1/customers/list Auth

Returns project-scoped customers, optionally filtered by a free-text search across email + first/last name. Capped at 50 rows.

List Customers (admin)

POST /services/webshop/v1/customers/all Auth

Returns project-scoped customers with order aggregates and basic profile fields, paginated and sortable. Supports free-text search across email, name, and company.

Get Customer (admin)

POST /services/webshop/v1/customers/get Auth

Returns one customer's full profile, addresses, and order aggregates, scoped to the current project.

Link past guest orders to a customer (admin)

POST /services/webshop/v1/customers/claim-orders Auth

Same as what happens when the customer verifies their email: guest orders, carts and memberships placed with this email are attached to the account. Only for verified customers (an unverified account could belong to someone else).

Dashboard - Auth

Webshop admin dashboard stats

POST /services/webshop/v1/dashboard/stats Auth

Single endpoint that returns all sections for the webshop dashboard: KPIs (with compare deltas), revenue chart series, order status counts, recent orders, top products, low stock, abandoned carts, payment methods, order type split, and top discounts. Period anchors: - Revenue / AOV / paid metrics: `paid_at` (money collected) - Order count / type split / recent orders / chart: `created_at` (demand placed) - Refunds: `updated_at` (status change time; no dedicated refunded_at column)

Discounts

List Discounts

POST /services/webshop/v1/discounts/all Auth

Get Discount

POST /services/webshop/v1/discounts/detail Auth

Create Discount

POST /services/webshop/v1/discounts/create Auth

Update Discount

POST /services/webshop/v1/discounts/update Auth

Change Discount Status

POST /services/webshop/v1/discounts/bulk-change-status Auth

Delete Discount

POST /services/webshop/v1/discounts/bulk-delete Auth

Feeds

Delete Feed

POST /services/webshop/v1/feeds/delete Auth

Create Feed

POST /services/webshop/v1/feeds/create Auth

Update Feed

POST /services/webshop/v1/feeds/update Auth

Get Feed

POST /services/webshop/v1/feeds/get Auth

List Feeds

POST /services/webshop/v1/feeds/all Auth

Filters

List Filters

POST /services/webshop/v1/filters/all Auth

Get Filters

POST /services/webshop/v1/filters/dropdown Auth

Get Filter

POST /services/webshop/v1/filters/get Auth

Create Filter

POST /services/webshop/v1/filters/create Auth

Update Filter

POST /services/webshop/v1/filters/update Auth

Delete Filters

POST /services/webshop/v1/filters/delete Auth

GetStatus

Get SendCloud Status

GET /services/webshop/v1/integrations/sendcloud/status Auth

Gift cards - Auth

POST /services/webshop/v1/gift-cards/all Auth
POST /services/webshop/v1/gift-cards/get Auth
POST /services/webshop/v1/gift-cards/create Auth
POST /services/webshop/v1/gift-cards/adjust Auth
POST /services/webshop/v1/gift-cards/status Auth

Orders - Auth

Get Shipping Methods

POST /services/webshop/v1/integrations/sendcloud/shipping-methods Auth

List Orders

POST /services/webshop/v1/orders/all Auth

Export Orders

POST /services/webshop/v1/orders/export Auth

Get Order Detail

POST /services/webshop/v1/orders/detail Auth

Returns full order details including products, pricing, tax breakdown, shipping, payment, discount and user/billing information. Response structure varies by order type (checkout or quote).

Update Order

POST /services/webshop/v1/orders/update-order Auth

Sync Order to Financial Provider

POST /services/webshop/v1/orders/sync-snelstart-order Auth

Rate limit: 5 requests per minute.

Mark Order as Paid

POST /services/webshop/v1/orders/mark-as-paid Auth

Mark Order as Cancelled

POST /services/webshop/v1/orders/mark-as-cancelled Auth

Mark Order as Completed

POST /services/webshop/v1/orders/mark-as-completed Auth

Mark Order as on Hold

POST /services/webshop/v1/orders/mark-on-hold Auth

Mark Order as Refunding

POST /services/webshop/v1/orders/mark-as-refunding Auth

Mark Order as Refunded

POST /services/webshop/v1/orders/mark-as-refunded Auth

Update Vendor Comment

POST /services/webshop/v1/orders/update-vendor-comment Auth

Get Shipping Methods

POST /services/webshop/v1/orders/sendcloud/shipping-methods Auth

Create Shipments

POST /services/webshop/v1/orders/sendcloud/shipments/push Auth

This endpoint validates orders and queues them for batch processing. Actual SendCloud API communication happens asynchronously in jobs.

Create Shipping Labels

POST /services/webshop/v1/orders/sendcloud/shipments/create-label Auth

This endpoint validates shipments and queues them for batch label processing. Actual SendCloud API communication happens asynchronously in jobs.

Download Shipping Labels Supports multiple shipments per order and different printer types

POST /services/webshop/v1/orders/sendcloud/shipments/download-labels Auth

Generate Invoice PDF

POST /services/webshop/v1/orders/pdfs/views/invoice Auth

Returns an HTML view rendered as a PDF invoice for the specified order.

Generate Package Slip PDF

POST /services/webshop/v1/orders/pdfs/views/package-slip Auth

Returns an HTML view rendered as a package slip for the specified order.

Generate PDF

POST /services/webshop/v1/orders/generate-pdf Auth

Export Orders

POST /services/webshop/v1/quotes/export Auth

Orders - Public

Create Order

POST /services/webshop/v1/orders/create Public

Converts a shopping cart into an order. Creates quote and/or checkout orders based on cart products. For paid orders, initiates payment and returns a redirect URL.

Get Order

POST /services/webshop/v1/orders/get Public

Mark Order Purchase as Tracked

POST /services/webshop/v1/orders/mark-purchase-tracked Public

Orders - Public Issues a short-lived private download URL after proving paid identity: order_session + invoice email (guest thank-you)

Get Product File Download

POST /services/webshop/v1/orders/downloads/get Public

Pricing - Public

Resolve Contextual Prices

POST /services/webshop/v1/pricing/resolve Public

Returns ONLY the products whose price changes for this visitor (customer or campaign overlay). Products absent from the response should keep their static price. A product with variations that have their own price also gets `variations: {variation_id: overlay}`; an entry may carry only that (then the product's own static price stays).

ProductBookingResources

Get booking resources for a specific product

GET /services/webshop/v1/products/{product_id}/booking-resources Public

ProductResourcesGet

POST /services/webshop/v1/products/resources/get Auth

ProductStructureAll

POST /services/webshop/v1/product-structures/all Auth

ProductStructureCreate

POST /services/webshop/v1/product-structures/create Auth

ProductStructureDelete

POST /services/webshop/v1/product-structures/delete Auth

ProductStructureEdit

POST /services/webshop/v1/product-structures/edit Auth

ProductStructureGet

POST /services/webshop/v1/product-structures/get Auth

ProductVariationsGet

Get all variations for a specific product

POST /services/webshop/v1/products/{productId}/variations/get Auth

ProductVariationsSave

Save (create or update) product variations This controller handles bulk variation save operations

POST /services/webshop/v1/products/{productId}/variations/save Auth

Products

List Products

POST /services/webshop/v1/products/all Auth
POST /services/webshop/v1/products/get Auth

Create Product

POST /services/webshop/v1/products/create Auth

Update Product

POST /services/webshop/v1/products/update Auth
POST /services/webshop/v1/products/delete Auth

Duplicate Product

POST /services/webshop/v1/products/duplicate Auth

Export Products

POST /services/webshop/v1/products/export Auth

Export stock

POST /services/webshop/v1/stock/export Auth

Every simple product and every variation with its current quantity, for the CLI stock list (`wemasy stock pull`).

Apply stock changes

POST /services/webshop/v1/stock/apply Auth

Rows with op "set" (quantity, optional expected: compare-and-set) or "add" (delta, atomic). A dry run unless dry_run is false.

Products - Public

Google Shopping Feed

GET /services/webshop/v1/{websiteId}/product-feed.xml Public

Returns a Google Merchant Center compatible XML product feed.

Google Shopping Feed by Filter

GET /services/webshop/v1/{websiteId}/{feedId}/product-feed.xml Public

Returns a filtered Google Merchant Center compatible XML product feed.

Get Product Stock

POST /services/webshop/v1/products/get-stock Public

Get Product Stock Bulk

POST /services/webshop/v1/products/get-stock-bulk Public

Get Product Options Returns all options or filters by page_type if specified

POST /services/webshop/v1/products/get-options Public

RescheduleBooking

POST /services/webshop/v1/orders/reschedule-booking Auth

Settings

Get Webshop Settings

POST /services/webshop/v1/settings/get Auth

Save Webshop Settings

POST /services/webshop/v1/settings/save Auth

Create official cart / checkout / thank-you pages (sync)

POST /services/webshop/v1/settings/initialize-setup Auth

Files lead (#1273): for a project stored as its folder the job writes the shop starter (pages and their assignments) into the folder, and SystemSetupReady reads them from there.

Verify SendCloud Credentials

POST /services/webshop/v1/integrations/sendcloud/verify Auth

Set Default Shipping Method

POST /services/webshop/v1/integrations/sendcloud/default-method Auth

Get Financial Connections

POST /services/webshop/v1/get-financial-connections Auth

Save Financial Connection

POST /services/webshop/v1/save-financial-connection Auth

Shopping Cart - Public

Create Shopping Cart

POST /services/webshop/v1/shoppingcart/create Public

Get Shopping Cart

POST /services/webshop/v1/shoppingcart/get Public

Update Cart Quantity

POST /services/webshop/v1/shoppingcart/update-quantity Public

Returns the full updated cart (same response as Get Shopping Cart).

Delete Cart Product

POST /services/webshop/v1/shoppingcart/delete-product Public

Returns the full updated cart (same response as Get Shopping Cart).

Add User Details to Cart

POST /services/webshop/v1/shoppingcart/add/user-details Public

Returns the full updated cart (same response as Get Shopping Cart).

Validate a Cart's VAT Number (VIES)

POST /services/webshop/v1/shoppingcart/validate-vat Public

Dedicated, self-contained VAT validation so the storefront can show a "validating…" indicator next to the VAT field WITHOUT blocking the whole address-save or the checkout button. Persists the invoice tax fields and the resolved vies_* state, then returns the full updated cart (same shape as Get Shopping Cart) so reverse-charge totals and the vies status update together.

Add Shipping Method to Cart

POST /services/webshop/v1/shoppingcart/add/shipping-method Public

Returns the full updated cart (same response as Get Shopping Cart).

Add Payment Method to Cart

POST /services/webshop/v1/shoppingcart/add/payment-method Public

Returns the full updated cart (same response as Get Shopping Cart).

Add Product to Shopping Cart

POST /services/webshop/v1/shoppingcart/add Public

Returns the full updated cart (same response as Get Shopping Cart). Validates product options based on page_type if provided

Update Shopping Cart Item

POST /services/webshop/v1/shoppingcart/item-update Public

Returns the full updated cart (same response as Get Shopping Cart). Updates quantity and validates options based on page_type if provided

Verify Shopping Cart for Checkout

POST /services/webshop/v1/shoppingcart/verify-checkout Public

Validates all products are ready for checkout.

Apply Coupon Code

POST /services/webshop/v1/shoppingcart/apply-coupon Public

Remove Coupon Code

POST /services/webshop/v1/shoppingcart/remove-coupon Public

Apply a gift card

POST /services/webshop/v1/shoppingcart/apply-gift-card Public

Remove the gift card

POST /services/webshop/v1/shoppingcart/remove-gift-card Public

Send the bought gift card(s) to someone

POST /services/webshop/v1/shoppingcart/gift-card-recipient Public

Their name, email address and a message; empty = the buyer gets the card (the default). The card goes out by mail when the payment is in.

Subscriptions - Auth

POST /services/webshop/v1/subscriptions/all Auth
POST /services/webshop/v1/subscriptions/verify Auth

Send a reminder with a payment link: first payment (waiting memberships) or the renewal

POST /services/webshop/v1/subscriptions/remind Auth

Cash / bank transfer received for the renewal: mark the renewal order paid, which extends the membership one period and unlocks its credits

POST /services/webshop/v1/subscriptions/mark-renewal-paid Auth

Cancel a membership for the member: no more charges, no reminders; the period already paid stays usable

POST /services/webshop/v1/subscriptions/cancel Auth

Pause a membership from one date until another (holiday, injury): no payments and no credits in that time; the next payment moves on by the same days

POST /services/webshop/v1/subscriptions/pause Auth

End a pause today, or take away one that has not started yet

POST /services/webshop/v1/subscriptions/resume Auth

Transactions - Public

Create Transaction

POST /services/webshop/v1/transactions/create Public

Initiates a payment transaction for a checkout order. Creates a Mollie/Stripe payment session and returns a redirect URL. For non-payment methods (pay_on_pickup, wire transfer), redirects directly to the thank-you page.

Webshop Customers - Admin

Invite a customer

POST /services/webshop/v1/customers/invite Auth

Creates a new customer record without a password and emails them an invitation link. Clicking the link lands them on the storefront's accept-invitation page where they pick a password and are signed in automatically. The email arrives on the merchant's brand and the URL lives on the merchant's storefront domain (not the platform host).