mirror of
https://github.com/element-hq/synapse
synced 2024-09-12 11:45:11 +00:00
807 lines
21 KiB
Text
807 lines
21 KiB
Text
{
|
|
"apiVersion": "1.0.0",
|
|
"swaggerVersion": "1.2",
|
|
"basePath": "http://localhost:8080/matrix/client/api/v1",
|
|
"resourcePath": "/rooms",
|
|
"produces": [
|
|
"application/json"
|
|
],
|
|
"consumes": [
|
|
"application/json"
|
|
],
|
|
"authorizations": {
|
|
"token": []
|
|
},
|
|
"apis": [
|
|
{
|
|
"path": "/rooms/{roomId}/messages/{userId}/{messageId}",
|
|
"operations": [
|
|
{
|
|
"method": "PUT",
|
|
"summary": "Send a message in this room.",
|
|
"notes": "Send a message in this room.",
|
|
"type": "void",
|
|
"nickname": "send_message",
|
|
"consumes": [
|
|
"application/json"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"name": "body",
|
|
"description": "The message contents",
|
|
"required": true,
|
|
"type": "Message",
|
|
"paramType": "body"
|
|
},
|
|
{
|
|
"name": "roomId",
|
|
"description": "The room to send the message in.",
|
|
"required": true,
|
|
"type": "string",
|
|
"paramType": "path"
|
|
},
|
|
{
|
|
"name": "userId",
|
|
"description": "The fully qualified message sender's user ID.",
|
|
"required": true,
|
|
"type": "string",
|
|
"paramType": "path"
|
|
},
|
|
{
|
|
"name": "messageId",
|
|
"description": "A message ID which is unique for each room and user.",
|
|
"required": true,
|
|
"type": "string",
|
|
"paramType": "path"
|
|
}
|
|
],
|
|
"responseMessages": [
|
|
{
|
|
"code": 403,
|
|
"message": "Must send messages as yourself."
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"method": "GET",
|
|
"summary": "Get a message from this room.",
|
|
"notes": "Get a message from this room.",
|
|
"type": "Message",
|
|
"nickname": "get_message",
|
|
"parameters": [
|
|
{
|
|
"name": "roomId",
|
|
"description": "The room to send the message in.",
|
|
"required": true,
|
|
"type": "string",
|
|
"paramType": "path"
|
|
},
|
|
{
|
|
"name": "userId",
|
|
"description": "The fully qualified message sender's user ID.",
|
|
"required": true,
|
|
"type": "string",
|
|
"paramType": "path"
|
|
},
|
|
{
|
|
"name": "messageId",
|
|
"description": "A message ID which is unique for each room and user.",
|
|
"required": true,
|
|
"type": "string",
|
|
"paramType": "path"
|
|
}
|
|
],
|
|
"responseMessages": [
|
|
{
|
|
"code": 404,
|
|
"message": "Message not found."
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"path": "/rooms/{roomId}/topic",
|
|
"operations": [
|
|
{
|
|
"method": "PUT",
|
|
"summary": "Set the topic for this room.",
|
|
"notes": "Set the topic for this room.",
|
|
"type": "void",
|
|
"nickname": "set_topic",
|
|
"consumes": [
|
|
"application/json"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"name": "body",
|
|
"description": "The topic contents",
|
|
"required": true,
|
|
"type": "Topic",
|
|
"paramType": "body"
|
|
},
|
|
{
|
|
"name": "roomId",
|
|
"description": "The room to set the topic in.",
|
|
"required": true,
|
|
"type": "string",
|
|
"paramType": "path"
|
|
}
|
|
],
|
|
"responseMessages": [
|
|
{
|
|
"code": 403,
|
|
"message": "Must send messages as yourself."
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"method": "GET",
|
|
"summary": "Get the topic for this room.",
|
|
"notes": "Get the topic for this room.",
|
|
"type": "Topic",
|
|
"nickname": "get_topic",
|
|
"parameters": [
|
|
{
|
|
"name": "roomId",
|
|
"description": "The room to get topic in.",
|
|
"required": true,
|
|
"type": "string",
|
|
"paramType": "path"
|
|
}
|
|
],
|
|
"responseMessages": [
|
|
{
|
|
"code": 404,
|
|
"message": "Topic not found."
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"path": "/rooms/{roomId}/messages/{msgSenderId}/{messageId}/feedback/{senderId}/{feedbackType}",
|
|
"operations": [
|
|
{
|
|
"method": "PUT",
|
|
"summary": "Send feedback to a message.",
|
|
"notes": "Send feedback to a message.",
|
|
"type": "void",
|
|
"nickname": "send_feedback",
|
|
"consumes": [
|
|
"application/json"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"name": "body",
|
|
"description": "The feedback contents",
|
|
"required": true,
|
|
"type": "Feedback",
|
|
"paramType": "body"
|
|
},
|
|
{
|
|
"name": "roomId",
|
|
"description": "The room to send the feedback in.",
|
|
"required": true,
|
|
"type": "string",
|
|
"paramType": "path"
|
|
},
|
|
{
|
|
"name": "msgSenderId",
|
|
"description": "The fully qualified message sender's user ID.",
|
|
"required": true,
|
|
"type": "string",
|
|
"paramType": "path"
|
|
},
|
|
{
|
|
"name": "messageId",
|
|
"description": "A message ID which is unique for each room and user.",
|
|
"required": true,
|
|
"type": "string",
|
|
"paramType": "path"
|
|
},
|
|
{
|
|
"name": "senderId",
|
|
"description": "The fully qualified feedback sender's user ID.",
|
|
"required": true,
|
|
"type": "string",
|
|
"paramType": "path"
|
|
},
|
|
{
|
|
"name": "feedbackType",
|
|
"description": "The type of feedback being sent.",
|
|
"required": true,
|
|
"type": "string",
|
|
"paramType": "path",
|
|
"enum": [
|
|
"d",
|
|
"r"
|
|
]
|
|
}
|
|
],
|
|
"responseMessages": [
|
|
{
|
|
"code": 403,
|
|
"message": "Must send feedback as yourself."
|
|
},
|
|
{
|
|
"code": 400,
|
|
"message": "Bad feedback type."
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"method": "GET",
|
|
"summary": "Get feedback for a message.",
|
|
"notes": "Get feedback for a message.",
|
|
"type": "Feedback",
|
|
"nickname": "get_feedback",
|
|
"parameters": [
|
|
{
|
|
"name": "roomId",
|
|
"description": "The room to send the message in.",
|
|
"required": true,
|
|
"type": "string",
|
|
"paramType": "path"
|
|
},
|
|
{
|
|
"name": "msgSenderId",
|
|
"description": "The fully qualified message sender's user ID.",
|
|
"required": true,
|
|
"type": "string",
|
|
"paramType": "path"
|
|
},
|
|
{
|
|
"name": "messageId",
|
|
"description": "A message ID which is unique for each room and user.",
|
|
"required": true,
|
|
"type": "string",
|
|
"paramType": "path"
|
|
},
|
|
{
|
|
"name": "senderId",
|
|
"description": "The fully qualified feedback sender's user ID.",
|
|
"required": true,
|
|
"type": "string",
|
|
"paramType": "path"
|
|
},
|
|
{
|
|
"name": "feedbackType",
|
|
"description": "Enum: The type of feedback being sent.",
|
|
"required": true,
|
|
"type": "string",
|
|
"paramType": "path",
|
|
"enum": [
|
|
"d",
|
|
"r"
|
|
]
|
|
}
|
|
],
|
|
"responseMessages": [
|
|
{
|
|
"code": 404,
|
|
"message": "Feedback not found."
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"path": "/rooms/{roomId}/members/{userId}/state",
|
|
"operations": [
|
|
{
|
|
"method": "PUT",
|
|
"summary": "Change the membership state for a user in a room.",
|
|
"notes": "Change the membership state for a user in a room.",
|
|
"type": "void",
|
|
"nickname": "set_membership",
|
|
"consumes": [
|
|
"application/json"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"name": "body",
|
|
"description": "The new membership state",
|
|
"required": true,
|
|
"type": "Member",
|
|
"paramType": "body"
|
|
},
|
|
{
|
|
"name": "userId",
|
|
"description": "The user whose membership is being changed.",
|
|
"required": true,
|
|
"type": "string",
|
|
"paramType": "path"
|
|
},
|
|
{
|
|
"name": "roomId",
|
|
"description": "The room which has this user.",
|
|
"required": true,
|
|
"type": "string",
|
|
"paramType": "path"
|
|
}
|
|
],
|
|
"responseMessages": [
|
|
{
|
|
"code": 400,
|
|
"message": "No membership key."
|
|
},
|
|
{
|
|
"code": 400,
|
|
"message": "Bad membership value."
|
|
},
|
|
{
|
|
"code": 403,
|
|
"message": "When inviting: You are not in the room."
|
|
},
|
|
{
|
|
"code": 403,
|
|
"message": "When inviting: <target> is already in the room."
|
|
},
|
|
{
|
|
"code": 403,
|
|
"message": "When joining: Cannot force another user to join."
|
|
},
|
|
{
|
|
"code": 403,
|
|
"message": "When joining: You are not invited to this room."
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"method": "GET",
|
|
"summary": "Get the membership state of a user in a room.",
|
|
"notes": "Get the membership state of a user in a room.",
|
|
"type": "Member",
|
|
"nickname": "get_membership",
|
|
"parameters": [
|
|
{
|
|
"name": "userId",
|
|
"description": "The user whose membership state you want to get.",
|
|
"required": true,
|
|
"type": "string",
|
|
"paramType": "path"
|
|
},
|
|
{
|
|
"name": "roomId",
|
|
"description": "The room which has this user.",
|
|
"required": true,
|
|
"type": "string",
|
|
"paramType": "path"
|
|
}
|
|
],
|
|
"responseMessages": [
|
|
{
|
|
"code": 404,
|
|
"message": "Member not found."
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"method": "DELETE",
|
|
"summary": "Leave a room.",
|
|
"notes": "Leave a room.",
|
|
"type": "void",
|
|
"nickname": "remove_membership",
|
|
"parameters": [
|
|
{
|
|
"name": "userId",
|
|
"description": "The user who is leaving.",
|
|
"required": true,
|
|
"type": "string",
|
|
"paramType": "path"
|
|
},
|
|
{
|
|
"name": "roomId",
|
|
"description": "The room which has this user.",
|
|
"required": true,
|
|
"type": "string",
|
|
"paramType": "path"
|
|
}
|
|
],
|
|
"responseMessages": [
|
|
{
|
|
"code": 403,
|
|
"message": "You are not in the room."
|
|
},
|
|
{
|
|
"code": 403,
|
|
"message": "Cannot force another user to leave."
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"path": "/join/{roomAlias}",
|
|
"operations": [
|
|
{
|
|
"method": "PUT",
|
|
"summary": "Join a room via a room alias.",
|
|
"notes": "Join a room via a room alias.",
|
|
"type": "RoomInfo",
|
|
"nickname": "join_room_via_alias",
|
|
"consumes": [
|
|
"application/json"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"name": "roomAlias",
|
|
"description": "The room alias to join.",
|
|
"required": true,
|
|
"type": "string",
|
|
"paramType": "path"
|
|
}
|
|
],
|
|
"responseMessages": [
|
|
{
|
|
"code": 400,
|
|
"message": "Bad room alias."
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"path": "/rooms",
|
|
"operations": [
|
|
{
|
|
"method": "POST",
|
|
"summary": "Create a room.",
|
|
"notes": "Create a room.",
|
|
"type": "RoomInfo",
|
|
"nickname": "create_room",
|
|
"consumes": [
|
|
"application/json"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"name": "body",
|
|
"description": "The desired configuration for the room.",
|
|
"required": true,
|
|
"type": "RoomConfig",
|
|
"paramType": "body"
|
|
}
|
|
],
|
|
"responseMessages": [
|
|
{
|
|
"code": 400,
|
|
"message": "Body must be JSON."
|
|
},
|
|
{
|
|
"code": 400,
|
|
"message": "Room alias already taken."
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"path": "/rooms/{roomId}/messages/list",
|
|
"operations": [
|
|
{
|
|
"method": "GET",
|
|
"summary": "Get a list of messages for this room.",
|
|
"notes": "Get a list of messages for this room.",
|
|
"type": "MessagePaginationChunk",
|
|
"nickname": "get_messages",
|
|
"parameters": [
|
|
{
|
|
"name": "roomId",
|
|
"description": "The room to get messages in.",
|
|
"required": true,
|
|
"type": "string",
|
|
"paramType": "path"
|
|
},
|
|
{
|
|
"name": "from",
|
|
"description": "The token to start getting results from.",
|
|
"required": false,
|
|
"type": "string",
|
|
"paramType": "query"
|
|
},
|
|
{
|
|
"name": "to",
|
|
"description": "The token to stop getting results at.",
|
|
"required": false,
|
|
"type": "string",
|
|
"paramType": "query"
|
|
},
|
|
{
|
|
"name": "limit",
|
|
"description": "The maximum number of messages to return.",
|
|
"required": false,
|
|
"type": "integer",
|
|
"paramType": "query"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"path": "/rooms/{roomId}/members/list",
|
|
"operations": [
|
|
{
|
|
"method": "GET",
|
|
"summary": "Get a list of members for this room.",
|
|
"notes": "Get a list of members for this room.",
|
|
"type": "MemberPaginationChunk",
|
|
"nickname": "get_members",
|
|
"parameters": [
|
|
{
|
|
"name": "roomId",
|
|
"description": "The room to get a list of members from.",
|
|
"required": true,
|
|
"type": "string",
|
|
"paramType": "path"
|
|
},
|
|
{
|
|
"name": "from",
|
|
"description": "The token to start getting results from.",
|
|
"required": false,
|
|
"type": "string",
|
|
"paramType": "query"
|
|
},
|
|
{
|
|
"name": "to",
|
|
"description": "The token to stop getting results at.",
|
|
"required": false,
|
|
"type": "string",
|
|
"paramType": "query"
|
|
},
|
|
{
|
|
"name": "limit",
|
|
"description": "The maximum number of members to return.",
|
|
"required": false,
|
|
"type": "integer",
|
|
"paramType": "query"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"models": {
|
|
"Topic": {
|
|
"id": "Topic",
|
|
"properties": {
|
|
"topic": {
|
|
"type": "string",
|
|
"description": "The topic text"
|
|
}
|
|
}
|
|
},
|
|
"Message": {
|
|
"id": "Message",
|
|
"properties": {
|
|
"msgtype": {
|
|
"type": "string",
|
|
"description": "The type of message being sent, e.g. \"m.text\"",
|
|
"required": true
|
|
},
|
|
"_msgtype_defined_keys_": {
|
|
"description": "Additional keys as defined by the msgtype, e.g. \"body\""
|
|
}
|
|
}
|
|
},
|
|
"Feedback": {
|
|
"id": "Feedback",
|
|
"properties": {
|
|
}
|
|
},
|
|
"Member": {
|
|
"id": "Member",
|
|
"properties": {
|
|
"membership": {
|
|
"type": "string",
|
|
"description": "Enum: The membership state of this member.",
|
|
"enum": [
|
|
"invite",
|
|
"join",
|
|
"leave",
|
|
"knock"
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"RoomInfo": {
|
|
"id": "RoomInfo",
|
|
"properties": {
|
|
"room_id": {
|
|
"type": "string",
|
|
"description": "The allocated room ID.",
|
|
"required": true
|
|
},
|
|
"room_alias": {
|
|
"type": "string",
|
|
"description": "The alias for the room.",
|
|
"required": false
|
|
}
|
|
}
|
|
},
|
|
"RoomConfig": {
|
|
"id": "RoomConfig",
|
|
"properties": {
|
|
"visibility": {
|
|
"type": "string",
|
|
"description": "Enum: The room visibility.",
|
|
"required": false,
|
|
"enum": [
|
|
"public",
|
|
"private"
|
|
]
|
|
},
|
|
"room_alias_name": {
|
|
"type": "string",
|
|
"description": "The alias to give the new room.",
|
|
"required": false
|
|
}
|
|
}
|
|
},
|
|
"PaginationRequest": {
|
|
"id": "PaginationRequest",
|
|
"properties": {
|
|
"from": {
|
|
"type": "string",
|
|
"description": "The token to start getting results from."
|
|
},
|
|
"to": {
|
|
"type": "string",
|
|
"description": "The token to stop getting results at."
|
|
},
|
|
"limit": {
|
|
"type": "integer",
|
|
"description": "The maximum number of entries to return."
|
|
}
|
|
}
|
|
},
|
|
"PaginationChunk": {
|
|
"id": "PaginationChunk",
|
|
"properties": {
|
|
"start": {
|
|
"type": "string",
|
|
"description": "A token which correlates to the first value in \"chunk\" for paginating.",
|
|
"required": true
|
|
},
|
|
"end": {
|
|
"type": "string",
|
|
"description": "A token which correlates to the last value in \"chunk\" for paginating.",
|
|
"required": true
|
|
}
|
|
},
|
|
"subTypes": [
|
|
"MessagePaginationChunk"
|
|
]
|
|
},
|
|
"MessagePaginationChunk": {
|
|
"id": "MessagePaginationChunk",
|
|
"properties": {
|
|
"chunk": {
|
|
"type": "array",
|
|
"description": "A list of message events.",
|
|
"items": {
|
|
"$ref": "MessageEvent"
|
|
},
|
|
"required": true
|
|
}
|
|
}
|
|
},
|
|
"MemberPaginationChunk": {
|
|
"id": "MemberPaginationChunk",
|
|
"properties": {
|
|
"chunk": {
|
|
"type": "array",
|
|
"description": "A list of member events.",
|
|
"items": {
|
|
"$ref": "MemberEvent"
|
|
},
|
|
"required": true
|
|
}
|
|
}
|
|
},
|
|
"Event": {
|
|
"id": "Event",
|
|
"properties": {
|
|
"event_id": {
|
|
"type": "string",
|
|
"description": "An ID which uniquely identifies this event.",
|
|
"required": true
|
|
},
|
|
"room_id": {
|
|
"type": "string",
|
|
"description": "The room in which this event occurred.",
|
|
"required": true
|
|
}
|
|
},
|
|
"subTypes": [
|
|
"MessageEvent"
|
|
]
|
|
},
|
|
"MessageEvent": {
|
|
"id": "MessageEvent",
|
|
"properties": {
|
|
"content": {
|
|
"type": "Message"
|
|
}
|
|
}
|
|
},
|
|
"MemberEvent": {
|
|
"id": "MemberEvent",
|
|
"properties": {
|
|
"content": {
|
|
"type": "Member"
|
|
}
|
|
}
|
|
},
|
|
"Tag": {
|
|
"id": "Tag",
|
|
"properties": {
|
|
"id": {
|
|
"type": "integer",
|
|
"format": "int64"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"Pet": {
|
|
"id": "Pet",
|
|
"required": [
|
|
"id",
|
|
"name"
|
|
],
|
|
"properties": {
|
|
"id": {
|
|
"type": "integer",
|
|
"format": "int64",
|
|
"description": "unique identifier for the pet",
|
|
"minimum": "0.0",
|
|
"maximum": "100.0"
|
|
},
|
|
"category": {
|
|
"$ref": "Category"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"photoUrls": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"tags": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "Tag"
|
|
}
|
|
},
|
|
"status": {
|
|
"type": "string",
|
|
"description": "pet status in the store",
|
|
"enum": [
|
|
"available",
|
|
"pending",
|
|
"sold"
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"Category": {
|
|
"id": "Category",
|
|
"properties": {
|
|
"id": {
|
|
"type": "integer",
|
|
"format": "int64"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"pet": {
|
|
"$ref": "Pet"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|