Room Moderation Intent v1¶
Source schema: doc/schemas/room-moderation-intent.v1.schema.json
Governing Basis¶
Project Lineage¶
Fields¶
| Field | Required | Shape | Description |
|---|---|---|---|
schema/v |
yes |
const: 1 |
|
intent/ref |
yes |
string | |
idempotency/key |
yes |
string | |
room/id |
yes |
ref: room.v1.schema.json#/$defs/room_id |
|
action |
yes |
enum: invite, kick, remove, deny, reinstate, mute, unmute, floor-assign, floor-advance, floor-release |
|
target/subject |
yes |
ref: room.v1.schema.json#/$defs/subject |
|
expected/high-water |
yes |
integer | |
policy/generation |
yes |
integer | |
expires-at |
no |
string | |
supersedes/ref |
no |
string | |
reason/code |
yes |
string | |
reason/ref |
no |
string | |
requested-at |
yes |
string |
Conditional Rules¶
Rule 1¶
When:
{
"properties": {
"action": {
"const": "deny"
}
},
"required": [
"action"
]
}
Then:
{
"not": {
"required": [
"supersedes/ref"
]
}
}
Rule 2¶
When:
{
"properties": {
"action": {
"const": "reinstate"
}
},
"required": [
"action"
]
}
Then:
{
"required": [
"supersedes/ref"
],
"not": {
"required": [
"expires-at"
]
}
}
Rule 3¶
When:
{
"properties": {
"action": {
"not": {
"enum": [
"deny",
"reinstate"
]
}
}
},
"required": [
"action"
]
}
Then:
{
"not": {
"anyOf": [
{
"required": [
"expires-at"
]
},
{
"required": [
"supersedes/ref"
]
}
]
}
}
Field Semantics¶
schema/v¶
- Required:
yes - Shape: const:
1
intent/ref¶
- Required:
yes - Shape: string
idempotency/key¶
- Required:
yes - Shape: string
room/id¶
- Required:
yes - Shape: ref:
room.v1.schema.json#/$defs/room_id
action¶
- Required:
yes - Shape: enum:
invite,kick,remove,deny,reinstate,mute,unmute,floor-assign,floor-advance,floor-release
target/subject¶
- Required:
yes - Shape: ref:
room.v1.schema.json#/$defs/subject
expected/high-water¶
- Required:
yes - Shape: integer
policy/generation¶
- Required:
yes - Shape: integer
expires-at¶
- Required:
no - Shape: string
supersedes/ref¶
- Required:
no - Shape: string
reason/code¶
- Required:
yes - Shape: string
reason/ref¶
- Required:
no - Shape: string
requested-at¶
- Required:
yes - Shape: string