Skip to content

[F4-10] API de proyectos: crear, listar, ver, cancelar, borrar y descargar #65

Open

Description

@JCCG-code

Fase: F4 · Tamaño: M · Depende de: #57 (F4-02), #52 (F3-05)
Decisiones: D-05 y D-07 en #1

Objetivo

La API REST con la que la web gestiona los proyectos del usuario.

Alcance

  • POST /api/v1/projects → crea y lanza ({ ambience, language, targetDurationSec, modelSelection? }; si falta modelSelection, usa la de UserSettings). Valida que el usuario tiene credencial válida para cada capacidad (salvo música biblioteca).
  • GET /api/v1/projects?cursor&status&q → lista paginada por cursor, búsqueda por título o ambientación.
  • GET /api/v1/projects/:id → ProjectDTO completo (pasos, escenas, salidas, caducidad).
  • POST /api/v1/projects/:id/cancel → cancela (ver [F4-06] Reintentos, errores clasificados y cancelación #67).
  • DELETE /api/v1/projects/:id → borrado lógico y purga de sus ficheros.
  • GET /api/v1/assets/:id/url?download=1 → URL firmada de corta duración (redirección 302), con nombre de descarga.
  • Todas las rutas con requireAuth, validate y aislamiento por ownerId.

Criterios de aceptación

  • Test de API con fake: crear → consultar hasta completed → obtener la URL del MP4 → descargarlo.
  • Test: crear un proyecto sin credencial para TTS → 422 con un mensaje que dice qué falta.
  • Test: la URL de un asset de otro usuario → 404.
  • Test: borrar un proyecto elimina sus ficheros del almacenamiento.
  • La especificación OpenAPI generada desde los esquemas zod incluye todas estas rutas.

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions