Store a website asset
Hands back a one-time URL to upload a file to, and the permanent address it will be served at. Needs content: write, and is a write.
For the things a page links to rather than contains: images, video, audio, fonts, and shared stylesheets or scripts. Put their URLs in your HTML; nothing here changes a page.
The bytes go straight from you to storage and never pass through this API or through a model, so url answers 404 until you have sent them. Send them with a PUT carrying the Content-Type you named, before upload.expires_at.
content_type is what the upload is minted for, and storage enforces it on the PUT itself: a file of a different type is refused there rather than stored wrongly. image/svg+xml is not accepted, because an SVG navigated to directly runs its own script on the storage origin, which every creator's assets share.
Storage not being configured on this deployment answers 503 rather than accepting a file Commune cannot keep.
Publishes no event.
Request
- Base URL: https://api.usecommune.com
- URL: https://api.usecommune.com/newsletters/{newsletter}/website-assets
- Auth: one of:
- HTTP bearer
- OAuth 2 (authorization code, authorization URL https://usecommune.com/api/oauth/authorize, token URL https://usecommune.com/api/oauth/token, scopes: content:write)
Headers
A value of your choosing naming the change this request is making.
Send the same value again to retry the same request. Commune replays the answer the first attempt gave instead of making the change twice, and marks the replay with an Idempotent-Replay: true response header. Send a different value for a different change: a key reused for a request that differs in any way answers 409, because replaying an answer to a question you did not ask is a wrong answer you could not detect.
A UUID per change is the usual choice. Remembered for 24 hours, per credential, so two credentials choosing the same value never see each other's answers.
Required, not optional.
Request body
Example request
{
"content_type": "image/png"
}Response
The asset, and where to send the file. byte_size and uploaded_at are null until the bytes arrive.
Example response
{
"newsletter": {
"object": "newsletter",
"id": "9a4c1c6e-0f2b-4f47-9d3f-6d1b1a2c3d4e"
},
"content_type": "image/png"
}Changes
No recorded changes to this operation across all 1 revision of this API.