Remote services with expservices
This page is for application creators who build a remote admin app, a JavaScript front end or a script that drives
the administration's functions. expservices turns the admin's functions into over a thousand named services (content,
users, roles, caches, cronjobs, shop, feeds, media, tags, layouts, the audit and more), called through ezjscore
(Remote services and apps,
Backend ezjscore services).
Contents
Check it answers
curl -s 'https://example.com/ezjscore/call/expsession::whoami?ContentType=json'An envelope that says you are anonymous. 403 on every call means the master switch is off:
./console exp:ini get expservices.ini/Services/Enabled must say enabled.
Calling a service
Every answer has one shape inside ezjscore's content: {"ok":true,"data":...,"meta":{...}} or
{"ok":false,"error":{...}}. The shipped clients unwrap it:
export EXPSERVICES_URL=https://example.com
extension/expservices/bin/expservices-client.sh whoami
extension/expservices/bin/expservices-client.sh call expsystem::versionDiscovery lists every service with its parameters, so clients do not hard-code the catalog.
Authentication
Personal API tokens for scripts; a signed-in session for pages of the same site. Each service declares the policies it
needs and checks them as the calling user. Behind Apache with mod_proxy_fcgi, make sure the Authorization header
reaches PHP. The token table is created from extension/expservices/sql/<engine>/schema.sql.
A service domain of your own
A domain is a class exp<Domain>Services extending expServiceBase, registered as [ezjscServer_exp<domain>] in your
extension's ezjscore.ini.append.php, and called as <root>/ezjscore/call/exp<domain>::<function>. Follow the shipped
domains in extension/expservices/classes/ for the envelope, the policy declaration and the discovery entry; read
services can be offered to Exponential Intelligence as tools with 'ai' => true
(Exponential Intelligence for applications).
When to use it
| Need | Use |
|---|---|
| A remote admin client, a portal, scripts that manage the site | expservices |
| Content for apps and front ends, OAuth for third parties | REST (REST API) |
| Your own page's JavaScript | an ezjscore server function (JSON endpoints) |
| AI tools that act inside the administration | Exponential Intelligence tools (Extending Exponential Intelligence) |
Related pages
- OAuth and API keys
- Headless Exponential
- Remote services (feature)
- Free documentation: this page is free to copy, translate and improve under the GNU FDL 1.3.
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.