HTTP API

Clear contracts.
Separate audiences.

Integrate through versioned HTTP modules and discover the actual contract on your own deployment. Management and public APIs are separate by design.

Two roots, two audiences.
Surface Route shape Purpose
Management /api/<module>/v<major>/… Authenticated operations; management ingress in a site deployment.
Public /public/api/<module>/v<major>/… Anonymous-capable, intentionally public representations. Public site routes require a configured site binding.
API document /api/openapi.json Management contract on your instance.
Public document /public/api/openapi.json Separate public contract on your instance.
Start by asking who you are. bash
curl --user YOUR_USER \
  http://127.0.0.1:6727/api/identity/v1/me

A documented identity request. This website stores no credentials.

First documented modules.
Module Representative read Scope
identity/v1 GET /api/identity/v1/me Effective caller identity. User/group administration is deferred.
content/v1 GET /api/content/v1/page?path=/content/example/en/about Management content projection. Included by a site-enabled deployment; example path must exist.
site/v1 GET /public/api/site/v1/page?path=/ Site-relative public projection through a configured delivery binding.

Repository paths are query parameters.

The management content API uses a fixed route and a path query parameter, rather than embedding an arbitrary repository path in the URL’s route segments. Public site paths are site-relative and resolve inside the configured binding.

The management content module also documents template-based creation, allowlisted merge-patch fields, deletion and moves. Do not apply the proposed page-lifecycle semantics to those current operations: private drafts, recoverable page deletion and /api/pages/v1 belong to the unimplemented lifecycle proposal.

Authentication and writes.

Operations use the caller’s resolver. A cookie-free machine-client write using Basic authentication must carry a non-blank X-Requested-With header; the documented convention is ContentLIBRE. A session-cookie write instead uses the CSRF token contract. /public/api is not a CSRF exemption.

The documented API does not honor If-Match for conditional writes. It rejects that header with precondition-unsupported rather than pretending to provide lost-update protection. Use the current deployment’s contract, not the future lifecycle design.

Machine-client write marker. http
X-Requested-With: ContentLIBRE

Header illustration only—not a complete mutation request. Authentication, authorization and route-specific input requirements still apply.

Documentation and error boundaries.

Where the docs feature is included, Swagger UI is self-hosted at /api/docs/ and /public/api/docs/. Those are routes on the ContentLIBRE instance, not this marketing website. This website does not embed the console or connect to a running instance.

API servlet errors that carry a body use application/problem+json. A refusal produced earlier by Sling authentication or a kernel preprocessor can have a different body. Management responses are no-store; public caching is an explicit resource opt-in subject to the identity guard.

Build the integration against your instance.

Confirm the modules in the assembly, read its OpenAPI document and test with the identities your application will use.