52bf0279Review complete room plan#
| Property | Value |
|---|---|
| Service | crossfire |
| Operation | previewGrants |
| Method | POST |
| Path | /api/room-grant-previews |
| Authentication | human |
| Success status | 200 |
| Response data | Unpaginated value |
| Request format | json |
| Maximum request body | 2097152 bytes (service default) |
| Permission codes | agent.room-grant.manage.owned, agent.room-grant.manage.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:
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 (
planPreview
)
| Field path | Representation and constraints |
|---|---|
plan | object; fields below; unknown fields rejected (
plan
) |
plan.fleetId | lowercase opaque UUID |
plan.agents | array; 1–100 entries; item: object; fields below; unknown fields rejected |
plan.agents[].instanceKey | lowercase name; pattern [a-z][a-z0-9-]{0,39} |
plan.agents[].grants | array; 0–100 entries; item: object; fields below; unknown fields rejected (
grantIntent
) |
plan.agents[].grants[].roomId | immutable Matrix room ID; maximum 255 UTF-16 units |
plan.agents[].grants[].accessMode | read or reply or custom |
plan.agents[].grants[].powerLevel | exact JSON integer; -9007199254740991…9007199254740991; JSON null permitted |
plan.agents[].grants[].muted | boolean |
Validation#
req.planPreviewReferenced definitions:
Response data#
object; fields below; unknown fields rejected (
preview
)
| Field path | Representation and constraints |
|---|---|
digest | string; 64–64 UTF-16 units; well-formed Unicode; no C0/DEL controls |
snapshots | array; 0–100 entries; item: object; fields below; unknown fields rejected |
snapshots[].agentId | lowercase opaque UUID |
snapshots[].revision | exact JSON integer; 0…9007199254740991 |
snapshots[].grants | array; 0–100 entries; item: object; fields below; unknown fields rejected |
snapshots[].grants[].roomId | immutable Matrix room ID; maximum 255 UTF-16 units |
snapshots[].grants[].generation | lowercase opaque UUID |
snapshots[].grants[].revision | exact JSON integer; 0…9007199254740991 |
changes | array; 0–10000 entries; item: object; fields below; unknown fields rejected |
changes[].agentId | lowercase opaque UUID |
changes[].roomId | immutable Matrix room ID; maximum 255 UTF-16 units |
changes[].before | object; fields below; unknown fields rejected (
grant
); JSON null permitted |
changes[].before.agentId | lowercase opaque UUID |
changes[].before.roomId | immutable Matrix room ID; maximum 255 UTF-16 units |
changes[].before.generation | lowercase opaque UUID |
changes[].before.authorizerId | lowercase opaque UUID |
changes[].before.addedById | lowercase opaque UUID |
changes[].before.accessMode | none or read or reply or custom |
changes[].before.powerLevel | exact JSON integer; -9007199254740991…9007199254740991; JSON null permitted |
changes[].before.muted | boolean |
changes[].before.revision | exact JSON integer; 0…9007199254740991 |
changes[].before.accessRevision | exact JSON integer; 0…9007199254740991 |
changes[].before.updatedAt | exact JSON integer; 0…9007199254740991 |
changes[].agentName | string; 1–255 UTF-16 units; well-formed Unicode; no C0/DEL controls |
changes[].instanceKey | lowercase name; pattern [a-z][a-z0-9-]{0,39} |
changes[].roomName | string; 1–255 UTF-16 units; well-formed Unicode; no C0/DEL controls |
changes[].roomAlias | string; 1–255 UTF-16 units; well-formed Unicode; no C0/DEL controls; JSON null permitted |
changes[].after | object; fields below; unknown fields rejected (
grantIntent
); JSON null permitted |
changes[].after.roomId | immutable Matrix room ID; maximum 255 UTF-16 units |
changes[].after.accessMode | read or reply or custom |
changes[].after.powerLevel | exact JSON integer; -9007199254740991…9007199254740991; JSON null permitted |
changes[].after.muted | boolean |
changes[].changed | boolean |
changes[].authorizerId | lowercase opaque UUID |
changes[].nativePowerLevel | exact JSON integer; -9007199254740991…9007199254740991; JSON null permitted |
changes[].nativeCreator | boolean |
Validation#
plan.previewReferenced 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"
}
}