Media
Media is the write side of the image pipeline. You upload in three steps:
mint a presigned upload credential, upload the bytes directly to the returned
target, then finalize to confirm the object landed. Finalize flips the asset
to ready and produces an assetRef that resolves to a CDN URL wherever it
is referenced.
The upload -> finalize -> ready contract:
- Upload —
POST .../media/uploadsreturns a presigned target and a pending asset row. - Send bytes — the client uploads straight to the presigned target; no bytes flow through the API.
- Finalize —
POST .../media/:id/finalizeconfirms the object landed and flips the asset toready, at which point itsassetRefis resolvable.
Media management (operator-managed)
Tenant-level media management is operator/console-managed. Merchants manage their own media through the merchant routes below.
| Method | Path | Purpose |
|---|---|---|
POST | /v1/tenants/:tenant/media/uploads | Mint a presigned upload credential + a pending asset row. |
POST | /v1/tenants/:tenant/media/:id/finalize | Confirm the object landed and flip the asset to ready. |
GET | /v1/tenants/:tenant/media | List a tenant’s assets. |
GET | /v1/tenants/:tenant/media/:id | Fetch one asset. |
Merchant routes
fdk_ credential, tenant from the credential per credential-carries-ownership,
scope manage:own_media. Mounted at /v1/merchant/media — the portal’s
media library/upload.
| Method | Path | Scope | Purpose |
|---|---|---|---|
GET | /v1/merchant/media/assets | manage:own_media | List the caller’s assets. |
GET | /v1/merchant/media/assets/:id | manage:own_media | Fetch one asset. |
POST | /v1/merchant/media/uploads | manage:own_media | Mint a presigned upload credential. |
POST | /v1/merchant/media/assets/:id/finalize | manage:own_media | Finalize an uploaded asset. |
Manifest gates
None. Media refs surface through the manifest’s brand.assets
(logoRef / faviconRef / ogImageRef) and product imagery, but there is
no per-store media on/off toggle.