GET /api/notebook-images/:id — Endpoint stream de imágenes de notas
Handler CF Pages Function creado en PR#56 (2026-05-20). Sirve el blob de una imagen embebida en una nota del Cuaderno, previo check de acceso sobre la nota a la que pertenece.
Fichero: functions/api/notebook-images/[id].ts
Comportamiento
GET /api/notebook-images/:id
- Parsea
:idcomo entero; devuelve400si no es válido. - Busca el registro en
notebook_attachmentsporid. - Busca la nota asociada (
note_id) ennotebook_notes. - Evalúa si el actor tiene acceso a la nota (
owner_id === meORshared_with === 'ALL'ORshared_with.includes(me)). - Hace
TASK_ATTACHMENTS.get(r2_key)en R2. - Devuelve el stream con las cabeceras correctas.
Respuestas
| Código | Situación |
|---|---|
200 OK | Blob encontrado y acceso autorizado. Body = stream del objeto R2 |
400 Bad Request | :id no es un entero finito |
403 Forbidden | El actor no tiene acceso a la nota que contiene la imagen |
404 Not Found | No existe fila en notebook_attachments o la nota fue borrada |
410 Gone | La row existe pero el objeto R2 ya no (object gone) |
Cabeceras de respuesta (200)
Content-Type: <content_type de notebook_attachments>
Content-Length: <size_bytes>
Content-Disposition: inline; filename="<filename URL-encoded>"
Cache-Control: private, max-age=3600
Cache-Control: private— no cacheable en proxies públicos; sí por el cliente durante 1 hora.Content-Disposition: inline— el navegador renderiza la imagen en vez de descargarla.
Autenticación del actor
Usa resolveActorEmail(request) de _lib/staff, igual que el resto de los handlers del cuaderno post-PR#56. Si no hay email resuelto, el actor cae a 'web' y el check de acceso fallará en la mayoría de casos (403).
Relación con el endpoint de subida
| Operación | Endpoint |
|---|---|
| Subir imagen a una nota | POST /api/notebook/:id/images |
| Servir imagen ya subida | GET /api/notebook-images/:id ← este endpoint |
El editor inserta  en el Markdown tras una subida exitosa.
Véase también
- [[feature—notebook—multiusuario-sharing]]
- [[entity—notebook—table—notebook-attachments]]