# Copyright 2018 New Vector Ltd
# Copyright 2020 The Matrix.org Foundation C.I.C.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
type: object
title: Room State
description: The state for the room.
properties:
  origin:
    type: string
    description: The resident server's DNS name.
  auth_chain:
    type: array
    description: |-
      The auth chain for the entire current room state prior to the join event.

      Note that events have a different format depending on the room version - check the
      [room version specification](/rooms) for precise event formats.
    items:
      type: object
      title: PDU
      description: |-
        The [PDUs](/server-server-api/#pdus) that make up the auth chain. The event format varies depending
        on the room version - check the [room version specification](/rooms) for precise event formats.
      schema:
        type: object
        properties: {}
      example:
        $ref: "../examples/minimal_pdu.json"
  state:
    type: array
    description: |-
      The resolved current room state prior to the join event.

      The event format varies depending on the room version - check the [room version specification](/rooms)
      for precise event formats.
    items:
      type: object
      title: PDU
      description: |-
        The [PDUs](/server-server-api/#pdus) for the fully resolved state of the room. The event format varies depending
        on the room version - check the [room version specification](/rooms) for precise event formats.
      schema:
        type: object
        properties: {}
      example:
        $ref: "../examples/minimal_pdu.json"
  event:
    type: object
    title: SignedMembershipEvent
    x-addedInMatrixVersion: "1.2"
    description: |-
      Required if the room version [supports restricted join rules](/rooms/#feature-matrix). The signed
      copy of the membership event sent to other servers by the resident server, including the resident
      server's signature.
    example:
      $ref: "../examples/minimal_pdu.json"
required: ["auth_chain", "state", "origin"]
