Przejdź do treści

Answer Room Metadata v1

Source schema: doc/schemas/answer-room-metadata.v1.schema.json

Machine-readable schema for answer-channel room metadata, including operator participation policy profile and provenance-preservation expectations.

Fields

Field Required Shape Description
schema/v yes const: 1 Schema version.
room/id yes string
question/id yes string
delivery/scope yes enum: private-to-swarm, federation-local, cross-federation, global
room-policy/profile yes enum: none, mediated-only, direct-live-allowed
operator-consultation/allowed yes boolean
operator-direct-live/allowed yes boolean
human-live/origin-flag-required no boolean
summary/human-provenance-required yes boolean
transcript/human-origin-preserved yes boolean
room-policy/effective-at no string
room-policy/changed-by no string
moderation/approval-required no boolean
secretary/required-for-direct-live no boolean
retention/profile no string
policy_annotations no object

Conditional Rules

Rule 1

When:

{
  "properties": {
    "room-policy/profile": {
      "const": "none"
    }
  },
  "required": [
    "room-policy/profile"
  ]
}

Then:

{
  "properties": {
    "operator-consultation/allowed": {
      "const": false
    },
    "operator-direct-live/allowed": {
      "const": false
    }
  }
}

Rule 2

When:

{
  "properties": {
    "room-policy/profile": {
      "const": "mediated-only"
    }
  },
  "required": [
    "room-policy/profile"
  ]
}

Then:

{
  "properties": {
    "operator-consultation/allowed": {
      "const": true
    },
    "operator-direct-live/allowed": {
      "const": false
    }
  }
}

Rule 3

When:

{
  "properties": {
    "room-policy/profile": {
      "const": "direct-live-allowed"
    }
  },
  "required": [
    "room-policy/profile"
  ]
}

Then:

{
  "properties": {
    "operator-consultation/allowed": {
      "const": true
    },
    "operator-direct-live/allowed": {
      "const": true
    },
    "human-live/origin-flag-required": {
      "const": true
    }
  },
  "required": [
    "human-live/origin-flag-required"
  ]
}

Rule 4

When:

{
  "properties": {
    "delivery/scope": {
      "const": "global"
    }
  },
  "required": [
    "delivery/scope"
  ]
}

Then:

{
  "properties": {
    "room-policy/profile": {
      "not": {
        "const": "direct-live-allowed"
      }
    }
  }
}

Field Semantics

schema/v

  • Required: yes
  • Shape: const: 1

Schema version.

room/id

  • Required: yes
  • Shape: string

question/id

  • Required: yes
  • Shape: string

delivery/scope

  • Required: yes
  • Shape: enum: private-to-swarm, federation-local, cross-federation, global

room-policy/profile

  • Required: yes
  • Shape: enum: none, mediated-only, direct-live-allowed

operator-consultation/allowed

  • Required: yes
  • Shape: boolean

operator-direct-live/allowed

  • Required: yes
  • Shape: boolean

human-live/origin-flag-required

  • Required: no
  • Shape: boolean

summary/human-provenance-required

  • Required: yes
  • Shape: boolean

transcript/human-origin-preserved

  • Required: yes
  • Shape: boolean

room-policy/effective-at

  • Required: no
  • Shape: string

room-policy/changed-by

  • Required: no
  • Shape: string

moderation/approval-required

  • Required: no
  • Shape: boolean

secretary/required-for-direct-live

  • Required: no
  • Shape: boolean

retention/profile

  • Required: no
  • Shape: string

policy_annotations

  • Required: no
  • Shape: object