52bf0279Paginated fleet message receipt history#
| Property | Value |
|---|---|
| Service | crossfire |
| Operation | fleetMessages |
| Method | GET |
| Path | /api/fleets/{fleetId}/messages |
| Authentication | fleet |
| Success status | 200 |
| Response data | Paginated collection |
| Request format | json |
| Maximum request body | 2097152 bytes (service default) |
| Permission codes | agent.read.owned, agent.read.any |
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 |
|---|---|
fleetId | lowercase opaque UUID |
Validation#
check.object({ fleetId: check.identifier })Referenced definitions:
Query parameters#
custom validation:
messagePage
; see function below
Accepted query parameters: page, pageSize.
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 messagePage(input: unknown) {
const values = listQuery(['page', 'pageSize'])(input);
if (!values.ok)
return values;
const page = queryInteger(values.value.get('page') ?? '1', 1, 100000);
const pageSize = queryInteger(values.value.get('pageSize') ?? '10', 1, 10);
if (!page.ok)
return page;
if (!pageSize.ok)
return pageSize;
return success({ page: page.value, pageSize: pageSize.value });
}Validation#
fleetControl.messagePageReferenced definitions:
Request body#
empty object; unknown fields rejected
Validation#
check.emptyReferenced definitions:
Response data#
array; 0–10 entries; item: object; fields below; unknown fields rejected (
fleetMessageSummary
)
| Field path | Representation and constraints |
|---|---|
[].messageId | lowercase opaque UUID |
[].body | plain-text string; at most 16384 UTF-8 bytes; allowed whitespace controls only; constraint: Expected a fleet message of 1–4096 characters (
messageBody
) |
[].createdAt | exact JSON integer; 0…9007199254740991 |
[].expiresAt | exact JSON integer; 0…9007199254740991 |
[].total | exact JSON integer; 0…100 |
[].delivered | exact JSON integer; 0…100 |
[].failed | exact JSON integer; 0…100 |
[].skipped | exact JSON integer; 0…100 |
[].pending | exact JSON integer; 0…100 |
[].expired | exact JSON integer; 0…100 |
Additional checks#
The following checks apply in addition to the field limits.
Constraint on [].body:
body => !!body.trim() && body.length <= 4096Validation#
check.list(fleetControl.fleetMessageSummary, 10)Referenced 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",
"page": 1,
"pageSize": 20,
"totalItems": 0,
"totalPages": 1
}
}