> ## Documentation Index > Fetch the complete documentation index at: https://developer.rocket.chat/llms.txt > Use this file to discover all available pages before exploring further. # Save Room Settings > Updates the settings of an existing room. For ABAC-managed rooms, the following guardrails apply: - Changing `roomAnnouncement`, `roomTopic`, or `roomDescription` is rejected with `error-action-not-allowed`. - Setting `default: true` on an ABAC-managed room is rejected with `error-action-not-allowed`. - Changing `roomType` from `p` to `c` is rejected with `error-action-not-allowed`. The same guard applies to private rooms in ABAC-managed private teams. - When `roomType` changes to `c` (public) and conversion is allowed, existing room ABAC attributes are cleared as part of the conversion. Permission required: `edit-room` ### Changelog | Version | Description | | ------- | ------------| | 8.5.0 | Added ABAC guardrails: announcement, topic, description, default flag, and conversion to public are blocked on ABAC-managed rooms. | | 3.13.0 | Added | ## OpenAPI ````json POST /api/v1/rooms.saveRoomSettings { "openapi": "3.0.0", "info": { "version": "1.0.0", "title": "Rooms" }, "servers": [ { "url": "https://apiexplorer.support.rocket.chat" } ], "tags": [ { "name": "Channels" }, { "name": "Directory" }, { "name": "Groups" }, { "name": "Rooms" }, { "name": "Teams" }, { "name": "Room Invites" }, { "name": "Subscriptions" }, { "name": "ABAC" } ], "paths": { "/api/v1/rooms.saveRoomSettings": { "post": { "tags": [ "Rooms" ], "summary": "Save Room Settings", "description": "Updates the settings of an existing room.\n\nFor ABAC-managed rooms, the following guardrails apply:\n\n- Changing `roomAnnouncement`, `roomTopic`, or `roomDescription` is rejected with `error-action-not-allowed`.\n- Setting `default: true` on an ABAC-managed room is rejected with `error-action-not-allowed`.\n- Changing `roomType` from `p` to `c` is rejected with `error-action-not-allowed`. The same guard applies to private rooms in ABAC-managed private teams.\n- When `roomType` changes to `c` (public) and conversion is allowed, existing room ABAC attributes are cleared as part of the conversion.\n\nPermission required: `edit-room`\n\n### Changelog\n| Version | Description |\n| ------- | ------------|\n| 8.5.0 | Added ABAC guardrails: announcement, topic, description, default flag, and conversion to public are blocked on ABAC-managed rooms. |\n| 3.13.0 | Added |", "operationId": "post-api-v1-rooms.saveRoomSettings", "parameters": [ { "$ref": "#/components/parameters/Auth-Token" }, { "$ref": "#/components/parameters/UserId" } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "rid": { "type": "string", "description": "The room ID." }, "roomName": { "type": "string", "description": "The name of the room." }, "roomDescription": { "type": "string", "description": "The description of the room." }, "roomAvatar": { "type": "string", "description": "The base64 image." }, "featured": { "type": "boolean", "description": "Whether the room is featured or not." }, "roomTopic": { "type": "string", "description": "The topic of the room." }, "roomAnnouncement": { "type": "string", "description": "The announcement of the room." }, "roomCustomFields": { "type": "object", "description": "An object of the custom fields of the room." }, "roomType": { "type": "string", "description": "The type of the room. It could be `c` for public rooms or `p` for private rooms." }, "readOnly": { "type": "boolean", "description": "Whether the room is read-only or not." }, "reactWhenReadOnly": { "type": "boolean", "description": "Whether users can react when the room is read-only." }, "systemMessages": { "type": "array", "items": { "type": "string" }, "description": "The system messages that the room supports." }, "default": { "type": "boolean", "description": "Whether the room is the default room or not." }, "joinCode": { "type": "string", "description": "The join code of the room." }, "streamingOptions": { "type": "object", "description": "The streaming options of the room." }, "retentionEnabled": { "type": "boolean", "description": "Whether retention is enabled for the room or not." }, "retentionMaxAge": { "type": "string", "description": "The maximum age (in days) of messages to be retained in the room." }, "retentionExcludePinned": { "type": "boolean", "description": "Whether to exclude pinned messages from retention or not." }, "retentionFilesOnly": { "type": "boolean", "description": "Whether to retain only files in the room or not." }, "retentionIgnoreThreads": { "type": "boolean", "description": "Whether to ignore threads when retaining messages or not." }, "retentionOverrideGlobal": { "type": "boolean", "description": "Whether to override the global retention settings for the room or not." }, "encrypted": { "type": "boolean", "description": "Whether the room is encrypted or not." }, "favorite": { "type": "object", "description": "The favorite settings of the room. Whether the room is marked as favorite and whether it is set as the default room." }, "sidepanel": { "type": "object", "description": "List the team's channels or discussions to be displayed in the sidepanel.", "properties": { "items": { "type": "array", "description": "The options are `discussions` and `channels`.", "items": { "type": "string", "example": "[\"discussions\", \"channels\"]" } } } } }, "required": [ "rid" ] }, "examples": { "Example": { "value": { "rid": "JZ8Y2dLfYhsg323Rf", "roomName": "Test-Save-Room", "roomDescription": "This is a test room." } } } } } }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "rid": { "type": "string" }, "success": { "type": "boolean" } } }, "examples": { "Success": { "value": { "rid": "JZ8Y2dLfYhsg323Rf", "success": true } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "properties": { "success": { "type": "boolean" }, "error": { "type": "string" }, "errorType": { "type": "string" }, "details": { "type": "object", "properties": { "method": { "type": "string" }, "action": { "type": "string" } } } } }, "examples": { "Invalid room": { "value": { "success": false, "error": "Invalid room [error-invalid-room]", "errorType": "error-invalid-room" } }, "ABAC-managed room type conversion blocked": { "value": { "success": false, "error": "Changing an ABAC managed private room to public is not allowed [error-action-not-allowed]", "errorType": "error-action-not-allowed", "details": { "method": "saveRoomSettings", "action": "Change_Room_Type" } } }, "ABAC-managed room default blocked": { "value": { "success": false, "error": "Setting an ABAC managed room as default is not allowed [error-action-not-allowed]", "errorType": "error-action-not-allowed", "details": { "method": "saveRoomSettings", "action": "Viewing_room_administration" } } } } } } }, "401": { "$ref": "#/components/responses/authorizationError" } } } } }, "components": { "parameters": { "Auth-Token": { "name": "X-Auth-Token", "in": "header", "description": "The `authToken` of the authenticated user.", "required": true, "schema": { "type": "string" }, "example": "RScctEHSmLGZGywfIhWyRpyofhKOiMoUIpimhvheU3f" }, "UserId": { "name": "X-User-Id", "in": "header", "description": "The `userId` of the authenticated user.", "required": true, "schema": { "type": "string" }, "example": "rbAXPnMktTFbNpwtJ" } }, "responses": { "authorizationError": { "description": "Unauthorized", "content": { "application/json": { "schema": { "type": "object", "properties": { "success": { "type": "boolean" }, "error": { "type": "string" } } }, "examples": { "Authorization Error": { "value": { "success": false, "error": "You must be logged in to do this." } } } } } } } } } ````