External ID shared across users (e.g., Google calendar ID)
Display name shown in the UI
OptionalenabledWhether this channel should be selected by default when the user first adds the connection. Tri-state:
true — pre-select it (e.g. the user's own/primary calendar).false — exclude it from the default selection (low-value or
irrelevant resources that would crowd the user's view, or containers
whose contents are too broad to sync wholesale — e.g. a holiday or
someone-else's shared calendar, a GitHub org that cascades to every
repo, a Microsoft Teams team container). The user can still enable it
manually.undefined — no opinion; the client decides. The client defaults to
enabling the channel unless its title looks low-value (holidays,
birthdays, spam/sent/draft, …).The guiding principle is "sync everything the user would reasonably want
by default" — for most connectors that's all channels, so only set this
where the connector can distinguish the user's own/relevant channels from
low-value ones (e.g. Google Calendar via accessRole === "owner").
OptionalchildrenOptional nested channel resources (e.g., subfolders)
OptionallinkPer-channel link type configs. Overrides twist-level linkTypes when present.
A resource that can be synced (e.g., a calendar, project, channel). Returned by getChannels() and managed by users in the twist setup/edit modal.