Rodox Magazine Pdf Upd Direct

| Category | Requirement | |----------|-------------| | Performance | PDF upload should finish (including virus scan) within 30 seconds for ≤ 150 MB files. | | Scalability | Storage bucket must support unlimited number of PDFs; API should be stateless, horizontally scalable behind a load balancer. | | Reliability | Upload operation is transactional – if any step fails (scan, storage, DB write), the system rolls back and returns an error. | | Observability | Log every upload/rollback with userId, version, fileSize, outcome. Emit metrics: pdf_upload_success_total, pdf_upload_failure_total, pdf_rollback_total. | | Compliance | PDFs are treated as user‑generated content; retain them for at least 12 months (per content‑retention policy) before auto‑deletion. | | Internationalisation | All UI strings externalised; default English, ready for translation. | | Accessibility | WCAG 2.1 AA compliance for the upload modal and version history table. | | Backup/Recovery | Bucket versioning + daily RDS snapshot of the magazine_pdf table. Provide a one‑click “restore to last snapshot” admin tool. |


| Endpoint | Method | Auth | Request | Response | Description | |----------|--------|------|---------|----------|-------------| | /api/v1/magazine/pdf | GET | Public | – | url: string, version: int, uploadedAt: ISO8601, notes?: string | Returns the URL of the current PDF (signed URL valid 5 min). | | /api/v1/magazine/pdf/upload | POST | Editor or PDF‑Uploader role | multipart/form-data (file + notes field) | version: int, url: string, uploadedAt: ISO8601 | Stores the file, creates a new version, updates the “current” pointer. | | /api/v1/magazine/pdf/versions | GET | Editor | – | [ version, url, uploadedAt, size, notes, uploadedBy ] | List all historic PDFs. | | /api/v1/magazine/pdf/rollback/:version | POST | Editor | – | version: int, url: string | Marks the supplied version as current. | | /api/v1/magazine/pdf/delete/:version | DELETE | Editor | – | success: true | Soft‑delete (marks as archived). Actual file removed by lifecycle policy. | | /api/v1/magazine/pdf/notify | POST (internal) | Service‑to‑service | version, url | queued: true | Triggers email notification to all subscriber emails (via existing mailer service). | rodox magazine pdf upd

-------------------------------------------------------------
| Rodox Magazine – Issue #7 (Spring 2026)                  |
|-----------------------------------------------------------|
|  📄  Download PDF   (large blue button)                  |
|                                                         |
|  ------------------------------------------------------  |
|  |  ⎈  Replace PDF (only visible to Editors)          |  |
|  ------------------------------------------------------  |
|                                                         |
|  ------------------------------------------------------  |
|  |  Version History (Editor view)                     |  |
|  ------------------------------------------------------  |
|  |  v7 | Uploaded 2026‑04‑12 | 24 MB |  [Preview] |   |
|  |  v6 | Uploaded 2025‑12‑03 | 22 MB |  [Preview] |   |
|  |  ...                                            ... |
|  ------------------------------------------------------  |
-------------------------------------------------------------