2.5 KiB
2.5 KiB
Media Library API
Base URL: /api
All media endpoints are admin-only and require:
- Bearer token
- Admin role
media.managepermission
Library Sections
imagegalleryaudiovideomodel3ddocument
Media Asset Model
idsectionfolderoriginalNameobjectNameurlbucketmimeTypeextensionsizetitlealtcaptionmetadataisPubliccreatedAtupdatedAt
Endpoints
GET /api/admin/media/overview
Returns grouped counts by section and folder.
GET /api/admin/media
Query params:
sectionfoldersearchpagelimit
Use this endpoint to power a WordPress-like media browser.
POST /api/admin/media/upload
Content type: multipart/form-data
Fields:
filesone or many filessectionoptionalfolderoptional, defaultroottitleoptionalaltoptionalcaptionoptionalmetadataoptional JSON stringisPublicoptional
Behavior:
- if
sectionis sent, file is stored in that section - if
sectionis omitted, backend infers it from mime type / extension - files are stored in object storage under
media/<section>/<folder>/...
GET /api/admin/media/:id
Returns one media asset.
PATCH /api/admin/media/:id
Updates metadata:
sectionfoldertitlealtcaptionmetadataisPublic
DELETE /api/admin/media/:id
Deletes DB record and object-storage file.
Category Image
Category now supports:
imageUrl
POST /api/categories
Admin-only for create.
Content type: multipart/form-data
Fields:
nameslugtypeparentIdexistingImageUrlimagefile
PATCH /api/categories/:id
Admin-only for update.
Content type: multipart/form-data
Fields:
nameslugtypeparentIdexistingImageUrlimagefile
Rules:
- if
imageis uploaded, it replaces the old image - if
existingImageUrlis sent, category uses that media URL - if
existingImageUrlis sent as empty value, category image is cleared
Integration Pattern
Recommended admin flow:
- Open media library with
GET /api/admin/media - User either selects an existing asset or uploads a new one with
POST /api/admin/media/upload - Frontend takes selected asset
url - That
urlis sent into product/category create-update payload as existing media URL
This keeps product and category APIs simple while still supporting a professional reusable media library.