# Copyright 2016 OpenMarket Ltd
# Copyright 2022 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.
allOf:
- $ref: event_filter.yaml
- type: object
  title: RoomEventFilter
  properties:
    unread_thread_notifications:
      type: boolean
      description: |-
        If `true`, enables per-[thread](/client-server-api/#threading) notification
        counts. Only applies to the `/sync` endpoint. Defaults to `false`.
      x-addedInMatrixVersion: "1.4"
    lazy_load_members:
      type: boolean
      description: |-
        If `true`, enables lazy-loading of membership events. See
        [Lazy-loading room members](/client-server-api/#lazy-loading-room-members)
        for more information. Defaults to `false`.
    include_redundant_members:
      type: boolean
      description: |-
        If `true`, sends all membership events for all events, even if they have already
        been sent to the client. Does not
        apply unless `lazy_load_members` is `true`. See
        [Lazy-loading room members](/client-server-api/#lazy-loading-room-members)
        for more information. Defaults to `false`.
    not_rooms:
      description: A list of room IDs to exclude. If this list is absent then no rooms
        are excluded. A matching room will be excluded even if it is listed in the `'rooms'`
        filter.
      items:
        type: string
      type: array
    rooms:
      description: A list of room IDs to include. If this list is absent then all rooms
        are included.
      items:
        type: string
      type: array
    contains_url:
      type: boolean
      description: If `true`, includes only events with a `url` key in their content. If
        `false`, excludes those events. If omitted, `url` key is not considered for filtering.
