Changeset 0.37.14 (#226)
Co-authored-by: gobha <jasafpro@gmail.com> Co-committed-by: gobha <jasafpro@gmail.com>
This commit is contained in:
@@ -116,10 +116,34 @@ Same field set as create, plus `is_archived`, `is_pinned`, `settings`
|
||||
DELETE /channels/:id
|
||||
```
|
||||
|
||||
Cascades: deletes messages, files, channel_models, channel_kbs,
|
||||
**Retention policy (v0.37.14):** When `retention_ttl_days > 0`, all
|
||||
channels are archived on delete and purged after the TTL. The only
|
||||
exception is channels using a Personal (BYOK) provider — those are
|
||||
always hard-deleted immediately.
|
||||
|
||||
| Provider scope | TTL > 0 | TTL = 0 |
|
||||
|---------------|---------|---------|
|
||||
| `personal` (BYOK) | Hard delete | Hard delete |
|
||||
| `global` | Archive + purge after TTL | Hard delete |
|
||||
| `team` | Archive + purge after TTL | Hard delete |
|
||||
| NULL (no provider) | Archive + purge after TTL | Hard delete |
|
||||
|
||||
When retention applies, the channel is archived (`is_archived = true`)
|
||||
and stamped with `purge_after`. A background scanner purges channels
|
||||
past their `purge_after` hourly. Archived channels are hidden from
|
||||
the user's sidebar.
|
||||
|
||||
Non-owners who call DELETE are removed as participants ("leave channel")
|
||||
instead of deleting.
|
||||
|
||||
**Response (immediate delete):** `{"message": "channel deleted"}`
|
||||
**Response (retention):** `{"message": "channel archived for retention", "purge_after": "..."}`
|
||||
**Response (leave):** `{"message": "left channel"}`
|
||||
|
||||
Hard-delete cascades: messages, files, channel_models, channel_kbs,
|
||||
channel_participants. Storage cleanup runs asynchronously.
|
||||
|
||||
**Auth:** Owner only.
|
||||
**Auth:** Owner for delete/archive; any participant for leave.
|
||||
|
||||
### Message Tree
|
||||
|
||||
|
||||
Reference in New Issue
Block a user