full diff

org.consentvid.video

From
bafyreidwa6ad62nccxrr2wdwokkhrv26fdyc6kl2jcztqagynrb726tgt4 indexed 2026-11-06 04:45 UTC View this version
To
bafyreiaf72olmhm5izxk6ubfmrbk3wfqzwrivn3ix7fpm6xbxipma2gtmi indexed 2026-11-07 07:19 UTC View this version

Compatibility

breaking 1 breaking change, 0 non-breaking changes.

Breaking changes (1)
  • ConstraintAdded ConstraintAdded { vertex_id: "org.consentvid.video:body.mimeType", sort: "knownValues", value: "[\"video/3gpp\",\"video/matroska\",\"video/mp2t\",\"video/mp4\",\"video/mpeg\",\"video/quicktime\",\"video/vnd.avi\",\"video/webm\",\"video/x-matroska\",\"video/x-msvideo\"]" }

Migration guidance

Constraint changes

  • ConstraintAdded ConstraintAdded { vertex_id: "org.consentvid.video:body.mimeType", sort: "knownValues", value: "[\"video/3gpp\",\"video/matroska\",\"video/mp2t\",\"video/mp4\",\"video/mpeg\",\"video/quicktime\",\"video/vnd.avi\",\"video/webm\",\"video/x-matroska\",\"video/x-msvideo\"]" }

Changes

11{
22 "$type": "com.atproto.lexicon.schema",
33 "defs": {
44 "main": {
5 "description": "A video registered for inclusion in a consent-first dataset. Storage of the bytes is decoupled: this record only commits to a content hash and a pointer.",
5 "description": "A video registered for inclusion in a consent-first dataset. Storage of the bytes is decoupled: this record only commits to a content hash and a pointer. Its consent, if any, is the org.consentvid.consent record in the same repo with the same record key.",
66 "key": "tid",
77 "record": {
88 "properties": {
99 "contentHash": {
10 "description": "SHA-256 of the video bytes, hex-encoded with 'sha256-' prefix.",
10 "description": "SHA-256 of the video bytes: \"sha256-\" followed by 64 lowercase hex characters.",
1111 "maxLength": 80,
1212 "type": "string"
1313 },
1414 "createdAt": {
15 "description": "Record write time.",
1516 "format": "datetime",
1617 "type": "string"
1718 },
1819 "description": {
1920 "maxLength": 3000,
2021 "type": "string"
2122 },
2223 "durationMs": {
23 "description": "Duration in milliseconds. ATproto records have no float type.",
24 "description": "Duration in milliseconds: non-negative, at most 2^53-1. ATproto records have no float type.",
2425 "type": "integer"
2526 },
2627 "height": {
28 "description": "Frame height in pixels: non-negative, at most 2^53-1.",
2729 "type": "integer"
2830 },
2931 "language": {
30 "description": "BCP-47 language tag for primary audio if any.",
32 "description": "BCP-47 language tag for the primary spoken language, if any, with a lowercase primary subtag (e.g. en, cs, pt-BR); readers reject other values.",
3133 "type": "string"
3234 },
3335 "mimeType": {
34 "description": "MIME type of the video bytes, e.g. video/mp4.",
36 "description": "MIME type of the video bytes, e.g. video/mp4. Readers reject values outside knownValues: it becomes the dataset's encodingFormat, which dataset loaders act on.",
37 "knownValues": [
38 "video/3gpp",
39 "video/matroska",
40 "video/mp2t",
41 "video/mp4",
42 "video/mpeg",
43 "video/quicktime",
44 "video/vnd.avi",
45 "video/webm",
46 "video/x-matroska",
47 "video/x-msvideo"
48 ],
3549 "maxLength": 128,
3650 "type": "string"
3751 },
3852 "storageRef": {
3953 "ref": "#storageRef",
4054 "type": "ref"
4155 },
4256 "tags": {
57 "description": "Topic tags, at most 32, each at most 64 UTF-8 bytes.",
4358 "items": {
4459 "maxLength": 64,
4560 "type": "string"
4661 },
4762 "maxLength": 32,
4863 "type": "array"
4964 },
5065 "title": {
66 "description": "Human-readable title, at most 300 UTF-8 bytes.",
5167 "maxLength": 300,
5268 "type": "string"
5369 },
5470 "width": {
71 "description": "Frame width in pixels: non-negative, at most 2^53-1.",
5572 "type": "integer"
5673 }
5774 },
5875 "required": [
5976 "title",
6077 "contentHash",
6178 "storageRef",
6279 "createdAt"
6380 ],
6481 "type": "object"
6582 },
6683 "type": "record"
6784 },
6885 "storageRef": {
86 "description": "Where the video bytes live. Readers reject refs whose value does not match the kind.",
6987 "properties": {
7088 "kind": {
89 "description": "'url' = a public https URL; 'r2' = the public https URL of a Cloudflare R2 object; 'peertube' = an https watch/download URL on a PeerTube instance (for these three: a public host on the default port, no credentials); 'ipfs' = a CID (bafy... or Qm...), optionally ipfs://-prefixed; 'local' = an opaque contributor-side name, never dereferenced (no control characters).",
7190 "knownValues": [
7291 "url",
7392 "local",
7493 "ipfs",
7594 "r2",
7695 "peertube"
7796 ],
7897 "type": "string"
7998 },
8099 "value": {
81100 "description": "Where the bytes live: a URL (url/r2/peertube), a CID (ipfs), or for 'local' an opaque contributor-side name. Never an absolute filesystem path (records are public).",
82101 "type": "string"
83102 }
84103 },
85104 "required": [
86105 "kind",
87106 "value"
88107 ],
89108 "type": "object"
90109 }
91110 },
92111 "id": "org.consentvid.video",
93112 "lexicon": 1
94113}

Compare other versions