Skip to content

Room Relay Endpoint v1

Source schema: doc/schemas/room-relay-endpoint.v1.schema.json

Durable, Agora-signed selection fact for a Room WSS relay. The fact carries no live payload and grants no authority by itself. sealed-sender-key-v1 is valid only with federation-service placement.

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
seq/no yes integer
relay/epoch yes integer
relay/subject yes ref: room.v1.schema.json#/$defs/subject
relay/placement yes enum: requester, room-member, federation-service
endpoint/url yes string
crypto/profile yes enum: member-visible-tls-v1, sealed-sender-key-v1
ordering/profile yes const: relay-total-order-v1
selection/evidence-refs yes array
issued-at yes string
expires-at yes string
authority/subject yes ref: room.v1.schema.json#/$defs/subject
extensions no ref: room.v1.schema.json#/$defs/extensions

Conditional Rules

Rule 1

When:

{
  "properties": {
    "crypto/profile": {
      "const": "sealed-sender-key-v1"
    }
  },
  "required": [
    "crypto/profile"
  ]
}

Then:

{
  "properties": {
    "relay/placement": {
      "const": "federation-service"
    }
  }
}

Field Semantics

schema/v

  • Required: yes
  • Shape: const: 1

room/id

  • Required: yes
  • Shape: ref: room.v1.schema.json#/$defs/room_id

seq/no

  • Required: yes
  • Shape: integer

relay/epoch

  • Required: yes
  • Shape: integer

relay/subject

  • Required: yes
  • Shape: ref: room.v1.schema.json#/$defs/subject

relay/placement

  • Required: yes
  • Shape: enum: requester, room-member, federation-service

endpoint/url

  • Required: yes
  • Shape: string

crypto/profile

  • Required: yes
  • Shape: enum: member-visible-tls-v1, sealed-sender-key-v1

ordering/profile

  • Required: yes
  • Shape: const: relay-total-order-v1

selection/evidence-refs

  • Required: yes
  • Shape: array

issued-at

  • Required: yes
  • Shape: string

expires-at

  • Required: yes
  • Shape: string

authority/subject

  • Required: yes
  • Shape: ref: room.v1.schema.json#/$defs/subject

extensions

  • Required: no
  • Shape: ref: room.v1.schema.json#/$defs/extensions