Skip to main content
phoss SMP provides two endpoints for health checks and monitoring.

GET /ping/

Simple liveness probe. Always enabled. Returns a short plain-text response to confirm the server is running. Authentication: Not required.
curl https://smp.example.org/ping/
This endpoint is suitable for load balancer health checks. It does not query any backend data.

GET /smp-status/

Returns a JSON object with detailed information about the running SMP instance including configuration state, certificate validity, SML and Directory integration status, and backend data counts. Authentication: Not required.
This endpoint is disabled by default. Enable it by setting smp.status.enabled = true in application.properties. When disabled, the endpoint returns {"status.enabled": false}.
curl https://smp.example.org/smp-status/

Response fields

build.timestamp
string
ISO 8601 timestamp of when this version of phoss SMP was built.
startup.datetime
string
ISO 8601 timestamp of when the SMP server last started.
status.datetime
string
ISO 8601 timestamp of when this status response was generated (server local time with offset).
status.datetime.utc
string
Same as status.datetime but in UTC.
version.smp
string
phoss SMP version number, e.g. 8.1.3.
version.java
string
JVM version the server is running on.
smp.backend
string
Active storage backend: sql, xml, or mongodb.
smp.resttype
string
Active REST API type: peppol or bdxr.
smp.identifiertype
string
Active identifier type: peppol, peppol-lax, simple, bdxr1, or bdxr2.
smp.writable-rest-api.enabled
boolean
Whether PUT and DELETE REST endpoints are enabled. When false, all write operations return an error.
smp.publicurl
string
The configured public base URL of this SMP.
smp.sml.enabled
boolean
Whether SML (Service Metadata Locator) integration is active.
smp.certificate.configuration-valid
boolean
Whether the keystore is correctly configured and loadable.
smp.certificate.expired
boolean
Whether the SMP signing certificate has passed its notAfter date. Only present when smp.certificate.configuration-valid is true.
smp.pd.enabled
boolean
Whether Peppol Directory integration is enabled.
csp.enabled
boolean
Whether Content Security Policy headers are enabled for the management UI.

GET /smp-status/?disable-long-running=true

Same as GET /smp-status/ but skips queries that may be slow on large datasets, such as counting service groups from the backend. Use this variant for frequent automated health checks where response time matters more than completeness.
curl 'https://smp.example.org/smp-status/?disable-long-running=true'
The response has the same structure as the full status response but omits fields populated by long-running backend queries.

Enabling the status endpoint

Add the following to application.properties:
smp.status.enabled = true
The status endpoint reveals configuration details including the public URL, backend type, SML and Directory settings, and certificate information. In production environments, consider restricting access to /smp-status/ at the reverse proxy level if this information should not be publicly accessible.

Build docs developers (and LLMs) love