summary refs log tree commit diff
path: root/docs/client-server
diff options
context:
space:
mode:
authorKegan Dougal <kegan@matrix.org>2014-08-27 15:41:19 +0100
committerKegan Dougal <kegan@matrix.org>2014-08-27 15:41:38 +0100
commitabe2035d8518d334910024cbf20f0917781d317e (patch)
tree8aa08b2025f4647a963d10d22cbdac9723c6293a /docs/client-server
parentBF: use room_id if there is no alias (diff)
downloadsynapse-abe2035d8518d334910024cbf20f0917781d317e.tar.xz
api docs: Finished adding all C-S APIs. Added initialSync, publicRooms, membership changes (generic and RPCy) and directory paths.
Diffstat (limited to 'docs/client-server')
-rw-r--r--docs/client-server/swagger_matrix/api-docs4
-rw-r--r--docs/client-server/swagger_matrix/directory83
-rw-r--r--docs/client-server/swagger_matrix/events134
-rw-r--r--docs/client-server/swagger_matrix/rooms163
4 files changed, 331 insertions, 53 deletions
diff --git a/docs/client-server/swagger_matrix/api-docs b/docs/client-server/swagger_matrix/api-docs
index e52d4ee69d..58462a9067 100644
--- a/docs/client-server/swagger_matrix/api-docs
+++ b/docs/client-server/swagger_matrix/api-docs
@@ -25,6 +25,10 @@
     {
       "path": "/events",
       "description": "Event operations"
+    },
+    {
+      "path": "/directory",
+      "description": "Directory operations"
     }
   ],
   "authorizations": {
diff --git a/docs/client-server/swagger_matrix/directory b/docs/client-server/swagger_matrix/directory
new file mode 100644
index 0000000000..3f3bef9c11
--- /dev/null
+++ b/docs/client-server/swagger_matrix/directory
@@ -0,0 +1,83 @@
+{
+  "apiVersion": "1.0.0",
+  "swaggerVersion": "1.2",
+  "basePath": "http://localhost:8080/matrix/client/api/v1",
+  "resourcePath": "/directory",
+  "produces": [
+    "application/json"
+  ],
+  "apis": [
+    {
+      "path": "/directory/room/{roomAlias}",
+      "operations": [
+        {
+          "method": "GET",
+          "summary": "Get the room ID corresponding to this room alias.",
+          "type": "DirectoryResponse",
+          "nickname": "get_room_id_for_alias",
+          "parameters": [
+            {
+              "name": "roomAlias",
+              "description": "The room alias.",
+              "required": true,
+              "type": "string",
+              "paramType": "path"
+            }
+          ]
+        },
+        {
+          "method": "PUT",
+          "summary": "Create a new mapping from room alias to room ID.",
+          "type": "void",
+          "nickname": "add_room_alias",
+          "parameters": [
+            {
+              "name": "roomAlias",
+              "description": "The room alias to set.",
+              "required": true,
+              "type": "string",
+              "paramType": "path"
+            },
+            {
+              "name": "body",
+              "description": "The room ID to set.",
+              "required": true,
+              "type": "RoomAliasRequest",
+              "paramType": "body"
+            }
+          ]
+        }
+      ]
+    }
+  ],
+  "models": {
+    "DirectoryResponse": {
+      "id": "DirectoryResponse",
+      "properties": {
+        "room_id": {
+          "type": "string",
+          "description": "The fully-qualified room ID.",
+          "required": true
+        },
+        "servers": {
+          "type": "array",
+          "items": {
+            "$ref": "string"
+          },
+          "description": "A list of servers that know about this room.",
+          "required": true
+        }
+      }
+    },
+    "RoomAliasRequest": {
+      "id": "RoomAliasRequest",
+      "properties": {
+        "room_id": {
+          "type": "string",
+          "description": "The room ID to map the alias to.",
+          "required": true
+        }
+      }
+    }
+  }
+}
diff --git a/docs/client-server/swagger_matrix/events b/docs/client-server/swagger_matrix/events
index e8b96861f5..ca69d34db5 100644
--- a/docs/client-server/swagger_matrix/events
+++ b/docs/client-server/swagger_matrix/events
@@ -67,6 +67,38 @@
           ]
         }
       ]
+    },
+    {
+      "path": "/initialSync",
+      "operations": [
+        {
+          "method": "GET",
+          "summary": "Get this user's current state.",
+          "notes": "Get this user's current state.",
+          "type": "InitialSyncResponse",
+          "nickname": "initial_sync",
+          "parameters": [
+            {
+              "name": "limit",
+              "description": "The maximum number of messages to return for each room.",
+              "type": "integer",
+              "paramType": "query",
+              "required": false
+            }
+          ]
+        }
+      ]
+    },
+    {
+      "path": "/publicRooms",
+      "operations": [
+        {
+          "method": "GET",
+          "summary": "Get a list of publicly visible rooms.",
+          "type": "PublicRoomsPaginationChunk",
+          "nickname": "get_public_room_list"
+        }
+      ]
     }
   ],
   "models": {
@@ -107,6 +139,108 @@
           "required": true
         }
       }
