Přeskočit obsah

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