place.stream.vod.draftVideo

did:web:stream.place

Documentation

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.

main 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 Timestamp-based ID

Properties

connections array of union Optional

Related records (e.g. the source livestream for a finalized VOD).

createdAt string datetime Required

An RFC 3339 formatted timestamp.

description string Optional

Description of the video.

maxLength: 50000 bytesmaxGraphemes: 5000 graphemes
durationMs integer Optional

Duration in milliseconds. Filled when status is 'ready'.

error string Optional

Error message when status is 'error'.

status string Required

Processing state: 'processing' while the job runs, 'ready' when publishable, 'error' if processing failed.

Known values: processing, ready, error
tags array of string Optional

Freeform tags (same rules as place.stream.video).

maxLength: 10 items
thumb blob Optional

Thumbnail image. Generated by the server at publish time if absent.

maxSize: 1.0 MB
title string Required

Title of the video. May be a placeholder while processing; the user edits before publishing.

maxLength: 1400 bytesmaxGraphemes: 140 graphemes
View raw schema
{
  "key": "tid",
  "type": "record",
  "record": {
    "type": "object",
    "required": [
      "title",
      "status",
      "createdAt"
    ],
    "properties": {
      "tags": {
        "type": "array",
        "items": {
          "type": "string",
          "maxLength": 640,
          "maxGraphemes": 64
        },
        "maxLength": 10,
        "description": "Freeform tags (same rules as place.stream.video)."
      },
      "error": {
        "type": "string",
        "description": "Error message when status is 'error'."
      },
      "thumb": {
        "type": "blob",
        "accept": [
          "image/*"
        ],
        "maxSize": 1000000,
        "description": "Thumbnail image. Generated by the server at publish time if absent."
      },
      "title": {
        "type": "string",
        "maxLength": 1400,
        "description": "Title of the video. May be a placeholder while processing; the user edits before publishing.",
        "maxGraphemes": 140
      },
      "source": {
        "refs": [
          "place.stream.media.defs#sourceTracks",
          "place.stream.media.defs#sourceClip"
        ],
        "type": "union",
        "description": "Source tracks. Filled by the server when processing completes (status 'ready')."
      },
      "status": {
        "type": "string",
        "description": "Processing state: 'processing' while the job runs, 'ready' when publishable, 'error' if processing failed.",
        "knownValues": [
          "processing",
          "ready",
          "error"
        ]
      },
      "activity": {
        "refs": [
          "place.stream.defs#activityGame",
          "place.stream.defs#activityLabel"
        ],
        "type": "union",
        "description": "The game or activity in the video."
      },
      "createdAt": {
        "type": "string",
        "format": "datetime"
      },
      "durationMs": {
        "type": "integer",
        "description": "Duration in milliseconds. Filled when status is 'ready'."
      },
      "connections": {
        "type": "array",
        "items": {
          "refs": [
            "place.stream.video#connection"
          ],
          "type": "union"
        },
        "description": "Related records (e.g. the source livestream for a finalized VOD)."
      },
      "description": {
        "type": "string",
        "maxLength": 50000,
        "description": "Description of the video.",
        "maxGraphemes": 5000
      },
      "contentRights": {
        "ref": "place.stream.metadata.contentRights",
        "type": "ref"
      },
      "contentWarnings": {
        "ref": "place.stream.metadata.contentWarnings",
        "type": "ref"
      },
      "descriptionFacets": {
        "type": "array",
        "items": {
          "ref": "place.stream.richtext.videoFacet",
          "type": "ref"
        },
        "description": "Annotations of text (mentions, URLs, etc)."
      }
    }
  },
  "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."
}

Lexicon Garden

@