diff --git a/content/docs/build/server-api.mdx b/content/docs/build/server-api.mdx index 5b79ad9..79e014c 100644 --- a/content/docs/build/server-api.mdx +++ b/content/docs/build/server-api.mdx @@ -329,18 +329,27 @@ here sit on top of the thread events above. ### Administration +A channel inside a folder follows the folder's permission scope for as long as +it has none of its own — set one with `server:channels:scope:set` and it +sticks, even Everyone. Pull the channel out of the folder, or delete the +folder, and it keeps whatever scope it was reading at that moment as its own +rather than falling back to Everyone. + | Event | Direction | Notes | |-------|-----------|-------| | `server:settings:get`, `server:settings:update` | client → server | The database-backed settings | | `server:settings` | server → client | | | `server:channels:list`, `:upsert`, `:delete`, `:reorder` | client → server | | | `server:channels` | server → client | | -| `server:channels:scope:get`, `server:channels:scope:set` | client → server | Who can use a channel: Everyone, a template or its own rules | -| `server:channels:scope` | server → client | | +| `server:channels:scope:get`, `server:channels:scope:set` | client → server | Needs `manage_channels`. Who can use a channel: Everyone, a template or its own rules | +| `server:channels:scope:follow` | client → server | Needs `manage_channels`. Drops the channel's own rules and goes back to following its folder | +| `server:channels:scope` | server → client | Answer to all three above. Carries `followsFolder` and, when it's following one, the folder's id and name | +| `server:folders:scope:get`, `server:folders:scope:set` | client → server | Needs `manage_channels`. Same, for a folder — applies to every channel inside it that has no rules of its own | +| `server:folders:scope` | server → client | Answer to both above. Carries `channelCount`, how many channels are following the folder | | `server:permissions:templates:list`, `server:permissions:template:save`, `server:permissions:template:delete` | client → server | Named sets of channel permissions that several channels can share | | `server:permissions:templates` | server → client | | | `server:sidebar:list`, `:item:upsert`, `:item:delete`, `:reorder` | client → server | | -| `server:sidebar` | server → client | | +| `server:sidebar` | server → client | Leaves out any channel the caller can't see, and a folder left with none of its channels in it — unless the caller holds `manage_channels`, which shows everything | | `server:roles:list`, `server:roles:set` | client → server | | | `server:roles`, `server:role:updated` | server → client | | | `server:invites:create`, `:list`, `:revoke` | client → server | |