# Colecciones y tags

Las colecciones (denominadas Tags en la aplicación) agrupan los prompts por tema, etapa del embudo o campaña, de modo que cualquier métrica pueda filtrarse por ellas. Un prompt puede pertenecer a varias.

### GET `/dimensions/collections`

Lista las colecciones (Tags) que pertenecen al proyecto.

### GET `/dimensions/tags`

Alias de `/dimensions/collections`. Devuelve el mismo payload, pero denominado _tags_ para mantener la coherencia con la interfaz.

### POST `/collections`

Crea una etiqueta (Collection) en un proyecto. Opcionalmente, adjunta prompts existentes en la misma llamada. El nombre de la etiqueta es único por proyecto y no distingue mayúsculas de minúsculas.

Cuerpo (JSON):

- `project_id` obligatorio
- `name` obligatorio
- `description` opcional
- `prompt_ids` array opcional, debe pertenecer al proyecto

### PATCH/DELETE `/collections/:id`

Cambia el nombre de una etiqueta, modifica su descripción o elimínala. Al eliminar una etiqueta, los prompts que contiene se conservan; solo desaparece la agrupación. La pertenencia de prompts se gestiona mediante POST `/prompts/assign_tags`.

- Cuerpo de PATCH: `project_id` (obligatorio), `name` y/o `description`. DELETE: `project_id` + `:id` en la URL.

### POST `/prompts/assign_tags`

Adjunta etiquetas a prompts existentes de forma masiva e idempotente. Las etiquetas se pueden indicar por id o por nombre.

Cuerpo (JSON):

- `project_id` obligatorio
- `prompt_ids` array obligatorio
- `tag_ids` uno de los dos
- `tag_names` uno de los dos
- `create_missing` bool opcional, crea automáticamente los nombres de etiqueta desconocidos

Acceso completo. Cancela cuando quieras.
