# Copyright 2016 OpenMarket 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. swagger: '2.0' info: title: "Matrix Client-Server filter API" version: "1.0.0" host: localhost:8008 schemes: - https basePath: /_matrix/client/%CLIENT_MAJOR_VERSION% consumes: - application/json produces: - application/json securityDefinitions: $ref: definitions/security.yaml paths: "/user/{userId}/filter": post: summary: Upload a new filter. description: |- Uploads a new filter definition to the homeserver. Returns a filter ID that may be used in future requests to restrict which events are returned to the client. security: - accessToken: [] parameters: - in: path type: string name: userId required: true description: The id of the user uploading the filter. The access token must be authorized to make requests for this user id. x-example: "@alice:example.com" - in: body name: filter required: true description: The filter to upload. schema: type: object allOf: - $ref: "definitions/sync_filter.yaml" example: |- { "room": { "state": { "types": ["m.room.*"], "not_rooms": ["!726s6s6q:example.com"] }, "timeline": { "limit": 10, "types": ["m.room.message"], "not_rooms": ["!726s6s6q:example.com"], "not_senders": ["@spam:example.com"] }, "ephemeral": { "types": ["m.receipt", "m.typing"], "not_rooms": ["!726s6s6q:example.com"], "not_senders": ["@spam:example.com"] } }, "presence": { "types": ["m.presence"], "not_senders": ["@alice:example.com"] }, "event_format": "client", "event_fields": ["type", "content", "sender"] } responses: 200: description: The filter was created. examples: application/json: |- { "filter_id": "66696p746572" } schema: type: object properties: filter_id: type: string description: |- The ID of the filter that was created. tags: - Room participation "/user/{userId}/filter/{filterId}": get: summary: Download a filter parameters: - in: path name: userId type: string description: |- The user ID to download a filter for. x-example: "@alice:example.com" required: true - in: path name: filterId type: string description: |- The filter ID to download. x-example: "66696p746572" required: true responses: 200: description: |- "The filter defintion" examples: application/json: |- { "room": { "state": { "types": ["m.room.*"], "not_rooms": ["!726s6s6q:example.com"] }, "timeline": { "limit": 10, "types": ["m.room.message"], "not_rooms": ["!726s6s6q:example.com"], "not_senders": ["@spam:example.com"] }, "ephemeral": { "types": ["m.receipt", "m.typing"], "not_rooms": ["!726s6s6q:example.com"], "not_senders": ["@spam:example.com"] } }, "presence": { "types": ["m.presence"], "not_senders": ["@alice:example.com"] }, "event_format": "client", "event_fields": ["type", "content", "sender"] } schema: type: object allOf: - $ref: "definitions/sync_filter.yaml" tags: - Room participation