REST API Usage
Architecture
The OMN REST APIs are "REST over HTTP"-like APIs following the REST architectural style and its guiding constraints:
-
HTTPS only — all communication between client and server is encrypted.
-
Client-server — client and API concerns are separated and evolve independently.
-
Stateless — the server keeps no client state; every request carries all the information required to process it (including the JWT, see Authentication).
-
Cacheable — responses are marked cacheable or not, so clients and intermediaries can cache safely.
-
Layered system — clients cannot see beyond the server layer; proxies and load balancers can be added transparently.
-
Uniform interface — resources are exposed under a consistent namespace and are manipulated through the representations the client receives.
URI schema
The Core API exposes each resource through a uniform resource identifier:
https://{host}/api/core/{api version}/{module}/{resources}/{operation}
-
host— the OMN host name -
/api/core/— base path of all Core API endpoints -
api version— the Core API version (v1), not the OMN product version -
module— the OMN module (pim,dam,cm,peo) orcommonfor cross-module endpoints -
resources— the resource name in plural notation (for exampleassets) -
operation— the operation executed on the resource (query,retrieve,persist,perform)
Example: https://<OMN_SERVER>/api/core/v1/dam/assets/persist creates or updates
assets in DAM.
Endpoints managing binary files use an extended schema —
…/{resources}/bin/{operation} — with an optional chunked segment
(…/bin/chunked/…) for the chunked file upload mechanism.
The Search API uses the base path /api/v1/search, the Workflow API /api/v1/workflow
(see Getting Started for the API overview).
HTTP methods and OMN operations
For simple requests on single resources the Core API supports the standard HTTP methods
(HEAD, GET, POST, PATCH, PUT, DELETE) per RFC 9110.
In addition, the Core API defines operations on resources — POSTed URI segments that cover more specific use cases and enable bulk requests on lists of resources:
| Operation | Use case | Response body |
|---|---|---|
|
fetch a resource collection |
only IDs/TIDs, no resource details |
|
fetch resources |
the resources with details |
|
create or update resources |
the created/updated resources |
|
execute specific actions on resources (e.g. delete, move) |
action results |
perform requests carry actions (for example delete, create, update,
move) in the request body. Different actions for different resource instances can be
mixed in a single request, as long as they are not interdependent.
When to use what: manage a single resource with plain HTTP methods where they
exist (simplest requests); fetch lists with query (IDs) or retrieve (data);
create/update lists with persist; run specialized actions on lists with
perform. Bulk flexibility makes error handling more involved — the response details
which operation or action failed for which resource, and the client must handle that
(see Error Handling).
Bulk operations
For asynchronous processing of large requests, use bulk in place of perform or
persist in the endpoint URL. The bulk endpoint accepts the same request body as the
corresponding perform/persist endpoint.
Create a bulk operation:
-
POST …/bulk— body: JSON/XML specifying a perform action or persist operation. Returns202 Acceptedwith anoperation-id(GUID) for polling, or400 Bad Requestfor invalid input.
Poll the status:
-
GET …/bulk/{operation-id}—200 OK: completed, result returned (fetchable once, available for 1 hour; inspect it for per-resource errors) ·204 No Content: still in progress, keep polling ·404 Not Found: unknown operation id ·500 Internal Server Error: server-side failure.
Limitations: bulk operations cannot be canceled or resumed (a server restart loses the
in-flight remainder and invalidates the operation-id), there is no progress
indication, result and status are only available on the instance that accepted the
request, and the server executes queued bulk requests FIFO (two simultaneously by
default).