0
0
Fork 0
matrix-doc/api/client-server/search.yaml

367 lines
16 KiB
YAML
Raw Permalink Normal View History

# 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.
2015-10-14 13:19:11 +00:00
swagger: '2.0'
info:
title: "Matrix Client-Server Search API"
2015-10-14 13:19:11 +00:00
version: "1.0.0"
host: localhost:8008
schemes:
- https
- http
basePath: /_matrix/client/%CLIENT_MAJOR_VERSION%
2015-10-14 13:19:11 +00:00
consumes:
- application/json
produces:
- application/json
securityDefinitions:
$ref: definitions/security.yaml
2015-10-14 13:19:11 +00:00
paths:
"/search":
post:
summary: Perform a server-side search.
2015-10-14 13:19:11 +00:00
description: |-
Performs a full text search across different categories.
operationId: search
2015-10-14 13:19:11 +00:00
security:
- accessToken: []
parameters:
- in: query
name: next_batch
type: string
description: |-
The point to return events from. If given, this should be a
``next_batch`` result from a previous call to this endpoint.
x-example: "YWxsCgpOb25lLDM1ODcwOA"
2015-10-14 13:19:11 +00:00
- in: body
name: body
schema:
type: object
example: {
2015-10-14 13:19:11 +00:00
"search_categories": {
"room_events": {
"keys": [
"content.body"
],
"search_term": "martians and men",
"order_by": "recent",
"groupings": {
"group_by": [
{
"key": "room_id"
}
]
2015-11-16 16:04:23 +00:00
}
}
2015-10-14 13:19:11 +00:00
}
}
properties:
search_categories:
type: object
2015-10-14 14:01:21 +00:00
title: "Categories"
2015-10-14 13:19:11 +00:00
description: Describes which categories to search in and
2015-10-15 14:51:02 +00:00
their criteria.
2015-10-14 13:19:11 +00:00
properties:
room_events:
type: object
title: Room Events Criteria
2015-10-14 13:19:11 +00:00
description: Mapping of category name to search criteria.
properties:
search_term:
type: string
description: The string to search events for
keys:
type: array
items:
type: string
enum: ["content.body", "content.name", "content.topic"]
description: The keys to search. Defaults to all.
2015-10-26 10:18:40 +00:00
filter:
type: object
title: Filter
2017-10-15 21:49:12 +00:00
# Within the C-S spec document, `filter`_ is picked up
# as a link to the filtering section. In OpenAPI 3.0,
# we could use the link feature, but we're still on 2.0
# for now :/
2015-10-26 10:18:40 +00:00
description: |-
2017-10-15 21:49:12 +00:00
This takes a `filter`_.
$ref: "definitions/room_event_filter.yaml"
2015-11-16 16:04:23 +00:00
order_by:
title: "Ordering"
type: string
enum: ["recent", "rank"]
description: |-
The order in which to search for results.
By default, this is ``"rank"``.
2015-11-16 16:04:23 +00:00
event_context:
2018-07-05 16:46:53 +00:00
title: Include Event Context
2015-11-16 16:04:23 +00:00
type: object
description: |-
Configures whether any context for the events
returned are included in the response.
properties:
before_limit:
type: integer
title: "Before limit"
description: |-
How many events before the result are
returned. By default, this is ``5``.
2015-11-16 16:04:23 +00:00
after_limit:
type: integer
title: "After limit"
description: |-
How many events after the result are
returned. By default, this is ``5``.
include_profile:
type: boolean
title: "Return profile information"
description: |-
Requests that the server returns the
historic profile information for the users
that sent the events that were returned.
By default, this is ``false``.
include_state:
type: boolean
title: Include current state
description: |-
Requests the server return the current state for
each room returned.
2015-11-16 16:04:23 +00:00
groupings:
type: object
title: Groupings
description: |-
2015-12-07 16:06:25 +00:00
Requests that the server partitions the result set
based on the provided list of keys.
2015-11-16 16:04:23 +00:00
properties:
group_by:
type: array
title: Groups
description: List of groups to request.
items:
type: object
title: Group
description: Configuration for group.
properties:
key:
type: string
title: Group Key
description: |-
2015-11-16 16:04:23 +00:00
Key that defines the group.
enum: ["room_id", "sender"]
2015-10-14 13:19:11 +00:00
required: ["search_term"]
required: ["search_categories"]
responses:
200:
description: Results of the search.
schema:
type: object
2015-10-14 13:35:08 +00:00
title: Results
2015-10-14 13:19:11 +00:00
required: ["search_categories"]
properties:
search_categories:
type: object
title: Result Categories
2015-10-14 13:19:11 +00:00
description: Describes which categories to search in and
2015-10-15 14:51:02 +00:00
their criteria.
2015-10-14 13:19:11 +00:00
properties:
room_events:
type: object
title: Result Room Events
2015-10-14 13:19:11 +00:00
description: Mapping of category name to search criteria.
properties:
count:
type: integer
2015-12-11 11:41:51 +00:00
description: An approximate count of the total number of results found.
highlights:
type: array
title: Highlights
description: List of words which should be highlighted, useful for stemming which may change the query terms.
items:
type: string
2015-10-14 13:19:11 +00:00
results:
2015-12-01 15:33:13 +00:00
type: array
2015-10-14 13:35:08 +00:00
title: Results
2015-12-01 15:34:25 +00:00
description: List of results in the requested order.
2015-12-01 15:33:13 +00:00
items:
2015-10-14 13:19:11 +00:00
type: object
2015-10-14 13:35:08 +00:00
title: Result
2015-10-14 14:35:39 +00:00
description: The result object.
2015-10-14 13:19:11 +00:00
properties:
rank:
type: number
2015-10-14 13:19:11 +00:00
description: A number that describes how closely
this result matches the search. Higher is
closer.
result:
type: object
title: Event
description: The event that matched.
"$ref": "definitions/event-schemas/schema/core-event-schema/room_event.yaml"
context:
type: object
title: Event Context
description: Context for result, if requested.
properties:
start:
type: string
title: Start Token
description: |-
Pagination token for the start of the chunk
end:
type: string
title: End Token
description: |-
Pagination token for the end of the chunk
profile_info:
type: object
title: Profile Information
description: |-
The historic profile information of the
users that sent the events returned.
The ``string`` key is the user ID for which
the profile belongs to.
additionalProperties:
type: object
title: User Profile
properties:
displayname:
type: string
title: Display name
avatar_url:
type: string
title: Avatar Url
events_before:
type: array
title: Events Before
description: Events just before the result.
items:
title: Event
type: object
"$ref": "definitions/event-schemas/schema/core-event-schema/room_event.yaml"
events_after:
type: array
title: Events After
2015-11-16 18:00:48 +00:00
description: Events just after the result.
items:
title: Event
type: object
"$ref": "definitions/event-schemas/schema/core-event-schema/room_event.yaml"
state:
type: object
title: Current state
2015-12-08 13:37:32 +00:00
description: |-
The current state for every room in the results.
2015-12-08 15:35:59 +00:00
This is included if the request had the
2015-12-08 13:37:32 +00:00
``include_state`` key set with a value of ``true``.
The ``string`` key is the room ID for which the ``State
Event`` array belongs to.
additionalProperties:
type: array
title: Room State
items:
type: object
"$ref": "definitions/event-schemas/schema/core-event-schema/state_event.yaml"
groups:
type: object
title: Groups
description: |-
Any groups that were requested.
The outer ``string`` key is the group key requested (eg: ``room_id``
or ``sender``). The inner ``string`` key is the grouped value (eg:
a room's ID or a user's ID).
additionalProperties:
type: object
title: Group Key
description: The results for a given group.
additionalProperties:
type: object
title: Group Value
description: |-
The results for a particular group value.
properties:
next_batch:
type: string
title: Next Batch in Group
description: |-
Token that can be used to get the next batch
of results in the group, by passing as the
`next_batch` parameter to the next call. If
this field is absent, there are no more
results in this group.
order:
type: integer
title: Group Order
description: |-
Key that can be used to order different
groups.
results:
type: array
description: |-
Which results are in this group.
items:
type: string
title: Result Event ID
2015-11-17 10:02:02 +00:00
next_batch:
type: string
title: Next Batch
description: |-
Token that can be used to get the next batch of
results, by passing as the `next_batch` parameter to
the next call. If this field is absent, there are no
more results.
2015-10-14 13:19:11 +00:00
examples:
application/json: {
2015-10-14 13:19:11 +00:00
"search_categories": {
"room_events": {
2015-11-16 18:00:48 +00:00
"groups": {
"room_id": {
"!qPewotXpIctQySfjSy:localhost": {
"order": 1,
"next_batch": "BdgFsdfHSf-dsFD",
"results": [
"$144429830826TWwbB:localhost"
]
}
}
},
"highlights": [
"martians",
"men"
],
"next_batch": "5FdgFsd234dfgsdfFD",
2015-12-11 10:53:22 +00:00
"count": 1224,
2015-12-01 15:33:13 +00:00
"results": [
{
2015-10-14 13:19:11 +00:00
"rank": 0.00424866,
"result": {
"room_id": "!qPewotXpIctQySfjSy:localhost",
"event_id": "$144429830826TWwbB:localhost",
"$ref": "definitions/event-schemas/examples/m.room.message$m.text"
2015-10-14 13:19:11 +00:00
}
}
2015-12-01 15:33:13 +00:00
]
2015-10-14 13:19:11 +00:00
}
}
}
2015-10-16 09:26:14 +00:00
400:
description: Part of the request was invalid.
429:
description: This request was rate-limited.
schema:
"$ref": "definitions/errors/rate_limited.yaml"
tags:
- Search