/v1. Every business route needs a bearer token.
API surface
Operator endpoints sit outside
/v1.
Authentication and tenancy
Every
/v1 route takes an OAuth2 bearer token from Lerian Access Manager. With PLUGIN_AUTH_ENABLED=true and PLUGIN_AUTH_HOST, Lerian Access Manager authorizes each request. Only a development ENV_NAME outside saas accepts false.
Each institution keeps its own database schema.
Idempotency
Lerian CCS accepts an optional
X-Idempotency header on most mutating routes. A middleware caches the first response and replays it for a repeat of the same key. A repeat with a different body answers 422, and a repeat while the first request runs answers 409. Keys belong to one institution, and the default retention is 7 days.
Errors
A business error answers an RFC 9457 problem document, with the media type
application/problem+json and a product code. The code values are frozen contract, so a client matches on the code, not the message text.
Events
Lerian CCS publishes one business event on its own topic, with a matching dead-letter topic. The topic and the event type follow the Streaming Hub naming rule, with this service’s CloudEvents source as the namespace.
It carries the critical delivery posture. The service writes it to the transactional outbox in the same transaction as the state change. Streaming is off by default. While it is off, the service wires a no-operation emitter and publishes nothing. Lerian Streaming Hub is the delivery layer.
With
RABBITMQ_ENABLED=true, Lerian CCS also publishes notifications on the exchange named by RABBITMQ_EXCHANGE.
Documents in those payloads are masked.
Integration conventions
- Headers. While
CORS_ALLOWED_HEADERSstays unset, a fixed default list applies, and it does not includeX-Idempotency. A value you set replaces that list, so name every header your browser client sends. - Pagination. Each list route caps its own page size. A page size of 100 or less stays within every route’s cap.
- Rate limits. The limiter covers
/v1only. Mutating requests and heavy reads such as audit queries carry tighter tiers. - File references. The regulatory XML stays in object storage. The API and the broker messages carry file references only.

