Media uploads
Two-step model
Section titled “Two-step model”Binary bytes are never sent on JSON create/update. Integrators:
- Create metadata (or a form instance) over JSON
- Upload bytes with
POST /v0/media/... - Discover opaque ids /
partKeys fromGETresponses - Download with
GET /v0/media/...
Storage paths are never returned on /v0.
Space published assets
Section titled “Space published assets”POST /v0/spaces/{spaceId}/assets— metadata only; returnsnewPublishedAssetId(subject tospaces.publishedAssets.perDay)POST /v0/media/spaces/{spaceId}/assets/{assetId}— multipart fieldfileGET /v0/media/spaces/{spaceId}/assets/{assetId}?part=base— stream bytes
Owners list awaiting approval with GET /v0/spaces/{spaceId}/assets/awaiting-approval (part descriptors only).
Form file fields
Section titled “Form file fields”POST/PATCH /v0/forms/{formId}with file fields as[]POST /v0/media/forms/{formId}/attachments— multipart repeatedfieldIds+files(same order/length)GET /v0/forms/{formId}— file fields become descriptors (fieldId,partKey,contentType,bytes,filename)GET /v0/media/forms/{formId}/attachments/{partKey}— raw bytesDELETE .../attachments/{partKey}?fieldId=...— remove a part
Uploads enforce schema maxFiles and entitlement forms.attachments.uploadPerDay. Optional workflow query params: workflowConfigurationId + workflowViewId (both required together).
Avatars
Section titled “Avatars”GET /v0/media/users/{dbHash}/{userId}/avatar/{picId}— ids from profile/searchPOST/DELETE /v0/media/users/me/avatar— resolves identity from the session profile
Errors
Section titled “Errors”See Errors & limits for ENTITLEMENT_LIMIT_EXCEEDED (803 → HTTP 403) and MEDIA_UNAVAILABLE.