Skip to main content

OpenLM Router API reference

Use this page to script an OpenLM Router installation or to find out what a response means. Everything here is also available from the Router itself, and the pages in this section show each call in the task it belongs to.

API browser of the Router​

Every Router serves an interactive reference, generated from the running build, at:

http://<router-host>:8100/swagger

Use it for request and response schemas. It cannot go stale the way a written page can. The following table is a map of the endpoints that matter for failover, not a replacement for it.

Keep these ports on your administration network

Ports 8100 and 8101 are administration interfaces. Allow access to them only from your administration network, and do not publish them to the internet. Publish only the license ports your clients use. See System requirements.

Failover endpoints​

The following table lists the failover endpoints and what each one does:

MethodPathWhat it does
GET/api/v1/statusThe state of every pair: which server it is serving from, the health of both servers, and recent failovers. configurationManagement reports the routerId of this Router and its last sync with OpenLM Platform.
GET/api/v1/configThe routing configuration the Router collected from OpenLM Platform. Read-only: you change the configuration in OpenLM Platform.
GET/api/v1/platform/serversThe license servers from the OpenLM Platform snapshot, and the source of every serverId. Answers 503 until a snapshot exists.
GET/api/v1/admission-controller/platform-credentialsReads back the stored OpenLM Platform connection. The secret is masked.
PUT/api/v1/admission-controller/platform-credentialsStores the OpenLM Platform connection.
POST/api/v1/admission-controller/platform-credentials/check-connectionTests the credential in the body. If clientSecret is empty or ***, tests the stored credential instead.
POST/api/v1/failover/manualMoves a pair to its backup. Takes pairId and an optional message for the history.
POST/api/v1/failbackReturns a pair to its primary.
GET/readyzReadiness with detail: which ports are bound against which are wanted. Answers 503 until the Router has collected its configuration.
GET/health/ready, /health/live, /health/startThe standard OpenLM health envelope.

The Router exposes further endpoints for features outside failover. They are not covered here and are not needed for a failover deployment.

Read the responses​

The following sections explain how to read the main responses of the Router.

Confirm a configuration took effect​

To tell an unapplied configuration from a networking problem, call /readyz:

{
"appliedGeneration": 1,
"latestGeneration": 1,
"boundPorts": [27000],
"desiredPorts": [27000],
"failoverRoleConverged": true
}

boundPorts matching desiredPorts means every pair's listen port is open. A port in desiredPorts but not in boundPorts is a pair that was accepted but whose port could not be opened, usually because another process already holds it.

When appliedGeneration lags latestGeneration, a configuration change has been accepted but not applied. It catches up within seconds.

Recognize the results​

The following table lists responses and what they mean:

ResponseWhat it means
503 from /api/v1/platform/serversNo OpenLM Platform sync has succeeded, or none for 10 minutes. On a new deployment, the OpenLM Platform connection is not working. On a Router that was working, either the sync is failing, as lastFailure in /api/v1/status shows, or the Router lost its job schedule and needs restarting.
200 from check-connection with "status": "Failed"A rejected credential. This endpoint reports its verdict in the body, so check status rather than the HTTP code.
409 "Already on backup" from /api/v1/failover/manualThe pair is on its backup, the pairId does not exist, or the pair has no backup. The Router answers the same way for all three. Confirm the name and the backup against /api/v1/config before concluding the pair has already moved.

Check the sync with OpenLM Platform​

To check whether the Router is collecting its configuration from OpenLM Platform, read the configurationManagement block of GET /api/v1/status. Before the OpenLM Platform connection is configured, it reads:

"configurationManagement": {
"shape": "serviceManaged",
"routerId": "15ec9751-826b-44ab-a313-43441b9eaed5",
"lastSync": {
"lastSuccessfulSync": null,
"lastAppliedConfigVersion": null,
"lastFailure": "No Platform connection is configured, so the Router has no address for the LicOps Configuration service",
"lastFailureAt": "2026-10-05T08:21:31.4659468Z"
}
}

The following table describes the fields in this block. For help with a failing sync, see Troubleshooting.

FieldWhat it shows
routerIdHow OpenLM Platform identifies this Router. It is created on the first start and stored in MongoDB.
lastSuccessfulSyncWhen the Router last synced with OpenLM Platform. If it is not advancing, the Router is not talking to OpenLM Platform.
lastAppliedConfigVersionThe version of the OpenLM Platform configuration this Router is running.
lastFailure, lastFailureAtThe current sync problem and when it started. A successful sync clears both, so anything here is live, not history.

The documentation team might draft this page using a large language model. A technical writer reviews every page and verifies it against the product before publishing it. A human makes the final decision.