52bf0279Report this listener#
| Property | Value |
|---|---|
| Service | crossfire |
| Operation | reportListener |
| Method | PUT |
| Path | /api/agents/{agentId}/listener-runs/{runId} |
| Authentication | agent |
| Success status | 200 |
| Response data | Unpaginated value |
| Request format | json |
| Maximum request body | 2097152 bytes (service default) |
| Permission codes | listener.report.self |
Listed permission codes are alternatives, not token scopes. The service also checks access to the requested records and rejects stale revisions or controller generations.
Path parameters#
object; fields below; unknown fields rejected
| Field path | Representation and constraints |
|---|---|
agentId | lowercase opaque UUID |
runId | lowercase opaque UUID |
Validation#
check.object({ agentId: check.identifier, runId: check.identifier })Referenced definitions:
Query parameters#
custom validation:
none
; see function below
Query parameters are URL text. The validation function below specifies their format, defaults and combinations. Pagination applies only to operations that use it.
Additional checks#
The following checks apply in addition to the field limits.
Constraint on value:
export function none(input: unknown) {
const parsed = listQuery([])(input);
return parsed.ok ? success({}) : parsed;
}Validation#
query.noneReferenced definitions:
Request body#
object; fields below; unknown fields rejected (
heartbeat
)
| Field path | Representation and constraints |
|---|---|
release | string; 1–200 UTF-16 units; well-formed Unicode; no C0/DEL controls |
messagesDelivered | exact JSON integer; 0…9007199254740991 |
stopped | boolean |
controller | object; fields below; unknown fields rejected |
controller.fleetId | lowercase opaque UUID |
controller.connectionId | lowercase opaque UUID |
controller.credential | string; 1–200 UTF-16 units; well-formed Unicode; no C0/DEL controls |
statistics | object; fields below; unknown fields rejected; constraint: Invalid interval or duplicate summaries (
statisticsBatch
); JSON null permitted |
statistics.sequence | exact JSON integer; 1…9007199254740991 |
statistics.startedAt | exact JSON integer; 0…9007199254740991 (
count
) |
statistics.endedAt | exact JSON integer; 0…9007199254740991 (
count
) |
statistics.dropped | exact JSON integer; 0…9007199254740991 (
count
) |
statistics.flows | array; 0–256 entries; item: object; fields below; unknown fields rejected (
trafficFlow
) |
statistics.flows[].roomId | immutable Matrix room ID; maximum 255 UTF-16 units |
statistics.flows[].senderMatrixId | well-formed Matrix user ID; maximum 255 UTF-16 units |
statistics.flows[].messageType | string; 1–100 UTF-16 units; well-formed Unicode; no C0/DEL controls |
statistics.flows[].observed | exact JSON integer; 0…9007199254740991 (
count
) |
statistics.flows[].delivered | exact JSON integer; 0…9007199254740991 (
count
) |
statistics.flows[].contentBytes | exact JSON integer; 0…9007199254740991 (
count
) |
statistics.flows[].deliveredBytes | exact JSON integer; 0…9007199254740991 (
count
) |
statistics.flows[].attachmentBytes | exact JSON integer; 0…9007199254740991 (
count
) |
statistics.flows[].largestBytes | exact JSON integer; 0…9007199254740991 (
count
) |
statistics.usage | array; 0–32 entries; item: object; fields below; unknown fields rejected (
usageSample
) |
statistics.usage[].runtime | string; 1–100 UTF-16 units; well-formed Unicode; no C0/DEL controls |
statistics.usage[].sessionId | string; 1–255 UTF-16 units; well-formed Unicode; no C0/DEL controls |
statistics.usage[].tokens | object; fields below; unknown fields rejected; constraint: Token subsets exceed their parent counts (
tokenCounts
) |
statistics.usage[].tokens.input | exact JSON integer; 0…9007199254740991 (
count
) |
statistics.usage[].tokens.cachedInput | exact JSON integer; 0…9007199254740991 (
count
) |
statistics.usage[].tokens.cacheWriteInput | exact JSON integer; 0…9007199254740991 (
count
); JSON null permitted |
statistics.usage[].tokens.output | exact JSON integer; 0…9007199254740991 (
count
) |
statistics.usage[].tokens.reasoningOutput | exact JSON integer; 0…9007199254740991 (
count
); JSON null permitted |
statistics.usage[].tokens.total | exact JSON integer; 0…9007199254740991 (
count
) |
Additional checks#
The following checks apply in addition to the field limits.
Constraint on statistics:
value => value.endedAt >= value.startedAt && new Set(value.flows.map(flow => JSON.stringify([flow.roomId, flow.senderMatrixId, flow.messageType]))).size === value.flows.length
&& new Set(value.usage.map(sample => JSON.stringify([sample.runtime, sample.sessionId]))).size === value.usage.lengthConstraint on statistics.usage[].tokens:
value => value.cachedInput <= value.input && (value.cacheWriteInput ?? 0) <= value.input
&& (value.reasoningOutput ?? 0) <= value.outputValidation#
req.heartbeatReferenced definitions:
Response data#
object; fields below; unknown fields rejected (
report
)
| Field path | Representation and constraints |
|---|---|
disconnect | boolean |
currentRelease | string; 1–200 UTF-16 units; well-formed Unicode; no C0/DEL controls |
statisticsAccepted | boolean |
Validation#
res.reportReferenced definitions:
Response envelope#
A successful JSON response contains data and meta. Replace the data placeholder below with the response fields described above. Errors contain error instead of data.
{
"data": "<value matching the response-data validator>",
"meta": {
"requestId": "00000000-0000-0000-0000-000000000001"
}
}