Przejdź do treści

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