Skip to content
EN FR

Services and publication

Documentation status: guide — see Maturity and evidence.

Publication should expose conceptual capabilities, not duplicate the business model in a second API layer.

Three levels

  • Internal action: callable inside the model, view, script or process.
  • Published action: intentionally part of a callable model contract.
  • Exposed action: a published action bound to HTTP, MCP, messaging, agent tooling or another adapter.

This separation allows the conceptual action to remain stable when the external transport changes.

Mapping a published action

A publication adapter typically resolves:

target class/object
+ published action
+ typed input parameters
+ return/result contract
-> adapter validation
-> runtime invocation
-> response mapping

Primitive request values map directly. Conceptual values should use stable identifiers, object references or declared projections. The adapter must reject malformed or incomplete input before dispatch where the invalidity is known at the boundary.

Declarative HTTP service example

The service example below uses public ABI-facing class names:

serviceGroupDefinitions:
  - UserManagement:
      uuid: EA588812932A434B87A5F47A795C27E4
      type: HTTP
      moduleClass: DataModuleHTTPServer
      debug: true
      virtualPages:
        - method: GET
          path: /users
          class: PathRequestWebPage
          rewrite: /ClassItem[@name='UserManagement.User']/Collection[@name='Entity']

DataModuleHTTPServer and PathRequestWebPage are the names used by this published example. Verify that they are available in the ABI manifest for the target release before using them in generated bindings.

Long-running operations

Do not model a long-running operation as one blocking HTTP call. Publish an action such as Start, Submit, Request or Finalize, create/update a process object, return an acknowledgement/reference, then expose status and events.

Machine-readable publication

OpenAPI and MCP should be projections of the same declared types and actions, not independent type systems. Keep required fields, conceptual identifiers, relation roles and validation semantics aligned.

See Publication API, ABI, and RPC.