+    },
+    "PublicRoomInfo": {
+      "id": "PublicRoomInfo",
+      "properties": {
+        "aliases": {
+          "type": "array",
+          "description": "A list of room aliases for this room.",
+          "items": {
+            "$ref": "string"
+          }
+        },
+        "name": {
+          "type": "string",
+          "description": "The name of the room, as given by the m.room.name state event."
+        },
+        "room_id": {
+          "type": "string",
+          "description": "The room ID for this public room.",
+          "required": true
+        },
+        "topic": {
+          "type": "string",
+          "description": "The topic of this room, as given by the m.room.topic state event."
+        }
+      }
+    },
+    "PublicRoomsPaginationChunk": {
+      "id": "PublicRoomsPaginationChunk",
+      "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
+        },
+        "chunk": {
+          "type": "array",
+          "description": "A list of public room data.",
+          "required": true,
+          "items": {
+            "$ref": "PublicRoomInfo"
+          }
+        }
+      }
+    },
+    "InitialSyncResponse": {
+      "id": "InitialSyncResponse",
+      "properties": {
+        "end": {
+          "type": "string",
+          "description": "A streaming token which can be used with /events to continue from this snapshot of data.",
+          "required": true
+        },
+        "presence": {
+          "type": "array",
+          "description": "A list of presence events.",
+          "items": {
+            "$ref": "Event"
+          },
+          "required": false
+        },
+        "rooms": {
+          "type": "array",
+          "description": "A list of initial sync room data.",
+          "required": false,
+          "items": {
+            "$ref": "InitialSyncRoomData"
+          }
+        }
+      }
+    },
+    "InitialSyncRoomData": {
+      "id": "InitialSyncRoomData",
+      "properties": {
+        "membership": {
+          "type": "string",
+          "description": "This user's membership state in this room.",
+          "required": true
+        },
+        "room_id": {
+          "type": "string",
+          "description": "The ID of this room.",
+          "required": true
+        },
+        "messages": {
+          "type": "PaginationChunk",
+          "description": "The most recent messages for this room, governed by the limit parameter.",
+          "required": false
+        },
+        "state": {
+          "type": "array",
+          "description": "A list of state events representing the current state of the room.",
+          "required": false,
+          "items": {
+            "$ref": "Event"
+          }
+        }
+      }
     }
   }
 }
diff --git a/docs/client-server/swagger_matrix/rooms b/docs/client-server/swagger_matrix/rooms
index 7a2b5399a2..1ead8b8c14 100644
--- a/docs/client-server/swagger_matrix/rooms
+++ b/docs/client-server/swagger_matrix/rooms
@@ -148,19 +148,108 @@
         }
       ]
     },
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
     {
-      "path": "/rooms/{roomId}/members/{userId}/state",
+      "path": "/rooms/{roomId}/invite/{txnId}",
+      "operations": [
+        {
+          "method": "PUT",
+          "summary": "Invite a user to this room.",
+          "notes": "This operation can also be done as a POST to /rooms/{roomId}/invite",
+          "type": "void",
+          "nickname": "invite",
+          "consumes": [
+            "application/json"
+          ],
+          "parameters": [
+            {
+              "name": "roomId",
+              "description": "The room which has this user.",
+              "required": true,
+              "type": "string",
+              "paramType": "path"
+            },
+            {
+              "name": "txnId",
+              "description": "A client transaction ID for this PUT to ensure idempotency. This can only be omitted if the HTTP method becomes a POST. ",
+              "required": false,
+              "type": "string",
+              "paramType": "path"
+            },
+            {
+              "name": "body",
+              "description": "The user to invite.",
+              "required": true,
+              "type": "InviteRequest",
+              "paramType": "body"
+            }
+          ]
+        }  
+      ]
+    },
+    {
+      "path": "/rooms/{roomId}/join/{txnId}",
+      "operations": [
+        {
+          "method": "PUT",
+          "summary": "Join this room.",
+          "notes": "This operation can also be done as a POST to /rooms/{roomId}/join",
+          "type": "void",
+          "nickname": "join_room",
+          "consumes": [
+            "application/json"
+          ],
+          "parameters": [
+            {
+              "name": "roomId",
+              "description": "The room to join.",
+              "required": true,
+              "type": "string",
+              "paramType": "path"
+            },
+            {
+              "name": "txnId",
+              "description": "A client transaction ID for this PUT to ensure idempotency. This can only be omitted if the HTTP method becomes a POST. ",
+              "required": false,
+              "type": "string",
+              "paramType": "path"
+            }
+          ]
+        }  
+      ]
+    },
+    {
+      "path": "/rooms/{roomId}/leave/{txnId}",
+      "operations": [
+        {
+          "method": "PUT",
+          "summary": "Leave this room.",
+          "notes": "This operation can also be done as a POST to /rooms/{roomId}/leave",
+          "type": "void",
+          "nickname": "leave",
+          "consumes": [
+            "application/json"
+          ],
+          "parameters": [
+            {
+              "name": "roomId",
+              "description": "The room to leave.",
+              "required": true,
+              "type": "string",
+              "paramType": "path"
+            },
+            {
+              "name": "txnId",
+              "description": "A client transaction ID for this PUT to ensure idempotency. This can only be omitted if the HTTP method becomes a POST. ",
+              "required": false,
+              "type": "string",
+              "paramType": "path"
+            }
+          ]
+        }  
+      ]
+    },
+    {
+      "path": "/rooms/{roomId}/state/m.room.member/{userId}",
       "operations": [
         {
           "method": "PUT",
@@ -249,50 +338,9 @@
               "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/{roomAliasOrId}",
       "operations": [
@@ -613,6 +661,15 @@
           "type": "Member"
         }
       }
+    },
+    "InviteRequest": {
+      "id": "InviteRequest",
+      "properties": {
+        "user_id": {
+          "type": "string",
+          "description": "The fully-qualified user ID."
+        }
+      }
     }
   }
 }