diff options
author | Erik Johnston <erik@matrix.org> | 2014-08-27 14:13:06 +0100 |
---|---|---|
committer | Erik Johnston <erik@matrix.org> | 2014-08-27 14:13:06 +0100 |
commit | 47519cd8c27c343405431c206660ba74fdea52f6 (patch) | |
tree | 77b7a55778c42e256b99577226a6172f719e8416 /docs | |
parent | Implement presence event source. Change the way the notifier indexes listeners (diff) | |
parent | fix joining rooms on webclient (diff) | |
download | synapse-47519cd8c27c343405431c206660ba74fdea52f6.tar.xz |
Merge branch 'develop' of github.com:matrix-org/synapse into stream_refactor
Conflicts: synapse/handlers/events.py synapse/rest/events.py synapse/rest/room.py
Diffstat (limited to 'docs')
-rw-r--r-- | docs/client-server/swagger_matrix/api-docs | 4 | ||||
-rw-r--r-- | docs/client-server/swagger_matrix/events | 317 | ||||
-rw-r--r-- | docs/client-server/swagger_matrix/presence | 2 | ||||
-rw-r--r-- | docs/client-server/swagger_matrix/rooms | 259 | ||||
-rw-r--r-- | docs/client-server/urls.rst | 92 |
5 files changed, 105 insertions, 569 deletions
diff --git a/docs/client-server/swagger_matrix/api-docs b/docs/client-server/swagger_matrix/api-docs index d974dbb374..e52d4ee69d 100644 --- a/docs/client-server/swagger_matrix/api-docs +++ b/docs/client-server/swagger_matrix/api-docs @@ -21,6 +21,10 @@ { "path": "/presence", "description": "Presence operations" + }, + { + "path": "/events", + "description": "Event operations" } ], "authorizations": { diff --git a/docs/client-server/swagger_matrix/events b/docs/client-server/swagger_matrix/events index c9eb3f6ff7..e8b96861f5 100644 --- a/docs/client-server/swagger_matrix/events +++ b/docs/client-server/swagger_matrix/events @@ -1,208 +1,59 @@ { "apiVersion": "1.0.0", "swaggerVersion": "1.2", - "basePath": "http://petstore.swagger.wordnik.com/api", - "resourcePath": "/user", + "basePath": "http://localhost:8080/matrix/client/api/v1", + "resourcePath": "/events", "produces": [ "application/json" ], "apis": [ { - "path": "/user", - "operations": [ - { - "method": "POST", - "summary": "Create user", - "notes": "This can only be done by the logged in user.", - "type": "void", - "nickname": "createUser", - "authorizations": { - "oauth2": [ - { - "scope": "test:anything", - "description": "anything" - } - ] - }, - "parameters": [ - { - "name": "body", - "description": "Created user object", - "required": true, - "type": "User", - "paramType": "body" - } - ] - } - ] - }, - { - "path": "/user/logout", + "path": "/events", "operations": [ { "method": "GET", - "summary": "Logs out current logged in user session", - "notes": "", - "type": "void", - "nickname": "logoutUser", - "authorizations": {}, - "parameters": [] + "summary": "Listen on the event stream", + "notes": "This can only be done by the logged in user. This will block until an event is received, or until the timeout is reached.", + "type": "PaginationChunk", + "nickname": "get_event_stream" } - ] - }, - { - "path": "/user/createWithArray", - "operations": [ + ], + "parameters": [ { - "method": "POST", - "summary": "Creates list of users with given input array", - "notes": "", - "type": "void", - "nickname": "createUsersWithArrayInput", - "authorizations": { - "oauth2": [ - { - "scope": "test:anything", - "description": "anything" - } - ] - }, - "parameters": [ - { - "name": "body", - "description": "List of user object", - "required": true, - "type": "array", - "items": { - "$ref": "User" - }, - "paramType": "body" - } - ] + "name": "from", + "description": "The token to stream from.", + "required": false, + "type": "string", + "paramType": "query" + }, + { + "name": "timeout", + "description": "The maximum time in milliseconds to wait for an event.", + "required": false, + "type": "integer", + "paramType": "query" } - ] - }, - { - "path": "/user/createWithList", - "operations": [ + ], + "responseMessages": [ { - "method": "POST", - "summary": "Creates list of users with given list input", - "notes": "", - "type": "void", - "nickname": "createUsersWithListInput", - "authorizations": { - "oauth2": [ - { - "scope": "test:anything", - "description": "anything" - } - ] - }, - "parameters": [ - { - "name": "body", - "description": "List of user object", - "required": true, - "type": "array", - "items": { - "$ref": "User" - }, - "paramType": "body" - } - ] + "code": 400, + "message": "Bad pagination token." } ] }, { - "path": "/user/{username}", + "path": "/events/{eventId}", "operations": [ { - "method": "PUT", - "summary": "Updated user", - "notes": "This can only be done by the logged in user.", - "type": "void", - "nickname": "updateUser", - "authorizations": { - "oauth2": [ - { - "scope": "test:anything", - "description": "anything" - } - ] - }, - "parameters": [ - { - "name": "username", - "description": "name that need to be deleted", - "required": true, - "type": "string", - "paramType": "path" - }, - { - "name": "body", - "description": "Updated user object", - "required": true, - "type": "User", - "paramType": "body" - } - ], - "responseMessages": [ - { - "code": 400, - "message": "Invalid username supplied" - }, - { - "code": 404, - "message": "User not found" - } - ] - }, - { - "method": "DELETE", - "summary": "Delete user", - "notes": "This can only be done by the logged in user.", - "type": "void", - "nickname": "deleteUser", - "authorizations": { - "oauth2": [ - { - "scope": "test:anything", - "description": "anything" - } - ] - }, - "parameters": [ - { - "name": "username", - "description": "The name that needs to be deleted", - "required": true, - "type": "string", - "paramType": "path" - } - ], - "responseMessages": [ - { - "code": 400, - "message": "Invalid username supplied" - }, - { - "code": 404, - "message": "User not found" - } - ] - }, - { "method": "GET", - "summary": "Get user by user name", - "notes": "", - "type": "User", - "nickname": "getUserByName", - "authorizations": {}, + "summary": "Get information about a single event.", + "notes": "Get information about a single event.", + "type": "Event", + "nickname": "get_event", "parameters": [ { - "name": "username", - "description": "The name that needs to be fetched. Use user1 for testing.", + "name": "eventId", + "description": "The event ID to get.", "required": true, "type": "string", "paramType": "path" @@ -210,47 +61,8 @@ ], "responseMessages": [ { - "code": 400, - "message": "Invalid username supplied" - }, - { "code": 404, - "message": "User not found" - } - ] - } - ] - }, - { - "path": "/user/login", - "operations": [ - { - "method": "GET", - "summary": "Logs user into the system", - "notes": "", - "type": "string", - "nickname": "loginUser", - "authorizations": {}, - "parameters": [ - { - "name": "username", - "description": "The user name for login", - "required": true, - "type": "string", - "paramType": "query" - }, - { - "name": "password", - "description": "The password for login in clear text", - "required": true, - "type": "string", - "paramType": "query" - } - ], - "responseMessages": [ - { - "code": 400, - "message": "Invalid username and password combination" + "message": "Event not found." } ] } @@ -258,42 +70,43 @@ } ], "models": { - "User": { - "id": "User", + "PaginationChunk": { + "id": "PaginationChunk", "properties": { - "id": { - "type": "integer", - "format": "int64" - }, - "firstName": { - "type": "string" - }, - "username": { - "type": "string" - }, - "lastName": { - "type": "string" - }, - "email": { - "type": "string" + "start": { + "type": "string", + "description": "A token which correlates to the first value in \"chunk\" for paginating.", + "required": true }, - "password": { - "type": "string" + "end": { + "type": "string", + "description": "A token which correlates to the last value in \"chunk\" for paginating.", + "required": true }, - "phone": { - "type": "string" + "chunk": { + "type": "array", + "description": "An array of events.", + "required": true, + "items": { + "$ref": "Event" + } + } + } + }, + "Event": { + "id": "Event", + "properties": { + "event_id": { + "type": "string", + "description": "An ID which uniquely identifies this event.", + "required": true }, - "userStatus": { - "type": "integer", - "format": "int32", - "description": "User Status", - "enum": [ - "1-registered", - "2-active", - "3-closed" - ] + "room_id": { + "type": "string", + "description": "The room in which this event occurred.", + "required": true } } } } -} \ No newline at end of file +} diff --git a/docs/client-server/swagger_matrix/presence b/docs/client-server/swagger_matrix/presence index ee9deb12f0..1b4c7323aa 100644 --- a/docs/client-server/swagger_matrix/presence +++ b/docs/client-server/swagger_matrix/presence @@ -55,7 +55,7 @@ ] }, { - "path": "/presence_list/{userId}", + "path": "/presence/list/{userId}", "operations": [ { "method": "GET", diff --git a/docs/client-server/swagger_matrix/rooms b/docs/client-server/swagger_matrix/rooms index 47a8887240..7a2b5399a2 100644 --- a/docs/client-server/swagger_matrix/rooms +++ b/docs/client-server/swagger_matrix/rooms @@ -14,7 +14,7 @@ }, "apis": [ { - "path": "/rooms/{roomId}/messages/{userId}/{messageId}", + "path": "/rooms/{roomId}/send/m.room.message/{txnId}", "operations": [ { "method": "PUT", @@ -41,67 +41,18 @@ "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.", + "name": "txnId", + "description": "A client transaction ID to ensure idempotency.", "required": true, "type": "string", "paramType": "path" } - ], - "responseMessages": [ - { - "code": 404, - "message": "Message not found." - } ] } ] }, { - "path": "/rooms/{roomId}/topic", + "path": "/rooms/{roomId}/state/m.room.topic", "operations": [ { "method": "PUT", @@ -127,12 +78,6 @@ "type": "string", "paramType": "path" } - ], - "responseMessages": [ - { - "code": 403, - "message": "Must send messages as yourself." - } ] }, { @@ -160,7 +105,7 @@ ] }, { - "path": "/rooms/{roomId}/messages/{msgSenderId}/{messageId}/feedback/{senderId}/{feedbackType}", + "path": "/rooms/{roomId}/send/m.room.message.feedback/{txnId}", "operations": [ { "method": "PUT", @@ -187,105 +132,33 @@ "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.", + "name": "txnId", + "description": "A client transaction ID to ensure idempotency.", "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": [ @@ -412,22 +285,30 @@ } ] }, + + + + + + + + { - "path": "/join/{roomAlias}", + "path": "/join/{roomAliasOrId}", "operations": [ { "method": "PUT", - "summary": "Join a room via a room alias.", - "notes": "Join a room via a room alias.", + "summary": "Join a room via a room alias or room ID.", + "notes": "Join a room via a room alias or room ID.", "type": "RoomInfo", - "nickname": "join_room_via_alias", + "nickname": "join", "consumes": [ "application/json" ], "parameters": [ { - "name": "roomAlias", - "description": "The room alias to join.", + "name": "roomAliasOrId", + "description": "The room alias or room ID to join.", "required": true, "type": "string", "paramType": "path" @@ -443,7 +324,7 @@ ] }, { - "path": "/rooms", + "path": "/createRoom", "operations": [ { "method": "POST", @@ -477,7 +358,7 @@ ] }, { - "path": "/rooms/{roomId}/messages/list", + "path": "/rooms/{roomId}/messages", "operations": [ { "method": "GET", @@ -519,7 +400,7 @@ ] }, { - "path": "/rooms/{roomId}/members/list", + "path": "/rooms/{roomId}/members", "operations": [ { "method": "GET", @@ -732,76 +613,6 @@ "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" - } - } } } } diff --git a/docs/client-server/urls.rst b/docs/client-server/urls.rst deleted file mode 100644 index c0d2eaa80c..0000000000 --- a/docs/client-server/urls.rst +++ /dev/null @@ -1,92 +0,0 @@ -========================= -Client-Server URL Summary -========================= - -A brief overview of the URL scheme involved in the Synapse Client-Server API. - - -URLs -==== - -Fetch events: - GET /events - -Registering an account - POST /register - -Unregistering an account - POST /unregister - -Rooms ------ - -Creating a room by ID - PUT /rooms/$roomid - -Creating an anonymous room - POST /rooms - -Room topic - GET /rooms/$roomid/topic - PUT /rooms/$roomid/topic - -List rooms - GET /rooms/list - -Invite/Join/Leave - GET /rooms/$roomid/members/$userid/state - PUT /rooms/$roomid/members/$userid/state - DELETE /rooms/$roomid/members/$userid/state - -List members - GET /rooms/$roomid/members/list - -Sending/reading messages - PUT /rooms/$roomid/messages/$sender/$msgid - -Feedback - GET /rooms/$roomid/messages/$sender/$msgid/feedback/$feedbackuser/$feedback - PUT /rooms/$roomid/messages/$sender/$msgid/feedback/$feedbackuser/$feedback - -Paginating messages - GET /rooms/$roomid/messages/list - -Profiles --------- - -Display name - GET /profile/$userid/displayname - PUT /profile/$userid/displayname - -Avatar URL - GET /profile/$userid/avatar_url - PUT /profile/$userid/avatar_url - -Metadata - GET /profile/$userid/metadata - POST /profile/$userid/metadata - -Presence --------- - -My state or status message - GET /presence/$userid/status - PUT /presence/$userid/status - also 'GET' for fetching others - -TODO(paul): per-device idle time, device type; similar to above - -My presence list - GET /presence_list/$myuserid - POST /presence_list/$myuserid - body is JSON-encoded dict of keys: - invite: list of UserID strings to invite - drop: list of UserID strings to remove - TODO(paul): define other ops: accept, group management, ordering? - -Presence polling start/stop - POST /presence_list/$myuserid?op=start - POST /presence_list/$myuserid?op=stop - -Presence invite - POST /presence_list/$myuserid/invite/$targetuserid |