Skip to content

Readiness probe with database introspection.

GET
/status
curl --request GET \
--url https://example.com/status
  • None

JSON envelope for a successful status check.

Media typeapplication/json

JSON envelope for a successful status check.

object
claim

The instance claim state (#994): "claimed" or "unclaimed". Omitted if the iam.instance_claim query fails.

string | null
database
required

Database connection and version details.

object
connections
required

Active connections and pool utilization.

object
active
required
integer format: int32
max
required
integer format: int32
pool_idle
required
integer format: uint
pool_size
required
integer format: uint32
latency_ms
required
number format: double
name
required
string
server_version
required
string
ssl
required

TLS connection status for the database pool.

object
bits
integer | null format: int32
cipher
string | null
enabled
required
boolean
version
string | null
metadata_path
required
string
public_origins
required

The origins this instance accepts SSH challenge signatures for.

object
configured
required

Operator-configured public origins (--public-origin, HENCEFORTH_PUBLIC_ORIGINS), canonical, in the order given. A configured loopback origin is accepted only from a loopback peer.

Array<string>
implicit_loopback
required

Whether the implicit loopback default is active: true only in --dev / --dev --no-auth with no configured origin. Production never has it.

boolean
implicit_loopback_port

The only port the implicit loopback default accepts (the bound port). Present only when implicit_loopback is true.

integer | null format: uint16
<= 65535
status
required
string
Examplegenerated
{
"claim": "example",
"database": {
"connections": {
"active": 1,
"max": 1,
"pool_idle": 1,
"pool_size": 1
},
"latency_ms": 1,
"name": "example",
"server_version": "example",
"ssl": {
"bits": 1,
"cipher": "example",
"enabled": true,
"version": "example"
}
},
"metadata_path": "example",
"public_origins": {
"configured": [
"example"
],
"implicit_loopback": true,
"implicit_loopback_port": 1
},
"status": "example"
}

JSON envelope for a failed status check.

Media typeapplication/json

JSON envelope for a failed status check.

object
error
required
string
metadata_path
required
string
public_origins
required

The origins this instance accepts SSH challenge signatures for. Held in memory from startup, so it is reported even when the database is down.

object
configured
required

Operator-configured public origins (--public-origin, HENCEFORTH_PUBLIC_ORIGINS), canonical, in the order given. A configured loopback origin is accepted only from a loopback peer.

Array<string>
implicit_loopback
required

Whether the implicit loopback default is active: true only in --dev / --dev --no-auth with no configured origin. Production never has it.

boolean
implicit_loopback_port

The only port the implicit loopback default accepts (the bound port). Present only when implicit_loopback is true.

integer | null format: uint16
<= 65535
status
required
string
Examplegenerated
{
"error": "example",
"metadata_path": "example",
"public_origins": {
"configured": [
"example"
],
"implicit_loopback": true,
"implicit_loopback_port": 1
},
"status": "example"
}

Structured error envelope (SPEC-DATA-0006): {"errors": [{"domain", "scope", "target", "code", "message"}, ...]}. domain (added #950 D9) names the subsystem that produced the entry (data, metadata, apply, git, auth, iam, hfx, or api for a transport-level failure with no domain error behind it) and is always present.

Media typeapplication/json

The top-level response body. Wraps a non-empty list of [ErrorEntry].

object
errors
required

The error entries making up the envelope. Always non-empty.

Array<object>

One entry in the error envelope.

Carries a [Domain] naming the subsystem that produced it, an anchoring [ErrorScope], an optional target that disambiguates within the scope, a stable SCREAMING_SNAKE_CASE code, and a human-readable English message. See SPEC-DATA-0006 for the full envelope contract.

object
code
required

Machine-readable, stable, SCREAMING_SNAKE_CASE identifier.

string
domain
required

Which subsystem produced this entry. Always serialized.

One of:

data::error::DataError – record CRUD, validation, queries.

string
Allowed value: data
location
Any of:

HFX source location for an HFX_PARSE entry.

Emitted as the extra location field on the entry JSON when present. The line/column are 1-based. The frame is the offending source line extracted verbatim from the input.

object
column
required

1-based column within the line, measured in UTF-16 code units of the prefix so browser-side editors can consume it directly.

integer format: uint32
frame

The offending source line text, when available.

string | null
line
required

1-based line number within the source text.

integer format: uint32
message
required

Server-authored English message. Not part of the API contract; may change across releases without notice.

string
rule

The key of the validation rule that failed, when the code is RULE_FAILED. None for all other codes. Skipped during serialization when absent so it does not appear on unrelated entries (same pattern as location).

string | null
scope
required

Anchoring category. Drives client-side rendering.

One of:

Attached to a specific request field. target is the field key.

string
Allowed value: field
target

Field key for field scope, record id for record scope, null otherwise. Always serialized, even when null.

string | null
Example
{
"errors": [
{
"domain": "data",
"scope": "field"
}
]
}