quota-window-staleness-unmarked, not-logged-in-bills-reservation, structured-output-type-unchecked, resume-after-structured-turn. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
116 lines
2.9 KiB
JSON
116 lines
2.9 KiB
JSON
{
|
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
"title": "SpendReadout",
|
|
"type": "object",
|
|
"properties": {
|
|
"at_unix_ms": {
|
|
"type": "integer",
|
|
"format": "uint64",
|
|
"minimum": 0
|
|
},
|
|
"callers": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/$defs/CallerSpend"
|
|
}
|
|
},
|
|
"plan_quota": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/$defs/PlanQuota"
|
|
}
|
|
},
|
|
"schema_id": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"schema_id",
|
|
"at_unix_ms",
|
|
"callers",
|
|
"plan_quota"
|
|
],
|
|
"$defs": {
|
|
"CallerSpend": {
|
|
"description": "One caller's current spend window in micro-USD. `spent` is settled charges\nplus what a crash left counted at its full reservation; `reserved` is what\ncalls in flight hold, and both count against the ceiling.",
|
|
"type": "object",
|
|
"properties": {
|
|
"caller_id": {
|
|
"type": "string"
|
|
},
|
|
"ceiling_micro_usd": {
|
|
"type": "integer",
|
|
"format": "uint64",
|
|
"minimum": 0
|
|
},
|
|
"reserved_micro_usd": {
|
|
"type": "integer",
|
|
"format": "uint64",
|
|
"minimum": 0
|
|
},
|
|
"spent_micro_usd": {
|
|
"type": "integer",
|
|
"format": "uint64",
|
|
"minimum": 0
|
|
},
|
|
"window_ms": {
|
|
"type": "integer",
|
|
"format": "uint64",
|
|
"minimum": 0
|
|
}
|
|
},
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"caller_id",
|
|
"window_ms",
|
|
"ceiling_micro_usd",
|
|
"spent_micro_usd",
|
|
"reserved_micro_usd"
|
|
]
|
|
},
|
|
"PlanQuota": {
|
|
"description": "One window of the subscription plan, as the provider reported it.",
|
|
"type": "object",
|
|
"properties": {
|
|
"observed_at_unix_ms": {
|
|
"description": "When this window was last reported. Its age in a readout is the
|
|
readout's `at_unix_ms` minus this.",
|
|
"type": "integer",
|
|
"format": "uint64",
|
|
"minimum": 0
|
|
},
|
|
"resets_at_unix_ms": {
|
|
"type": "integer",
|
|
"format": "uint64",
|
|
"minimum": 0
|
|
},
|
|
"status": {
|
|
"type": "string"
|
|
},
|
|
"utilization_permille": {
|
|
"description": "How much of the window was used when it was observed, in thousandths;
|
|
`None` once the window has reset (`status` is then `expired`), because
|
|
the old reading says nothing about the new window.",
|
|
"type": [
|
|
"integer",
|
|
"null"
|
|
],
|
|
"format": "uint32",
|
|
"minimum": 0
|
|
},
|
|
"window": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"window",
|
|
"utilization_permille",
|
|
"resets_at_unix_ms",
|
|
"status",
|
|
"observed_at_unix_ms"
|
|
]
|
|
}
|
|
}
|
|
}
|