Creator pillar · v0.15.2

channel Channel

A single channel on a creator platform.

$id · https://corpospec.com/schemas/v0.15.2/channel.schema.json

Fields

Field Type Required Description
description string yes
entity_id PathRef yes Owning legal entity (`PathRef` to `entity/`).
first_synced_at IsoDate yes First-fetch timestamp; immutable on subsequent re-syncs.
id PathRef yes CorpoSpec PathRef (e.g. `creator/channels/unstarter-yt`).
made_for_kids boolean yes Channel-wide kids designation; affects monetisation eligibility and audience-snapshot interpretation on platforms that surface it (e.g. YouTube `madeForKids`).
platform CreatorPlatform yes Cross-platform discriminator on `Channel`. Identifies the host platform a channel lives on. Open-ended by design: new platforms extend the enum without breaking the channel shape — connectors map each platform onto the existing platform-agnostic field set (`platform_channel_id`, `platform_uploads_id`, `provenance`, statistics, breakdowns) without renaming or restructuring.
platform_channel_id string yes Platform-side stable identifier for this channel. Format is platform-specific (YouTube emits `UC…` channel IDs; Twitch emits numeric user IDs; TikTok emits `@handle` SecUIDs). Treated as an opaque token by CorpoSpec; the connector layer interprets it. Persisted indefinitely as a structural identifier.
privacy_status ChannelPrivacyStatus yes Channel-level privacy status. Public, unlisted, and private are the three states common to YouTube, Twitch, Vimeo, and most creator platforms; values map onto each platform's native enum at the connector boundary.
provenance SyncProvenance yes Provenance metadata for this channel record. The `retention_tier` reflects the strictest tier across the record's fields — snippet text typically purges with the upstream platform's derived-data window, while structural identifiers (channel ID, uploads collection, channel-creation timestamp) are persisted indefinitely. Stamped with the strictest applicable tier so the cache-purge job can decide conservatively.
published_at string yes Channel-creation timestamp on the platform; immutable. Persisted indefinitely as a structural identifier.
statistics ChannelStatistics yes Most-recent-synced statistics for the channel. Snapshot semantics: every field is valid as of the parent record's `provenance.synced_at`. Long-horizon growth curves (year-over-year subscriber deltas, lifetime view trajectories) are reconstructed from the daily audience-snapshot history rather than from successive channel re-syncs.
title string yes
country IsoCountry? ISO 3166-1 alpha-2 country.
custom_url string? Creator handle (e.g. `@unstarter`). May be unset for new channels.
default_language string? BCP-47 language code. Optional.
keywords string? Creator-authored search keywords. Free-form text (e.g. YouTube's space-separated `brandingSettings.channel.keywords`). High-signal positioning input for AI agents.
platform_uploads_id string? Platform-side identifier for the channel's enumerable uploads collection, where the platform exposes one. YouTube uses an uploads playlist ID; platforms that paginate uploads by channel ID directly leave this empty. Optional and platform-specific.
thumbnail_default_url string? Default thumbnail URL (HTTPS; ephemeral).
thumbnail_high_url string? High thumbnail URL.
thumbnail_medium_url string? Medium thumbnail URL.
topic_categories string[] Topic descriptors as URL references (e.g. Wikipedia URLs from YouTube `topicDetails.topicCategories`).
unsubscribed_trailer_video_id string? Featured "first impression" video for visitors who are not yet subscribed. Stored as a `creator/videos/` PathRef once the video table is populated; the platform's raw video identifier is accepted on first sync.

Definitions

Shared types referenced within this schema.

ChannelPrivacyStatus
Channel-level privacy status. Public, unlisted, and private are the three states common to YouTube, Twitch, Vimeo, and most creator platforms; values map onto each platform's native enum at the connector boundary.
enum: "public", "private", "unlisted"
ChannelStatistics
Most-recent-synced statistics for the channel. Snapshot semantics: every field is valid as of the parent record's `provenance.synced_at`. Long-horizon growth curves (year-over-year subscriber deltas, lifetime view trajectories) are reconstructed from the daily audience-snapshot history rather than from successive channel re-syncs.
type: object
CreatorPlatform
Cross-platform discriminator on `Channel`. Identifies the host platform a channel lives on. Open-ended by design: new platforms extend the enum without breaking the channel shape — connectors map each platform onto the existing platform-agnostic field set (`platform_channel_id`, `platform_uploads_id`, `provenance`, statistics, breakdowns) without renaming or restructuring.
enum: "youtube"
DataClass
Classification of a synced field's data sensitivity. Drives subject- rights workflows and cache-purge retention decisions.
IsoCountry
ISO 3166-1 alpha-2 country code.
pattern: ^[A-Z]{2}$
IsoDate
ISO 8601 date (YYYY-MM-DD).
type: string
PathRef
Path-based cross-reference relative to .corpospec/ root. Pattern: `^[a-z0-9_-]+(/[a-z0-9_.-]+)+$`
pattern: ^[a-z0-9_-]+(/[a-z0-9_.-]+)+$
RetentionTier
Retention policy applied to a synced record. Tiers are named after the discipline they impose; the connector layer maps each upstream surface onto the appropriate tier. - `thirty_day_strict` — atomic records that auto-purge or refresh at the thirty-day boundary. The dominant tier on platforms whose Terms of Service impose a thirty-day cache discipline on derived data (e.g. YouTube Developer Policies §III.E.4 for Data API outputs). - `thirty_day_aggregate_with_lineage` — atomic record purges at thirty days; the aggregate computed from it may be retained when accompanied by explicit `derived_from` + `derivation_method` lineage. - `auth_lifetime` — atomic record retains against active OAuth authorisation; tears down on token revocation or tenant deletion. Used for analytics surfaces whose ToS explicitly exempt them from the thirty-day rule (e.g. YouTube Analytics API per §III.E.4). - `creator_authored` — data the tenant originates rather than fetches; no upstream-platform retention constraint applies. - `metadata_indefinite` — structural identifiers and immutable timestamps the upstream ToS explicitly permits to retain.
SourceAttribution
Source attribution for a synced field. Records the kind of upstream surface that produced the value; combined with the parent record's `platform`, this fully attributes any value back to its origin. Open-ended by design: new connector kinds (e.g. monetary or content- owner APIs) extend without breaking changes. The platform discriminator (`Channel.platform`) carries the brand identity; this enum carries only the kind of API surface the value came from.
SyncProvenance
Provenance metadata stamped on every synced atomic record across the creator pillar. Per-record granularity; the `retention_tier` reflects the strictest tier of any field on the record so the cache-purge job can decide conservatively. Field-level retention distinctions are documented in each entity type's struct doc-comments — the schema documents the static taxonomy, the data carries only the per-fetch state.
type: object

Reference in your YAML

# yaml-language-server: $schema=https://corpospec.com/schemas/v0.15.2/channel.schema.json