at.happyproto.fleet.getTenantUsage
{
"$type": "com.atproto.lexicon.schema",
"defs": {
"gap": {
"properties": {
"hour": {
"format": "datetime",
"type": "string"
},
"reason": {
"knownValues": [
"missing",
"agent_unreachable"
],
"type": "string"
}
},
"required": [
"hour",
"reason"
],
"type": "object"
},
"main": {
"description": "One tenant's metered usage by hour or day, with the hours that have no report. Proxied from the provisioner. Admin only.",
"errors": [
{
"description": "This endpoint requires an authenticated caller.",
"name": "AuthRequired"
},
{
"description": "The caller is not HappyProto staff, or the provisioner does not treat them as staff.",
"name": "Forbidden"
},
{
"description": "The provisioner refused the range or grain, for example a range that runs backwards or is too long.",
"name": "InvalidRequest"
},
{
"description": "Passed through from the provisioner.",
"name": "NotFound"
},
{
"description": "Passed through from the provisioner.",
"name": "InvalidSlug"
},
{
"description": "Passed through from the provisioner.",
"name": "SlugTaken"
},
{
"description": "Passed through from the provisioner.",
"name": "NotEntitled"
},
{
"description": "Passed through from the provisioner.",
"name": "InstanceLimit"
},
{
"description": "Passed through from the provisioner.",
"name": "NoCapacity"
},
{
"description": "Passed through from the provisioner.",
"name": "OperationInProgress"
},
{
"description": "The provisioner could not complete the request.",
"name": "Upstream"
}
],
"output": {
"encoding": "application/json",
"schema": {
"properties": {
"gaps": {
"items": {
"ref": "#gap",
"type": "ref"
},
"type": "array"
},
"grain": {
"knownValues": [
"hour",
"day"
],
"type": "string"
},
"rows": {
"items": {
"ref": "#row",
"type": "ref"
},
"type": "array"
},
"tenant": {
"type": "string"
}
},
"required": [
"tenant",
"grain",
"rows",
"gaps"
],
"type": "object"
}
},
"parameters": {
"properties": {
"from": {
"description": "Start of the range. Defaults to one day before `to` at hour grain, 30 days at day grain.",
"format": "datetime",
"type": "string"
},
"grain": {
"description": "Defaults to hour. Hour ranges may span 31 days, day ranges 400.",
"enum": [
"hour",
"day"
],
"knownValues": [
"hour",
"day"
],
"type": "string"
},
"tenant": {
"description": "The instance id.",
"type": "string"
},
"to": {
"description": "End of the range. Defaults to now.",
"format": "datetime",
"type": "string"
}
},
"required": [
"tenant"
],
"type": "params"
},
"type": "query"
},
"row": {
"description": "One hour or day of usage, summed across the tenant's hosts. `hour` is set at hour grain and `day` at day grain.",
"properties": {
"apiClients": {
"type": "integer"
},
"cpuUsec": {
"type": "integer"
},
"day": {
"description": "UTC date, YYYY-MM-DD.",
"type": "string"
},
"diskAvgBytes": {
"type": "integer"
},
"diskPeakBytes": {
"type": "integer"
},
"egressBytes": {
"type": "integer"
},
"hour": {
"format": "datetime",
"type": "string"
},
"ingressBytes": {
"type": "integer"
},
"memByteSeconds": {
"type": "integer"
},
"memPeakBytes": {
"type": "integer"
},
"partial": {
"description": "Some samples for this period were missing.",
"type": "boolean"
},
"runningSeconds": {
"type": "integer"
},
"seats": {
"type": "integer"
}
},
"required": [
"runningSeconds",
"cpuUsec",
"memByteSeconds",
"memPeakBytes",
"egressBytes",
"ingressBytes",
"partial"
],
"type": "object"
}
},
"id": "at.happyproto.fleet.getTenantUsage",
"lexicon": 1
}
Metadata
- DID
-
did:plc:mo7vq4jbioxwafy5zkcc3eux - CID
-
bafyreianem7veb6k3fpt766gqolly2blcwgcn4yznxpcgelmspt76swzdq - Indexed At
- 2026-10-27 18:16 UTC
- AT-URI
-
at://did:plc:mo7vq4jbioxwafy5zkcc3eux/com.atproto.lexicon.schema/at.happyproto.fleet.getTenantUsage
Similar Lexicons
Lexicons whose schemas describe something close to this one. Check them before publishing a new one that overlaps.
-
Store capacity: the latest totals, a daily trend, per-collection counts and what each tenant holds. Proxied from the provisioner. Admin only.
-
Fleet and per-instance growth rates from instance_daily_deltas. Counter resets are excluded by the view, so a wiped volume lowers no rate. Admin only.
-
Disk and memory distribution, and bytes per record. Memory is reported as separate anonymous and file-backed figures and is never totalled. Admin only.