Generate a presigned PUT URL for a brand-theme asset.
POST /brands/me/theme/assets/upload-url
Returns a presigned S3 PUT URL for uploading a logo or favicon.
Request body (POL-709 — field names are authoritative):
slot— one oflogo_light,logo_dark,favicon.contentType— MIME type of the bytes the client is about to PUT. Logo slots acceptimage/png,image/svg+xml,image/webp; thefaviconslot acceptsimage/png,image/svg+xml.byteSize— size in bytes (integer, ≤ 2 MiB).
Response: { uploadUrl, key, publicUrl, expiresIn, method, headers }. publicUrl is the canonical CloudFront URL the theme row should reference (there is no separate cdnUrl field). After the upload completes, PATCH /brands/me/theme with the returned publicUrl in the matching slot (logoLightUrl, logoDarkUrl, or faviconUrl). POL-648 extends the pipeline with server-side image processing + sanitisation; the response contract here is forward-compatible.
Authorizations
Section titled “Authorizations ”Parameters
Section titled “ Parameters ”Header Parameters
Section titled “Header Parameters ”Idempotency key, 8–255 URL-safe chars.
Request Body required
Section titled “Request Body required ”object
Responses
Section titled “ Responses ”Presigned URL.
object
object
object
Missing idempotency key.
Missing or invalid bearer token.
Bearer token lacks manage scope or brand context.
Request body failed validation.