full diff

place.stream.media.createUpload

stream.place +1 −0
From
bafyreih5advfirekezksolkgm36bnx4p4jmentlxsllsbpi3o6eybyqqrq indexed 2026-11-04 01:29 UTC View this version
To
bafyreig4fmjqttcycivikuihhydmhtoavtchh5uay3wr55sq432un74vhi indexed 2026-08-20 16:29 UTC View this version

Compatibility

backward compatible Backward compatible. 2 non-breaking changes.

Non-breaking changes (2)
  • AddedVertex AddedVertex { vertex_id: "place.stream.media.createUpload:params" }
  • AddedEdge AddedEdge { src: "place.stream.media.createUpload", tgt: "place.stream.media.createUpload:params", kind: "prop", name: Some("parameters") }

Migration guidance

Added

  • AddedVertex { vertex_id: "place.stream.media.createUpload:params" }

Notes

  • Non-breaking: AddedEdge { src: "place.stream.media.createUpload", tgt: "place.stream.media.createUpload:params", kind: "prop", name: Some("parameters") }

Changes

11{
22 "$type": "com.atproto.lexicon.schema",
33 "defs": {
44 "main": {
55 "description": "Start a resumable upload of arbitrary media content. Returns a TUS upload URL and a short-lived bearer token used to authenticate subsequent chunk requests (no DPoP required on chunks). The DID of the authenticated user is recorded against the upload; on completion a VOD processing task is enqueued.",
66 "errors": [
77 {
88 "description": "The requested upload exceeds the server's maximum allowed size.",
99 "name": "UploadTooLarge"
1010 },
1111 {
1212 "description": "The server does not accept this MIME type for upload.",
1313 "name": "UnsupportedMimeType"
1414 }
1515 ],
1616 "input": {
1717 "encoding": "application/json",
1818 "schema": {
1919 "properties": {
2020 "draftUri": {
2121 "description": "Optional ats:// URI of a draft VOD created via place.stream.vod.createDraft. When supplied, the upload's processing fills that draft (rather than creating a new one), so the user can edit metadata while the upload runs and re-upload if it fails. The draft's origin_upload_id is set to this upload.",
2222 "type": "string"
2323 },
2424 "filename": {
2525 "description": "Optional filename hint to attach as upload metadata.",
2626 "type": "string"
2727 },
2828 "mimeType": {
2929 "description": "MIME type of the content being uploaded (e.g. video/mp4).",
3030 "type": "string"
3131 },
3232 "size": {
3333 "description": "Total size of the upload in bytes.",
3434 "type": "integer"
3535 }
3636 },
3737 "required": [
3838 "size",
3939 "mimeType"
4040 ],
4141 "type": "object"
4242 }
4343 },
4444 "output": {
4545 "encoding": "application/json",
4646 "schema": {
4747 "properties": {
4848 "expiresAt": {
4949 "description": "When the upload token expires.",
5050 "format": "datetime",
5151 "type": "string"
5252 },
5353 "uploadId": {
5454 "description": "Server-side identifier for this upload.",
5555 "type": "string"
5656 },
5757 "uploadToken": {
5858 "description": "Short-lived bearer token bound to this upload. Send as 'Authorization: Bearer <token>' on TUS requests.",
5959 "type": "string"
6060 },
6161 "uploadUrl": {
6262 "description": "Absolute URL to PATCH/HEAD per the TUS protocol.",
6363 "format": "uri",
6464 "type": "string"
6565 }
6666 },
6767 "required": [
6868 "uploadUrl",
6969 "uploadToken",
7070 "expiresAt",
7171 "uploadId"
7272 ],
7373 "type": "object"
7474 }
7575 },
76 "parameters": null,
7677 "type": "procedure"
7778 }
7879 },
7980 "id": "place.stream.media.createUpload",
8081 "lexicon": 1
8182}