A podcast series/channel owned by a creator on VoxPort
tid
Timestamp-based ID
Properties
author
string
Optional
Author/creator name (if different from DID owner)
maxLength: 256 bytescategories
array
of
string
Optional
Podcast categories (Apple Podcasts format)
maxLength: 5 itemscover
blob
Optional
Cover art image
maxSize: 2.1 MBcreatedAt
string
datetime
Required
An RFC 3339 formatted timestamp.
description
string
Optional
Podcast description/summary
maxLength: 4000 bytesemail
string
Optional
Contact email for podcast
maxLength: 254 bytesexplicit
boolean
Optional
Whether content is explicit
falsehandle
string
Required
Unique handle for this series
maxLength: 64 byteslanguage
string
language
Optional
Primary language (ISO 639-1)
maxLength: 5 bytespersons
array
of
ref
live.voxport.podcast.episode#person
Optional
People associated with this series — show hosts (Podcasting 2.0 podcast:person at channel level)
maxLength: 50 itemspodcastGuid
string
Optional
Podcasting 2.0 channel-level permanent identity (podcast:guid). A UUIDv5 derived from the feed URL that survives host moves.
maxLength: 64 bytesrssFeedUrl
string
uri
Optional
Original RSS feed URL (for imported series)
rssImported
boolean
Optional
Whether this series was imported from an external RSS feed
falsetitle
string
Required
Display name of the podcast
maxLength: 256 bytesupdatedAt
string
datetime
Optional
An RFC 3339 formatted timestamp.
websiteUrl
string
uri
Optional
External website URL
maxLength: 2048 bytesView raw schema
{
"description": "A podcast series/channel owned by a creator on VoxPort",
"key": "tid",
"record": {
"properties": {
"author": {
"description": "Author/creator name (if different from DID owner)",
"maxLength": 256,
"type": "string"
},
"categories": {
"description": "Podcast categories (Apple Podcasts format)",
"items": {
"maxLength": 64,
"type": "string"
},
"maxLength": 5,
"type": "array"
},
"cover": {
"accept": [
"image/png",
"image/jpeg"
],
"description": "Cover art image",
"maxSize": 2097152,
"type": "blob"
},
"createdAt": {
"format": "datetime",
"type": "string"
},
"description": {
"description": "Podcast description/summary",
"maxLength": 4000,
"type": "string"
},
"email": {
"description": "Contact email for podcast",
"maxLength": 254,
"pattern": "^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$",
"type": "string"
},
"explicit": {
"default": false,
"description": "Whether content is explicit",
"type": "boolean"
},
"handle": {
"description": "Unique handle for this series",
"maxLength": 64,
"pattern": "^[a-zA-Z0-9_-]+$",
"type": "string"
},
"language": {
"description": "Primary language (ISO 639-1)",
"format": "language",
"maxLength": 5,
"type": "string"
},
"persons": {
"description": "People associated with this series — show hosts (Podcasting 2.0 podcast:person at channel level)",
"items": {
"ref": "live.voxport.podcast.episode#person",
"type": "ref"
},
"maxLength": 50,
"type": "array"
},
"podcastGuid": {
"description": "Podcasting 2.0 channel-level permanent identity (podcast:guid). A UUIDv5 derived from the feed URL that survives host moves.",
"maxLength": 64,
"pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$",
"type": "string"
},
"rssFeedUrl": {
"description": "Original RSS feed URL (for imported series)",
"format": "uri",
"type": "string"
},
"rssImported": {
"default": false,
"description": "Whether this series was imported from an external RSS feed",
"type": "boolean"
},
"title": {
"description": "Display name of the podcast",
"maxLength": 256,
"type": "string"
},
"updatedAt": {
"format": "datetime",
"type": "string"
},
"websiteUrl": {
"description": "External website URL",
"format": "uri",
"maxLength": 2048,
"type": "string"
}
},
"required": [
"handle",
"title",
"createdAt"
],
"type": "object"
},
"type": "record"
}