AI Implementation feature(823): Landing Page and Login/Register Modal (#11)
This commit was merged in pull request #11.
This commit is contained in:
@@ -0,0 +1,33 @@
|
||||
---
|
||||
type: api
|
||||
title: Uploads Endpoints
|
||||
description: Admin-only multipart upload endpoints for category icons and challenge files.
|
||||
tags: [api, uploads, multipart, admin]
|
||||
timestamp: 2026-07-21T18:28:00Z
|
||||
---
|
||||
|
||||
# Endpoints
|
||||
|
||||
| Method | Path | Auth | Source |
|
||||
|--------|---------------------------------------|-------|---------------------------------------------------------|
|
||||
| `POST` | `/api/v1/uploads/category-icon` | Admin | `backend/src/modules/uploads/uploads.controller.ts` |
|
||||
| `POST` | `/api/v1/uploads/challenge-file` | Admin | Same. |
|
||||
|
||||
# Guard chain
|
||||
|
||||
Both handlers are gated by `JwtAuthGuard` + `AdminGuard`. CSRF is enforced
|
||||
(standard cookie + header pattern; nothing is added to the skip list).
|
||||
|
||||
# Behavior
|
||||
|
||||
* Each endpoint uses `FileInterceptor('file')` and parses a single
|
||||
multipart part named `file`.
|
||||
* File size is validated by `parseUploadSizeLimit()` in
|
||||
`backend/src/common/utils/upload.ts`.
|
||||
* Filenames are sanitized by the same helper before being persisted
|
||||
under `UPLOAD_DIR`.
|
||||
|
||||
# See also
|
||||
|
||||
- [REST API Overview](/api/rest-overview.md)
|
||||
- [Backend Module Map](/architecture/backend-modules.md)
|
||||
Reference in New Issue
Block a user