Merge GET/PUT /state/:event_type endpoints

Clarifying that the state key is optional, and how that works.

Fixes https://github.com/matrix-org/matrix-doc/issues/1182
pull/977/head
Travis Ralston 6 years ago
parent 9ac89cc915
commit c8a3850598

@ -31,6 +31,9 @@ paths:
put: put:
summary: Send a state event to the given room. summary: Send a state event to the given room.
description: | description: |
.. For backwards compatibility with older links...
.. _`put-matrix-client-%CLIENT_MAJOR_VERSION%-rooms-roomid-state-eventtype`:
State events can be sent using this endpoint. These events will be State events can be sent using this endpoint. These events will be
overwritten if ``<room id>``, ``<event type>`` and ``<state key>`` all overwritten if ``<room id>``, ``<event type>`` and ``<state key>`` all
match. match.
@ -61,7 +64,9 @@ paths:
- in: path - in: path
type: string type: string
name: stateKey name: stateKey
description: The state_key for the state to send. Defaults to the empty string. description: |-
The state_key for the state to send. Defaults to the empty string. When
an empty string, the trailing slash on this endpoint is optional.
required: true required: true
x-example: "@alice:example.com" x-example: "@alice:example.com"
- in: body - in: body
@ -99,68 +104,3 @@ paths:
} }
tags: tags:
- Room participation - Room participation
"/rooms/{roomId}/state/{eventType}":
put:
summary: Send a state event to the given room.
description: |
State events can be sent using this endpoint. This endpoint is
equivalent to calling `/rooms/{roomId}/state/{eventType}/{stateKey}`
with an empty `stateKey`. Previous state events with matching
`<roomId>` and `<eventType>`, and empty `<stateKey>`, will be overwritten.
Requests to this endpoint **cannot use transaction IDs**
like other ``PUT`` paths because they cannot be differentiated from the
``state_key``. Furthermore, ``POST`` is unsupported on state paths.
The body of the request should be the content object of the event; the
fields in this object will vary depending on the type of event. See
`Room Events`_ for the ``m.`` event specification.
operationId: setRoomState
security:
- accessToken: []
parameters:
- in: path
type: string
name: roomId
description: The room to set the state in
required: true
x-example: "!636q39766251:example.com"
- in: path
type: string
name: eventType
description: The type of event to send.
required: true
x-example: "m.room.name"
- in: body
name: body
schema:
type: object
example: {
"name": "New name for the room"
}
responses:
200:
description: "An ID for the sent event."
examples:
application/json: {
"event_id": "$YUwRidLecu:example.com"
}
schema:
type: object
properties:
event_id:
type: string
description: |-
A unique identifier for the event.
403:
description: |-
The sender doesn't have permission to send the event into the room.
schema:
$ref: "definitions/errors/error.yaml"
examples:
application/json: {
"errcode": "M_FORBIDDEN",
"error": "You do not have permission to send the event."
}
tags:
- Room participation

@ -68,6 +68,9 @@ paths:
get: get:
summary: Get the state identified by the type and key. summary: Get the state identified by the type and key.
description: |- description: |-
.. For backwards compatibility with older links...
.. _`get-matrix-client-%CLIENT_MAJOR_VERSION%-rooms-roomid-state-eventtype`:
Looks up the contents of a state event in a room. If the user is Looks up the contents of a state event in a room. If the user is
joined to the room then the state is taken from the current joined to the room then the state is taken from the current
state of the room. If the user has left the room then the state is state of the room. If the user has left the room then the state is
@ -91,7 +94,9 @@ paths:
- in: path - in: path
type: string type: string
name: stateKey name: stateKey
description: The key of the state to look up. description: |-
The key of the state to look up. Defaults to an empty string. When
an empty string, the trailing slash on this endpoint is optional.
required: true required: true
x-example: "" x-example: ""
responses: responses:
@ -110,48 +115,6 @@ paths:
member of the room. member of the room.
tags: tags:
- Room participation - Room participation
"/rooms/{roomId}/state/{eventType}":
get:
summary: Get the state identified by the type, with the empty state key.
description: |-
Looks up the contents of a state event in a room. If the user is
joined to the room then the state is taken from the current
state of the room. If the user has left the room then the state is
taken from the state of the room when they left.
This looks up the state event with the empty state key.
operationId: getRoomStateByType
security:
- accessToken: []
parameters:
- in: path
type: string
name: roomId
description: The room to look up the state in.
required: true
x-example: "!636q39766251:example.com"
- in: path
type: string
name: eventType
description: The type of state to look up.
required: true
x-example: "m.room.name"
responses:
200:
description: The content of the state event.
examples:
application/json: {
"name": "Example room name"}
schema:
type: object
404:
description: The room has no state with the given type or key.
403:
description: >
You aren't a member of the room and weren't previously a
member of the room.
tags:
- Room participation
"/rooms/{roomId}/state": "/rooms/{roomId}/state":
get: get:
summary: Get all state events in the current state of a room. summary: Get all state events in the current state of a room.

@ -0,0 +1 @@
De-duplicate ``/state/<event_type>`` endpoints, clarifying that the ``<state_key>`` is optional.
Loading…
Cancel
Save