Room Event v1¶
Source schema: doc/schemas/room-event.v1.schema.json
Durable room lifecycle or scoped authority event payload carried by an Agora record envelope.
Governing Basis¶
Project Lineage¶
Fields¶
| Field | Required | Shape | Description |
|---|---|---|---|
schema/v |
yes |
const: 1 |
|
room/id |
yes |
ref: room.v1.schema.json#/$defs/room_id |
|
event |
yes |
enum: opened, delegated, delegation-revoked, member-granted, member-revoked, ready, expired, closed |
|
authority/subject |
yes |
ref: room.v1.schema.json#/$defs/subject |
|
subject |
no |
ref: room.v1.schema.json#/$defs/subject |
|
delegation/id |
no |
string | |
delegation/scopes |
no |
array | |
delegation/expires-at |
no |
string | |
delegation/ref |
no |
string | |
seq/no |
yes |
integer | |
created-at |
yes |
string | |
reason/ref |
no |
string | |
extensions |
no |
ref: room.v1.schema.json#/$defs/extensions |
Conditional Rules¶
Rule 1¶
When:
{
"properties": {
"event": {
"const": "delegated"
}
},
"required": [
"event"
]
}
Then:
{
"required": [
"subject",
"delegation/id",
"delegation/scopes",
"delegation/expires-at"
],
"not": {
"required": [
"delegation/ref"
]
}
}
Rule 2¶
When:
{
"properties": {
"event": {
"const": "delegation-revoked"
}
},
"required": [
"event"
]
}
Then:
{
"required": [
"delegation/ref"
],
"not": {
"anyOf": [
{
"required": [
"delegation/id"
]
},
{
"required": [
"delegation/scopes"
]
},
{
"required": [
"delegation/expires-at"
]
}
]
}
}
Field Semantics¶
schema/v¶
- Required:
yes - Shape: const:
1
room/id¶
- Required:
yes - Shape: ref:
room.v1.schema.json#/$defs/room_id
event¶
- Required:
yes - Shape: enum:
opened,delegated,delegation-revoked,member-granted,member-revoked,ready,expired,closed
authority/subject¶
- Required:
yes - Shape: ref:
room.v1.schema.json#/$defs/subject
subject¶
- Required:
no - Shape: ref:
room.v1.schema.json#/$defs/subject
delegation/id¶
- Required:
no - Shape: string
delegation/scopes¶
- Required:
no - Shape: array
delegation/expires-at¶
- Required:
no - Shape: string
delegation/ref¶
- Required:
no - Shape: string
seq/no¶
- Required:
yes - Shape: integer
created-at¶
- Required:
yes - Shape: string
reason/ref¶
- Required:
no - Shape: string
extensions¶
- Required:
no - Shape: ref:
room.v1.schema.json#/$defs/extensions