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

Integration surfaces at a glance

Every integration surface that Exponential 6.0.15 and its required extensions provide, with direction, protocol, authentication, where it lives and whether it is on by default, plus what is not provided and how to check…

Download as PDF

Address: https://doc.exponential.earth/exphelp/viewer/help/integrators/integration-surfaces-at-a-glance.md

On this page

Integration surfaces at a glance

This page is the inventory. It lists every way another system can exchange data with Exponential 6.0.15, as shipped by the kernel and by the extensions the root composer.json requires. Each row names where the surface lives and whether it works out of the box or must be switched on. The standards behind each protocol, with their known gaps, are in API and protocol standards.

Contents

  1. HTTP APIs
  2. Feeds, files and protocols
  3. Server-side surfaces
  4. Identity, mail, search and payment
  5. What is not provided
  6. Checking what an installation has active

HTTP APIs

SurfaceDirectionProtocol and formatAuthenticationWhereDefault
REST content APIIn and outHTTP, JSON; /api/ezp/v1/... reads, /api/ezp/v2/... reads, create and deleteOAuth 2.0 token, personal API key, or HTTP basic (AuthenticationStyle)Kernel framework kernel/private/rest/, routes in ezprestapiAnswers when ezprestapi is active; rest.ini [Authentication] RequireAuthentication=enabled
GraphQL APIIn and outHTTP, JSON; /api/graphql per siteaccess; queries, mutations (create, update, translate, publish, delete, move, hide), subscriptionsSession (with the form token for mutations), OAuth 2.0 token, personal API key (scopes graphql:read, graphql:write)Kernel kernel/classes/graphql/, Setup > GraphQL, exp:graphql:*graphql.ini [GraphQLSettings] Enabled=disabled: off until switched on (The GraphQL API)
GraphQL webhooksOutHTTP POST, JSON, signed with HMAC-SHA-256A shared secret in the secret storegraphql.ini [GraphQLWebhooks], cronjob part graphqlwebhooksNone configured
OAuth 2.0 authorization serverIn (credentials)oauth/authorize, POST /api/auth/v1/oauth/tokenClient id and secret, user consentkernel/private/modules/oauth/, Setup > oAuth adminGrants authorization_code and refresh_token
Personal API keysIn (credentials)Authorization: Bearer expk_...The key's owner, limited to its scopeskernel/apikey/, rest.ini [ApiKeySettings]ApiKeys=enabled; no role has apikey/create until you give it
Remote services (expservices)In and outJSON over /ezjscore/call/exp<domain>::<method>Session cookie and form token, or an expt_... tokenextension/expservicesexpservices.ini [Services] Enabled=enabled
ezjscore server functionsIn and outJSON over /ezjscore/call/<server>::<function>Session, policy ezjscore/callextension/ezjscoreOn; your functions are added by ezjscore.ini

Feeds, files and protocols

SurfaceDirectionFormatWhereDefault
RSS, Atom and OPML exportsOutRSS 1.0, RSS 2.0, Atom, OPML 2.0, Apple Podcasts; /rss/feed/<address>kernel/classes/ezrssexport.php, Setup > RSSNone configured
RSS importsInRSS 0.91 to 2.0kernel/classes/ezrssimport.php, cronjob rssimport.phpIn the global cronjob part
syndicationBoth, installation to installationXML feeds over SOAPsyndication extension, /syndication/menuNeeds soap.ini EnableSOAP=true
SOAP serverInSOAP 1.1, no WSDLindex_soap.php (soap.php before 6.0.15), lib/ezsoap/soap.ini [GeneralSettings] EnableSOAP=false
WebDAVBothWebDAV class 1index_webdav.php (renamed in 6.0.15), kernel/private/classes/webdav/webdav.ini [GeneralSettings] EnableWebDAV=false
Packages (.ezpkg)BothPackage archives; JSON package formatezpm.php, Setup > PackagesOn
CSV import and exportBothCSVbin/php/ezcsvimport.php, bin/php/ezcsvexport.phpOn
xrowextractBoth, scheduledCSV, JSON, XML, .ezpkg; SFTP, FTP, S3, WebDAV, HTTP POSTxrowextract extension, admin ExportInstalled with the distribution
Collected information exportOutCSVinfocollector/export/<object id>; bccie extensionOn

