# Group Channels

API endpoints for managing channels within groups. Channels are specialized accounts that enable organized content distribution within groups. They support hierarchical organization with primary and auto-subscribe channels, privacy controls inherited from parent groups, and both scoped (group-specific) and global usernames for discovery. Group admins manage channels while members follow.

## List all group channels

 - [GET /api/v1/groups/{groupId}/channels](https://docs.wellesley.social/openapi/group-channels/paths/~1api~1v1~1groups~1%7Bgroupid%7D~1channels/get.md): Retrieves a complete list of all channels within the specified group. Requires group membership to access. Returns both public and private channels visible to the authenticated user. The response includes channel metadata such as privacy settings, auto-subscribe status, and whether each channel is designated as the primary channel. Channels are returned in creation order.

RBAC: requires GroupChannels.Read

## Create a new group channel

 - [POST /api/v1/groups/{groupId}/channels](https://docs.wellesley.social/openapi/group-channels/paths/~1api~1v1~1groups~1%7Bgroupid%7D~1channels/post.md): Creates a new channel within the specified group. Requires group administrator privileges. The channel's privacy is constrained by the parent group's privacy settings (private groups can only have private channels). The first channel created is automatically designated as both primary and auto-subscribe. Channels can have both scoped usernames (group-specific) and optional global usernames (platform-wide). Note: Avatar and header images must be set via the update endpoint after creation.

RBAC: requires GroupChannels.Manage

## List auto-subscribe channels

 - [GET /api/v1/groups/{groupId}/channels/auto-subscribe](https://docs.wellesley.social/openapi/group-channels/paths/~1api~1v1~1groups~1%7Bgroupid%7D~1channels~1auto-subscribe/get.md): Retrieves all channels designated as auto-subscribe for the specified group. Auto-subscribe channels are automatically followed by new members upon joining. Requires group membership to access. Returns an empty array if no auto-subscribe channels are configured. The response includes full channel information including privacy settings and follow status.

RBAC: requires GroupChannels.Read

## Get group channel by scoped username

 - [GET /api/v1/groups/{groupId}/channels/lookup](https://docs.wellesley.social/openapi/group-channels/paths/~1api~1v1~1groups~1%7Bgroupid%7D~1channels~1lookup/get.md): Retrieves a channel using its group-scoped username (slug). Useful for accessing channels without global usernames. Private channels and channels inside private groups require membership and otherwise return 404.

## Retrieve primary channel

 - [GET /api/v1/groups/{groupId}/channels/primary](https://docs.wellesley.social/openapi/group-channels/paths/~1api~1v1~1groups~1%7Bgroupid%7D~1channels~1primary/get.md): Retrieves the designated primary channel for the specified group. Access control is based on both group and channel privacy settings. Public groups with public primary channels are accessible to everyone. Private groups or private channels require group membership. Returns 404 if no primary channel is designated or if access is denied due to privacy settings.

## List public channels

 - [GET /api/v1/groups/{groupId}/channels/public](https://docs.wellesley.social/openapi/group-channels/paths/~1api~1v1~1groups~1%7Bgroupid%7D~1channels~1public/get.md): Retrieves all public channels from a public group. This endpoint is accessible to everyone, including non-members and unauthenticated users, but only works for public groups. Private groups will return an error regardless of their channels' privacy settings. Useful for discovery and browsing group content before joining. Channels with global usernames are included with their platform-wide identifiers.

## Update an existing group channel

 - [PUT /api/v1/groups/{groupId}/channels/{channelId}](https://docs.wellesley.social/openapi/group-channels/paths/~1api~1v1~1groups~1%7Bgroupid%7D~1channels~1%7Bchannelid%7D/put.md): Modifies properties of an existing channel. Requires group administrator privileges. Only included fields are updated; null fields preserve existing values. Privacy changes are constrained by the parent group's privacy (cannot make a channel public in a private group). Changes to auto-subscribe status affect auto-follow behavior for new members.

RBAC: requires GroupChannels.Manage

## Get group channel by id

 - [GET /api/v1/groups/{groupId}/channels/{channelId}](https://docs.wellesley.social/openapi/group-channels/paths/~1api~1v1~1groups~1%7Bgroupid%7D~1channels~1%7Bchannelid%7D/get.md): Retrieves a channel within the current group by its identifier. Access to private channels (or channels in private groups) is restricted to group members; outsiders receive a 404.

## Delete a group channel

 - [DELETE /api/v1/groups/{groupId}/channels/{channelId}](https://docs.wellesley.social/openapi/group-channels/paths/~1api~1v1~1groups~1%7Bgroupid%7D~1channels~1%7Bchannelid%7D/delete.md): Removes the specified channel from the group. Requires group administrator privileges. The channel is marked as deleted immediately and background workers handle cleanup of posts, media, and follower relationships.

RBAC: requires GroupChannels.Manage

## Update channel auto-subscribe status

 - [PUT /api/v1/groups/{groupId}/channels/{channelId}/auto-subscribe](https://docs.wellesley.social/openapi/group-channels/paths/~1api~1v1~1groups~1%7Bgroupid%7D~1channels~1%7Bchannelid%7D~1auto-subscribe/put.md): Toggles whether a channel is designated as an auto-subscribe channel. Requires group admin privileges. Auto-subscribe channels are automatically followed by new group members upon joining. Multiple channels can be marked as auto-subscribe. This setting helps onboard new members by ensuring they receive content from essential channels immediately.

RBAC: requires GroupChannels.Manage

## Designate channel as primary

 - [PUT /api/v1/groups/{groupId}/channels/{channelId}/primary](https://docs.wellesley.social/openapi/group-channels/paths/~1api~1v1~1groups~1%7Bgroupid%7D~1channels~1%7Bchannelid%7D~1primary/put.md): Sets the specified channel as the primary channel for the group. Requires group administrator privileges. Only one channel can be designated as primary per group. The primary channel serves as the main communication channel and is prominently displayed in group interfaces. Any existing primary channel designation is automatically removed.

RBAC: requires GroupChannels.Manage

## Assign or update global username

 - [PUT /api/v1/groups/{groupId}/channels/{channelId}/username](https://docs.wellesley.social/openapi/group-channels/paths/~1api~1v1~1groups~1%7Bgroupid%7D~1channels~1%7Bchannelid%7D~1username/put.md): Assigns, updates, or removes a global username for a public channel. Requires group administrator privileges. Global usernames provide platform-wide discovery and must be unique across the entire system. Only public channels in public groups can have global usernames. Setting the username to null removes any existing global username assignment.

RBAC: requires GroupChannels.Manage

