messenger_media_upload_get
Check one chat media file without uploading in the Messenger app (pApp D00003). Requires target {destination {kind:"room", roomUuid, roomType} or {kind:"promotion"} for a Send to All image (PNG or JPEG), messageType IMAGE|ATTACHMENT|VIDEO, upload {kind:"local-file", filename, byteLength, sha256} for a file on this computer}. Returns the accepted types, size limit and the console room link. Files are stored unchanged: image metadata is not removed and HEIC/TIFF are not converted. Nothing is uploaded.
Inputs
| Field | Required here | Contract |
|---|---|---|
target |
Yes | object |
target.destination |
Yes | one of: room, promotion (by kind); The chat room the media is for (DIRECT or GROUP), or {kind:"promotion"} for a Send to All image (PNG or JPEG only, with the promotion extension Z00003). |
target.destination.roomUuid |
Yes | When target.destination.kind is room: string; pattern ^[A-Za-z0-9_-]{1,200}$ |
target.destination.roomType |
Yes | When target.destination.kind is room: DIRECT, GROUP |
target.messageType |
Yes | IMAGE, ATTACHMENT, VIDEO; IMAGE (PNG/JPEG/GIF up to 10 MB, uploaded unchanged; metadata is not removed), ATTACHMENT (PDF, DOC, DOCX, DOCM or ZIP up to 30 MB) or VIDEO (MP4, MOV, M4V, AVI, WMV or MKV up to 100 MB; then encode). Voice recordings are not hosted. |
target.upload |
Yes | one of: local-file, more-parts, complete, cancel (by kind); Upload the file from this computer, as the console room uploader does: {kind:"local-file", filename, byteLength, sha256} on the apply returns one presigned PUT with its headers (size, type and SHA-256 signed) and the console room link; send the file, then apply again with the same requestId and upload {kind:"complete", uploadId, parts:[{partNumber:1, etag}]}. A Google Drive or other link must be downloaded to this computer first; the server never receives the file or downloads a link. |
target.upload.filename |
Yes | When target.upload.kind is local-file: string; min length 1; max length 240; pattern ^[^/\\:\x00-\x1f\x7f]+$; The name of the file on this computer, with its extension. |
target.upload.byteLength |
Yes | When target.upload.kind is local-file: integer; greater than 0; The exact file size in bytes (for example from wc -c < FILE or stat). |
target.upload.sha256 |
No | When target.upload.kind is local-file: string; pattern ^[0-9a-f]{64}$; The SHA-256 of the file in lowercase hex (shasum -a 256 FILE). Required when the upload answers UPLOAD_CHECKSUM_REQUIRED. |
target.upload.uploadId |
Yes | When target.upload.kind is more-parts: string; pattern ^upl_[A-Za-z0-9_-]{22}$ |
target.upload.fromPart |
Yes | When target.upload.kind is more-parts: integer; minimum 1; maximum 10000 |
target.upload.uploadId |
Yes | When target.upload.kind is complete: string; pattern ^upl_[A-Za-z0-9_-]{22}$ |
target.upload.parts |
Yes | When target.upload.kind is complete: array; min items 1; max items 10000 |
target.upload.parts[].partNumber |
Yes | When target.upload.kind is complete: integer; minimum 1; maximum 10000 |
target.upload.parts[].etag |
Yes | When target.upload.kind is complete: string; min length 1; max length 200 |
target.upload.measured |
No | When target.upload.kind is complete: object; What the video measures on this computer, read with measureCommand. |
target.upload.measured.durationSeconds |
Yes | When target.upload.kind is complete: number; maximum 1000000; greater than 0; Video duration in seconds (ffprobe format.duration). |
target.upload.measured.frameRate |
Yes | When target.upload.kind is complete: number; maximum 1000; greater than 0; Frames per second (ffprobe avg_frame_rate, for example 30000/1001 = 29.97). |
target.upload.measured.width |
Yes | When target.upload.kind is complete: integer; maximum 100000; greater than 0 |
target.upload.measured.height |
Yes | When target.upload.kind is complete: integer; maximum 100000; greater than 0 |
target.upload.measured.frameRateMode |
No | When target.upload.kind is complete: CFR, VFR; Constant or variable frame rate, when the tool reports it. |
target.upload.measured.minFrameRate |
No | When target.upload.kind is complete: number; maximum 1000; greater than 0 |
target.upload.measured.maxFrameRate |
No | When target.upload.kind is complete: number; maximum 1000; greater than 0 |
target.upload.uploadId |
Yes | When target.upload.kind is cancel: string; pattern ^upl_[A-Za-z0-9_-]{22}$ |