Server-side surfaces

SurfaceWhat it gives an integrationWhere
PHP content APICreate, update, publish, move, hide, remove content the supported waykernel/classes/ezcontentfunctions.php, eZContentObject, eZContentObjectTreeNode
CLI scripts and ezexec.phpRun PHP with the kernel loaded, from cron or a deploymentbin/php/ezexec.php, eZScript, bin/php/console
Cronjob partsScheduled imports and exportssettings/cronjob.ini, runcronjobs.php
Workflows and triggersRun code before or after an operation (publish, checkout, ...)settings/workflow.ini, Setup > Triggers
Event listenersReact to kernel events (cache cleared, state assigned, output)ezpEvent, site.ini [Event] Listeners[]
Notification handlers and transportsDeliver notification events your own waysettings/notification.ini, kernel/classes/notification/
Audit trail sinksSigned webhook, syslog and mail for recorded eventssettings/audit.ini [AuditSink_webhook]
Content jobs and expqueueLarge operations and background work in batchescontent.ini [ContentJobSettings], expqueue extension

Identity, mail, search and payment

SurfaceSettingShipped handlers
Login handlerssite.ini [UserSettings] LoginHandler[]standard, LDAP (settings/ldap.ini), textfile (settings/textfile.ini); sevenxUser2fa and social login from sevenx_authentication_2fa
Single sign-on handlerssite.ini [UserSettings] SingleSignOnHandlerArray[]None shipped; class eZ<name>SSOHandler of your own
Mail transportsite.ini [MailSettings] Transport, TransportAlias[]sendmail, smtp, file
Search enginesite.ini [SearchSettings] SearchEngineeZSearchEngine (built in); Solr through the separately installed ezfind
Payment gatewayspaymentgateways.ini [GatewaysSettings]ezpaypal extension

What is not provided

Plan the following as custom work, or choose another approach:

Not providedWhat to do instead
An OpenAPI description of the content APIDocument your routes in your interface specification (template)
XML-RPCNot implemented; use REST or SOAP
SAML or an OpenID Connect providerWrite a login or SSO handler, or put an identity-aware proxy in front (Single sign-on)
Content webhooks without GraphQLThe GraphQL webhooks above need the GraphQL end point switched on; otherwise use the audit webhook sink with content.object.publish switched on (Audit webhooks), or a workflow event or event listener of your own
Updating content through RESTPOST /api/ezp/v2/content/node/<id> checks content/edit and answers 501; update through the GraphQL mutation updateContent, from PHP, or through expservices
A message broker connector (AMQP, Kafka)Publish from a workflow event or a cronjob through a PHP client library you add to your extension
An MCP server in the kernelThe kernel repository ships none (AI, job queue and MCP)

Checking what an installation has active

Run these from the installation root (add --allow-root-user when you are root):

php bin/php/console exp:ini get site.ini/ExtensionSettings/ActiveExtensions   # ezprestapi, expservices, xrowextract ...
php bin/php/console exp:ini get rest.ini/Authentication/RequireAuthentication
php bin/php/console exp:ini get expservices.ini/Services/Enabled
php bin/php/console exp:ini get soap.ini/GeneralSettings/EnableSOAP
php bin/php/console exp:ini get webdav.ini/GeneralSettings/EnableWebDAV
php bin/php/console exp:ini get site.ini/UserSettings/LoginHandler
php bin/php/console exp:ini get site.ini/MailSettings/Transport
php bin/php/console exp:ini get site.ini/SearchSettings/SearchEngine

From outside, two requests show whether the HTTP APIs answer:

curl -s 'https://example.com/ezjscore/call/expsession::whoami?ContentType=json'
curl -s -o /dev/null -w '%{http_code}\n' https://example.com/api/ezp/v1/content/node/2   # 401 without credentials

Setup > RAD (/setup/rad) lists the extension points and the expservices catalog of the installation.

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