Room Policy v1¶
Source schema: doc/schemas/room-policy.v1.schema.json
Room access, exposure and retention policy referenced by room.v1.
Governing Basis¶
Project Lineage¶
Fields¶
| Field | Required | Shape | Description |
|---|---|---|---|
schema/v |
yes |
const: 1 |
|
policy/id |
yes |
string | |
access/closed |
yes |
boolean | |
access/list |
yes |
array | |
exposure |
yes |
enum: private-to-swarm, federation-local, cross-federation, global |
|
policy/profile |
yes |
enum: none, mediated-only, direct-live-allowed |
|
human/linked-messages |
yes |
enum: denied, allowed-via-node-mediation, allowed |
|
human/live-participation |
yes |
enum: denied, allowed |
|
live/retention |
yes |
enum: non-retained, member-local-capture-only, public-policy-defined |
|
max/live-message-bytes |
no |
integer | |
created-at |
yes |
string | |
expires-at |
no |
string | |
extensions |
no |
ref: room.v1.schema.json#/$defs/extensions |
Conditional Rules¶
Rule 1¶
When:
{
"properties": {
"policy/profile": {
"const": "none"
}
},
"required": [
"policy/profile"
]
}
Then:
{
"properties": {
"human/linked-messages": {
"const": "denied"
},
"human/live-participation": {
"const": "denied"
}
}
}
Rule 2¶
When:
{
"properties": {
"policy/profile": {
"const": "mediated-only"
}
},
"required": [
"policy/profile"
]
}
Then:
{
"properties": {
"human/linked-messages": {
"const": "allowed-via-node-mediation"
},
"human/live-participation": {
"const": "denied"
}
}
}
Rule 3¶
When:
{
"properties": {
"policy/profile": {
"const": "direct-live-allowed"
}
},
"required": [
"policy/profile"
]
}
Then:
{
"properties": {
"human/linked-messages": {
"const": "allowed"
},
"human/live-participation": {
"const": "allowed"
}
}
}
Field Semantics¶
schema/v¶
- Required:
yes - Shape: const:
1
policy/id¶
- Required:
yes - Shape: string
access/closed¶
- Required:
yes - Shape: boolean
access/list¶
- Required:
yes - Shape: array
exposure¶
- Required:
yes - Shape: enum:
private-to-swarm,federation-local,cross-federation,global
policy/profile¶
- Required:
yes - Shape: enum:
none,mediated-only,direct-live-allowed
human/linked-messages¶
- Required:
yes - Shape: enum:
denied,allowed-via-node-mediation,allowed
human/live-participation¶
- Required:
yes - Shape: enum:
denied,allowed
live/retention¶
- Required:
yes - Shape: enum:
non-retained,member-local-capture-only,public-policy-defined
max/live-message-bytes¶
- Required:
no - Shape: integer
created-at¶
- Required:
yes - Shape: string
expires-at¶
- Required:
no - Shape: string
extensions¶
- Required:
no - Shape: ref:
room.v1.schema.json#/$defs/extensions