Fleet directory#

PropertyValue
Servicecrossfire
Operationfleets
MethodGET
Path/api/fleets
Authenticationhuman
Success status200
Response dataPaginated collection
Request formatjson
Maximum request body2097152 bytes (service default)
Permission codesagent.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.empty

Referenced 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.fleets

Referenced definitions:

Request body#

empty object; unknown fields rejected

Validation#

check.empty

Referenced definitions:

Response data#

array; 0–100 entries; item: object; fields below; unknown fields rejected ( fleet )

Field pathRepresentation and constraints
[].fleetIdlowercase opaque UUID
[].ownerobject; fields below; unknown fields rejected ( principal )
[].owner.principalIdlowercase opaque UUID
[].owner.matrixUserIdwell-formed Matrix user ID; maximum 255 UTF-16 units
[].owner.kindhuman or agent
[].owner.displayNamestring; 1–255 UTF-16 units; well-formed Unicode; no C0/DEL controls
[].owner.ownerIdlowercase opaque UUID
[].owner.ownerMatrixIdwell-formed Matrix user ID; maximum 255 UTF-16 units
[].fleetKeylowercase name; pattern [a-z][a-z0-9-]{0,39}
[].labelstring; 1–100 UTF-16 units; well-formed Unicode; no C0/DEL controls
[].controllerobject; fields below; unknown fields rejected ( controller )
[].controller.namestring; 1–100 UTF-16 units; well-formed Unicode; no C0/DEL controls
[].controller.metadatacustom validation: metadata ; see function below; optional property
[].revisionexact JSON integer; 0…9007199254740991
[].createdAtexact JSON integer; 0…9007199254740991
[].updatedAtexact JSON integer; 0…9007199254740991
[].deliveryobject; fields below; unknown fields rejected ( fleetControl )
[].delivery.fleetIdlowercase opaque UUID
[].delivery.revisionexact JSON integer; 0…9007199254740991
[].delivery.deliveryEnabledboolean
[].delivery.connectionobject; fields below; unknown fields rejected
[].delivery.connection.statusonline or offline
[].delivery.connection.lastSeenAtexact JSON integer; 0…9007199254740991; JSON null permitted
[].canArchiveboolean
[].allowedActionsarray; 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
  }
}