# Copyright 2018 New Vector Ltd
#
# 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.

# Note: this is technically not a core event schema, however it is included here
# to keep things sane. The short story is that /sync doesn't require a room_id to
# be on events, so we give it a whole event structure as a base for room_event.
# This base doesn't declare a room_id, which instead appears in the room_event.

allOf:
- $ref: event.yaml
description: In addition to the Event fields, Room Events have the following additional
  fields.
properties:
  event_id:
    description: The globally unique event identifier.
    type: string
  sender:
    description: Contains the fully-qualified ID of the user who sent this event.
    type: string
  origin_server_ts:
    description: Timestamp in milliseconds on originating homeserver
      when this event was sent.
    type: integer
    format: int64
  unsigned:
    description: Contains optional extra information about the event.
    properties:
      age:
        description: The time in milliseconds that has elapsed since the event was
          sent. This field is generated by the local homeserver, and may be incorrect
          if the local time on at least one of the two servers is out of sync, which can
          cause the age to either be negative or greater than it actually is.
        type: integer
      redacted_because:
        description: Optional. The event that redacted this event, if any.
        title: Event
        type: object
      transaction_id:
        description: The client-supplied transaction ID, if the client being given
          the event is the same one which sent it.
        type: string
    title: UnsignedData
    type: object
required:
- event_id
- sender
- origin_server_ts
title: Room Event
type: object
