From 7b4c532ab70079bfda251f9ef1e44aa70e726249 Mon Sep 17 00:00:00 2001
From: babolivier
The Block Room admin API allows server admins to block and unblock rooms, +and query to see if a given room is blocked. +This API can be used to pre-emptively block a room, even if it's unknown to this +homeserver. Users will be prevented from joining a blocked room.
+The API is:
+PUT /_synapse/admin/v1/rooms/<room_id>/block
+
+with a body of:
+{
+ "block": true
+}
+
+A response body like the following is returned:
+{
+ "block": true
+}
+
+Parameters
+The following parameters should be set in the URL:
+room_id
- The ID of the room.The following JSON body parameters are available:
+block
- If true
the room will be blocked and if false
the room will be unblocked.Response
+The following fields are possible in the JSON response body:
+block
- A boolean. true
if the room is blocked, otherwise false
The API is:
+GET /_synapse/admin/v1/rooms/<room_id>/block
+
+A response body like the following is returned:
+{
+ "block": true,
+ "user_id": "<user_id>"
+}
+
+Parameters
+The following parameters should be set in the URL:
+room_id
- The ID of the room.Response
+The following fields are possible in the JSON response body:
+block
- A boolean. true
if the room is blocked, otherwise false
user_id
- An optional string. If the room is blocked (block
is true
) shows
+the user who has add the room to blocking list. Otherwise it is not displayed.The Delete Room admin API allows server admins to remove rooms from the server and block these rooms.
@@ -545,15 +604,27 @@ leave the room without any information.The new room will be created with the user specified by the new_room_user_id
parameter
as room administrator and will contain a message explaining what happened. Users invited
to the new room will have power level -10
by default, and thus be unable to speak.
If block
is True
it prevents new joins to the old room.
If block
is true
, users will be prevented from joining the old room.
+This option can in Version 1 also be used to pre-emptively
+block a room, even if it's unknown to this homeserver. In this case, the room will be
+blocked, and no further action will be taken. If block
is false
, attempting to
+delete an unknown room is invalid and will be rejected as a bad request.
This API will remove all trace of the old room from your database after removing
all local users. If purge
is true
(the default), all traces of the old room will
be removed from your database after removing all local users. If you do not want
this to happen, set purge
to false
.
-Depending on the amount of history being purged a call to the API may take
+Depending on the amount of history being purged, a call to the API may take
several minutes or longer.
The local server will only have the power to move local user and room aliases to the new room. Users on other servers will be unaffected.
+To use it, you will need to authenticate by providing an access_token
for a
+server admin: see Admin API.
This version works synchronously. That means you only get the response once the server has +finished the action, which may take a long time. If you request the same action +a second time, and the server has not finished the first one, the second request will block. +This is fixed in version 2 of this API. The parameters are the same in both APIs. +This API will become deprecated in the future.
The API is:
DELETE /_synapse/admin/v1/rooms/<room_id>
@@ -566,8 +637,6 @@ the new room. Users on other servers will be unaffected.
"purge": true
}
-To use it, you will need to authenticate by providing an access_token
for a
-server admin: see Admin API.
A response body like the following is returned:
{
"kicked_users": [
@@ -581,6 +650,31 @@ server admin: see Admin API.
"new_room_id": "!newroomid:example.com"
}
+The parameters and response values have the same format as +version 2 of the API.
+Note: This API is new, experimental and "subject to change".
+This version works asynchronously, meaning you get the response from server immediately +while the server works on that task in background. You can then request the status of the action +to check if it has completed.
+The API is:
+DELETE /_synapse/admin/v2/rooms/<room_id>
+
+with a body of:
+{
+ "new_room_user_id": "@someuser:example.com",
+ "room_name": "Content Violation Notification",
+ "message": "Bad Room has been shutdown due to content violations on this server. Please review our Terms of Service.",
+ "block": true,
+ "purge": true
+}
+
+The API starts the shut down and purge running, and returns immediately with a JSON body with +a purge id:
+{
+ "delete_id": "<opaque id>"
+}
+
Parameters
The following parameters should be set in the URL:
Content Violation Notification
message
- Optional. A string containing the first message that will be sent as
new_room_user_id
in the new room. Ideally this will clearly convey why the
original room was shut down. Defaults to Sharing illegal content on this server is not permitted and rooms in violation will be blocked.
block
- Optional. If set to true
, this room will be added to a blocking list, preventing
-future attempts to join the room. Defaults to false
.block
- Optional. If set to true
, this room will be added to a blocking list,
+preventing future attempts to join the room. Rooms can be blocked
+even if they're not yet known to the homeserver (only with
+Version 1 of the API). Defaults to false
.purge
- Optional. If set to true
, it will remove all traces of the room from your database.
Defaults to true
.force_purge
- Optional, and ignored unless purge
is true
. If set to true
, it
@@ -608,14 +704,111 @@ use this unless a regular purge
operation fails, as it could leave
clients in a confused state.The JSON body must not be empty. The body must be at least {}
.
Response
+Note: This API is new, experimental and "subject to change".
+It is possible to query the status of the background task for deleting rooms. +The status can be queried up to 24 hours after completion of the task, +or until Synapse is restarted (whichever happens first).
+room_id
With this API you can get the status of all active deletion tasks, and all those completed in the last 24h,
+for the given room_id
.
The API is:
+GET /_synapse/admin/v2/rooms/<room_id>/delete_status
+
+A response body like the following is returned:
+{
+ "results": [
+ {
+ "delete_id": "delete_id1",
+ "status": "failed",
+ "error": "error message",
+ "shutdown_room": {
+ "kicked_users": [],
+ "failed_to_kick_users": [],
+ "local_aliases": [],
+ "new_room_id": null
+ }
+ }, {
+ "delete_id": "delete_id2",
+ "status": "purging",
+ "shutdown_room": {
+ "kicked_users": [
+ "@foobar:example.com"
+ ],
+ "failed_to_kick_users": [],
+ "local_aliases": [
+ "#badroom:example.com",
+ "#evilsaloon:example.com"
+ ],
+ "new_room_id": "!newroomid:example.com"
+ }
+ }
+ ]
+}
+
+Parameters
+The following parameters should be set in the URL:
+room_id
- The ID of the room.delete_id
With this API you can get the status of one specific task by delete_id
.
The API is:
+GET /_synapse/admin/v2/rooms/delete_status/<delete_id>
+
+A response body like the following is returned:
+{
+ "status": "purging",
+ "shutdown_room": {
+ "kicked_users": [
+ "@foobar:example.com"
+ ],
+ "failed_to_kick_users": [],
+ "local_aliases": [
+ "#badroom:example.com",
+ "#evilsaloon:example.com"
+ ],
+ "new_room_id": "!newroomid:example.com"
+ }
+}
+
+Parameters
+The following parameters should be set in the URL:
+delete_id
- The ID for this delete.The following fields are returned in the JSON response body:
results
- An array of objects, each containing information about one task.
+This field is omitted from the result when you query by delete_id
.
+Task objects contain the following fields:
+delete_id
- The ID for this purge if you query by room_id
.status
- The status will be one of:
+shutting_down
- The process is removing users from the room.purging
- The process is purging the room and event data from database.complete
- The process has completed successfully.failed
- The process is aborted, an error has occurred.error
- A string that shows an error message if status
is failed
.
+Otherwise this field is hidden.shutdown_room
- An object containing information about the result of shutting down the room.
+Note: The result is shown after removing the room members.
+The delete process can still be running. Please pay attention to the status
.
+kicked_users
- An array of users (user_id
) that were kicked.failed_to_kick_users
- An array of users (user_id
) that that were not kicked.local_aliases
- An array of strings representing the local aliases that were migrated from
-the old room to the new.new_room_id
- A string representing the room ID of the new room.local_aliases
- An array of strings representing the local aliases that were
+migrated from the old room to the new.new_room_id
- A string representing the room ID of the new room, or null
if
+no such room was created.Note: This guide may be outdated by the time you read it. By nature of room deletions being performed at the database level, -- cgit 1.5.1