Skip to the content
Documentation
Help Start
Reading in:
  • German: 9,075 of 9,075 pages
About the help in other languages
All help pages

Headless commerce with expservices

Driving the Exponential shop over HTTP with the expservices extension - the commerce service domains (product, basket, order, payment, shipping, VAT, currency, discount, wishlist), authentication with sessions or API…

Download as PDF

Address: https://doc.exponential.earth/exphelp/viewer/help/e-commerce/operations/headless-commerce-with-expservices.md

On this page

Headless commerce with expservices

This page is for developers who want an app, a script or another system to use the shop: read products and prices, fill a basket, look up orders, or pull figures. The expservices extension, shipped in the repository's extension/ folder, exposes the administration's functions as remote services over ezjscore, and the shop is one of its groups. The general introduction is Remote services with expservices.

Contents

  1. The commerce domains
  2. Calling a service
  3. Who may call what
  4. Typical uses
  5. Caveats

The commerce domains

Registered in extension/expservices/settings/ezjscore.ini.append.php, classes in extension/expservices/classes/commerce/:

DomainSome of its services
expproductclasses, list, search, view, price, prices, options, categories, priceRange, related, vat, setPrice
expbasketview, items, count, totals, add, update, remove, empty, refreshPrices, setCurrency, startCheckout, review, cancelCheckout, placeOrder
expordermine, myOrder, myReceipt, statuses, list, view, byNumber, items, history, setStatus, archive, unarchive, remove, search, statistics, customers, dashboard
exppaymentlist, view, byOrder, myStatus, gateways, workflowEvents, approve
expshippingstatus, handler, simpleShipping, basket, order, vatOfShipping, settings
expvattypes, rules, categories, forProduct, userCountry, setUserCountry, countries and the create, update and remove services
expcurrencylist, rate, convert, preferred, setPreferred, updateRates, updateAutoprices and more
expdiscountgroups, rules, members, forUser, mine and the edit services
expwishlistview, items, add, remove, moveToBasket, popular

The full, current list comes from the service catalog itself (expservices::catalog), which describes every service with its parameters (Remote services (feature)).

Calling a service

curl -s -H 'Authorization: Bearer <token>' \
  'https://example.com/ezjscore/call/exporder::byNumber::1042?ContentType=json'

Every answer is an envelope: {"ok":true,"data":...,"meta":{...}} or {"ok":false,"error":{...}}; lists are paged. The master switch is expservices.ini [Services] Enabled.

Who may call what

Each service declares the policy it needs and checks it as the calling user. The order services for staff, such as exporder::list, statistics and customers, need shop/administrate; services named mine, myOrder and myReceipt answer for the signed-in customer's own orders. Writes need POST. Give each script or app its own user and personal API token with only the policies it needs; tokens are shown once, stored only as a hash, and their creation and revocation are audited.

Typical uses

UseServices
A mobile app showing products and pricesexpproduct::list, view, prices
A customer's order history in an appexporder::mine, myOrder, myReceipt
A nightly figures exportexporder::list, statistics (Store figures and exports)
A packing station that marks orders shippedexporder::byNumber, setStatus (with a role limited by FromStatus and ToStatus)
Price updates from a supplier systemexpproduct::setPrice

For content in apps in general and OAuth for third parties, the REST API is the other route (Headless Exponential).

Caveats

  • The extension was added on 2 October 2026 as version 0.1.0 and its feature page calls it a first draft. Pin the services you use in your tests and check them after updates.
  • Placing orders over services still runs the checkout's workflows; a redirect payment still needs the customer at the provider. Test the full path before building an app checkout on it.
  • Never send card data through these services.

Become an Exponential Partner

Partners share their information, provide funding, contribute back and develop the products with us, and that is how Exponential grows. A partner website and dashboard are planned for mid-2027: please become a partner today to speed up our growth rate and land new features faster.

Something wrong on this page? Report an error

Documentation license

This documentation is free documentation, licensed under the GNU Free Documentation License 1.3 or later.

Exponential Copyright © 1998-2026 Exponential Foundation and 7x