52bf0279Fleet directory#
| Property | Value |
|---|---|
| Service | crossfire |
| Operation | fleets |
| Method | GET |
| Path | /api/fleets |
| Authentication | human |
| 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#
empty object; unknown fields rejected
Validation#
check.emptyReferenced definitions:
Query parameters#
custom validation:
fleets
; see function below
Accepted query parameters: ownerId, search.
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 fleets(input: unknown) {
const parsed = checked(input, ['ownerId', 'search']);
if (!parsed.ok)
return parsed;
const params = new URLSearchParams(parsed.value), search = params.get('search') ?? '';
params.delete('search');
if (!check.text(200, 0)(search).ok)
return failure('invalid', 'Invalid search');
const scope = scoped(params);
return scope.ok ? success({ ...scope.value, search }) : scope;
}Validation#
query.fleetsReferenced definitions:
Request body#
empty object; unknown fields rejected
Validation#
check.emptyReferenced definitions:
Response data#
array; 0–100 entries; item: object; fields below; unknown fields rejected (
fleet
)
| Field path | Representation and constraints |
|---|---|
[].fleetId | lowercase opaque UUID |
[].owner | object; fields below; unknown fields rejected (
principal
) |
[].owner.principalId | lowercase opaque UUID |
[].owner.matrixUserId | well-formed Matrix user ID; maximum 255 UTF-16 units |
[].owner.kind | human or agent |
[].owner.displayName | string; 1–255 UTF-16 units; well-formed Unicode; no C0/DEL controls |
[].owner.ownerId | lowercase opaque UUID |
[].owner.ownerMatrixId | well-formed Matrix user ID; maximum 255 UTF-16 units |
[].fleetKey | lowercase name; pattern [a-z][a-z0-9-]{0,39} |
[].label | string; 1–100 UTF-16 units; well-formed Unicode; no C0/DEL controls |
[].controller | object; fields below; unknown fields rejected (
controller
) |
[].controller.name | string; 1–100 UTF-16 units; well-formed Unicode; no C0/DEL controls |
[].controller.metadata | custom validation:
metadata
; see function below; optional property |
[].revision | exact JSON integer; 0…9007199254740991 |
[].createdAt | exact JSON integer; 0…9007199254740991 |
[].updatedAt | exact JSON integer; 0…9007199254740991 |
[].delivery | object; fields below; unknown fields rejected (
fleetControl
) |
[].delivery.fleetId | lowercase opaque UUID |
[].delivery.revision | exact JSON integer; 0…9007199254740991 |
[].delivery.deliveryEnabled | boolean |
[].delivery.connection | object; fields below; unknown fields rejected |
[].delivery.connection.status | online or offline |
[].delivery.connection.lastSeenAt | exact JSON integer; 0…9007199254740991; JSON null permitted |
[].canArchive | boolean |
[].allowedActions | array; 0–2 entries; item: configure or archive |
Additional checks#
The following checks apply in addition to the field limits.
Constraint on [].controller.metadata:
function metadata(input: unknown): Result<Record<string, string>> {
if (!input || typeof input !== 'object' || Array.isArray(input) || Object.keys(input).length > 16)
return failure('invalid', 'Controller metadata supports at most 16 text fields');
const output: Record<string, string> = {};
for (const [key, value] of Object.entries(input)) {
if (!/^[a-z][a-z0-9-]{0,39}$/u.test(key) || !check.text(256, 0)(value).ok || typeof value !== 'string')
return failure('invalid', 'Invalid controller metadata');
output[key] = value;
}
return success(output);
}Validation#
check.list(res.fleet, 100)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
}
}