Presentations and files
Create a presentation in its organization, then save a validated document with
the presentation ETag in If-Match. Saving advances its saved revision and never
publishes to a Live. Publish explicitly through the Live display resource with
the presentation ID, exact saved revision and current Live ETag. Publishing needs
presentation.present and live.update, in the same workspace. A later save or
source deletion does not silently replace an existing immutable Live snapshot.
Upload raw image/video bytes to a presentation’s /assets?kind=image or video
resource with asset.create and presentation.update. Supply exact Content-Length
and identity encoding; do not send multipart or base64 JSON. Images are limited
to 10 MiB and videos to 64 MiB, with format, dimension and codec validation.
The returned asset URL remains bearer-protected. Staged assets expire after
24 hours unless retained by a saved document. Asset reads support one byte range.
Import a self-contained .bibleit ZIP through the organization’s
/presentation-imports collection. Imports require presentation.import,
presentation.create, presentation.update and asset.create. They validate
paths, checksums, media and document bounds, allocate fresh IDs, commit atomically
and never publish. The compressed limit is 512 MiB; expanded media and manifest
limits also apply. A different key does not bypass duplicate bundle detection.
Exports are asynchronous saved-revision jobs. Create one under the presentation’s
/exports collection with presentation.export, then poll its Location after
Retry-After. Jobs are requester-private; formats are portable .bibleit, PDF,
HTML ZIP, PNG and JPEG. PNG/JPEG select one slide. Rendering availability depends
on the server’s renderer. Job failures return safe error codes, never server paths.
Download a completed export by POSTing {} to its /downloads resource. The
stream consumes the job once. GET/HEAD do not consume; ranges and resume are not
supported. A lost successful download requires a new export with a new creation
key. A replay of export creation returns its original response and expiry; it does
not regenerate a consumed or expired file. Jobs have short retention, so download
promptly. No export URL is public.
