Skip to content

channel_create

channel_create is implemented by handleChannelCreate in src/api/handlers/channel/channel_create.osl.

Creates a channel or visual separator. For separators, size is the amount of UI spacing/padding clients should render around the separator.

Gate Requirement
Authentication Required by the central API gate.
Central permission manage_channels
Broadcast Not marked global directly by this adapter. A helper may emit focused or server-wide updates.

Every request includes cmd: "channel_create" and may include an opaque listener correlation value.

Field Validation / meaning
name schema.string().trim().minLen(1).maxLen(64)
type schema.enum(["text", "voice", "forum", "separator"])
permissions schema.record(schema.any()).optional()
description schema.string().optional()
display_name schema.string().optional()
size schema.number().optional()
max_message_age schema.number().min(0).optional()
slow_mode_cooldown schema.number().min(0).optional()

The handler and shared validation path use these OSL schema definitions before normalization:

*schema.Schema schemaChannelCreate = schema.object({
name: schema.string().trim().minLen(1).maxLen(64),
type: schema.enum(["text", "voice", "forum", "separator"]),
permissions: schema.record(schema.any()).optional(),
description: schema.string().optional(),
display_name: schema.string().optional(),
size: schema.number().optional(),
max_message_age: schema.number().min(0).optional(),
slow_mode_cooldown: schema.number().min(0).optional()
})
  1. handleCmd enforces authentication and the manage_channels permission.
  2. dispatchCmd routes channel_create to handleChannelCreate.
  3. The adapter validates and normalizes input, then calls its domain collaborators.
  4. Durable mutations complete before the response or event is returned.
  5. onMessage adds the request listener to direct responses and performs any marked broadcast.

Direct collaborators visible in the handler: channelNameError, channelGet, channelCreate, auditRecord, refreshChannels

Response/event command names visible in this adapter: channel_create.

Validation and domain failures use:

{
"cmd": "error",
"val": "<message>",
"src": "channel_create",
"listener": "<copied from request>"
}