Skip to content

place.stream.vod.draftVideo

Lexicon Version: 1

Type: record

A draft VOD: pre-publication video metadata and processing state. Modeled as a permissioned-data-style record (CBOR-serialized, addressed by an ats:// URI) stored in statedb until the permissioned-data spec ships (bluesky-social/proposals PR #94, the 0016-permissioned-data proposal). Publishing promotes it to a public place.stream.video record.

Record Key: tid

Record Properties:

NameTypeReq’dDescriptionConstraints
titlestringTitle of the video. May be a placeholder while processing; the user edits before publishing.Max Length: 1400
Max Graphemes: 140
descriptionstringDescription of the video.Max Length: 50000
Max Graphemes: 5000
descriptionFacetsArray of place.stream.richtext.videoFacetAnnotations of text (mentions, URLs, etc).
thumbblobThumbnail image. Generated by the server at publish time if absent.Accept: image/*
Max Size: 1000000 bytes
sourceUnion of:
  place.stream.media.defs#sourceTracks
  place.stream.media.defs#sourceClip
Source tracks. Filled by the server when processing completes (status ‘ready’).
durationMsintegerDuration in milliseconds. Filled when status is ‘ready’.
activityUnion of:
  place.stream.defs#activityGame
  place.stream.defs#activityLabel
The game or activity in the video.
tagsArray of stringFreeform tags (same rules as place.stream.video).Max Items: 10
connectionsArray of Union of:
  place.stream.video#connection
Related records (e.g. the source livestream for a finalized VOD).
contentWarningsplace.stream.metadata.contentWarnings
contentRightsplace.stream.metadata.contentRights
statusstringProcessing state: ‘processing’ while the job runs, ‘ready’ when publishable, ‘error’ if processing failed.Known Values: processing, ready, error
errorstringError message when status is ‘error’.
createdAtstringFormat: datetime

{
"lexicon": 1,
"id": "place.stream.vod.draftVideo",
"defs": {
"main": {
"type": "record",
"key": "tid",
"description": "A draft VOD: pre-publication video metadata and processing state. Modeled as a permissioned-data-style record (CBOR-serialized, addressed by an ats:// URI) stored in statedb until the permissioned-data spec ships (bluesky-social/proposals PR #94, the 0016-permissioned-data proposal). Publishing promotes it to a public place.stream.video record.",
"record": {
"type": "object",
"required": ["title", "status", "createdAt"],
"properties": {
"title": {
"type": "string",
"maxLength": 1400,
"maxGraphemes": 140,
"description": "Title of the video. May be a placeholder while processing; the user edits before publishing."
},
"description": {
"type": "string",
"maxLength": 50000,
"maxGraphemes": 5000,
"description": "Description of the video."
},
"descriptionFacets": {
"type": "array",
"description": "Annotations of text (mentions, URLs, etc).",
"items": {
"type": "ref",
"ref": "place.stream.richtext.videoFacet"
}
},
"thumb": {
"type": "blob",
"accept": ["image/*"],
"maxSize": 1000000,
"description": "Thumbnail image. Generated by the server at publish time if absent."
},
"source": {
"type": "union",
"refs": [
"place.stream.media.defs#sourceTracks",
"place.stream.media.defs#sourceClip"
],
"description": "Source tracks. Filled by the server when processing completes (status 'ready')."
},
"durationMs": {
"type": "integer",
"description": "Duration in milliseconds. Filled when status is 'ready'."
},
"activity": {
"type": "union",
"description": "The game or activity in the video.",
"refs": [
"place.stream.defs#activityGame",
"place.stream.defs#activityLabel"
]
},
"tags": {
"type": "array",
"maxLength": 10,
"description": "Freeform tags (same rules as place.stream.video).",
"items": {
"type": "string",
"maxLength": 640,
"maxGraphemes": 64
}
},
"connections": {
"type": "array",
"description": "Related records (e.g. the source livestream for a finalized VOD).",
"items": {
"type": "union",
"refs": ["place.stream.video#connection"]
}
},
"contentWarnings": {
"type": "ref",
"ref": "place.stream.metadata.contentWarnings"
},
"contentRights": {
"type": "ref",
"ref": "place.stream.metadata.contentRights"
},
"status": {
"type": "string",
"knownValues": ["processing", "ready", "error"],
"description": "Processing state: 'processing' while the job runs, 'ready' when publishable, 'error' if processing failed."
},
"error": {
"type": "string",
"description": "Error message when status is 'error'."
},
"createdAt": {
"type": "string",
"format": "datetime"
}
}
}
}
}
}