{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"title": "sleet response",
"description": "A response from any subcommand run with `--format json`, one variant\nper command. Exists to generate the single response schema: each\ncommand's response is a named definition under `$defs`, so consumers\nvalidate against e.g. `#/$defs/StatusResponse`.",
"anyOf": [
{
"description": "`sleet status`.",
"$ref": "#/$defs/StatusResponse"
},
{
"description": "`sleet register`.",
"$ref": "#/$defs/RegisterResponse"
},
{
"description": "`sleet mirror sync`.",
"$ref": "#/$defs/MirrorSyncResponse"
},
{
"description": "`sleet mirror restore`.",
"$ref": "#/$defs/MirrorRestoreResponse"
}
],
"$defs": {
"DatabaseStatus": {
"description": "One registered database and its service placement.",
"type": "object",
"properties": {
"queue": {
"description": "Compaction queue depth from `.compactions`; present only with\n`sleet status --compactions`.",
"anyOf": [
{
"$ref": "#/$defs/QueueStatus"
},
{
"type": "null"
}
]
},
"services": {
"description": "Placement of each configured service.",
"type": "array",
"items": {
"$ref": "#/$defs/ServicePlacement"
}
},
"url": {
"description": "The database's canonical URL.",
"type": "string"
}
},
"required": [
"url",
"services"
]
},
"HumanDuration": {
"description": "A duration in humantime form, e.g. \"10s\", \"5m\", \"1h 30m\".",
"type": "string",
"pattern": "^([0-9]+ *[a-zµ]+ *)+$"
},
"MirrorRestoreResponse": {
"title": "sleet mirror restore response",
"description": "The `sleet mirror restore` response.",
"type": "object",
"properties": {
"backup": {
"description": "The backup root restored from.",
"type": "string"
},
"bytes_copied": {
"description": "Data bytes copied.",
"type": "integer",
"format": "uint64",
"minimum": 0
},
"destination": {
"description": "The destination root restored into.",
"type": "string"
},
"manifest_id": {
"description": "The restore point committed as the destination's head.",
"type": "integer",
"format": "uint64",
"minimum": 0
},
"manifests_committed": {
"description": "Manifests committed.",
"type": "integer",
"format": "uint64",
"minimum": 0
},
"objects_copied": {
"description": "Data objects copied.",
"type": "integer",
"format": "uint64",
"minimum": 0
}
},
"required": [
"backup",
"destination",
"manifest_id",
"manifests_committed",
"objects_copied",
"bytes_copied"
]
},
"MirrorStatus": {
"description": "One `(database, target)` mirror's lag, from the source and\ndestination heads.",
"type": "object",
"properties": {
"database": {
"description": "The source database's canonical URL.",
"type": "string"
},
"dest_manifest_id": {
"description": "The destination's latest manifest id (the watermark).",
"type": [
"integer",
"null"
],
"format": "uint64",
"minimum": 0
},
"destination": {
"description": "The destination root the target maps this database to.",
"type": "string"
},
"error": {
"description": "Why lag could not be read, if it could not.",
"type": [
"string",
"null"
]
},
"manifests_behind": {
"description": "Manifests the destination is behind.",
"type": [
"integer",
"null"
],
"format": "uint64",
"minimum": 0
},
"seconds_behind": {
"description": "Estimated seconds of lag: source and target sequence numbers\nmapped through the source's sequence tracker.",
"type": [
"integer",
"null"
],
"format": "uint64",
"minimum": 0
},
"source_manifest_id": {
"description": "The source's latest manifest id.",
"type": [
"integer",
"null"
],
"format": "uint64",
"minimum": 0
},
"target": {
"description": "The target's name.",
"type": "string"
},
"wal_behind": {
"description": "WAL ids the destination is behind.",
"type": [
"integer",
"null"
],
"format": "uint64",
"minimum": 0
}
},
"required": [
"database",
"target",
"destination"
]
},
"MirrorSyncResponse": {
"title": "sleet mirror sync response",
"description": "The `sleet mirror sync` response: one pass, plus the prune that\nfollows it when retention is set.",
"type": "object",
"properties": {
"bytes_copied": {
"description": "Data bytes copied; zero for the rclone copier.",
"type": "integer",
"format": "uint64",
"minimum": 0
},
"committed": {
"description": "False when the destination was already at the source's head.",
"type": "boolean"
},
"database": {
"description": "The source database's canonical URL.",
"type": "string"
},
"destination": {
"description": "The destination root.",
"type": "string"
},
"head": {
"description": "The manifest id the destination head ended at.",
"type": "integer",
"format": "uint64",
"minimum": 0
},
"manifests_committed": {
"description": "Manifests written to the destination.",
"type": "integer",
"format": "uint64",
"minimum": 0
},
"objects_copied": {
"description": "Data objects copied.",
"type": "integer",
"format": "uint64",
"minimum": 0
},
"pruned_manifests": {
"description": "Manifests the prune deleted; zero without retention.",
"type": "integer",
"format": "uint64",
"minimum": 0
},
"pruned_objects": {
"description": "Data objects the prune deleted; zero without retention.",
"type": "integer",
"format": "uint64",
"minimum": 0
},
"target": {
"description": "The target's name.",
"type": "string"
}
},
"required": [
"database",
"target",
"destination",
"head",
"committed",
"manifests_committed",
"objects_copied",
"bytes_copied",
"pruned_manifests",
"pruned_objects"
]
},
"NodeStatus": {
"description": "One fleet member.",
"type": "object",
"properties": {
"heartbeat_age": {
"description": "Age of the heartbeat object.",
"$ref": "#/$defs/HumanDuration"
},
"live": {
"description": "Whether the heartbeat is younger than `heartbeat_timeout`.",
"type": "boolean"
},
"node_id": {
"description": "The node's id, from its heartbeat object name.",
"type": "string"
},
"services": {
"description": "Services the node offers, from its heartbeat object name.",
"type": "array",
"items": {
"$ref": "#/$defs/Service"
}
},
"slatedb_version": {
"description": "The slatedb version the node runs, from the heartbeat body;\nabsent if the body was unreadable.",
"type": [
"string",
"null"
]
},
"sleet_version": {
"description": "The sleet version the node runs, from the heartbeat body; absent\nif the body was unreadable.",
"type": [
"string",
"null"
]
}
},
"required": [
"node_id",
"live",
"heartbeat_age",
"services"
]
},
"QueueStatus": {
"description": "Compaction queue depth for one database.",
"type": "object",
"properties": {
"claimable": {
"description": "Jobs waiting for a worker.",
"type": "integer",
"format": "uint64",
"minimum": 0
},
"running": {
"description": "Jobs a worker is executing.",
"type": "integer",
"format": "uint64",
"minimum": 0
}
},
"required": [
"claimable",
"running"
]
},
"RegisterResponse": {
"title": "sleet register response",
"description": "The `sleet register` response.",
"type": "object",
"properties": {
"created": {
"description": "False if the database was already registered.",
"type": "boolean"
},
"file": {
"description": "The registry object written, relative to the fleet root.",
"type": "string"
},
"url": {
"description": "The canonicalized database URL.",
"type": "string"
}
},
"required": [
"url",
"file",
"created"
]
},
"Service": {
"description": "A per-database service.",
"oneOf": [
{
"description": "Garbage collection.",
"type": "string",
"const": "gc"
},
{
"description": "Standalone compaction coordinator (RFC-0025).",
"type": "string",
"const": "compactor-coordinator"
},
{
"description": "Compaction workers (RFC-0025).",
"type": "string",
"const": "compaction-workers"
},
{
"description": "Mirroring to per-database targets (RFC 0002).",
"type": "string",
"const": "mirror"
}
]
},
"ServicePlacement": {
"description": "Where one database service runs: the top of the service's rendezvous\nranking. One node for `gc` and `compactor-coordinator`, the top\n`count` nodes for `compaction-workers`. Empty means no live node\noffers the service.",
"type": "object",
"properties": {
"nodes": {
"description": "The owning nodes, best-ranked first.",
"type": "array",
"items": {
"type": "string"
}
},
"service": {
"description": "The placed service.",
"$ref": "#/$defs/Service"
}
},
"required": [
"service",
"nodes"
]
},
"StatusResponse": {
"title": "sleet status response",
"description": "The `sleet status` response, derived from the fleet root: node\nliveness, roles, and versions from `nodes/`, registered databases\nfrom `dbs/`, and placement by computing the same rendezvous ranking\nthe nodes do.",
"type": "object",
"properties": {
"databases": {
"description": "Registered databases and their service placement.",
"type": "array",
"items": {
"$ref": "#/$defs/DatabaseStatus"
}
},
"mirrors": {
"description": "Per-target mirror lag; present only with `sleet status\n--mirrors`.",
"type": "array",
"items": {
"$ref": "#/$defs/MirrorStatus"
}
},
"nodes": {
"description": "Every fleet member with a heartbeat object.",
"type": "array",
"items": {
"$ref": "#/$defs/NodeStatus"
}
},
"warnings": {
"description": "Fleet-level problems: registry entries that alias the same\ndatabase, services no live node offers, and the like.",
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"nodes",
"databases"
]
}
}
}