Plan · Proyectos
Los proyectos agrupan tableros y reúnen su salud, notas de estado, hitos, miembros y vistas guardadas. Parte de la API de Dailybot Plan (Beta).
En esta página
Beta
Plan está en beta. Todo lo que está bajo /plan en la aplicación web, los comandos del CLI y de la agent skill para proyectos, objetivos, tableros y tareas, y la API pública /v1/plan/ puede cambiar antes de la disponibilidad general. ¿Quieres probarlo con tu equipo? Escribe a [email protected].
Listar proyectos
Los proyectos que puedes ver, en una página. Busca con search, filtra por fechas con start_date / end_date y trae los proyectos archivados con include_archived. include agrega bloques opcionales a cada fila.
Parámetros de consulta
Orden y expansión
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| include | string | Opcional | Resúmenes agregados para incrustar, separados por comas. progress es el único token. Se omite por defecto porque es un agregado; cuando se pide, se calcula sobre la página devuelta. Un token desconocido es 400 invalid_filter_value; un valor vacío no tiene efecto. |
Paginación
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| page | integer | Opcional | Número de página, empezando en 1. |
| page_size | integer | Opcional | Filas por página. 50 por defecto, máximo 100. Los valores fuera de rango se ajustan, nunca se rechazan: pedir 500 devuelve 100. |
| limit | integer | Opcional | Alias de page_size, traducido en el servidor. |
| offset | integer | Opcional | Alias traducido a page en el servidor. |
Filtros
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| search | string | Opcional | Coincide con el título y la clave. Más de 256 caracteres es 400 search_query_too_long, no se trunca. q es un alias. |
Filas archivadas
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| is_archived | boolean | Opcional | true devuelve solo las filas archivadas; false (por defecto), solo las activas. Archivar es la eliminación, así que las filas archivadas siguen siendo legibles. |
| include_archived | boolean | Opcional | Incluye las filas archivadas junto con las activas. Es distinto de is_archived, que selecciona un conjunto u otro: include_archived=true es la unión. Las listas devuelven filas activas a menos que lo pidas. |
Fechas
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| start_date | string | Opcional | Inicio de la ventana de fecha de creación. Es lo que produce --since del CLI. |
| end_date | string | Opcional | Fin de la ventana de fecha de creación. Es lo que produce --until del CLI. |
Objeto Project
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| uuid | uuid | Requerido | Identificador público estable. |
| name | string | Requerido | Nombre visible. Máx. 120 caracteres. |
| slug | string | Opcional | Nombre apto para URL. Máx. 48 caracteres. |
| description | string | null | Opcional | Descripción libre. |
| lead | UserRef | null | Opcional | El líder del proyecto. Ver UserRef. |
| goals | array | Opcional | Objetivos a los que apunta este proyecto. Un proyecto puede servir a varios objetivos. Siempre presentes: uuid. Elementos: {uuid, name}. |
| goal | object | Opcional | El objetivo, cuando hay exactamente uno. Forma: {uuid, name}|null. |
| board_count | integer | Opcional | Número de tableros activos en el proyecto. |
| health | enum | Opcional | Salud declarada. Uno de not_set, on_track, at_risk, off_track. |
| start_date | date | null | Opcional | Fecha de inicio planificada. |
| target_date | date | null | Opcional | Fecha de fin planificada. |
| progress | ProjectProgress | null | Opcional | Resumen agregado del progreso sobre las tareas que puedes ver. Ver ProjectProgress. |
| is_archived | boolean | Requerido | Si la fila está archivada. Archivar es la forma de eliminar: las filas archivadas siguen siendo legibles y se pueden restaurar. |
| archived_at | date-time | null | Opcional | Cuándo se archivó la fila. |
| created_at | date-time | Opcional | Cuándo se creó la fila. |
| updated_at | date-time | Opcional | Cuándo cambió la fila por última vez. |
| viewer | object | Opcional | Lo que puedes hacer con esta fila. Forma: {can_see_content: boolean, can_manage: boolean} (both required). |
Objeto UserRef
Objeto ProjectProgress
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| total | integer | Requerido | Todas las tareas contadas. |
| completed | integer | Requerido | Tareas en un estado done o canceled. |
| open | integer | Opcional | Tareas en un estado backlog, todo o in_progress. |
| blocked | integer | Opcional | Tareas con un bloqueo activo. |
| overdue | integer | Opcional | Tareas abiertas con la fecha de vencimiento ya pasada. |
| percent_complete | integer | Requerido | completed como porcentaje de total. |
Respuesta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| count | integer | Requerido | Número total de filas. |
| next | uri | Requerido | URL de la página siguiente, o null. |
| previous | uri | Requerido | URL de la página anterior, o null. |
| results | array<Project> | Requerido | Las filas de esta página. Ver Project. |
Errores
| Estado | Cuándo |
|---|---|
| 401 | Credencial ausente, vencida o con formato inválido (`credential_absent`, `credential_expired`, `credential_malformed`). |
| 402 | Plan aún no está habilitado para tu organización (`plan_upgrade_required`). Es lo esperado durante la Beta: escribe a [email protected]. |
| 403 | Autenticado pero sin permiso: falta el scope (`insufficient_scope`, que es también lo que recibe una key de agente o de la organización en una operación que requiere una persona, y lo que recibe una key personal cuando sus scopes de Plan explícitos no cubren el endpoint) o es una cuenta de invitado (`guest_not_allowed`). |
| 429 | Llegaste al límite de solicitudes. Espera los segundos que indica `Retry-After`. |
curl -sS "https://api.dailybot.com/v1/plan/projects/?include=progress" \
-H "X-API-KEY: $DAILYBOT_API_KEY"dailybot plan project list --include progress --json{
"count": 1,
"next": null,
"previous": null,
"results": [
{
"uuid": "00000000-0000-4000-8000-000000000001",
"name": "Platform",
"slug": "platform",
"description": null,
"lead": {
"uuid": "00000000-0000-4000-8000-00000000000c",
"name": "Ada L."
},
"goals": [],
"goal": {},
"board_count": 1,
"health": "on_track",
"start_date": "2026-09-28",
"target_date": "2026-10-15",
"progress": {
"total": 10,
"completed": 4,
"percent_complete": 40
},
"is_archived": false,
"archived_at": null,
"created_at": "2026-09-25T10:14:02Z",
"updated_at": "2026-09-25T10:14:02Z",
"viewer": {}
}
]
}Probarlo
Este es un asistente de solo copia — la solicitud no se envía desde tu navegador. Pega el comando en tu terminal para ejecutarlo.
- Scope: `tasks:read`.
- Límite de solicitudes: 120 lecturas por minuto por actor.
- Funciona con una sesión iniciada, un token de usuario del CLI, una API key personal, o una key de agente o de la organización. Una key personal ve lo que ve su persona; una key de agente o de la organización actúa como actor del sistema y solo ve los tableros visibles para la organización.
Crear un proyecto
Crea un proyecto, el contenedor que agrupa tableros. Todo miembro no invitado puede llamarlo (con una sesión iniciada o una API key personal); una key de agente o de la organización no puede. Envía un Idempotency-Key para reintentar sin riesgo; el límite de proyectos del plan responde 402 task_projects_limit_reached.
Encabezados
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| Idempotency-Key | string | Opcional | Una clave que generas para esta intención. Una repetición con la misma clave y el mismo cuerpo devuelve la primera respuesta sin un segundo efecto secundario y lleva Idempotency-Replayed: true. Las claves se conservan durante 24 horas. La misma clave con un cuerpo distinto es 409 idempotency_key_payload_mismatch; una repetición mientras la primera llamada sigue en curso recibe 409 idempotency_in_progress durante hasta 120 segundos. |
| X-Dailybot-Agent-Name | string | Opcional | El nombre del agente que ejecutó esta escritura en nombre de la persona. Úsalo en escrituras multipart y sin cuerpo (DELETE, archivar, restaurar); en escrituras JSON envía el campo agent_name del cuerpo, que gana si vienen los dos. Codifica el valor con percent-encoding (UTF-8). Los caracteres de control se eliminan; un valor vacío significa sin agente. Más de 128 caracteres, o un valor que no se puede decodificar, es 400 invalid_agent_attribution (nunca se trunca). Una clave de tipo agente, que no está ligada a una persona, recibe 400 invalid_agent_attribution si lo envía. El sello nunca cambia una respuesta de permisos. Ver Atribución de agente. |
Cuerpo de la solicitud
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| visibility | enum | Opcional | org (todos en la organización — espacio compartido) o members (solo grants explícitos; invita con POST …/members/). Crear como members te otorga. Uno de org, members. Valor por defecto org. |
| name | string | Requerido | Nombre visible. Máx. 120 caracteres. |
| description | string | null | Opcional | Descripción libre. Máx. 2000 caracteres. |
| lead | uuid | null | Opcional | El líder del proyecto. |
| health | enum | Opcional | Salud declarada. Uno de not_set, on_track, at_risk, off_track. |
| start_date | date | null | Opcional | Fecha de inicio planificada. |
| target_date | date | null | Opcional | Fecha de fin planificada. |
| agent_name | string | Opcional | El nombre del agente que ejecutó esta escritura en nombre de la persona (máx. 128 caracteres, vacío significa sin agente). Tiene prioridad sobre el header X-Dailybot-Agent-Name. Ver Atribución de agente. |
Respuesta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| (body) | Project | Requerido | Un objeto Project. |
Errores
| Estado | Cuándo |
|---|---|
| 400 | La validación falló, o no se reconoció un valor de filtro, orden o `include`. El `code` de la respuesta indica cuál. `invalid_agent_attribution` significa que el nombre del agente no es válido. |
| 401 | Credencial ausente, vencida o con formato inválido (`credential_absent`, `credential_expired`, `credential_malformed`). |
| 402 | Plan aún no está habilitado para tu organización (`plan_upgrade_required`), o se alcanzó el tope de proyectos del plan (`task_projects_limit_reached`). |
| 403 | Autenticado pero sin permiso: falta el scope (`insufficient_scope`, que es también lo que recibe una key de agente o de la organización en una operación que requiere una persona, y lo que recibe una key personal cuando sus scopes de Plan explícitos no cubren el endpoint) o es una cuenta de invitado (`guest_not_allowed`). |
| 409 | Conflicto. El `code` de la respuesta indica cuál (por ejemplo, `version_conflict`). |
| 429 | Llegaste al límite de solicitudes. Espera los segundos que indica `Retry-After`. |
curl -sS -X POST "https://api.dailybot.com/v1/plan/projects/" \
-H "Authorization: Bearer $DAILYBOT_TOKEN" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{
"name": "Q4 Roadmap",
"visibility": "org",
"health": "on_track",
"target_date": "2026-12-18"
}'dailybot plan project create -n "Q4 Roadmap" --target-date 2026-12-18Probarlo
Este es un asistente de solo copia — la solicitud no se envía desde tu navegador. Pega el comando en tu terminal para ejecutarlo.
- Scope: `tasks:admin` — escrituras de contenedores. Un miembro no invitado puede llamarlo con una sesión iniciada o una API key personal (una key con scopes de Plan explícitos necesita `tasks:write`, que lo cubre); una key de agente o de la organización recibe `403 insufficient_scope`.
- Límite de solicitudes: 60 escrituras por minuto por actor.
- Requiere una persona: llámalo con una sesión iniciada, un token de usuario del CLI o una API key personal. Una key de agente o de la organización recibe `403 insufficient_scope`.
Obtener un proyecto
Un proyecto por su uuid. Un proyecto que no puedes ver responde 404, igual que uno que no existe.
Parámetros de ruta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| project_id | string | Requerido | El uuid del proyecto. |
Respuesta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| (body) | Project | Requerido | Un objeto Project. |
Errores
| Estado | Cuándo |
|---|---|
| 401 | Credencial ausente, vencida o con formato inválido (`credential_absent`, `credential_expired`, `credential_malformed`). |
| 402 | Plan aún no está habilitado para tu organización (`plan_upgrade_required`). Es lo esperado durante la Beta: escribe a [email protected]. |
| 404 | No existe o no es visible para ti. Ambos casos devuelven el mismo cuerpo. |
curl -sS "https://api.dailybot.com/v1/plan/projects/00000000-0000-4000-8000-000000000001/" \
-H "X-API-KEY: $DAILYBOT_API_KEY"dailybot plan project get 00000000-0000-4000-8000-000000000001 --include progressProbarlo
Este es un asistente de solo copia — la solicitud no se envía desde tu navegador. Pega el comando en tu terminal para ejecutarlo.
- Scope: `tasks:read`.
- Límite de solicitudes: 120 lecturas por minuto por actor.
- Funciona con una sesión iniciada, un token de usuario del CLI, una API key personal, o una key de agente o de la organización. Una key personal ve lo que ve su persona; una key de agente o de la organización actúa como actor del sistema y solo ve los tableros visibles para la organización.
Actualizar un proyecto
Cambia los campos de un proyecto. Envía solo los campos que cambias. Todo miembro no invitado puede llamarlo (con una sesión iniciada o una API key personal); una key de agente o de la organización no puede. Poner visibility en members privatiza el proyecto y otorga automáticamente al actor que lo privatiza.
Parámetros de ruta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| project_id | string | Requerido | El uuid del proyecto. |
Encabezados
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| Idempotency-Key | string | Opcional | Una clave que generas para esta intención. Una repetición con la misma clave y el mismo cuerpo devuelve la primera respuesta sin un segundo efecto secundario y lleva Idempotency-Replayed: true. Las claves se conservan durante 24 horas. La misma clave con un cuerpo distinto es 409 idempotency_key_payload_mismatch; una repetición mientras la primera llamada sigue en curso recibe 409 idempotency_in_progress durante hasta 120 segundos. |
| X-Dailybot-Agent-Name | string | Opcional | El nombre del agente que ejecutó esta escritura en nombre de la persona. Úsalo en escrituras multipart y sin cuerpo (DELETE, archivar, restaurar); en escrituras JSON envía el campo agent_name del cuerpo, que gana si vienen los dos. Codifica el valor con percent-encoding (UTF-8). Los caracteres de control se eliminan; un valor vacío significa sin agente. Más de 128 caracteres, o un valor que no se puede decodificar, es 400 invalid_agent_attribution (nunca se trunca). Una clave de tipo agente, que no está ligada a una persona, recibe 400 invalid_agent_attribution si lo envía. El sello nunca cambia una respuesta de permisos. Ver Atribución de agente. |
Cuerpo de la solicitud
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| visibility | enum | Opcional | org (todos en la organización) o members (solo miembros explícitos). Cambiar de org a members otorga automáticamente al actor que privatiza. Uno de org, members. |
| name | string | Opcional | Nombre visible. Máx. 120 caracteres. |
| description | string | null | Opcional | Descripción libre. Máx. 2000 caracteres. |
| lead | uuid | null | Opcional | El líder del proyecto. |
| health | enum | Opcional | Salud declarada. Uno de not_set, on_track, at_risk, off_track. |
| start_date | date | null | Opcional | Fecha de inicio planificada. |
| target_date | date | null | Opcional | Fecha de fin planificada. |
| agent_name | string | Opcional | El nombre del agente que ejecutó esta escritura en nombre de la persona (máx. 128 caracteres, vacío significa sin agente). Tiene prioridad sobre el header X-Dailybot-Agent-Name. Ver Atribución de agente. |
Respuesta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| (body) | Project | Requerido | Un objeto Project. |
Errores
| Estado | Cuándo |
|---|---|
| 400 | La validación falló, o no se reconoció un valor de filtro, orden o `include`. El `code` de la respuesta indica cuál. `invalid_agent_attribution` significa que el nombre del agente no es válido. |
| 401 | Credencial ausente, vencida o con formato inválido (`credential_absent`, `credential_expired`, `credential_malformed`). |
| 402 | Plan aún no está habilitado para tu organización (`plan_upgrade_required`). Es lo esperado durante la Beta: escribe a [email protected]. |
| 403 | Autenticado pero sin permiso: falta el scope (`insufficient_scope`, que es también lo que recibe una key de agente o de la organización en una operación que requiere una persona, y lo que recibe una key personal cuando sus scopes de Plan explícitos no cubren el endpoint) o es una cuenta de invitado (`guest_not_allowed`). |
| 404 | No existe o no es visible para ti. Ambos casos devuelven el mismo cuerpo. |
curl -sS -X PATCH "https://api.dailybot.com/v1/plan/projects/00000000-0000-4000-8000-000000000001/" \
-H "Authorization: Bearer $DAILYBOT_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"health": "at_risk"
}'dailybot plan project update 00000000-0000-4000-8000-000000000001 --health at_riskProbarlo
Este es un asistente de solo copia — la solicitud no se envía desde tu navegador. Pega el comando en tu terminal para ejecutarlo.
- Scope: `tasks:admin` — escrituras de contenedores. Un miembro no invitado puede llamarlo con una sesión iniciada o una API key personal (una key con scopes de Plan explícitos necesita `tasks:write`, que lo cubre); una key de agente o de la organización recibe `403 insufficient_scope`.
- Límite de solicitudes: 60 escrituras por minuto por actor.
- Requiere una persona: llámalo con una sesión iniciada, un token de usuario del CLI o una API key personal. Una key de agente o de la organización recibe `403 insufficient_scope`.
Las actualizaciones más recientes de todos los proyectos que quien llama puede ver
La forma agrupada de la lista de actualizaciones por proyecto, para una pantalla de inicio que de otro modo la llamaría una vez por proyecto.
Devuelve las per_project actualizaciones más recientes de cada proyecto visible como una sola lista plana y paginada; cada fila lleva su project, así que agrupa por ese campo. Ordenada por nombre de proyecto y luego de la más reciente a la más antigua. Es un avance, no un historial: para un hilo completo o un proyecto archivado, usa GET /v1/plan/projects/{project_id}/updates/.
projects limita a los proyectos indicados. Un proyecto que no puedes ver se omite en silencio en lugar de rechazarse, y los proyectos archivados se excluyen aunque se indiquen. body_html se genera y se sanitiza en el servidor.
Parámetros de consulta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| page | integer | Opcional | Número de página, empezando en 1. |
| page_size | integer | Opcional | Filas por página. 50 por defecto, máximo 100. Los valores fuera de rango se ajustan, nunca se rechazan: pedir 500 devuelve 100. |
| projects | array | Opcional | uuids de proyectos a los que limitar. Repetible; los valores se combinan con OR. Un proyecto que quien llama no puede ver, o uno archivado, no aporta nada en lugar de generar un error. Más del máximo publicado es 400 too_many_filter_values. |
| per_project | integer | Opcional | Cuántas actualizaciones aporta cada proyecto. Se ajusta al máximo publicado en lugar de rechazarse: es un tamaño de avance, no un identificador, y una pantalla de inicio que pide demasiadas debería recibir una página completa en lugar de un error. |
Objeto ProjectUpdate
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| uuid | uuid | Requerido | Identificador público estable. |
| project | uuid | null | Requerido | El proyecto. |
| body | string | Requerido | Markdown tal como se escribió. Menciona a alguien con <@DB@{uuid}>, usando un uuid de la lista de mencionables. |
| body_html | string | Requerido | body renderizado y sanitizado por el servidor. Nunca se acepta HTML del cliente. |
| mentions | array<ActorRef> | Opcional | Las personas mencionadas. Léelas desde aquí, nunca analizando body. Ver ActorRef. |
| health | enum | null | Opcional | Salud declarada. Uno de not_set, on_track, at_risk, off_track. |
| created_by | ActorRef | null | Opcional | Quién creó la fila. Ver ActorRef. |
| created_at | date-time | Requerido | Cuándo se creó la fila. |
| updated_at | date-time | Opcional | Cuándo cambió la fila por última vez. |
| executed_by_agent | object | null | Opcional | El agente que ejecutó la publicación de esta persona, junto a created_by, o null si es una publicación humana normal: {uuid, name, username, avatar}. |
| provenance | enum | Opcional | Cómo llegó el texto: typed, agent_authored o retrieved. Una nota publicada con una API key, o sellada con un agente, es agent_authored. |
| edited_at | date-time | null | Opcional | Nulo hasta la primera edición. |
| attachments | array<TaskAttachment> | Opcional | Adjuntos listos, ordenados por posición, incluidos. Súbelos con POST …/updates/{update_id}/attachments/. |
Objeto ActorRef
Respuesta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| count | integer | Requerido | Número total de filas. |
| next | uri | Requerido | URL de la página siguiente, o null. |
| previous | uri | Requerido | URL de la página anterior, o null. |
| results | array<ProjectUpdate> | Requerido | Las filas de esta página. Ver ProjectUpdate. |
Errores
| Estado | Cuándo |
|---|---|
| 400 | La validación falló, o no se reconoció un valor de filtro, orden o `include`. El `code` de la respuesta indica cuál. |
| 401 | Credencial ausente, vencida o con formato inválido (`credential_absent`, `credential_expired`, `credential_malformed`). |
| 402 | Plan aún no está habilitado para tu organización (`plan_upgrade_required`). Es lo esperado durante la Beta: escribe a [email protected]. |
curl -sS "https://api.dailybot.com/v1/plan/projects/updates/" \
-H "X-API-KEY: $DAILYBOT_API_KEY"dailybot plan project updates --json{
"count": 1,
"next": null,
"previous": null,
"results": [
{
"uuid": "00000000-0000-4000-8000-00000000000e",
"project": "00000000-0000-4000-8000-000000000001",
"body": "Staging is green; rolling out Friday.",
"body_html": "<p>Staging is green; rolling out Friday.</p>",
"mentions": [],
"health": "on_track",
"created_by": {
"kind": "user",
"uuid": "00000000-0000-4000-8000-00000000000c",
"name": "Ada L."
},
"created_at": "2026-09-25T10:14:02Z",
"updated_at": "2026-09-25T10:14:02Z"
}
]
}Probarlo
Este es un asistente de solo copia — la solicitud no se envía desde tu navegador. Pega el comando en tu terminal para ejecutarlo.
- Scope: `tasks:read`.
- Límite de solicitudes: 120 lecturas por minuto por actor.
- Funciona con una sesión iniciada, un token de usuario del CLI, una API key personal, o una key de agente o de la organización. Una key personal ve lo que ve su persona; una key de agente o de la organización actúa como actor del sistema y solo ve los tableros visibles para la organización.
Notas de estado de un proyecto, las más recientes primero
La mitad narrativa de un roadmap: por qué la salud es la que es, con un nombre y una fecha. body es el Markdown tal como se escribió; body_html se genera en el servidor con el mismo sanitizador que usan los comentarios, así que nunca se confía en HTML enviado por el cliente.
Parámetros de ruta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| project_id | string | Requerido | El uuid del proyecto. |
Parámetros de consulta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| page | integer | Opcional | Número de página, empezando en 1. |
| page_size | integer | Opcional | Filas por página. 50 por defecto, máximo 100. Los valores fuera de rango se ajustan, nunca se rechazan: pedir 500 devuelve 100. |
Respuesta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| count | integer | Requerido | Número total de filas. |
| next | uri | Requerido | URL de la página siguiente, o null. |
| previous | uri | Requerido | URL de la página anterior, o null. |
| results | array<ProjectUpdate> | Requerido | Las filas de esta página. Ver ProjectUpdate. |
Errores
| Estado | Cuándo |
|---|---|
| 401 | Credencial ausente, vencida o con formato inválido (`credential_absent`, `credential_expired`, `credential_malformed`). |
| 402 | Plan aún no está habilitado para tu organización (`plan_upgrade_required`). Es lo esperado durante la Beta: escribe a [email protected]. |
| 403 | Autenticado pero sin permiso: falta el scope (`insufficient_scope`, que es también lo que recibe una key de agente o de la organización en una operación que requiere una persona, y lo que recibe una key personal cuando sus scopes de Plan explícitos no cubren el endpoint) o es una cuenta de invitado (`guest_not_allowed`). |
| 404 | No existe o no es visible para ti. Ambos casos devuelven el mismo cuerpo. |
curl -sS "https://api.dailybot.com/v1/plan/projects/00000000-0000-4000-8000-000000000001/updates/" \
-H "X-API-KEY: $DAILYBOT_API_KEY"dailybot plan project updates 00000000-0000-4000-8000-000000000001 --jsonProbarlo
Este es un asistente de solo copia — la solicitud no se envía desde tu navegador. Pega el comando en tu terminal para ejecutarlo.
- Scope: `tasks:read`.
- Límite de solicitudes: 120 lecturas por minuto por actor.
- Funciona con una sesión iniciada, un token de usuario del CLI, una API key personal, o una key de agente o de la organización. Una key personal ve lo que ve su persona; una key de agente o de la organización actúa como actor del sistema y solo ve los tableros visibles para la organización.
Publicar una nota de estado
Envía body como Markdown. NO se acepta un body_html: el servidor lo renderiza y sanitiza, así que la lista de permitidos es nuestra y hay una sola. health registra lo que el autor declaró ese día y no cambia Project.health.
Parámetros de ruta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| project_id | string | Requerido | El uuid del proyecto. |
Encabezados
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| X-Dailybot-Agent-Name | string | Opcional | El nombre del agente que ejecutó esta escritura en nombre de la persona. Úsalo en escrituras multipart y sin cuerpo (DELETE, archivar, restaurar); en escrituras JSON envía el campo agent_name del cuerpo, que gana si vienen los dos. Codifica el valor con percent-encoding (UTF-8). Los caracteres de control se eliminan; un valor vacío significa sin agente. Más de 128 caracteres, o un valor que no se puede decodificar, es 400 invalid_agent_attribution (nunca se trunca). Una clave de tipo agente, que no está ligada a una persona, recibe 400 invalid_agent_attribution si lo envía. El sello nunca cambia una respuesta de permisos. Ver Atribución de agente. |
Cuerpo de la solicitud
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| body | string | Requerido | Markdown. Menciona a alguien con <@DB@{uuid}>, usando un uuid de la lista de mencionables. |
| health | enum | null | Opcional | Salud declarada. Uno de not_set, on_track, at_risk, off_track. |
| agent_name | string | Opcional | El nombre del agente que ejecutó esta escritura en nombre de la persona (máx. 128 caracteres, vacío significa sin agente). Tiene prioridad sobre el header X-Dailybot-Agent-Name. Ver Atribución de agente. |
Respuesta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| (body) | ProjectUpdate | Requerido | Un objeto ProjectUpdate. |
Errores
| Estado | Cuándo |
|---|---|
| 400 | La validación falló, o no se reconoció un valor de filtro, orden o `include`. El `code` de la respuesta indica cuál. `invalid_agent_attribution` significa que el nombre del agente no es válido. |
| 401 | Credencial ausente, vencida o con formato inválido (`credential_absent`, `credential_expired`, `credential_malformed`). |
| 402 | Plan aún no está habilitado para tu organización (`plan_upgrade_required`). Es lo esperado durante la Beta: escribe a [email protected]. |
| 403 | Autenticado pero sin permiso: falta el scope (`insufficient_scope`, que es también lo que recibe una key de agente o de la organización en una operación que requiere una persona, y lo que recibe una key personal cuando sus scopes de Plan explícitos no cubren el endpoint) o es una cuenta de invitado (`guest_not_allowed`). |
| 404 | No existe o no es visible para ti. Ambos casos devuelven el mismo cuerpo. |
curl -sS -X POST "https://api.dailybot.com/v1/plan/projects/00000000-0000-4000-8000-000000000001/updates/" \
-H "X-API-KEY: $DAILYBOT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"body": "Staging is green; rolling out Friday. <@DB@00000000-0000-4000-8000-00000000000c> owns the release.",
"health": "on_track"
}'dailybot plan project update-post 00000000-0000-4000-8000-000000000001 "Staging is green; rolling out Friday." --health on_trackProbarlo
Este es un asistente de solo copia — la solicitud no se envía desde tu navegador. Pega el comando en tu terminal para ejecutarlo.
- Scope: `tasks:write`.
- Límite de solicitudes: 60 escrituras por minuto por actor.
- Funciona con una sesión iniciada, un token de usuario del CLI, una API key personal, o una key de agente o de la organización. Una key personal ve lo que ve su persona; una key de agente o de la organización actúa como actor del sistema y solo ve los tableros visibles para la organización.
Compromisos con fecha dentro de un proyecto, en orden de fecha
Cada fila incluye task_count, calculado en la misma consulta: un roadmap dibuja todos los marcadores a la vez, así que un conteo por marcador sería una consulta por fila.
Parámetros de ruta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| project_id | string | Requerido | El uuid del proyecto. |
Parámetros de consulta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| page | integer | Opcional | Número de página, empezando en 1. |
| page_size | integer | Opcional | Filas por página. 50 por defecto, máximo 100. Los valores fuera de rango se ajustan, nunca se rechazan: pedir 500 devuelve 100. |
| include_archived | boolean | Opcional | Incluye las filas archivadas junto con las activas. Es distinto de is_archived, que selecciona un conjunto u otro: include_archived=true es la unión. Las listas devuelven filas activas a menos que lo pidas. |
Objeto ProjectMilestone
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| uuid | uuid | Requerido | Identificador público estable. |
| name | string | Requerido | Nombre visible. |
| description | string | null | Opcional | Descripción libre. |
| date | date | Requerido | La fecha del hito. |
| task_count | integer | Opcional | Número de tareas activas. |
| attachment_count | integer | Opcional | Adjuntos listos de este hito. Refiérete a ellos desde description con marcadores attachment:{uuid} y lístalos en …/milestones/{milestone_id}/attachments/. |
| is_archived | boolean | Opcional | Si la fila está archivada. Archivar es la forma de eliminar: las filas archivadas siguen siendo legibles y se pueden restaurar. |
| completed_at | date-time | null | Opcional | Cuándo se completó, o null. |
| created_at | date-time | Opcional | Cuándo se creó la fila. |
| updated_at | date-time | Opcional | Cuándo cambió la fila por última vez. |
Respuesta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| count | integer | Requerido | Número total de filas. |
| next | uri | Requerido | URL de la página siguiente, o null. |
| previous | uri | Requerido | URL de la página anterior, o null. |
| results | array<ProjectMilestone> | Requerido | Las filas de esta página. Ver ProjectMilestone. |
Errores
| Estado | Cuándo |
|---|---|
| 401 | Credencial ausente, vencida o con formato inválido (`credential_absent`, `credential_expired`, `credential_malformed`). |
| 402 | Plan aún no está habilitado para tu organización (`plan_upgrade_required`). Es lo esperado durante la Beta: escribe a [email protected]. |
| 403 | Autenticado pero sin permiso: falta el scope (`insufficient_scope`, que es también lo que recibe una key de agente o de la organización en una operación que requiere una persona, y lo que recibe una key personal cuando sus scopes de Plan explícitos no cubren el endpoint) o es una cuenta de invitado (`guest_not_allowed`). |
| 404 | No existe o no es visible para ti. Ambos casos devuelven el mismo cuerpo. |
curl -sS "https://api.dailybot.com/v1/plan/projects/00000000-0000-4000-8000-000000000001/milestones/" \
-H "X-API-KEY: $DAILYBOT_API_KEY"dailybot plan project milestones 00000000-0000-4000-8000-000000000001{
"count": 1,
"next": null,
"previous": null,
"results": [
{
"uuid": "00000000-0000-4000-8000-000000000007",
"name": "Beta launch",
"description": null,
"date": "2026-09-28",
"task_count": 12,
"is_archived": false,
"completed_at": null,
"created_at": "2026-09-25T10:14:02Z",
"updated_at": "2026-09-25T10:14:02Z"
}
]
}Probarlo
Este es un asistente de solo copia — la solicitud no se envía desde tu navegador. Pega el comando en tu terminal para ejecutarlo.
- Scope: `tasks:read`.
- Límite de solicitudes: 120 lecturas por minuto por actor.
- Funciona con una sesión iniciada, un token de usuario del CLI, una API key personal, o una key de agente o de la organización. Una key personal ve lo que ve su persona; una key de agente o de la organización actúa como actor del sistema y solo ve los tableros visibles para la organización.
Comprometerse con un momento fechado
Agrega un hito a un proyecto: un name, una date y una description opcional. Complétalo después con el endpoint de completar.
Parámetros de ruta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| project_id | string | Requerido | El uuid del proyecto. |
Encabezados
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| X-Dailybot-Agent-Name | string | Opcional | El nombre del agente que ejecutó esta escritura en nombre de la persona. Úsalo en escrituras multipart y sin cuerpo (DELETE, archivar, restaurar); en escrituras JSON envía el campo agent_name del cuerpo, que gana si vienen los dos. Codifica el valor con percent-encoding (UTF-8). Los caracteres de control se eliminan; un valor vacío significa sin agente. Más de 128 caracteres, o un valor que no se puede decodificar, es 400 invalid_agent_attribution (nunca se trunca). Una clave de tipo agente, que no está ligada a una persona, recibe 400 invalid_agent_attribution si lo envía. El sello nunca cambia una respuesta de permisos. Ver Atribución de agente. |
Cuerpo de la solicitud
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| name | string | Requerido | Nombre visible. |
| date | date | Requerido | La fecha del hito. |
| description | string | null | Opcional | Descripción libre. |
| agent_name | string | Opcional | El nombre del agente que ejecutó esta escritura en nombre de la persona (máx. 128 caracteres, vacío significa sin agente). Tiene prioridad sobre el header X-Dailybot-Agent-Name. Ver Atribución de agente. |
Respuesta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| (body) | ProjectMilestone | Requerido | Un objeto ProjectMilestone. |
Errores
| Estado | Cuándo |
|---|---|
| 400 | La validación falló, o no se reconoció un valor de filtro, orden o `include`. El `code` de la respuesta indica cuál. `invalid_agent_attribution` significa que el nombre del agente no es válido. |
| 401 | Credencial ausente, vencida o con formato inválido (`credential_absent`, `credential_expired`, `credential_malformed`). |
| 402 | Plan aún no está habilitado para tu organización (`plan_upgrade_required`). Es lo esperado durante la Beta: escribe a [email protected]. |
| 403 | Autenticado pero sin permiso: falta el scope (`insufficient_scope`, que es también lo que recibe una key de agente o de la organización en una operación que requiere una persona, y lo que recibe una key personal cuando sus scopes de Plan explícitos no cubren el endpoint) o es una cuenta de invitado (`guest_not_allowed`). |
| 404 | No existe o no es visible para ti. Ambos casos devuelven el mismo cuerpo. |
curl -sS -X POST "https://api.dailybot.com/v1/plan/projects/00000000-0000-4000-8000-000000000001/milestones/" \
-H "X-API-KEY: $DAILYBOT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Beta launch",
"date": "2026-10-15"
}'dailybot plan project milestone-create 00000000-0000-4000-8000-000000000001 -n "Beta launch" --date 2026-10-15Probarlo
Este es un asistente de solo copia — la solicitud no se envía desde tu navegador. Pega el comando en tu terminal para ejecutarlo.
- Scope: `tasks:write`.
- Límite de solicitudes: 60 escrituras por minuto por actor.
- Funciona con una sesión iniciada, un token de usuario del CLI, una API key personal, o una key de agente o de la organización. Una key personal ve lo que ve su persona; una key de agente o de la organización actúa como actor del sistema y solo ve los tableros visibles para la organización.
Mover o renombrar un hito
Renombra un hito, cambia su fecha o edita su descripción. Envía solo los campos que cambias.
Parámetros de ruta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| project_id | string | Requerido | El uuid del proyecto. |
| milestone_id | string | Requerido | El uuid del hito. |
Encabezados
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| X-Dailybot-Agent-Name | string | Opcional | El nombre del agente que ejecutó esta escritura en nombre de la persona. Úsalo en escrituras multipart y sin cuerpo (DELETE, archivar, restaurar); en escrituras JSON envía el campo agent_name del cuerpo, que gana si vienen los dos. Codifica el valor con percent-encoding (UTF-8). Los caracteres de control se eliminan; un valor vacío significa sin agente. Más de 128 caracteres, o un valor que no se puede decodificar, es 400 invalid_agent_attribution (nunca se trunca). Una clave de tipo agente, que no está ligada a una persona, recibe 400 invalid_agent_attribution si lo envía. El sello nunca cambia una respuesta de permisos. Ver Atribución de agente. |
Cuerpo de la solicitud
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| name | string | Opcional | Nombre visible. |
| date | date | Opcional | La fecha del hito. |
| description | string | null | Opcional | Descripción libre. |
| agent_name | string | Opcional | El nombre del agente que ejecutó esta escritura en nombre de la persona (máx. 128 caracteres, vacío significa sin agente). Tiene prioridad sobre el header X-Dailybot-Agent-Name. Ver Atribución de agente. |
Respuesta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| (body) | ProjectMilestone | Requerido | Un objeto ProjectMilestone. |
Errores
| Estado | Cuándo |
|---|---|
| 400 | La validación falló, o no se reconoció un valor de filtro, orden o `include`. El `code` de la respuesta indica cuál. `invalid_agent_attribution` significa que el nombre del agente no es válido. |
| 401 | Credencial ausente, vencida o con formato inválido (`credential_absent`, `credential_expired`, `credential_malformed`). |
| 402 | Plan aún no está habilitado para tu organización (`plan_upgrade_required`). Es lo esperado durante la Beta: escribe a [email protected]. |
| 403 | Autenticado pero sin permiso: falta el scope (`insufficient_scope`, que es también lo que recibe una key de agente o de la organización en una operación que requiere una persona, y lo que recibe una key personal cuando sus scopes de Plan explícitos no cubren el endpoint) o es una cuenta de invitado (`guest_not_allowed`). |
| 404 | No existe o no es visible para ti. Ambos casos devuelven el mismo cuerpo. |
curl -sS -X PATCH "https://api.dailybot.com/v1/plan/projects/00000000-0000-4000-8000-000000000001/milestones/00000000-0000-4000-8000-000000000007/" \
-H "X-API-KEY: $DAILYBOT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"date": "2026-10-22"
}'dailybot plan project milestone-update 00000000-0000-4000-8000-000000000001 00000000-0000-4000-8000-000000000007 --date 2026-10-22Probarlo
Este es un asistente de solo copia — la solicitud no se envía desde tu navegador. Pega el comando en tu terminal para ejecutarlo.
- Scope: `tasks:write`.
- Límite de solicitudes: 60 escrituras por minuto por actor.
- Funciona con una sesión iniciada, un token de usuario del CLI, una API key personal, o una key de agente o de la organización. Una key personal ve lo que ve su persona; una key de agente o de la organización actúa como actor del sistema y solo ve los tableros visibles para la organización.
Retirar un hito (lo archiva; las tareas siguen apuntando a él)
Archiva en lugar de eliminar de forma definitiva, así que las tareas siguen apuntando al hito y la asociación nunca se pierde. El cambio se registra en el feed de actividad como project.milestone_deleted; léelo como "retirado". No es un evento de webhook.
Parámetros de ruta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| project_id | string | Requerido | El uuid del proyecto. |
| milestone_id | string | Requerido | El uuid del hito. |
Encabezados
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| X-Dailybot-Agent-Name | string | Opcional | El nombre del agente que ejecutó esta escritura en nombre de la persona. Úsalo en escrituras multipart y sin cuerpo (DELETE, archivar, restaurar); en escrituras JSON envía el campo agent_name del cuerpo, que gana si vienen los dos. Codifica el valor con percent-encoding (UTF-8). Los caracteres de control se eliminan; un valor vacío significa sin agente. Más de 128 caracteres, o un valor que no se puede decodificar, es 400 invalid_agent_attribution (nunca se trunca). Una clave de tipo agente, que no está ligada a una persona, recibe 400 invalid_agent_attribution si lo envía. El sello nunca cambia una respuesta de permisos. Ver Atribución de agente. |
Errores
| Estado | Cuándo |
|---|---|
| 400 | El nombre del agente no es válido (`invalid_agent_attribution`). |
| 401 | Credencial ausente, vencida o con formato inválido (`credential_absent`, `credential_expired`, `credential_malformed`). |
| 402 | Plan aún no está habilitado para tu organización (`plan_upgrade_required`). Es lo esperado durante la Beta: escribe a [email protected]. |
| 403 | Autenticado pero sin permiso: falta el scope (`insufficient_scope`, que es también lo que recibe una key de agente o de la organización en una operación que requiere una persona, y lo que recibe una key personal cuando sus scopes de Plan explícitos no cubren el endpoint) o es una cuenta de invitado (`guest_not_allowed`). |
| 404 | No existe o no es visible para ti. Ambos casos devuelven el mismo cuerpo. |
curl -sS -X DELETE "https://api.dailybot.com/v1/plan/projects/00000000-0000-4000-8000-000000000001/milestones/00000000-0000-4000-8000-000000000007/" \
-H "X-API-KEY: $DAILYBOT_API_KEY"dailybot plan project milestone-delete 00000000-0000-4000-8000-000000000001 00000000-0000-4000-8000-000000000007 --yesProbarlo
Este es un asistente de solo copia — la solicitud no se envía desde tu navegador. Pega el comando en tu terminal para ejecutarlo.
- Scope: `tasks:write`.
- Límite de solicitudes: 60 escrituras por minuto por actor.
- Funciona con una sesión iniciada, un token de usuario del CLI, una API key personal, o una key de agente o de la organización. Una key personal ve lo que ve su persona; una key de agente o de la organización actúa como actor del sistema y solo ve los tableros visibles para la organización.
Marcar un hito como completado
Completar con tareas abiertas está permitido. Esas tareas siguen abiertas; la respuesta informa open_task_count. Reversible con …/reopen/.
?dry_run=true devuelve la consecuencia sin escribir.
Parámetros de ruta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| project_id | string | Requerido | El uuid del proyecto. |
| milestone_id | string | Requerido | El uuid del hito. |
Parámetros de consulta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| dry_run | boolean | Opcional | Previsualiza la consecuencia sin ejecutarla. La respuesta tiene la misma forma, {operation, dry_run, reversible, restore_path, consequence, affects}, pero no se escribe nada ni se emite ningún evento. Muestra consequence a una persona antes de actuar. |
Encabezados
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| Idempotency-Key | string | Opcional | Una clave que generas para esta intención. Una repetición con la misma clave y el mismo cuerpo devuelve la primera respuesta sin un segundo efecto secundario y lleva Idempotency-Replayed: true. Las claves se conservan durante 24 horas. La misma clave con un cuerpo distinto es 409 idempotency_key_payload_mismatch; una repetición mientras la primera llamada sigue en curso recibe 409 idempotency_in_progress durante hasta 120 segundos. |
| X-Dailybot-Agent-Name | string | Opcional | El nombre del agente que ejecutó esta escritura en nombre de la persona. Úsalo en escrituras multipart y sin cuerpo (DELETE, archivar, restaurar); en escrituras JSON envía el campo agent_name del cuerpo, que gana si vienen los dos. Codifica el valor con percent-encoding (UTF-8). Los caracteres de control se eliminan; un valor vacío significa sin agente. Más de 128 caracteres, o un valor que no se puede decodificar, es 400 invalid_agent_attribution (nunca se trunca). Una clave de tipo agente, que no está ligada a una persona, recibe 400 invalid_agent_attribution si lo envía. El sello nunca cambia una respuesta de permisos. Ver Atribución de agente. |
Objeto DryRunPreview
Lo que responde la llamada con ?dry_run=true: la consecuencia, sin ejecutarla. No se escribe nada ni se emite ningún evento.
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| operation | string | Requerido | La operación que se ejecutaría. |
| dry_run | boolean | Requerido | Siempre true. |
| reversible | boolean | Requerido | Si la operación se puede deshacer. |
| restore_path | string | null | Requerido | La ruta que la desharía, o null cuando no hay ninguna. |
| consequence | string | Requerido | Una frase para mostrarle a una persona antes de actuar. Describe el efecto en cascada en lugar de resumirlo. |
| affects | object | Requerido | Lo que tocaría la operación, como conteos (enteros) por tipo. |
| would_refuse | boolean | Opcional | Solo al archivar un estado del flujo de trabajo: true cuando la llamada real se rechazaría. |
| refusal_code | string | Opcional | Solo al archivar un estado del flujo de trabajo: el código de error con el que respondería la llamada real. |
Respuesta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| (body) | ProjectMilestone | DryRunPreview | Requerido | Un objeto ProjectMilestone. Con ?dry_run=true, un objeto DryRunPreview en su lugar. |
| open_task_count | integer | Opcional | Tareas aún abiertas en el hito. Se permite completarlo con tareas abiertas. |
Errores
| Estado | Cuándo |
|---|---|
| 400 | El nombre del agente no es válido (`invalid_agent_attribution`). |
| 401 | Credencial ausente, vencida o con formato inválido (`credential_absent`, `credential_expired`, `credential_malformed`). |
| 402 | Plan aún no está habilitado para tu organización (`plan_upgrade_required`). Es lo esperado durante la Beta: escribe a [email protected]. |
| 403 | Autenticado pero sin permiso: falta el scope (`insufficient_scope`, que es también lo que recibe una key de agente o de la organización en una operación que requiere una persona, y lo que recibe una key personal cuando sus scopes de Plan explícitos no cubren el endpoint) o es una cuenta de invitado (`guest_not_allowed`). |
| 404 | No existe o no es visible para ti. Ambos casos devuelven el mismo cuerpo. |
curl -sS -X POST "https://api.dailybot.com/v1/plan/projects/00000000-0000-4000-8000-000000000001/milestones/00000000-0000-4000-8000-000000000007/complete/" \
-H "X-API-KEY: $DAILYBOT_API_KEY"dailybot plan project milestone-complete 00000000-0000-4000-8000-000000000001 00000000-0000-4000-8000-000000000007 --dry-run{
"uuid": "00000000-0000-4000-8000-000000000007",
"name": "Beta launch",
"description": null,
"date": "2026-09-28",
"task_count": 12,
"is_archived": false,
"completed_at": null,
"created_at": "2026-09-25T10:14:02Z",
"updated_at": "2026-09-25T10:14:02Z",
"open_task_count": 2
}Probarlo
Este es un asistente de solo copia — la solicitud no se envía desde tu navegador. Pega el comando en tu terminal para ejecutarlo.
- Scope: `tasks:write`.
- Límite de solicitudes: 60 escrituras por minuto por actor.
- Funciona con una sesión iniciada, un token de usuario del CLI, una API key personal, o una key de agente o de la organización. Una key personal ve lo que ve su persona; una key de agente o de la organización actúa como actor del sistema y solo ve los tableros visibles para la organización.
Quitar la finalización del hito
Borra la finalización de un hito, así vuelve a contar como abierto.
Parámetros de ruta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| project_id | string | Requerido | El uuid del proyecto. |
| milestone_id | string | Requerido | El uuid del hito. |
Encabezados
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| Idempotency-Key | string | Opcional | Una clave que generas para esta intención. Una repetición con la misma clave y el mismo cuerpo devuelve la primera respuesta sin un segundo efecto secundario y lleva Idempotency-Replayed: true. Las claves se conservan durante 24 horas. La misma clave con un cuerpo distinto es 409 idempotency_key_payload_mismatch; una repetición mientras la primera llamada sigue en curso recibe 409 idempotency_in_progress durante hasta 120 segundos. |
| X-Dailybot-Agent-Name | string | Opcional | El nombre del agente que ejecutó esta escritura en nombre de la persona. Úsalo en escrituras multipart y sin cuerpo (DELETE, archivar, restaurar); en escrituras JSON envía el campo agent_name del cuerpo, que gana si vienen los dos. Codifica el valor con percent-encoding (UTF-8). Los caracteres de control se eliminan; un valor vacío significa sin agente. Más de 128 caracteres, o un valor que no se puede decodificar, es 400 invalid_agent_attribution (nunca se trunca). Una clave de tipo agente, que no está ligada a una persona, recibe 400 invalid_agent_attribution si lo envía. El sello nunca cambia una respuesta de permisos. Ver Atribución de agente. |
Respuesta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| (body) | ProjectMilestone | Requerido | Un objeto ProjectMilestone. |
Errores
| Estado | Cuándo |
|---|---|
| 400 | El nombre del agente no es válido (`invalid_agent_attribution`). |
| 401 | Credencial ausente, vencida o con formato inválido (`credential_absent`, `credential_expired`, `credential_malformed`). |
| 402 | Plan aún no está habilitado para tu organización (`plan_upgrade_required`). Es lo esperado durante la Beta: escribe a [email protected]. |
| 403 | Autenticado pero sin permiso: falta el scope (`insufficient_scope`, que es también lo que recibe una key de agente o de la organización en una operación que requiere una persona, y lo que recibe una key personal cuando sus scopes de Plan explícitos no cubren el endpoint) o es una cuenta de invitado (`guest_not_allowed`). |
| 404 | No existe o no es visible para ti. Ambos casos devuelven el mismo cuerpo. |
curl -sS -X POST "https://api.dailybot.com/v1/plan/projects/00000000-0000-4000-8000-000000000001/milestones/00000000-0000-4000-8000-000000000007/reopen/" \
-H "X-API-KEY: $DAILYBOT_API_KEY"dailybot plan project milestone-reopen 00000000-0000-4000-8000-000000000001 00000000-0000-4000-8000-000000000007Probarlo
Este es un asistente de solo copia — la solicitud no se envía desde tu navegador. Pega el comando en tu terminal para ejecutarlo.
- Scope: `tasks:write`.
- Límite de solicitudes: 60 escrituras por minuto por actor.
- Funciona con una sesión iniciada, un token de usuario del CLI, una API key personal, o una key de agente o de la organización. Una key personal ve lo que ve su persona; una key de agente o de la organización actúa como actor del sistema y solo ve los tableros visibles para la organización.
Archivar un proyecto, en cascada a sus tableros y sus tareas
Archivar es la forma de eliminar. Nada en esta API elimina un proyecto de forma definitiva; las filas se conservan para que los identificadores, enlaces y eventos sigan resolviéndose.
Parámetros de ruta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| project_id | string | Requerido | El uuid del proyecto. |
Parámetros de consulta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| dry_run | boolean | Opcional | Previsualiza la consecuencia sin ejecutarla. La respuesta tiene la misma forma, {operation, dry_run, reversible, restore_path, consequence, affects}, pero no se escribe nada ni se emite ningún evento. Muestra consequence a una persona antes de actuar. |
Encabezados
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| Idempotency-Key | string | Opcional | Una clave que generas para esta intención. Una repetición con la misma clave y el mismo cuerpo devuelve la primera respuesta sin un segundo efecto secundario y lleva Idempotency-Replayed: true. Las claves se conservan durante 24 horas. La misma clave con un cuerpo distinto es 409 idempotency_key_payload_mismatch; una repetición mientras la primera llamada sigue en curso recibe 409 idempotency_in_progress durante hasta 120 segundos. |
| X-Dailybot-Agent-Name | string | Opcional | El nombre del agente que ejecutó esta escritura en nombre de la persona. Úsalo en escrituras multipart y sin cuerpo (DELETE, archivar, restaurar); en escrituras JSON envía el campo agent_name del cuerpo, que gana si vienen los dos. Codifica el valor con percent-encoding (UTF-8). Los caracteres de control se eliminan; un valor vacío significa sin agente. Más de 128 caracteres, o un valor que no se puede decodificar, es 400 invalid_agent_attribution (nunca se trunca). Una clave de tipo agente, que no está ligada a una persona, recibe 400 invalid_agent_attribution si lo envía. El sello nunca cambia una respuesta de permisos. Ver Atribución de agente. |
Respuesta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| (body) | Project | DryRunPreview | Requerido | Un objeto Project. Con ?dry_run=true, un objeto DryRunPreview en su lugar. |
Errores
| Estado | Cuándo |
|---|---|
| 400 | El nombre del agente no es válido (`invalid_agent_attribution`). |
| 401 | Credencial ausente, vencida o con formato inválido (`credential_absent`, `credential_expired`, `credential_malformed`). |
| 402 | Plan aún no está habilitado para tu organización (`plan_upgrade_required`). Es lo esperado durante la Beta: escribe a [email protected]. |
| 403 | Autenticado pero sin permiso: falta el scope (`insufficient_scope`, que es también lo que recibe una key de agente o de la organización en una operación que requiere una persona, y lo que recibe una key personal cuando sus scopes de Plan explícitos no cubren el endpoint) o es una cuenta de invitado (`guest_not_allowed`). |
| 404 | No existe o no es visible para ti. Ambos casos devuelven el mismo cuerpo. |
curl -sS -X POST "https://api.dailybot.com/v1/plan/projects/00000000-0000-4000-8000-000000000001/archive/" \
-H "Authorization: Bearer $DAILYBOT_TOKEN"dailybot plan project archive 00000000-0000-4000-8000-000000000001 --dry-runProbarlo
Este es un asistente de solo copia — la solicitud no se envía desde tu navegador. Pega el comando en tu terminal para ejecutarlo.
- Scope: `tasks:admin` — escrituras de contenedores. Un miembro no invitado puede llamarlo con una sesión iniciada o una API key personal (una key con scopes de Plan explícitos necesita `tasks:write`, que lo cubre); una key de agente o de la organización recibe `403 insufficient_scope`.
- Límite de solicitudes: 60 escrituras por minuto por actor.
- Requiere una persona: llámalo con una sesión iniciada, un token de usuario del CLI o una API key personal. Una key de agente o de la organización recibe `403 insufficient_scope`.
Restaurar un proyecto archivado
Lo inverso de archivar, y la razón por la que archivar un proyecto ya no es la única acción en Plan que una persona no puede deshacer. Los tableros y tareas archivados en cascada siguen archivados: restaurar sube por la jerarquía, nunca baja, porque "restaurar todo lo archivado en ese momento" no puede distinguir la cascada de un tablero que alguien archivó a propósito antes. Recupéralos con POST …/boards/{board_id}/restore/. Restaurar consume un cupo de creación de proyectos (archivar libera uno) y responde 402 cuando el plan no tiene ninguno disponible.
Parámetros de ruta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| project_id | string | Requerido | El uuid del proyecto. |
Encabezados
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| Idempotency-Key | string | Opcional | Una clave que generas para esta intención. Una repetición con la misma clave y el mismo cuerpo devuelve la primera respuesta sin un segundo efecto secundario y lleva Idempotency-Replayed: true. Las claves se conservan durante 24 horas. La misma clave con un cuerpo distinto es 409 idempotency_key_payload_mismatch; una repetición mientras la primera llamada sigue en curso recibe 409 idempotency_in_progress durante hasta 120 segundos. |
| X-Dailybot-Agent-Name | string | Opcional | El nombre del agente que ejecutó esta escritura en nombre de la persona. Úsalo en escrituras multipart y sin cuerpo (DELETE, archivar, restaurar); en escrituras JSON envía el campo agent_name del cuerpo, que gana si vienen los dos. Codifica el valor con percent-encoding (UTF-8). Los caracteres de control se eliminan; un valor vacío significa sin agente. Más de 128 caracteres, o un valor que no se puede decodificar, es 400 invalid_agent_attribution (nunca se trunca). Una clave de tipo agente, que no está ligada a una persona, recibe 400 invalid_agent_attribution si lo envía. El sello nunca cambia una respuesta de permisos. Ver Atribución de agente. |
Respuesta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| (body) | Project | Requerido | Un objeto Project. |
Errores
| Estado | Cuándo |
|---|---|
| 400 | El nombre del agente no es válido (`invalid_agent_attribution`). |
| 401 | Credencial ausente, vencida o con formato inválido (`credential_absent`, `credential_expired`, `credential_malformed`). |
| 402 | Plan todavía no está habilitado para tu organización (`plan_upgrade_required`), o no hay ningún cupo de proyecto libre (`task_projects_limit_reached`). |
| 403 | Autenticado pero sin permiso: falta el scope (`insufficient_scope`, que es también lo que recibe una key de agente o de la organización en una operación que requiere una persona, y lo que recibe una key personal cuando sus scopes de Plan explícitos no cubren el endpoint) o es una cuenta de invitado (`guest_not_allowed`). |
| 404 | No existe o no es visible para ti. Ambos casos devuelven el mismo cuerpo. |
curl -sS -X POST "https://api.dailybot.com/v1/plan/projects/00000000-0000-4000-8000-000000000001/restore/" \
-H "Authorization: Bearer $DAILYBOT_TOKEN"dailybot plan project restore 00000000-0000-4000-8000-000000000001Probarlo
Este es un asistente de solo copia — la solicitud no se envía desde tu navegador. Pega el comando en tu terminal para ejecutarlo.
- Scope: `tasks:admin` — escrituras de contenedores. Un miembro no invitado puede llamarlo con una sesión iniciada o una API key personal (una key con scopes de Plan explícitos necesita `tasks:write`, que lo cubre); una key de agente o de la organización recibe `403 insufficient_scope`.
- Límite de solicitudes: 60 escrituras por minuto por actor.
- Requiere una persona: llámalo con una sesión iniciada, un token de usuario del CLI o una API key personal. Una key de agente o de la organización recibe `403 insufficient_scope`.
Todos los hitos que quien consulta puede ver, en todos los proyectos
Todos los hitos que puedes ver en todos los proyectos, en una sola llamada, para los marcadores de un roadmap. La visibilidad sigue a los proyectos que puedes abrir. project__in reduce ese conjunto y nunca lo amplía: un uuid desconocido y el uuid de otra organización devuelven un resultado vacío. Las filas incluyen project como referencia.
Parámetros de consulta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| page | integer | Opcional | Número de página, empezando en 1. |
| page_size | integer | Opcional | Filas por página. 50 por defecto, máximo 100. Los valores fuera de rango se ajustan, nunca se rechazan: pedir 500 devuelve 100. |
| project__in | string | Opcional | uuids de proyectos separados por comas; como máximo 50. Reduce el conjunto visible, nunca lo amplía. |
| include_archived | string | Opcional | Incluye los hitos retirados junto con los activos. |
Objeto OrganizationMilestone
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| uuid | string | Requerido | Identificador público estable. |
| name | string | Requerido | Nombre visible. |
| description | string | null | Opcional | Descripción libre. |
| date | string | Requerido | La fecha del hito. |
| task_count | integer | Opcional | Número de tareas activas. |
| attachment_count | integer | Opcional | Adjuntos listos de este hito. Refiérete a ellos desde description con marcadores attachment:{uuid} y lístalos en …/milestones/{milestone_id}/attachments/. |
| is_archived | boolean | Opcional | Si la fila está archivada. Archivar es la forma de eliminar: las filas archivadas siguen siendo legibles y se pueden restaurar. |
| project | object | Requerido | El proyecto. Un objeto de referencia. |
| created_at | string | Opcional | Cuándo se creó la fila. |
| updated_at | string | Opcional | Cuándo cambió la fila por última vez. |
Respuesta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| count | integer | Requerido | Número total de filas. |
| next | uri | Requerido | URL de la página siguiente, o null. |
| previous | uri | Requerido | URL de la página anterior, o null. |
| results | array<OrganizationMilestone> | Requerido | Las filas de esta página. Ver OrganizationMilestone. |
Errores
| Estado | Cuándo |
|---|---|
| 400 | La validación falló, o no se reconoció un valor de filtro, orden o `include`. El `code` de la respuesta indica cuál. |
| 401 | Credencial ausente, vencida o con formato inválido (`credential_absent`, `credential_expired`, `credential_malformed`). |
| 402 | Plan aún no está habilitado para tu organización (`plan_upgrade_required`). Es lo esperado durante la Beta: escribe a [email protected]. |
| 403 | Autenticado pero sin permiso: falta el scope (`insufficient_scope`, que es también lo que recibe una key de agente o de la organización en una operación que requiere una persona, y lo que recibe una key personal cuando sus scopes de Plan explícitos no cubren el endpoint) o es una cuenta de invitado (`guest_not_allowed`). |
curl -sS "https://api.dailybot.com/v1/plan/milestones/?project__in=00000000-0000-4000-8000-000000000001" \
-H "X-API-KEY: $DAILYBOT_API_KEY"dailybot plan project milestones{
"count": 1,
"next": null,
"previous": null,
"results": [
{
"uuid": "00000000-0000-4000-8000-000000000007",
"name": "Beta launch",
"description": null,
"date": "example",
"task_count": 12,
"is_archived": false,
"project": {},
"created_at": "example",
"updated_at": "example"
}
]
}Probarlo
Este es un asistente de solo copia — la solicitud no se envía desde tu navegador. Pega el comando en tu terminal para ejecutarlo.
- Scope: `tasks:read`.
- Límite de solicitudes: 120 lecturas por minuto por actor.
- Funciona con una sesión iniciada, un token de usuario del CLI, una API key personal, o una key de agente o de la organización. Una key personal ve lo que ve su persona; una key de agente o de la organización actúa como actor del sistema y solo ve los tableros visibles para la organización.
Las vistas guardadas de esta persona dentro de un proyecto
Tus vistas guardadas dentro de un proyecto: conjuntos de filtros con nombre que abarcan todos sus tableros. Las vistas son personales y tienen alcance por proyecto, así que el mismo nombre puede existir en dos proyectos. Requiere una persona: las keys de agente y de la organización se rechazan; una API key personal funciona.
Parámetros de ruta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| project_id | string | Requerido | El uuid del proyecto. |
Objeto SavedView
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| name | string | Requerido | Nombre visible. Máx. 64 caracteres. |
| view_mode | enum | Opcional | Cómo se dibuja el conjunto filtrado. Las lecturas siempre devuelven board para el diseño kanban. Uno de list, board, timeline, calendar. |
| group_by | enum | Opcional | La dimensión de agrupación. Uno de state, owner, priority, category. |
| sort | string | Opcional | Una clave de orden, con prefijo - para orden descendente. |
| filters | object | Requerido | Los filtros de la vista, con la gramática compartida de filtros de tareas. |
| schema_version | integer | Opcional | Versión del formato guardado de la vista. |
| visibility | enum | Opcional | personal (por defecto) es solo tuya. shared y board_default (la vista por defecto de ese tablero o proyecto) las puede leer todo el que ve el tablero o el proyecto. Asignarlas requiere a quien administra el tablero en las vistas de tablero, y supervisión del proyecto (un administrador de la organización o quien gestiona todos sus equipos) en las vistas de proyecto; si no, 403 view_visibility_forbidden. Uno de personal, shared, board_default. |
| collapsed | object | array | string | number | boolean | Opcional | Estado de la interfaz del cliente guardado tal cual (qué grupos están colapsados). Solo se validan el tamaño y la profundidad. |
| columns | object | array | string | number | boolean | Opcional | Estado de la interfaz del cliente guardado tal cual (qué columnas se muestran). Solo se validan el tamaño y la profundidad. |
| uuid | uuid | Opcional | Identificador público estable. |
| scope | enum | Opcional | A qué contenedor pertenece la vista: board o project. Solo lectura. Uno de board, project. |
| board | uuid | null | Opcional | El uuid del tablero cuando scope es board; null para una vista de proyecto. Solo lectura. |
| owner | object | Opcional | Quién es dueño de la vista. Forma: {uuid, name}. |
| created_at | date-time | Opcional | Cuándo se creó la fila. |
| updated_at | date-time | Opcional | Cuándo cambió la fila por última vez. |
Respuesta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| count | integer | Requerido | Número total de filas. |
| next | uri | Requerido | URL de la página siguiente, o null. |
| previous | uri | Requerido | URL de la página anterior, o null. |
| results | array<SavedView> | Requerido | Las filas de esta página. Ver SavedView. |
Errores
| Estado | Cuándo |
|---|---|
| 401 | Credencial ausente, vencida o con formato inválido (`credential_absent`, `credential_expired`, `credential_malformed`). |
| 402 | Plan aún no está habilitado para tu organización (`plan_upgrade_required`). Es lo esperado durante la Beta: escribe a [email protected]. |
| 403 | Autenticado pero sin permiso: falta el scope (`insufficient_scope`, que es también lo que recibe una key de agente o de la organización en una operación que requiere una persona, y lo que recibe una key personal cuando sus scopes de Plan explícitos no cubren el endpoint) o es una cuenta de invitado (`guest_not_allowed`). |
| 404 | No existe o no es visible para ti. Ambos casos devuelven el mismo cuerpo. |
| 429 | Llegaste al límite de solicitudes. Espera los segundos que indica `Retry-After`. |
curl -sS "https://api.dailybot.com/v1/plan/projects/00000000-0000-4000-8000-000000000001/views/" \
-H "Authorization: Bearer $DAILYBOT_TOKEN"dailybot plan project views 00000000-0000-4000-8000-000000000001 --etag{
"count": 1,
"next": null,
"previous": null,
"results": [
{
"name": "My open work",
"view_mode": "list",
"group_by": "state",
"sort": "-updated_at",
"filters": {},
"schema_version": 1,
"visibility": "personal",
"collapsed": {},
"columns": {}
}
]
}Probarlo
Este es un asistente de solo copia — la solicitud no se envía desde tu navegador. Pega el comando en tu terminal para ejecutarlo.
- Scope: `tasks:read`.
- Límite de solicitudes: 120 lecturas por minuto por actor.
- Requiere una persona: llámalo con una sesión iniciada, un token de usuario del CLI o una API key personal. Una key de agente o de la organización recibe `403 insufficient_scope`.
Reemplazar las vistas guardadas de esta persona en un proyecto
Reemplaza todo tu arreglo de vistas guardadas del proyecto. If-Match es obligatorio, por la misma razón que en las vistas de tablero.
Parámetros de ruta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| project_id | string | Requerido | El uuid del proyecto. |
Encabezados
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| If-Match | string | Requerido | El ETag que recibiste de GET .../views/, entre comillas. Obligatorio, porque este PUT reemplaza todo el arreglo: sin una precondición, dos guardados simultáneos descartan en silencio la vista del otro. Un validador desactualizado es 412 precondition_failed; uno ausente es 428 precondition_required. |
| X-Dailybot-Agent-Name | string | Opcional | El nombre del agente que ejecutó esta escritura en nombre de la persona. Úsalo en escrituras multipart y sin cuerpo (DELETE, archivar, restaurar); en escrituras JSON envía el campo agent_name del cuerpo, que gana si vienen los dos. Codifica el valor con percent-encoding (UTF-8). Los caracteres de control se eliminan; un valor vacío significa sin agente. Más de 128 caracteres, o un valor que no se puede decodificar, es 400 invalid_agent_attribution (nunca se trunca). Una clave de tipo agente, que no está ligada a una persona, recibe 400 invalid_agent_attribution si lo envía. El sello nunca cambia una respuesta de permisos. Ver Atribución de agente. |
Respuesta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| (body) | array<SavedView> | Requerido | Un arreglo JSON de objetos SavedView. |
Errores
| Estado | Cuándo |
|---|---|
| 400 | La validación falló, o no se reconoció un valor de filtro, orden o `include`. El `code` de la respuesta indica cuál. `invalid_agent_attribution` significa que el nombre del agente no es válido. |
| 401 | Credencial ausente, vencida o con formato inválido (`credential_absent`, `credential_expired`, `credential_malformed`). |
| 402 | Plan aún no está habilitado para tu organización (`plan_upgrade_required`). Es lo esperado durante la Beta: escribe a [email protected]. |
| 403 | Autenticado pero sin permiso: falta el scope (`insufficient_scope`, que es también lo que recibe una key de agente o de la organización en una operación que requiere una persona, y lo que recibe una key personal cuando sus scopes de Plan explícitos no cubren el endpoint) o es una cuenta de invitado (`guest_not_allowed`). |
| 404 | No existe o no es visible para ti. Ambos casos devuelven el mismo cuerpo. |
| 412 | El validador `If-Match` está desactualizado (`precondition_failed`). Vuelve a leer e inténtalo de nuevo. |
| 428 | `If-Match` es obligatorio (`precondition_required`). |
| 429 | Llegaste al límite de solicitudes. Espera los segundos que indica `Retry-After`. |
curl -sS -X PUT "https://api.dailybot.com/v1/plan/projects/00000000-0000-4000-8000-000000000001/views/" \
-H "Authorization: Bearer $DAILYBOT_TOKEN" \
-H "If-Match: $VIEWS_ETAG" \
-H "Content-Type: application/json" \
-d '[
{
"name": "Overdue",
"view_mode": "list",
"filters": {
"due_before": "2026-09-25",
"state": [
"open"
]
}
}
]'dailybot plan project view save 00000000-0000-4000-8000-000000000001 -f views.json --fetch-etag[
{
"name": "My open work",
"view_mode": "list",
"group_by": "state",
"sort": "-updated_at",
"filters": {},
"schema_version": 1,
"visibility": "personal",
"collapsed": {},
"columns": {}
}
]Probarlo
Este es un asistente de solo copia — la solicitud no se envía desde tu navegador. Pega el comando en tu terminal para ejecutarlo.
- Scope: `tasks:write`.
- Límite de solicitudes: 60 escrituras por minuto por actor.
- Requiere una persona: llámalo con una sesión iniciada, un token de usuario del CLI o una API key personal. Una key de agente o de la organización recibe `403 insufficient_scope`.
Miembros de un proyecto
Visible para cualquiera que pueda ver el proyecto. En un proyecto members, esta es la membresía que da visibilidad del proyecto y sus tableros.
Parámetros de ruta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| project_id | string | Requerido | El uuid del proyecto. |
Parámetros de consulta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| page | integer | Opcional | Número de página, empezando en 1. |
| page_size | integer | Opcional | Filas por página. 50 por defecto, máximo 100. Los valores fuera de rango se ajustan, nunca se rechazan: pedir 500 devuelve 100. |
Objeto BoardMember
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| subject_type | enum | Requerido | Uno de user, team. |
| user_uuid | uuid | null | Opcional | El uuid de usuario de la persona. |
| uuid | uuid | null | Opcional | Identificador público estable. |
| full_name | string | Opcional | — |
| name | string | Opcional | Nombre visible. |
| role | enum | null | Opcional | Rol del participante. Uno de admin, member, guest. |
| team_uuid | uuid | null | Opcional | El uuid de un equipo, en lugar de user_uuid. Crea un único permiso de equipo vivo: quien se una al equipo después queda dentro y quien salga queda fuera. |
| team_name | string | Opcional | — |
| added_at | date-time | Requerido | — |
| added_by_uuid | uuid | null | Opcional | — |
Respuesta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| count | integer | Requerido | Número total de filas. |
| next | uri | Requerido | URL de la página siguiente, o null. |
| previous | uri | Requerido | URL de la página anterior, o null. |
| results | array<BoardMember> | Requerido | Las filas de esta página. Ver BoardMember. |
Errores
| Estado | Cuándo |
|---|---|
| 401 | Credencial ausente, vencida o con formato inválido (`credential_absent`, `credential_expired`, `credential_malformed`). |
| 402 | Plan aún no está habilitado para tu organización (`plan_upgrade_required`). Es lo esperado durante la Beta: escribe a [email protected]. |
| 404 | No existe o no es visible para ti. Ambos casos devuelven el mismo cuerpo. |
curl -sS "https://api.dailybot.com/v1/plan/projects/00000000-0000-4000-8000-000000000001/members/" \
-H "Authorization: Bearer $DAILYBOT_TOKEN"dailybot plan project members 00000000-0000-4000-8000-000000000001{
"count": 1,
"next": null,
"previous": null,
"results": [
{
"subject_type": "user",
"user_uuid": "00000000-0000-4000-8000-00000000000c",
"uuid": "00000000-0000-4000-8000-00000000000c",
"full_name": "Ada L.",
"name": "Ada L.",
"role": "admin",
"team_uuid": null,
"team_name": "example",
"added_at": "2026-09-25T10:14:02Z",
"added_by_uuid": null
}
]
}Probarlo
Este es un asistente de solo copia — la solicitud no se envía desde tu navegador. Pega el comando en tu terminal para ejecutarlo.
- Scope: `tasks:read`.
- Límite de solicitudes: 120 lecturas por minuto por actor.
- Requiere una persona: llámalo con una sesión iniciada, un token de usuario del CLI o una API key personal. Una key de agente o de la organización recibe `403 insufficient_scope`.
Invitar a alguien, o a todo un equipo, a un proyecto
Da acceso al proyecto a una persona (user_uuid) o a un equipo (team_uuid): envía exactamente uno de los dos; ambos o ninguno es 400 invalid_filter_value. Un permiso de equipo es vivo: quien se una al equipo después queda dentro y quien salga queda fuera. Todo miembro no invitado puede llamarlo (con una sesión iniciada o una API key personal); una key de agente o de la organización recibe 403 insufficient_scope.
Escribe un evento project.member_added con actor_is_self, para que los miembros del proyecto puedan distinguir una invitación de alguien que se une por su cuenta.
Parámetros de ruta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| project_id | string | Requerido | El uuid del proyecto. |
Encabezados
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| X-Dailybot-Agent-Name | string | Opcional | El nombre del agente que ejecutó esta escritura en nombre de la persona. Úsalo en escrituras multipart y sin cuerpo (DELETE, archivar, restaurar); en escrituras JSON envía el campo agent_name del cuerpo, que gana si vienen los dos. Codifica el valor con percent-encoding (UTF-8). Los caracteres de control se eliminan; un valor vacío significa sin agente. Más de 128 caracteres, o un valor que no se puede decodificar, es 400 invalid_agent_attribution (nunca se trunca). Una clave de tipo agente, que no está ligada a una persona, recibe 400 invalid_agent_attribution si lo envía. El sello nunca cambia una respuesta de permisos. Ver Atribución de agente. |
Cuerpo de la solicitud
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| user_uuid | uuid | Opcional | El uuid de usuario de la persona. |
| team_uuid | uuid | Opcional | El uuid de un equipo, en lugar de user_uuid. Crea un único permiso de equipo vivo: quien se una al equipo después queda dentro y quien salga queda fuera. |
| agent_name | string | Opcional | El nombre del agente que ejecutó esta escritura en nombre de la persona (máx. 128 caracteres, vacío significa sin agente). Tiene prioridad sobre el header X-Dailybot-Agent-Name. Ver Atribución de agente. |
Respuesta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| (body) | BoardMember | Requerido | Un objeto BoardMember. |
Errores
| Estado | Cuándo |
|---|---|
| 400 | Envía exactamente uno de `user_uuid` y `team_uuid`; ambos o ninguno es `invalid_filter_value`. `invalid_agent_attribution` significa que el nombre del agente no es válido. |
| 401 | Credencial ausente, vencida o con formato inválido (`credential_absent`, `credential_expired`, `credential_malformed`). |
| 402 | Plan aún no está habilitado para tu organización (`plan_upgrade_required`). Es lo esperado durante la Beta: escribe a [email protected]. |
| 403 | Autenticado pero sin permiso: falta el scope (`insufficient_scope`, que es también lo que recibe una key de agente o de la organización en una operación que requiere una persona, y lo que recibe una key personal cuando sus scopes de Plan explícitos no cubren el endpoint) o es una cuenta de invitado (`guest_not_allowed`). |
| 404 | No existe o no es visible para ti. Ambos casos devuelven el mismo cuerpo. |
curl -sS -X POST "https://api.dailybot.com/v1/plan/projects/00000000-0000-4000-8000-000000000001/members/" \
-H "Authorization: Bearer $DAILYBOT_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"user_uuid": "00000000-0000-4000-8000-00000000000c"
}'dailybot plan project member add 00000000-0000-4000-8000-000000000001 --user 00000000-0000-4000-8000-00000000000cProbarlo
Este es un asistente de solo copia — la solicitud no se envía desde tu navegador. Pega el comando en tu terminal para ejecutarlo.
- Scope: `tasks:admin` — escrituras de contenedores. Un miembro no invitado puede llamarlo con una sesión iniciada o una API key personal (una key con scopes de Plan explícitos necesita `tasks:write`, que lo cubre); una key de agente o de la organización recibe `403 insufficient_scope`.
- Límite de solicitudes: 60 escrituras por minuto por actor.
- Requiere una persona: llámalo con una sesión iniciada, un token de usuario del CLI o una API key personal. Una key de agente o de la organización recibe `403 insufficient_scope`.
Quitar a alguien de un proyecto
Quita el permiso explícito de una persona en el proyecto. Todo miembro no invitado puede llamarlo (con una sesión iniciada o una API key personal); una key de agente o de la organización no puede.
Parámetros de ruta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| project_id | string | Requerido | El uuid del proyecto. |
| user_id | string | Requerido | El uuid de usuario del miembro. |
Encabezados
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| X-Dailybot-Agent-Name | string | Opcional | El nombre del agente que ejecutó esta escritura en nombre de la persona. Úsalo en escrituras multipart y sin cuerpo (DELETE, archivar, restaurar); en escrituras JSON envía el campo agent_name del cuerpo, que gana si vienen los dos. Codifica el valor con percent-encoding (UTF-8). Los caracteres de control se eliminan; un valor vacío significa sin agente. Más de 128 caracteres, o un valor que no se puede decodificar, es 400 invalid_agent_attribution (nunca se trunca). Una clave de tipo agente, que no está ligada a una persona, recibe 400 invalid_agent_attribution si lo envía. El sello nunca cambia una respuesta de permisos. Ver Atribución de agente. |
Errores
| Estado | Cuándo |
|---|---|
| 400 | El nombre del agente no es válido (`invalid_agent_attribution`). |
| 401 | Credencial ausente, vencida o con formato inválido (`credential_absent`, `credential_expired`, `credential_malformed`). |
| 402 | Plan aún no está habilitado para tu organización (`plan_upgrade_required`). Es lo esperado durante la Beta: escribe a [email protected]. |
| 403 | Autenticado pero sin permiso: falta el scope (`insufficient_scope`, que es también lo que recibe una key de agente o de la organización en una operación que requiere una persona, y lo que recibe una key personal cuando sus scopes de Plan explícitos no cubren el endpoint) o es una cuenta de invitado (`guest_not_allowed`). |
| 404 | No existe o no es visible para ti. Ambos casos devuelven el mismo cuerpo. |
curl -sS -X DELETE "https://api.dailybot.com/v1/plan/projects/00000000-0000-4000-8000-000000000001/members/00000000-0000-4000-8000-00000000000c/" \
-H "Authorization: Bearer $DAILYBOT_TOKEN"dailybot plan project member remove 00000000-0000-4000-8000-000000000001 00000000-0000-4000-8000-00000000000c --yesProbarlo
Este es un asistente de solo copia — la solicitud no se envía desde tu navegador. Pega el comando en tu terminal para ejecutarlo.
- Scope: `tasks:admin` — escrituras de contenedores. Un miembro no invitado puede llamarlo con una sesión iniciada o una API key personal (una key con scopes de Plan explícitos necesita `tasks:write`, que lo cubre); una key de agente o de la organización recibe `403 insufficient_scope`.
- Límite de solicitudes: 60 escrituras por minuto por actor.
- Requiere una persona: llámalo con una sesión iniciada, un token de usuario del CLI o una API key personal. Una key de agente o de la organización recibe `403 insufficient_scope`.
Consultar un permiso de membresía del proyecto (el rol es de solo lectura)
La membresía del proyecto no tiene columna de rol: los roles de la organización más la visibilidad del proyecto son el modelo de acceso. Enviar role devuelve 400. Un PATCH vacío devuelve la fila de permiso actual.
Parámetros de ruta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| project_id | string | Requerido | El uuid del proyecto. |
| user_id | string | Requerido | El uuid de usuario del miembro. |
Encabezados
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| X-Dailybot-Agent-Name | string | Opcional | El nombre del agente que ejecutó esta escritura en nombre de la persona. Úsalo en escrituras multipart y sin cuerpo (DELETE, archivar, restaurar); en escrituras JSON envía el campo agent_name del cuerpo, que gana si vienen los dos. Codifica el valor con percent-encoding (UTF-8). Los caracteres de control se eliminan; un valor vacío significa sin agente. Más de 128 caracteres, o un valor que no se puede decodificar, es 400 invalid_agent_attribution (nunca se trunca). Una clave de tipo agente, que no está ligada a una persona, recibe 400 invalid_agent_attribution si lo envía. El sello nunca cambia una respuesta de permisos. Ver Atribución de agente. |
Respuesta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| (body) | BoardMember | Requerido | Un objeto BoardMember. |
Errores
| Estado | Cuándo |
|---|---|
| 400 | La validación falló, o no se reconoció un valor de filtro, orden o `include`. El `code` de la respuesta indica cuál. `invalid_agent_attribution` significa que el nombre del agente no es válido. |
| 401 | Credencial ausente, vencida o con formato inválido (`credential_absent`, `credential_expired`, `credential_malformed`). |
| 402 | Plan aún no está habilitado para tu organización (`plan_upgrade_required`). Es lo esperado durante la Beta: escribe a [email protected]. |
| 404 | No existe o no es visible para ti. Ambos casos devuelven el mismo cuerpo. |
curl -sS -X PATCH "https://api.dailybot.com/v1/plan/projects/00000000-0000-4000-8000-000000000001/members/00000000-0000-4000-8000-00000000000c/" \
-H "Authorization: Bearer $DAILYBOT_TOKEN"Probarlo
Este es un asistente de solo copia — la solicitud no se envía desde tu navegador. Pega el comando en tu terminal para ejecutarlo.
- Scope: `tasks:admin` — escrituras de contenedores. Un miembro no invitado puede llamarlo con una sesión iniciada o una API key personal (una key con scopes de Plan explícitos necesita `tasks:write`, que lo cubre); una key de agente o de la organización recibe `403 insufficient_scope`.
- Límite de solicitudes: 60 escrituras por minuto por actor.
- Requiere una persona: llámalo con una sesión iniciada, un token de usuario del CLI o una API key personal. Una key de agente o de la organización recibe `403 insufficient_scope`.
Listar los adjuntos de un proyecto
Los adjuntos del proyecto, ordenados por posición. Cualquiera que pueda ver el proyecto puede listar sus adjuntos; un proyecto que no puedes ver es 404. Cada url es un enlace de descarga. No lo guardes: conserva el uuid del adjunto y vuelve a leerlo cuando necesites el archivo. Para mostrar una imagen en la descripción del proyecto, refiérete a ella como attachment:{uuid} y resuélvela al renderizar con el url reciente de esta lista.
Parámetros de ruta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| project_id | string | Requerido | El uuid del proyecto. |
Parámetros de consulta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| page | integer | Opcional | Número de página, empezando en 1. |
| page_size | integer | Opcional | Filas por página. 50 por defecto, máximo 100. Los valores fuera de rango se ajustan, nunca se rechazan: pedir 500 devuelve 100. |
Objeto TaskAttachment
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| uuid | uuid | Requerido | Identificador público estable. |
| filename | string | Requerido | Nombre del archivo. |
| content_type | string | Requerido | Tipo MIME. |
| size | integer | Requerido | Tamaño en bytes. |
| url | string | Requerido | Dónde descargar el archivo. |
| thumbnail_url | uri | null | Opcional | Miniatura para imágenes. |
| width | integer | null | Opcional | — |
| height | integer | null | Opcional | — |
| status | enum | Requerido | Estado actual. Uno de pending, ready, scanning, rejected. |
| uploaded_by | ActorRef | null | Opcional | Quién subió el archivo. Ver ActorRef. |
| executed_by_agent | object | null | Opcional | El agente que ejecutó esto en nombre de la persona, o null si no se nombró a ninguno: un objeto con uuid, name, username y avatar. La persona del campo de autor sigue siendo la autora; el agente se muestra como quien lo ejecutó. |
| created_at | date-time | Requerido | Cuándo se creó la fila. |
Respuesta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| count | integer | Requerido | Número total de filas. |
| next | uri | Requerido | URL de la página siguiente, o null. |
| previous | uri | Requerido | URL de la página anterior, o null. |
| results | array<TaskAttachment> | Requerido | Las filas de esta página. Ver TaskAttachment. |
Errores
| Estado | Cuándo |
|---|---|
| 401 | Credencial ausente, vencida o con formato inválido (`credential_absent`, `credential_expired`, `credential_malformed`). |
| 402 | Plan aún no está habilitado para tu organización (`plan_upgrade_required`). Es lo esperado durante la Beta: escribe a [email protected]. |
| 404 | El proyecto o el adjunto no existe o no puedes verlo (`not_found`), nunca un 403. |
curl -sS "https://api.dailybot.com/v1/plan/projects/00000000-0000-4000-8000-000000000001/attachments/" \
-H "X-API-KEY: $DAILYBOT_API_KEY"dailybot plan project attachments 00000000-0000-4000-8000-000000000001 --json{
"count": 1,
"next": null,
"previous": null,
"results": [
{
"uuid": "00000000-0000-4000-8000-000000000009",
"filename": "screenshot.png",
"content_type": "image/png",
"size": 1,
"url": "https://your.app/files/screenshot.png",
"thumbnail_url": null,
"width": null,
"height": null,
"status": "ready",
"uploaded_by": {
"kind": "user",
"uuid": "00000000-0000-4000-8000-00000000000c",
"name": "Ada L."
},
"created_at": "2026-09-25T10:14:02Z"
}
]
}Probarlo
Este es un asistente de solo copia — la solicitud no se envía desde tu navegador. Pega el comando en tu terminal para ejecutarlo.
- Scope: `tasks:read`.
- Límite de solicitudes: 120 lecturas por minuto por actor.
- Funciona con una sesión iniciada, un token de usuario del CLI, una API key personal, o una key de agente o de la organización. Una key personal ve lo que ve su persona; una key de agente o de la organización actúa como actor del sistema y solo ve los tableros visibles para la organización.
Subir un adjunto a un proyecto
Adjunta un archivo a un proyecto. Envía multipart/form-data con el campo file y un caption opcional; aquí no hay flujo de prefirmado. El límite es de 5 MiB en todos los entornos: un archivo más grande es 400 attachment_too_large, con extra.max_size_bytes. El tipo de archivo se verifica por su contenido contra la misma lista que los adjuntos de tareas (attachment_invalid_type). Un proyecto admite como máximo 50 adjuntos (attachment_limit_reached).
Parámetros de ruta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| project_id | string | Requerido | El uuid del proyecto. |
Encabezados
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| X-Dailybot-Agent-Name | string | Opcional | El nombre del agente que ejecutó esta escritura en nombre de la persona. Úsalo en escrituras multipart y sin cuerpo (DELETE, archivar, restaurar); en escrituras JSON envía el campo agent_name del cuerpo, que gana si vienen los dos. Codifica el valor con percent-encoding (UTF-8). Los caracteres de control se eliminan; un valor vacío significa sin agente. Más de 128 caracteres, o un valor que no se puede decodificar, es 400 invalid_agent_attribution (nunca se trunca). Una clave de tipo agente, que no está ligada a una persona, recibe 400 invalid_agent_attribution si lo envía. El sello nunca cambia una respuesta de permisos. Ver Atribución de agente. |
Cuerpo de la solicitud
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| file | binary | Requerido | El archivo a subir (máximo 5 MiB por esta vía). |
| caption | string | Opcional | Pie de texto opcional. Máximo 255 caracteres. |
Respuesta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| (body) | TaskAttachment | Requerido | Un objeto TaskAttachment. |
Errores
| Estado | Cuándo |
|---|---|
| 400 | Falta el archivo, es demasiado grande (`attachment_too_large`, más de 5 MiB), su tipo no se admite (`attachment_invalid_type`) o se alcanzó el límite de 50 (`attachment_limit_reached`). `invalid_agent_attribution` significa que el nombre del agente no es válido. |
| 401 | Credencial ausente, vencida o con formato inválido (`credential_absent`, `credential_expired`, `credential_malformed`). |
| 402 | Plan aún no está habilitado para tu organización (`plan_upgrade_required`). Es lo esperado durante la Beta: escribe a [email protected]. |
| 403 | No actúas como miembro no invitado con una sesión iniciada o una API key personal (`insufficient_scope`); una key de agente o de la organización siempre recibe esto. |
| 404 | El proyecto o el adjunto no existe o no puedes verlo (`not_found`), nunca un 403. |
curl -sS -X POST "https://api.dailybot.com/v1/plan/projects/00000000-0000-4000-8000-000000000001/attachments/" \
-H "Authorization: Bearer $DAILYBOT_TOKEN" \
-F "file=@./screenshot.png" \
-F "caption=Staging dashboard"dailybot plan project attach 00000000-0000-4000-8000-000000000001 ./plan.pdf --caption "Launch plan"Probarlo
Este es un asistente de solo copia — la solicitud no se envía desde tu navegador. Pega el comando en tu terminal para ejecutarlo.
- Scope: `tasks:admin` — escrituras de contenedores. Un miembro no invitado puede llamarlo con una sesión iniciada o una API key personal (una key con scopes de Plan explícitos necesita `tasks:write`, que lo cubre); una key de agente o de la organización recibe `403 insufficient_scope`.
- Límite de solicitudes: 60 escrituras por minuto por actor.
- Requiere una persona: llámalo con una sesión iniciada, un token de usuario del CLI o una API key personal. Una key de agente o de la organización recibe `403 insufficient_scope`.
Descargar los bytes de un adjunto de un proyecto
Transmite el archivo con el tipo de contenido registrado al subirlo, X-Content-Type-Options: nosniff y Cache-Control: no-store. Nunca redirige al almacenamiento. Cualquiera que pueda ver el proyecto puede descargarlo.
Parámetros de ruta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| project_id | string | Requerido | El uuid del proyecto. |
| attachment_id | string | Requerido | El uuid del adjunto. |
Errores
| Estado | Cuándo |
|---|---|
| 401 | Credencial ausente, vencida o con formato inválido (`credential_absent`, `credential_expired`, `credential_malformed`). |
| 402 | Plan aún no está habilitado para tu organización (`plan_upgrade_required`). Es lo esperado durante la Beta: escribe a [email protected]. |
| 404 | El proyecto o el adjunto no existe o no puedes verlo (`not_found`), nunca un 403. |
curl -sS "https://api.dailybot.com/v1/plan/projects/00000000-0000-4000-8000-000000000001/attachments/00000000-0000-4000-8000-000000000009/content/" \
-H "X-API-KEY: $DAILYBOT_API_KEY"dailybot plan project attachment get 00000000-0000-4000-8000-000000000001 00000000-0000-4000-8000-000000000009 -o ./plan.pdfProbarlo
Este es un asistente de solo copia — la solicitud no se envía desde tu navegador. Pega el comando en tu terminal para ejecutarlo.
- Scope: `tasks:read`.
- Límite de solicitudes: 120 lecturas por minuto por actor.
- Funciona con una sesión iniciada, un token de usuario del CLI, una API key personal, o una key de agente o de la organización. Una key personal ve lo que ve su persona; una key de agente o de la organización actúa como actor del sistema y solo ve los tableros visibles para la organización.
Quitar un adjunto de un proyecto
Quita el adjunto del proyecto.
Parámetros de ruta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| project_id | string | Requerido | El uuid del proyecto. |
| attachment_id | string | Requerido | El uuid del adjunto. |
Encabezados
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| X-Dailybot-Agent-Name | string | Opcional | El nombre del agente que ejecutó esta escritura en nombre de la persona. Úsalo en escrituras multipart y sin cuerpo (DELETE, archivar, restaurar); en escrituras JSON envía el campo agent_name del cuerpo, que gana si vienen los dos. Codifica el valor con percent-encoding (UTF-8). Los caracteres de control se eliminan; un valor vacío significa sin agente. Más de 128 caracteres, o un valor que no se puede decodificar, es 400 invalid_agent_attribution (nunca se trunca). Una clave de tipo agente, que no está ligada a una persona, recibe 400 invalid_agent_attribution si lo envía. El sello nunca cambia una respuesta de permisos. Ver Atribución de agente. |
Errores
| Estado | Cuándo |
|---|---|
| 400 | El nombre del agente no es válido (`invalid_agent_attribution`). |
| 401 | Credencial ausente, vencida o con formato inválido (`credential_absent`, `credential_expired`, `credential_malformed`). |
| 402 | Plan aún no está habilitado para tu organización (`plan_upgrade_required`). Es lo esperado durante la Beta: escribe a [email protected]. |
| 403 | No actúas como miembro no invitado con una sesión iniciada o una API key personal (`insufficient_scope`); una key de agente o de la organización siempre recibe esto. |
| 404 | El proyecto o el adjunto no existe o no puedes verlo (`not_found`), nunca un 403. |
curl -sS -X DELETE "https://api.dailybot.com/v1/plan/projects/00000000-0000-4000-8000-000000000001/attachments/00000000-0000-4000-8000-000000000009/" \
-H "Authorization: Bearer $DAILYBOT_TOKEN"dailybot plan project attachment delete 00000000-0000-4000-8000-000000000001 00000000-0000-4000-8000-000000000009 --yesProbarlo
Este es un asistente de solo copia — la solicitud no se envía desde tu navegador. Pega el comando en tu terminal para ejecutarlo.
- Scope: `tasks:admin` — escrituras de contenedores. Un miembro no invitado puede llamarlo con una sesión iniciada o una API key personal (una key con scopes de Plan explícitos necesita `tasks:write`, que lo cubre); una key de agente o de la organización recibe `403 insufficient_scope`.
- Límite de solicitudes: 60 escrituras por minuto por actor.
- Requiere una persona: llámalo con una sesión iniciada, un token de usuario del CLI o una API key personal. Una key de agente o de la organización recibe `403 insufficient_scope`.
Restaurar un hito retirado
Trae de vuelta un hito retirado. Es lo inverso de retirar un hito con DELETE. Idempotente: un hito que no está retirado se devuelve sin cambios. Envía un Idempotency-Key para reintentar sin riesgo.
Parámetros de ruta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| project_id | string | Requerido | El uuid del proyecto. |
| milestone_id | string | Requerido | El uuid del hito. |
Encabezados
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| X-Dailybot-Agent-Name | string | Opcional | El nombre del agente que ejecutó esta escritura en nombre de la persona. Úsalo en escrituras multipart y sin cuerpo (DELETE, archivar, restaurar); en escrituras JSON envía el campo agent_name del cuerpo, que gana si vienen los dos. Codifica el valor con percent-encoding (UTF-8). Los caracteres de control se eliminan; un valor vacío significa sin agente. Más de 128 caracteres, o un valor que no se puede decodificar, es 400 invalid_agent_attribution (nunca se trunca). Una clave de tipo agente, que no está ligada a una persona, recibe 400 invalid_agent_attribution si lo envía. El sello nunca cambia una respuesta de permisos. Ver Atribución de agente. |
Respuesta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| (body) | ProjectMilestone | Requerido | Un objeto ProjectMilestone. |
Errores
| Estado | Cuándo |
|---|---|
| 400 | El nombre del agente no es válido (`invalid_agent_attribution`). |
| 401 | Credencial ausente, vencida o con formato inválido (`credential_absent`, `credential_expired`, `credential_malformed`). |
| 402 | Plan aún no está habilitado para tu organización (`plan_upgrade_required`). Es lo esperado durante la Beta: escribe a [email protected]. |
| 403 | La credencial no puede escribir en Plan (`insufficient_scope`), o quien llama es invitado (`guest_not_allowed`). |
| 404 | El proyecto o el hito no existe o no puedes verlo (`not_found`), nunca un 403. |
curl -sS -X POST "https://api.dailybot.com/v1/plan/projects/00000000-0000-4000-8000-000000000001/milestones/00000000-0000-4000-8000-000000000007/restore/" \
-H "Authorization: Bearer $DAILYBOT_TOKEN"Probarlo
Este es un asistente de solo copia — la solicitud no se envía desde tu navegador. Pega el comando en tu terminal para ejecutarlo.
- Scope: `tasks:write`.
- Límite de solicitudes: 60 escrituras por minuto por actor.
- Funciona con una sesión iniciada, un token de usuario del CLI, una API key personal, o una key de agente o de la organización. Una key personal ve lo que ve su persona; una key de agente o de la organización actúa como actor del sistema y solo ve los tableros visibles para la organización.
/v1/plan/projects/{project_id}/milestones/{milestone_id}/attachments/BetaAPI keyCLI AuthPaginación por número de páginaListar los adjuntos del hito
Los adjuntos listos del hito, ordenados por posición. Cualquiera que pueda ver el proyecto puede listarlos; un proyecto que no puedes ver es 404. Cada url es un enlace de descarga. No lo guardes: conserva el uuid del adjunto y vuelve a leerlo cuando necesites el archivo. Refiérete a él desde la description del hito con un marcador attachment:{uuid} y resuélvelo con GET /v1/plan/attachments/resolve/ al renderizar.
Parámetros de ruta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| project_id | string | Requerido | El uuid del proyecto. |
| milestone_id | string | Requerido | El uuid del hito. |
Parámetros de consulta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| page | integer | Opcional | Número de página, empezando en 1. |
| page_size | integer | Opcional | Filas por página. 50 por defecto, máximo 100. Los valores fuera de rango se ajustan, nunca se rechazan: pedir 500 devuelve 100. |
Objeto TaskAttachment
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| uuid | uuid | Requerido | Identificador público estable. |
| filename | string | Requerido | Nombre del archivo. |
| content_type | string | Requerido | Tipo MIME. |
| size | integer | Requerido | Tamaño en bytes. |
| url | string | Requerido | Dónde descargar el archivo. |
| thumbnail_url | uri | null | Opcional | Miniatura para imágenes. |
| width | integer | null | Opcional | — |
| height | integer | null | Opcional | — |
| status | enum | Requerido | Estado actual. Uno de pending, ready, scanning, rejected. |
| uploaded_by | ActorRef | null | Opcional | Quién subió el archivo. Ver ActorRef. |
| executed_by_agent | object | null | Opcional | El agente que ejecutó esto en nombre de la persona, o null si no se nombró a ninguno: un objeto con uuid, name, username y avatar. La persona del campo de autor sigue siendo la autora; el agente se muestra como quien lo ejecutó. |
| created_at | date-time | Requerido | Cuándo se creó la fila. |
Respuesta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| count | integer | Requerido | Número total de filas. |
| next | uri | Requerido | URL de la página siguiente, o null. |
| previous | uri | Requerido | URL de la página anterior, o null. |
| results | array<TaskAttachment> | Requerido | Las filas de esta página. Ver TaskAttachment. |
Errores
| Estado | Cuándo |
|---|---|
| 401 | Credencial ausente, vencida o con formato inválido (`credential_absent`, `credential_expired`, `credential_malformed`). |
| 402 | Plan aún no está habilitado para tu organización (`plan_upgrade_required`). Es lo esperado durante la Beta: escribe a [email protected]. |
| 404 | El proyecto o el hito no existe o no puedes verlo (`not_found`), nunca un 403. |
curl -sS "https://api.dailybot.com/v1/plan/projects/00000000-0000-4000-8000-000000000001/milestones/00000000-0000-4000-8000-000000000007/attachments/" \
-H "Authorization: Bearer $DAILYBOT_TOKEN"{
"count": 1,
"next": null,
"previous": null,
"results": [
{
"uuid": "00000000-0000-4000-8000-000000000009",
"filename": "roadmap.png",
"content_type": "image/png",
"size": 48213,
"url": "https://your.app/files/roadmap.png",
"thumbnail_url": null,
"width": null,
"height": null,
"status": "ready",
"uploaded_by": {
"kind": "user",
"uuid": "00000000-0000-4000-8000-00000000000c",
"name": "Ada L."
},
"executed_by_agent": null,
"created_at": "2026-09-29T10:14:02Z"
}
]
}Probarlo
Este es un asistente de solo copia — la solicitud no se envía desde tu navegador. Pega el comando en tu terminal para ejecutarlo.
- Scope: `tasks:read`.
- Límite de solicitudes: 120 lecturas por minuto por actor.
- Funciona con una sesión iniciada, un token de usuario del CLI, una API key personal, o una key de agente o de la organización. Una key personal ve lo que ve su persona; una key de agente o de la organización actúa como actor del sistema y solo ve los tableros visibles para la organización.
Subir un adjunto del hito
Adjunta un archivo del hito. Envía multipart/form-data con el campo file y un caption opcional; aquí no hay flujo de prefirmado. El límite es de 5 MiB: un archivo más grande es 400 attachment_too_large, con extra.max_size_bytes. El tipo de archivo se verifica por su contenido contra la misma lista que los adjuntos de proyectos (attachment_invalid_type). Adjuntar sigue las reglas de escritura del propio hito. Refiérete a él desde la description del hito con un marcador attachment:{uuid} y resuélvelo con GET /v1/plan/attachments/resolve/ al renderizar.
Parámetros de ruta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| project_id | string | Requerido | El uuid del proyecto. |
| milestone_id | string | Requerido | El uuid del hito. |
Encabezados
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| X-Dailybot-Agent-Name | string | Opcional | El nombre del agente que ejecutó esta escritura en nombre de la persona. Úsalo en escrituras multipart y sin cuerpo (DELETE, archivar, restaurar); en escrituras JSON envía el campo agent_name del cuerpo, que gana si vienen los dos. Codifica el valor con percent-encoding (UTF-8). Los caracteres de control se eliminan; un valor vacío significa sin agente. Más de 128 caracteres, o un valor que no se puede decodificar, es 400 invalid_agent_attribution (nunca se trunca). Una clave de tipo agente, que no está ligada a una persona, recibe 400 invalid_agent_attribution si lo envía. El sello nunca cambia una respuesta de permisos. Ver Atribución de agente. |
Cuerpo de la solicitud
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| file | binary | Requerido | El archivo a subir (máximo 5 MiB por esta vía). |
| caption | string | Opcional | Pie de texto opcional. Máximo 255 caracteres. |
Respuesta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| (body) | TaskAttachment | Requerido | Un objeto TaskAttachment. |
Errores
| Estado | Cuándo |
|---|---|
| 400 | Falta el archivo, es demasiado grande (`attachment_too_large`, más de 5 MiB), su tipo no se admite (`attachment_invalid_type`) o se alcanzó el límite de 50 (`attachment_limit_reached`). `invalid_agent_attribution` significa que el nombre del agente no es válido. |
| 401 | Credencial ausente, vencida o con formato inválido (`credential_absent`, `credential_expired`, `credential_malformed`). |
| 402 | Plan aún no está habilitado para tu organización (`plan_upgrade_required`). Es lo esperado durante la Beta: escribe a [email protected]. |
| 403 | La credencial no puede escribir en Plan (`insufficient_scope`), o quien llama es invitado (`guest_not_allowed`). |
| 404 | El proyecto o el hito no existe o no puedes verlo (`not_found`), nunca un 403. |
curl -sS -X POST "https://api.dailybot.com/v1/plan/projects/00000000-0000-4000-8000-000000000001/milestones/00000000-0000-4000-8000-000000000007/attachments/" \
-H "Authorization: Bearer $DAILYBOT_TOKEN" \
-F "[email protected]"{
"uuid": "00000000-0000-4000-8000-000000000009",
"filename": "roadmap.png",
"content_type": "image/png",
"size": 48213,
"url": "https://your.app/files/roadmap.png",
"thumbnail_url": null,
"width": null,
"height": null,
"status": "ready",
"uploaded_by": {
"kind": "user",
"uuid": "00000000-0000-4000-8000-00000000000c",
"name": "Ada L."
},
"executed_by_agent": null,
"created_at": "2026-09-29T10:14:02Z"
}Probarlo
Este es un asistente de solo copia — la solicitud no se envía desde tu navegador. Pega el comando en tu terminal para ejecutarlo.
- Scope: `tasks:write`.
- Límite de solicitudes: 60 escrituras por minuto por actor.
- Funciona con una sesión iniciada, un token de usuario del CLI, una API key personal, o una key de agente o de la organización. Una key personal ve lo que ve su persona; una key de agente o de la organización actúa como actor del sistema y solo ve los tableros visibles para la organización.
/v1/plan/projects/{project_id}/milestones/{milestone_id}/attachments/{attachment_id}/BetaAPI keyCLI AuthObtener un adjunto del hito
Un adjunto del hito. Cualquiera que pueda ver el proyecto puede leerlo.
Parámetros de ruta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| project_id | string | Requerido | El uuid del proyecto. |
| milestone_id | string | Requerido | El uuid del hito. |
| attachment_id | string | Requerido | El uuid del adjunto. |
Respuesta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| (body) | TaskAttachment | Requerido | Un objeto TaskAttachment. |
Errores
| Estado | Cuándo |
|---|---|
| 401 | Credencial ausente, vencida o con formato inválido (`credential_absent`, `credential_expired`, `credential_malformed`). |
| 402 | Plan aún no está habilitado para tu organización (`plan_upgrade_required`). Es lo esperado durante la Beta: escribe a [email protected]. |
| 404 | El proyecto, el hito o el adjunto no existe o no puedes verlo (`not_found`), nunca un 403. |
curl -sS "https://api.dailybot.com/v1/plan/projects/00000000-0000-4000-8000-000000000001/milestones/00000000-0000-4000-8000-000000000007/attachments/00000000-0000-4000-8000-000000000009/" \
-H "Authorization: Bearer $DAILYBOT_TOKEN"{
"uuid": "00000000-0000-4000-8000-000000000009",
"filename": "roadmap.png",
"content_type": "image/png",
"size": 48213,
"url": "https://your.app/files/roadmap.png",
"thumbnail_url": null,
"width": null,
"height": null,
"status": "ready",
"uploaded_by": {
"kind": "user",
"uuid": "00000000-0000-4000-8000-00000000000c",
"name": "Ada L."
},
"executed_by_agent": null,
"created_at": "2026-09-29T10:14:02Z"
}Probarlo
Este es un asistente de solo copia — la solicitud no se envía desde tu navegador. Pega el comando en tu terminal para ejecutarlo.
- Scope: `tasks:read`.
- Límite de solicitudes: 120 lecturas por minuto por actor.
- Funciona con una sesión iniciada, un token de usuario del CLI, una API key personal, o una key de agente o de la organización. Una key personal ve lo que ve su persona; una key de agente o de la organización actúa como actor del sistema y solo ve los tableros visibles para la organización.
/v1/plan/projects/{project_id}/milestones/{milestone_id}/attachments/{attachment_id}/BetaAPI keyCLI AuthRenombrar un adjunto del hito
Cambia el nombre del archivo del adjunto; el contenido no cambia. Las reglas son las del propio hito.
Parámetros de ruta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| project_id | string | Requerido | El uuid del proyecto. |
| milestone_id | string | Requerido | El uuid del hito. |
| attachment_id | string | Requerido | El uuid del adjunto. |
Encabezados
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| X-Dailybot-Agent-Name | string | Opcional | El nombre del agente que ejecutó esta escritura en nombre de la persona. Úsalo en escrituras multipart y sin cuerpo (DELETE, archivar, restaurar); en escrituras JSON envía el campo agent_name del cuerpo, que gana si vienen los dos. Codifica el valor con percent-encoding (UTF-8). Los caracteres de control se eliminan; un valor vacío significa sin agente. Más de 128 caracteres, o un valor que no se puede decodificar, es 400 invalid_agent_attribution (nunca se trunca). Una clave de tipo agente, que no está ligada a una persona, recibe 400 invalid_agent_attribution si lo envía. El sello nunca cambia una respuesta de permisos. Ver Atribución de agente. |
Cuerpo de la solicitud
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| filename | string | Requerido | El nuevo nombre del archivo. |
| agent_name | string | Opcional | El nombre del agente que ejecutó esta escritura en nombre de la persona (máx. 128 caracteres, vacío significa sin agente). Tiene prioridad sobre el header X-Dailybot-Agent-Name. Ver Atribución de agente. |
Respuesta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| (body) | TaskAttachment | Requerido | Un objeto TaskAttachment. |
Errores
| Estado | Cuándo |
|---|---|
| 400 | Falta el nombre o no es válido. `invalid_agent_attribution` significa que el nombre del agente no es válido. |
| 401 | Credencial ausente, vencida o con formato inválido (`credential_absent`, `credential_expired`, `credential_malformed`). |
| 402 | Plan aún no está habilitado para tu organización (`plan_upgrade_required`). Es lo esperado durante la Beta: escribe a [email protected]. |
| 403 | La credencial no puede escribir en Plan (`insufficient_scope`), o quien llama es invitado (`guest_not_allowed`). |
| 404 | El proyecto, el hito o el adjunto no existe o no puedes verlo (`not_found`), nunca un 403. |
curl -sS -X PATCH "https://api.dailybot.com/v1/plan/projects/00000000-0000-4000-8000-000000000001/milestones/00000000-0000-4000-8000-000000000007/attachments/00000000-0000-4000-8000-000000000009/" \
-H "Authorization: Bearer $DAILYBOT_TOKEN" \
-H "Content-Type: application/json" \
-d '{"filename": "roadmap-v2.png"}'{
"uuid": "00000000-0000-4000-8000-000000000009",
"filename": "roadmap-v2.png",
"content_type": "image/png",
"size": 48213,
"url": "https://your.app/files/roadmap-v2.png",
"thumbnail_url": null,
"width": null,
"height": null,
"status": "ready",
"uploaded_by": {
"kind": "user",
"uuid": "00000000-0000-4000-8000-00000000000c",
"name": "Ada L."
},
"executed_by_agent": null,
"created_at": "2026-09-29T10:14:02Z"
}Probarlo
Este es un asistente de solo copia — la solicitud no se envía desde tu navegador. Pega el comando en tu terminal para ejecutarlo.
- Scope: `tasks:write`.
- Límite de solicitudes: 60 escrituras por minuto por actor.
- Funciona con una sesión iniciada, un token de usuario del CLI, una API key personal, o una key de agente o de la organización. Una key personal ve lo que ve su persona; una key de agente o de la organización actúa como actor del sistema y solo ve los tableros visibles para la organización.
/v1/plan/projects/{project_id}/milestones/{milestone_id}/attachments/{attachment_id}/BetaAPI keyCLI AuthQuitar un adjunto del hito
Quita el adjunto. Las reglas son las del propio hito.
Parámetros de ruta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| project_id | string | Requerido | El uuid del proyecto. |
| milestone_id | string | Requerido | El uuid del hito. |
| attachment_id | string | Requerido | El uuid del adjunto. |
Encabezados
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| X-Dailybot-Agent-Name | string | Opcional | El nombre del agente que ejecutó esta escritura en nombre de la persona. Úsalo en escrituras multipart y sin cuerpo (DELETE, archivar, restaurar); en escrituras JSON envía el campo agent_name del cuerpo, que gana si vienen los dos. Codifica el valor con percent-encoding (UTF-8). Los caracteres de control se eliminan; un valor vacío significa sin agente. Más de 128 caracteres, o un valor que no se puede decodificar, es 400 invalid_agent_attribution (nunca se trunca). Una clave de tipo agente, que no está ligada a una persona, recibe 400 invalid_agent_attribution si lo envía. El sello nunca cambia una respuesta de permisos. Ver Atribución de agente. |
Errores
| Estado | Cuándo |
|---|---|
| 400 | El nombre del agente no es válido (`invalid_agent_attribution`). |
| 401 | Credencial ausente, vencida o con formato inválido (`credential_absent`, `credential_expired`, `credential_malformed`). |
| 402 | Plan aún no está habilitado para tu organización (`plan_upgrade_required`). Es lo esperado durante la Beta: escribe a [email protected]. |
| 403 | La credencial no puede escribir en Plan (`insufficient_scope`), o quien llama es invitado (`guest_not_allowed`). |
| 404 | El proyecto, el hito o el adjunto no existe o no puedes verlo (`not_found`), nunca un 403. |
curl -sS -X DELETE "https://api.dailybot.com/v1/plan/projects/00000000-0000-4000-8000-000000000001/milestones/00000000-0000-4000-8000-000000000007/attachments/00000000-0000-4000-8000-000000000009/" \
-H "Authorization: Bearer $DAILYBOT_TOKEN"Probarlo
Este es un asistente de solo copia — la solicitud no se envía desde tu navegador. Pega el comando en tu terminal para ejecutarlo.
- Scope: `tasks:write`.
- Límite de solicitudes: 60 escrituras por minuto por actor.
- Funciona con una sesión iniciada, un token de usuario del CLI, una API key personal, o una key de agente o de la organización. Una key personal ve lo que ve su persona; una key de agente o de la organización actúa como actor del sistema y solo ve los tableros visibles para la organización.
/v1/plan/projects/{project_id}/milestones/{milestone_id}/attachments/{attachment_id}/content/BetaAPI keyCLI AuthDescargar los bytes de un adjunto del hito
Transmite el archivo con el tipo de contenido registrado al subirlo, X-Content-Type-Options: nosniff y Cache-Control: no-store. Nunca redirige al almacenamiento. Cualquiera que pueda ver el proyecto puede descargarlo.
Parámetros de ruta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| project_id | string | Requerido | El uuid del proyecto. |
| milestone_id | string | Requerido | El uuid del hito. |
| attachment_id | string | Requerido | El uuid del adjunto. |
Errores
| Estado | Cuándo |
|---|---|
| 401 | Credencial ausente, vencida o con formato inválido (`credential_absent`, `credential_expired`, `credential_malformed`). |
| 402 | Plan aún no está habilitado para tu organización (`plan_upgrade_required`). Es lo esperado durante la Beta: escribe a [email protected]. |
| 404 | El proyecto, el hito o el adjunto no existe o no puedes verlo (`not_found`), nunca un 403. |
| 409 | El adjunto aún no está listo (`attachment_not_ready`). |
curl -sS "https://api.dailybot.com/v1/plan/projects/00000000-0000-4000-8000-000000000001/milestones/00000000-0000-4000-8000-000000000007/attachments/00000000-0000-4000-8000-000000000009/content/" \
-H "Authorization: Bearer $DAILYBOT_TOKEN" -o roadmap.pngProbarlo
Este es un asistente de solo copia — la solicitud no se envía desde tu navegador. Pega el comando en tu terminal para ejecutarlo.
- Scope: `tasks:read`.
- Límite de solicitudes: 120 lecturas por minuto por actor.
- Funciona con una sesión iniciada, un token de usuario del CLI, una API key personal, o una key de agente o de la organización. Una key personal ve lo que ve su persona; una key de agente o de la organización actúa como actor del sistema y solo ve los tableros visibles para la organización.
Obtener una actualización de proyecto
Una nota de estado, con sus attachments listos incluidos, provenance, edited_at (nulo hasta la primera edición) y executed_by_agent.
Parámetros de ruta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| project_id | string | Requerido | El uuid del proyecto. |
| update_id | string | Requerido | El uuid de la actualización. |
Respuesta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| (body) | ProjectUpdate | Requerido | Un objeto ProjectUpdate. |
Errores
| Estado | Cuándo |
|---|---|
| 401 | Credencial ausente, vencida o con formato inválido (`credential_absent`, `credential_expired`, `credential_malformed`). |
| 402 | Plan aún no está habilitado para tu organización (`plan_upgrade_required`). Es lo esperado durante la Beta: escribe a [email protected]. |
| 404 | El proyecto o la actualización no existe o no puedes verlo (`not_found`), nunca un 403. |
curl -sS "https://api.dailybot.com/v1/plan/projects/00000000-0000-4000-8000-000000000001/updates/00000000-0000-4000-8000-00000000000a/" \
-H "Authorization: Bearer $DAILYBOT_TOKEN"{
"uuid": "00000000-0000-4000-8000-00000000000a",
"project": "00000000-0000-4000-8000-000000000001",
"body": "Staging is green; rolling out Friday.",
"body_html": "<p>Staging is green; rolling out Friday.</p>",
"mentions": [],
"health": "on_track",
"created_by": {
"kind": "user",
"uuid": "00000000-0000-4000-8000-00000000000c",
"name": "Ada L."
},
"executed_by_agent": null,
"provenance": "typed",
"edited_at": null,
"attachments": [],
"created_at": "2026-09-29T10:14:02Z",
"updated_at": "2026-09-29T10:14:02Z"
}Probarlo
Este es un asistente de solo copia — la solicitud no se envía desde tu navegador. Pega el comando en tu terminal para ejecutarlo.
- Scope: `tasks:read`.
- Límite de solicitudes: 120 lecturas por minuto por actor.
- Funciona con una sesión iniciada, un token de usuario del CLI, una API key personal, o una key de agente o de la organización. Una key personal ve lo que ve su persona; una key de agente o de la organización actúa como actor del sistema y solo ve los tableros visibles para la organización.
Editar una actualización de proyecto
Cambia body y/o health (null lo borra) y sella edited_at. Solo la persona autora puede editar (403 update_not_author). created_by y el executed_by_agent original nunca cambian; una edición hecha con una API key, o sellada con un agente, deja provenance en agent_authored. Para colocar imágenes en línea, súbelas a los adjuntos de la actualización y agrega marcadores attachment:{uuid} al body. Envía If-Match o un version en el cuerpo para no pisar una edición concurrente.
Parámetros de ruta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| project_id | string | Requerido | El uuid del proyecto. |
| update_id | string | Requerido | El uuid de la actualización. |
Encabezados
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| X-Dailybot-Agent-Name | string | Opcional | El nombre del agente que ejecutó esta escritura en nombre de la persona. Úsalo en escrituras multipart y sin cuerpo (DELETE, archivar, restaurar); en escrituras JSON envía el campo agent_name del cuerpo, que gana si vienen los dos. Codifica el valor con percent-encoding (UTF-8). Los caracteres de control se eliminan; un valor vacío significa sin agente. Más de 128 caracteres, o un valor que no se puede decodificar, es 400 invalid_agent_attribution (nunca se trunca). Una clave de tipo agente, que no está ligada a una persona, recibe 400 invalid_agent_attribution si lo envía. El sello nunca cambia una respuesta de permisos. Ver Atribución de agente. |
Cuerpo de la solicitud
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| body | string | Opcional | Markdown. Máx. 20000 caracteres. |
| health | enum | null | Opcional | Salud declarada. Uno de not_set, on_track, at_risk, off_track. |
| agent_name | string | Opcional | El nombre del agente que ejecutó esta escritura en nombre de la persona (máx. 128 caracteres, vacío significa sin agente). Tiene prioridad sobre el header X-Dailybot-Agent-Name. Ver Atribución de agente. |
Respuesta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| (body) | ProjectUpdate | Requerido | Un objeto ProjectUpdate. |
Errores
| Estado | Cuándo |
|---|---|
| 400 | El cuerpo está vacío o es demasiado largo (`update_body_too_long`), o `health` no es válido. `invalid_agent_attribution` significa que el nombre del agente no es válido. |
| 401 | Credencial ausente, vencida o con formato inválido (`credential_absent`, `credential_expired`, `credential_malformed`). |
| 402 | Plan aún no está habilitado para tu organización (`plan_upgrade_required`). Es lo esperado durante la Beta: escribe a [email protected]. |
| 403 | Solo la persona autora de la actualización puede hacerlo (`update_not_author`). |
| 404 | El proyecto o la actualización no existe o no puedes verlo (`not_found`), nunca un 403. |
curl -sS -X PATCH "https://api.dailybot.com/v1/plan/projects/00000000-0000-4000-8000-000000000001/updates/00000000-0000-4000-8000-00000000000a/" \
-H "Authorization: Bearer $DAILYBOT_TOKEN" \
-H "Content-Type: application/json" \
-d '{"body": "Staging is green; rolling out Friday.", "health": "on_track"}'{
"uuid": "00000000-0000-4000-8000-00000000000a",
"project": "00000000-0000-4000-8000-000000000001",
"body": "Staging is green; rolling out Friday.",
"body_html": "<p>Staging is green; rolling out Friday.</p>",
"mentions": [],
"health": "on_track",
"created_by": {
"kind": "user",
"uuid": "00000000-0000-4000-8000-00000000000c",
"name": "Ada L."
},
"executed_by_agent": null,
"provenance": "typed",
"edited_at": "2026-09-29T11:02:00Z",
"attachments": [],
"created_at": "2026-09-29T10:14:02Z",
"updated_at": "2026-09-29T11:02:00Z"
}Probarlo
Este es un asistente de solo copia — la solicitud no se envía desde tu navegador. Pega el comando en tu terminal para ejecutarlo.
- Scope: `tasks:write`.
- Límite de solicitudes: 60 escrituras por minuto por actor.
- Funciona con una sesión iniciada, un token de usuario del CLI, una API key personal, o una key de agente o de la organización. Una key personal ve lo que ve su persona; una key de agente o de la organización actúa como actor del sistema y solo ve los tableros visibles para la organización.
Eliminar una actualización de proyecto
Elimina la actualización y sus adjuntos; un archivo almacenado se borra cuando nada más lo referencia. La persona autora o un administrador de la organización puede eliminarla (403 update_not_author para cualquier otra persona).
Parámetros de ruta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| project_id | string | Requerido | El uuid del proyecto. |
| update_id | string | Requerido | El uuid de la actualización. |
Encabezados
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| X-Dailybot-Agent-Name | string | Opcional | El nombre del agente que ejecutó esta escritura en nombre de la persona. Úsalo en escrituras multipart y sin cuerpo (DELETE, archivar, restaurar); en escrituras JSON envía el campo agent_name del cuerpo, que gana si vienen los dos. Codifica el valor con percent-encoding (UTF-8). Los caracteres de control se eliminan; un valor vacío significa sin agente. Más de 128 caracteres, o un valor que no se puede decodificar, es 400 invalid_agent_attribution (nunca se trunca). Una clave de tipo agente, que no está ligada a una persona, recibe 400 invalid_agent_attribution si lo envía. El sello nunca cambia una respuesta de permisos. Ver Atribución de agente. |
Errores
| Estado | Cuándo |
|---|---|
| 400 | El nombre del agente no es válido (`invalid_agent_attribution`). |
| 401 | Credencial ausente, vencida o con formato inválido (`credential_absent`, `credential_expired`, `credential_malformed`). |
| 402 | Plan aún no está habilitado para tu organización (`plan_upgrade_required`). Es lo esperado durante la Beta: escribe a [email protected]. |
| 403 | Solo la persona autora de la actualización puede hacerlo (`update_not_author`). |
| 404 | El proyecto o la actualización no existe o no puedes verlo (`not_found`), nunca un 403. |
curl -sS -X DELETE "https://api.dailybot.com/v1/plan/projects/00000000-0000-4000-8000-000000000001/updates/00000000-0000-4000-8000-00000000000a/" \
-H "Authorization: Bearer $DAILYBOT_TOKEN"Probarlo
Este es un asistente de solo copia — la solicitud no se envía desde tu navegador. Pega el comando en tu terminal para ejecutarlo.
- Scope: `tasks:write`.
- Límite de solicitudes: 60 escrituras por minuto por actor.
- Funciona con una sesión iniciada, un token de usuario del CLI, una API key personal, o una key de agente o de la organización. Una key personal ve lo que ve su persona; una key de agente o de la organización actúa como actor del sistema y solo ve los tableros visibles para la organización.
/v1/plan/projects/{project_id}/updates/{update_id}/attachments/BetaAPI keyCLI AuthPaginación por número de páginaListar los adjuntos de la actualización
Los adjuntos listos de la actualización, ordenados por posición. Cualquiera que pueda ver el proyecto puede listarlos; un proyecto que no puedes ver es 404. Cada url es un enlace de descarga. No lo guardes: conserva el uuid del adjunto y vuelve a leerlo cuando necesites el archivo. Refiérete a él desde el body de la actualización con un marcador attachment:{uuid} y resuélvelo con GET /v1/plan/attachments/resolve/ al renderizar.
Parámetros de ruta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| project_id | string | Requerido | El uuid del proyecto. |
| update_id | string | Requerido | El uuid de la actualización. |
Parámetros de consulta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| page | integer | Opcional | Número de página, empezando en 1. |
| page_size | integer | Opcional | Filas por página. 50 por defecto, máximo 100. Los valores fuera de rango se ajustan, nunca se rechazan: pedir 500 devuelve 100. |
Objeto TaskAttachment
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| uuid | uuid | Requerido | Identificador público estable. |
| filename | string | Requerido | Nombre del archivo. |
| content_type | string | Requerido | Tipo MIME. |
| size | integer | Requerido | Tamaño en bytes. |
| url | string | Requerido | Dónde descargar el archivo. |
| thumbnail_url | uri | null | Opcional | Miniatura para imágenes. |
| width | integer | null | Opcional | — |
| height | integer | null | Opcional | — |
| status | enum | Requerido | Estado actual. Uno de pending, ready, scanning, rejected. |
| uploaded_by | ActorRef | null | Opcional | Quién subió el archivo. Ver ActorRef. |
| executed_by_agent | object | null | Opcional | El agente que ejecutó esto en nombre de la persona, o null si no se nombró a ninguno: un objeto con uuid, name, username y avatar. La persona del campo de autor sigue siendo la autora; el agente se muestra como quien lo ejecutó. |
| created_at | date-time | Requerido | Cuándo se creó la fila. |
Respuesta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| count | integer | Requerido | Número total de filas. |
| next | uri | Requerido | URL de la página siguiente, o null. |
| previous | uri | Requerido | URL de la página anterior, o null. |
| results | array<TaskAttachment> | Requerido | Las filas de esta página. Ver TaskAttachment. |
Errores
| Estado | Cuándo |
|---|---|
| 401 | Credencial ausente, vencida o con formato inválido (`credential_absent`, `credential_expired`, `credential_malformed`). |
| 402 | Plan aún no está habilitado para tu organización (`plan_upgrade_required`). Es lo esperado durante la Beta: escribe a [email protected]. |
| 404 | El proyecto o la actualización no existe o no puedes verlo (`not_found`), nunca un 403. |
curl -sS "https://api.dailybot.com/v1/plan/projects/00000000-0000-4000-8000-000000000001/updates/00000000-0000-4000-8000-00000000000a/attachments/" \
-H "Authorization: Bearer $DAILYBOT_TOKEN"{
"count": 1,
"next": null,
"previous": null,
"results": [
{
"uuid": "00000000-0000-4000-8000-000000000009",
"filename": "roadmap.png",
"content_type": "image/png",
"size": 48213,
"url": "https://your.app/files/roadmap.png",
"thumbnail_url": null,
"width": null,
"height": null,
"status": "ready",
"uploaded_by": {
"kind": "user",
"uuid": "00000000-0000-4000-8000-00000000000c",
"name": "Ada L."
},
"executed_by_agent": null,
"created_at": "2026-09-29T10:14:02Z"
}
]
}Probarlo
Este es un asistente de solo copia — la solicitud no se envía desde tu navegador. Pega el comando en tu terminal para ejecutarlo.
- Scope: `tasks:read`.
- Límite de solicitudes: 120 lecturas por minuto por actor.
- Funciona con una sesión iniciada, un token de usuario del CLI, una API key personal, o una key de agente o de la organización. Una key personal ve lo que ve su persona; una key de agente o de la organización actúa como actor del sistema y solo ve los tableros visibles para la organización.
Subir un adjunto de la actualización
Adjunta un archivo de la actualización. Envía multipart/form-data con el campo file y un caption opcional; aquí no hay flujo de prefirmado. El límite es de 5 MiB: un archivo más grande es 400 attachment_too_large, con extra.max_size_bytes. El tipo de archivo se verifica por su contenido contra la misma lista que los adjuntos de proyectos (attachment_invalid_type). Solo la persona autora de la actualización puede adjuntar (403 update_not_author). Sube primero y luego agrega el marcador al body de la actualización con un PATCH. Refiérete a él desde el body de la actualización con un marcador attachment:{uuid} y resuélvelo con GET /v1/plan/attachments/resolve/ al renderizar.
Parámetros de ruta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| project_id | string | Requerido | El uuid del proyecto. |
| update_id | string | Requerido | El uuid de la actualización. |
Encabezados
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| X-Dailybot-Agent-Name | string | Opcional | El nombre del agente que ejecutó esta escritura en nombre de la persona. Úsalo en escrituras multipart y sin cuerpo (DELETE, archivar, restaurar); en escrituras JSON envía el campo agent_name del cuerpo, que gana si vienen los dos. Codifica el valor con percent-encoding (UTF-8). Los caracteres de control se eliminan; un valor vacío significa sin agente. Más de 128 caracteres, o un valor que no se puede decodificar, es 400 invalid_agent_attribution (nunca se trunca). Una clave de tipo agente, que no está ligada a una persona, recibe 400 invalid_agent_attribution si lo envía. El sello nunca cambia una respuesta de permisos. Ver Atribución de agente. |
Cuerpo de la solicitud
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| file | binary | Requerido | El archivo a subir (máximo 5 MiB por esta vía). |
| caption | string | Opcional | Pie de texto opcional. Máximo 255 caracteres. |
Respuesta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| (body) | TaskAttachment | Requerido | Un objeto TaskAttachment. |
Errores
| Estado | Cuándo |
|---|---|
| 400 | Falta el archivo, es demasiado grande (`attachment_too_large`, más de 5 MiB), su tipo no se admite (`attachment_invalid_type`) o se alcanzó el límite de 50 (`attachment_limit_reached`). `invalid_agent_attribution` significa que el nombre del agente no es válido. |
| 401 | Credencial ausente, vencida o con formato inválido (`credential_absent`, `credential_expired`, `credential_malformed`). |
| 402 | Plan aún no está habilitado para tu organización (`plan_upgrade_required`). Es lo esperado durante la Beta: escribe a [email protected]. |
| 403 | Solo la persona autora de la actualización puede hacerlo (`update_not_author`). |
| 404 | El proyecto o la actualización no existe o no puedes verlo (`not_found`), nunca un 403. |
curl -sS -X POST "https://api.dailybot.com/v1/plan/projects/00000000-0000-4000-8000-000000000001/updates/00000000-0000-4000-8000-00000000000a/attachments/" \
-H "Authorization: Bearer $DAILYBOT_TOKEN" \
-F "[email protected]"{
"uuid": "00000000-0000-4000-8000-000000000009",
"filename": "roadmap.png",
"content_type": "image/png",
"size": 48213,
"url": "https://your.app/files/roadmap.png",
"thumbnail_url": null,
"width": null,
"height": null,
"status": "ready",
"uploaded_by": {
"kind": "user",
"uuid": "00000000-0000-4000-8000-00000000000c",
"name": "Ada L."
},
"executed_by_agent": null,
"created_at": "2026-09-29T10:14:02Z"
}Probarlo
Este es un asistente de solo copia — la solicitud no se envía desde tu navegador. Pega el comando en tu terminal para ejecutarlo.
- Scope: `tasks:write`.
- Límite de solicitudes: 60 escrituras por minuto por actor.
- Funciona con una sesión iniciada, un token de usuario del CLI, una API key personal, o una key de agente o de la organización. Una key personal ve lo que ve su persona; una key de agente o de la organización actúa como actor del sistema y solo ve los tableros visibles para la organización.
/v1/plan/projects/{project_id}/updates/{update_id}/attachments/{attachment_id}/BetaAPI keyCLI AuthObtener un adjunto de la actualización
Un adjunto de la actualización. Cualquiera que pueda ver el proyecto puede leerlo.
Parámetros de ruta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| project_id | string | Requerido | El uuid del proyecto. |
| update_id | string | Requerido | El uuid de la actualización. |
| attachment_id | string | Requerido | El uuid del adjunto. |
Respuesta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| (body) | TaskAttachment | Requerido | Un objeto TaskAttachment. |
Errores
| Estado | Cuándo |
|---|---|
| 401 | Credencial ausente, vencida o con formato inválido (`credential_absent`, `credential_expired`, `credential_malformed`). |
| 402 | Plan aún no está habilitado para tu organización (`plan_upgrade_required`). Es lo esperado durante la Beta: escribe a [email protected]. |
| 404 | El proyecto, la actualización o el adjunto no existe o no puedes verlo (`not_found`), nunca un 403. |
curl -sS "https://api.dailybot.com/v1/plan/projects/00000000-0000-4000-8000-000000000001/updates/00000000-0000-4000-8000-00000000000a/attachments/00000000-0000-4000-8000-000000000009/" \
-H "Authorization: Bearer $DAILYBOT_TOKEN"{
"uuid": "00000000-0000-4000-8000-000000000009",
"filename": "roadmap.png",
"content_type": "image/png",
"size": 48213,
"url": "https://your.app/files/roadmap.png",
"thumbnail_url": null,
"width": null,
"height": null,
"status": "ready",
"uploaded_by": {
"kind": "user",
"uuid": "00000000-0000-4000-8000-00000000000c",
"name": "Ada L."
},
"executed_by_agent": null,
"created_at": "2026-09-29T10:14:02Z"
}Probarlo
Este es un asistente de solo copia — la solicitud no se envía desde tu navegador. Pega el comando en tu terminal para ejecutarlo.
- Scope: `tasks:read`.
- Límite de solicitudes: 120 lecturas por minuto por actor.
- Funciona con una sesión iniciada, un token de usuario del CLI, una API key personal, o una key de agente o de la organización. Una key personal ve lo que ve su persona; una key de agente o de la organización actúa como actor del sistema y solo ve los tableros visibles para la organización.
/v1/plan/projects/{project_id}/updates/{update_id}/attachments/{attachment_id}/BetaAPI keyCLI AuthRenombrar un adjunto de la actualización
Cambia el nombre del archivo del adjunto; el contenido no cambia. Solo la persona autora de la actualización puede renombrarlo (403 update_not_author).
Parámetros de ruta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| project_id | string | Requerido | El uuid del proyecto. |
| update_id | string | Requerido | El uuid de la actualización. |
| attachment_id | string | Requerido | El uuid del adjunto. |
Encabezados
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| X-Dailybot-Agent-Name | string | Opcional | El nombre del agente que ejecutó esta escritura en nombre de la persona. Úsalo en escrituras multipart y sin cuerpo (DELETE, archivar, restaurar); en escrituras JSON envía el campo agent_name del cuerpo, que gana si vienen los dos. Codifica el valor con percent-encoding (UTF-8). Los caracteres de control se eliminan; un valor vacío significa sin agente. Más de 128 caracteres, o un valor que no se puede decodificar, es 400 invalid_agent_attribution (nunca se trunca). Una clave de tipo agente, que no está ligada a una persona, recibe 400 invalid_agent_attribution si lo envía. El sello nunca cambia una respuesta de permisos. Ver Atribución de agente. |
Cuerpo de la solicitud
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| filename | string | Requerido | El nuevo nombre del archivo. |
| agent_name | string | Opcional | El nombre del agente que ejecutó esta escritura en nombre de la persona (máx. 128 caracteres, vacío significa sin agente). Tiene prioridad sobre el header X-Dailybot-Agent-Name. Ver Atribución de agente. |
Respuesta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| (body) | TaskAttachment | Requerido | Un objeto TaskAttachment. |
Errores
| Estado | Cuándo |
|---|---|
| 400 | Falta el nombre o no es válido. `invalid_agent_attribution` significa que el nombre del agente no es válido. |
| 401 | Credencial ausente, vencida o con formato inválido (`credential_absent`, `credential_expired`, `credential_malformed`). |
| 402 | Plan aún no está habilitado para tu organización (`plan_upgrade_required`). Es lo esperado durante la Beta: escribe a [email protected]. |
| 403 | Solo la persona autora de la actualización puede hacerlo (`update_not_author`). |
| 404 | El proyecto, la actualización o el adjunto no existe o no puedes verlo (`not_found`), nunca un 403. |
curl -sS -X PATCH "https://api.dailybot.com/v1/plan/projects/00000000-0000-4000-8000-000000000001/updates/00000000-0000-4000-8000-00000000000a/attachments/00000000-0000-4000-8000-000000000009/" \
-H "Authorization: Bearer $DAILYBOT_TOKEN" \
-H "Content-Type: application/json" \
-d '{"filename": "roadmap-v2.png"}'{
"uuid": "00000000-0000-4000-8000-000000000009",
"filename": "roadmap-v2.png",
"content_type": "image/png",
"size": 48213,
"url": "https://your.app/files/roadmap-v2.png",
"thumbnail_url": null,
"width": null,
"height": null,
"status": "ready",
"uploaded_by": {
"kind": "user",
"uuid": "00000000-0000-4000-8000-00000000000c",
"name": "Ada L."
},
"executed_by_agent": null,
"created_at": "2026-09-29T10:14:02Z"
}Probarlo
Este es un asistente de solo copia — la solicitud no se envía desde tu navegador. Pega el comando en tu terminal para ejecutarlo.
- Scope: `tasks:write`.
- Límite de solicitudes: 60 escrituras por minuto por actor.
- Funciona con una sesión iniciada, un token de usuario del CLI, una API key personal, o una key de agente o de la organización. Una key personal ve lo que ve su persona; una key de agente o de la organización actúa como actor del sistema y solo ve los tableros visibles para la organización.
/v1/plan/projects/{project_id}/updates/{update_id}/attachments/{attachment_id}/BetaAPI keyCLI AuthQuitar un adjunto de la actualización
Quita el adjunto. La persona autora de la actualización puede quitarlo, y también un administrador de la organización (403 update_not_author para cualquier otra persona).
Parámetros de ruta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| project_id | string | Requerido | El uuid del proyecto. |
| update_id | string | Requerido | El uuid de la actualización. |
| attachment_id | string | Requerido | El uuid del adjunto. |
Encabezados
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| X-Dailybot-Agent-Name | string | Opcional | El nombre del agente que ejecutó esta escritura en nombre de la persona. Úsalo en escrituras multipart y sin cuerpo (DELETE, archivar, restaurar); en escrituras JSON envía el campo agent_name del cuerpo, que gana si vienen los dos. Codifica el valor con percent-encoding (UTF-8). Los caracteres de control se eliminan; un valor vacío significa sin agente. Más de 128 caracteres, o un valor que no se puede decodificar, es 400 invalid_agent_attribution (nunca se trunca). Una clave de tipo agente, que no está ligada a una persona, recibe 400 invalid_agent_attribution si lo envía. El sello nunca cambia una respuesta de permisos. Ver Atribución de agente. |
Errores
| Estado | Cuándo |
|---|---|
| 400 | El nombre del agente no es válido (`invalid_agent_attribution`). |
| 401 | Credencial ausente, vencida o con formato inválido (`credential_absent`, `credential_expired`, `credential_malformed`). |
| 402 | Plan aún no está habilitado para tu organización (`plan_upgrade_required`). Es lo esperado durante la Beta: escribe a [email protected]. |
| 403 | Solo la persona autora de la actualización puede hacerlo (`update_not_author`). |
| 404 | El proyecto, la actualización o el adjunto no existe o no puedes verlo (`not_found`), nunca un 403. |
curl -sS -X DELETE "https://api.dailybot.com/v1/plan/projects/00000000-0000-4000-8000-000000000001/updates/00000000-0000-4000-8000-00000000000a/attachments/00000000-0000-4000-8000-000000000009/" \
-H "Authorization: Bearer $DAILYBOT_TOKEN"Probarlo
Este es un asistente de solo copia — la solicitud no se envía desde tu navegador. Pega el comando en tu terminal para ejecutarlo.
- Scope: `tasks:write`.
- Límite de solicitudes: 60 escrituras por minuto por actor.
- Funciona con una sesión iniciada, un token de usuario del CLI, una API key personal, o una key de agente o de la organización. Una key personal ve lo que ve su persona; una key de agente o de la organización actúa como actor del sistema y solo ve los tableros visibles para la organización.
/v1/plan/projects/{project_id}/updates/{update_id}/attachments/{attachment_id}/content/BetaAPI keyCLI AuthDescargar los bytes de un adjunto de la actualización
Transmite el archivo con el tipo de contenido registrado al subirlo, X-Content-Type-Options: nosniff y Cache-Control: no-store. Nunca redirige al almacenamiento. Cualquiera que pueda ver el proyecto puede descargarlo.
Parámetros de ruta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| project_id | string | Requerido | El uuid del proyecto. |
| update_id | string | Requerido | El uuid de la actualización. |
| attachment_id | string | Requerido | El uuid del adjunto. |
Errores
| Estado | Cuándo |
|---|---|
| 401 | Credencial ausente, vencida o con formato inválido (`credential_absent`, `credential_expired`, `credential_malformed`). |
| 402 | Plan aún no está habilitado para tu organización (`plan_upgrade_required`). Es lo esperado durante la Beta: escribe a [email protected]. |
| 404 | El proyecto, la actualización o el adjunto no existe o no puedes verlo (`not_found`), nunca un 403. |
| 409 | El adjunto aún no está listo (`attachment_not_ready`). |
curl -sS "https://api.dailybot.com/v1/plan/projects/00000000-0000-4000-8000-000000000001/updates/00000000-0000-4000-8000-00000000000a/attachments/00000000-0000-4000-8000-000000000009/content/" \
-H "Authorization: Bearer $DAILYBOT_TOKEN" -o roadmap.pngProbarlo
Este es un asistente de solo copia — la solicitud no se envía desde tu navegador. Pega el comando en tu terminal para ejecutarlo.
- Scope: `tasks:read`.
- Límite de solicitudes: 120 lecturas por minuto por actor.
- Funciona con una sesión iniciada, un token de usuario del CLI, una API key personal, o una key de agente o de la organización. Una key personal ve lo que ve su persona; una key de agente o de la organización actúa como actor del sistema y solo ve los tableros visibles para la organización.
Renombrar un adjunto del proyecto
Cambia el nombre visible del archivo; los bytes guardados no cambian. Las reglas son las del contenedor: solo administradores de la organización.
Parámetros de ruta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| project_id | string | Requerido | El uuid del proyecto. |
| attachment_id | uuid | Requerido | El uuid del adjunto. |
Encabezados
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| X-Dailybot-Agent-Name | string | Opcional | El nombre del agente que ejecutó esta escritura en nombre de la persona. Úsalo en escrituras multipart y sin cuerpo (DELETE, archivar, restaurar); en escrituras JSON envía el campo agent_name del cuerpo, que gana si vienen los dos. Codifica el valor con percent-encoding (UTF-8). Los caracteres de control se eliminan; un valor vacío significa sin agente. Más de 128 caracteres, o un valor que no se puede decodificar, es 400 invalid_agent_attribution (nunca se trunca). Una clave de tipo agente, que no está ligada a una persona, recibe 400 invalid_agent_attribution si lo envía. El sello nunca cambia una respuesta de permisos. Ver Atribución de agente. |
Cuerpo de la solicitud
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| filename | string | Requerido | El nuevo nombre del archivo (1–255 caracteres). Los bytes guardados no cambian. |
| agent_name | string | Opcional | El nombre del agente que ejecutó esta escritura en nombre de la persona (máx. 128 caracteres, vacío significa sin agente). Tiene prioridad sobre el header X-Dailybot-Agent-Name. Ver Atribución de agente. |
Respuesta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| (body) | TaskAttachment | Requerido | Un objeto TaskAttachment. |
Errores
| Estado | Cuándo |
|---|---|
| 400 | La validación falló; el `code` de la respuesta indica qué campo. `invalid_agent_attribution` significa que el nombre del agente no es válido. |
| 401 | Credencial ausente, vencida o con formato inválido (`credential_absent`, `credential_expired`, `credential_malformed`). |
| 402 | Plan aún no está habilitado para tu organización (`plan_upgrade_required`). Es lo esperado durante la Beta: escribe a [email protected]. |
| 403 | No eres administrador de la organización (`insufficient_scope`), o eres invitado (`guest_not_allowed`). Una key de agente o de la organización también se rechaza aquí. |
| 404 | El elemento padre o el adjunto no existe o no puedes verlo (`not_found`), nunca un 403. |
curl -sS -X PATCH "https://api.dailybot.com/v1/plan/projects/00000000-0000-4000-8000-000000000003/attachments/00000000-0000-4000-8000-000000000009/" \
-H "Authorization: Bearer $DAILYBOT_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"filename": "spec-v2.pdf"
}'dailybot plan project attachments rename 00000000-0000-4000-8000-000000000003 00000000-0000-4000-8000-000000000009 spec-v2.pdfProbarlo
Este es un asistente de solo copia — la solicitud no se envía desde tu navegador. Pega el comando en tu terminal para ejecutarlo.
- Scope: `tasks:admin` — escrituras de contenedores. Un miembro no invitado puede llamarlo con una sesión iniciada o una API key personal (una key con scopes de Plan explícitos necesita `tasks:write`, que lo cubre); una key de agente o de la organización recibe `403 insufficient_scope`.
- Límite de solicitudes: 60 escrituras por minuto por actor.
- Requiere una persona: llámalo con una sesión iniciada, un token de usuario del CLI o una API key personal. Una key de agente o de la organización recibe `403 insufficient_scope`.
/v1/plan/projects/{project_id}/updates/{update_id}/reactions/BetaAPI keyCLI AuthPaginación por número de páginaListar quién reaccionó a una actualización del proyecto
Todos los que reaccionaron a la actualización, del más antiguo al más reciente, como una página. emoji la reduce a un solo emoji. La misma forma que la lista de reacciones de un comentario.
Parámetros de ruta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| project_id | string | Requerido | El uuid del proyecto. |
| update_id | string | Requerido | El uuid de la actualización. |
Parámetros de consulta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| page | integer | Opcional | Número de página, empezando en 1. |
| page_size | integer | Opcional | Filas por página. 50 por defecto, máximo 100. Los valores fuera de rango se ajustan, nunca se rechazan: pedir 500 devuelve 100. |
| emoji | string | Opcional | Un emoji; todos los emojis si se omite. La misma regla que en las escrituras: cualquier otra cosa es 400 reaction_invalid_emoji. |
Objeto Reactor
Objeto ActorRef
Respuesta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| count | integer | Requerido | Número total de filas. |
| next | uri | Requerido | URL de la página siguiente, o null. |
| previous | uri | Requerido | URL de la página anterior, o null. |
| results | array<Reactor> | Requerido | La página de objetos Reactor. |
Errores
| Estado | Cuándo |
|---|---|
| 400 | `emoji` no es un solo emoji (`reaction_invalid_emoji`), o un valor de paginación no es válido. |
| 401 | Credencial ausente, vencida o con formato inválido (`credential_absent`, `credential_expired`, `credential_malformed`). |
| 402 | Plan aún no está habilitado para tu organización (`plan_upgrade_required`). Es lo esperado durante la Beta: escribe a [email protected]. |
| 404 | El proyecto o la actualización no existe o no puedes verlo (`not_found`), nunca un 403. |
curl -sS "https://api.dailybot.com/v1/plan/projects/00000000-0000-4000-8000-000000000003/updates/00000000-0000-4000-8000-000000000007/reactions/" \
-H "X-API-KEY: $DAILYBOT_API_KEY"dailybot plan project update reactions 00000000-0000-4000-8000-000000000003 00000000-0000-4000-8000-000000000007Probarlo
Este es un asistente de solo copia — la solicitud no se envía desde tu navegador. Pega el comando en tu terminal para ejecutarlo.
- Scope: `tasks:read`.
- Límite de solicitudes: 120 lecturas por minuto por actor.
- Funciona con una sesión iniciada, un token de usuario del CLI, una API key personal, o una key de agente o de la organización. Una key personal ve lo que ve su persona; una key de agente o de la organización actúa como actor del sistema y solo ve los tableros visibles para la organización.
Agregar una reacción con emoji a una actualización del proyecto (idempotente)
Agrega tu reacción emoji a la actualización; agregarla otra vez no cambia nada. Las mismas reglas que las reacciones a comentarios: un emoji, una reacción por persona por emoji, y una persona detrás de la credencial. Una persona tiene como máximo 20 emojis distintos en una actualización (400 reaction_limit_reached, extra.limit). La respuesta es la actualización completa con sus reacciones.
Parámetros de ruta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| project_id | string | Requerido | El uuid del proyecto. |
| update_id | string | Requerido | El uuid de la actualización. |
Encabezados
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| X-Dailybot-Agent-Name | string | Opcional | El nombre del agente que ejecutó esta escritura en nombre de la persona. Úsalo en escrituras multipart y sin cuerpo (DELETE, archivar, restaurar); en escrituras JSON envía el campo agent_name del cuerpo, que gana si vienen los dos. Codifica el valor con percent-encoding (UTF-8). Los caracteres de control se eliminan; un valor vacío significa sin agente. Más de 128 caracteres, o un valor que no se puede decodificar, es 400 invalid_agent_attribution (nunca se trunca). Una clave de tipo agente, que no está ligada a una persona, recibe 400 invalid_agent_attribution si lo envía. El sello nunca cambia una respuesta de permisos. Ver Atribución de agente. |
Cuerpo de la solicitud
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| emoji | string | Requerido | El emoji. Máx. 32 caracteres. |
| agent_name | string | Opcional | El nombre del agente que ejecutó esta escritura en nombre de la persona (máx. 128 caracteres, vacío significa sin agente). Tiene prioridad sobre el header X-Dailybot-Agent-Name. Ver Atribución de agente. |
Respuesta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| (body) | ProjectUpdate | Requerido | Un objeto ProjectUpdate. |
Errores
| Estado | Cuándo |
|---|---|
| 400 | No es un solo emoji (`reaction_invalid_emoji`), una key de agente o de la organización (`actor_required`), demasiados emojis distintos tuyos en esta actualización (`reaction_limit_reached`), o un nombre de agente no válido (`invalid_agent_attribution`). |
| 401 | Credencial ausente, vencida o con formato inválido (`credential_absent`, `credential_expired`, `credential_malformed`). |
| 402 | Plan aún no está habilitado para tu organización (`plan_upgrade_required`). Es lo esperado durante la Beta: escribe a [email protected]. |
| 404 | El proyecto o la actualización no existe o no puedes verlo (`not_found`), nunca un 403. |
curl -sS -X POST "https://api.dailybot.com/v1/plan/projects/00000000-0000-4000-8000-000000000003/updates/00000000-0000-4000-8000-000000000007/reactions/" \
-H "X-API-KEY: $DAILYBOT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"emoji": "👍"
}'dailybot plan project update react 00000000-0000-4000-8000-000000000003 00000000-0000-4000-8000-000000000007 👍Probarlo
Este es un asistente de solo copia — la solicitud no se envía desde tu navegador. Pega el comando en tu terminal para ejecutarlo.
- Scope: `tasks:write`.
- Límite de solicitudes: 60 escrituras por minuto por actor.
- Funciona con una sesión iniciada, un token de usuario del CLI, una API key personal, o una key de agente o de la organización. Una key personal ve lo que ve su persona; una key de agente o de la organización actúa como actor del sistema y solo ve los tableros visibles para la organización.
Quitar la reacción con emoji de quien llama de una actualización del proyecto
Quita tu reacción con este emoji de la actualización. Responde 204 incluso cuando la reacción ya no estaba.
Parámetros de ruta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| project_id | string | Requerido | El uuid del proyecto. |
| update_id | string | Requerido | El uuid de la actualización. |
| emoji | string | Requerido | El emoji, codificado con percent-encoding (UTF-8). |
Encabezados
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| X-Dailybot-Agent-Name | string | Opcional | El nombre del agente que ejecutó esta escritura en nombre de la persona. Úsalo en escrituras multipart y sin cuerpo (DELETE, archivar, restaurar); en escrituras JSON envía el campo agent_name del cuerpo, que gana si vienen los dos. Codifica el valor con percent-encoding (UTF-8). Los caracteres de control se eliminan; un valor vacío significa sin agente. Más de 128 caracteres, o un valor que no se puede decodificar, es 400 invalid_agent_attribution (nunca se trunca). Una clave de tipo agente, que no está ligada a una persona, recibe 400 invalid_agent_attribution si lo envía. El sello nunca cambia una respuesta de permisos. Ver Atribución de agente. |
Errores
| Estado | Cuándo |
|---|---|
| 400 | La validación falló; el `code` de la respuesta indica qué campo. `invalid_agent_attribution` significa que el nombre del agente no es válido. |
| 401 | Credencial ausente, vencida o con formato inválido (`credential_absent`, `credential_expired`, `credential_malformed`). |
| 402 | Plan aún no está habilitado para tu organización (`plan_upgrade_required`). Es lo esperado durante la Beta: escribe a [email protected]. |
| 404 | El proyecto o la actualización no existe o no puedes verlo (`not_found`), nunca un 403. |
curl -sS -X DELETE "https://api.dailybot.com/v1/plan/projects/00000000-0000-4000-8000-000000000003/updates/00000000-0000-4000-8000-000000000007/reactions/%F0%9F%91%8D/" \
-H "X-API-KEY: $DAILYBOT_API_KEY"dailybot plan project update unreact 00000000-0000-4000-8000-000000000003 00000000-0000-4000-8000-000000000007 👍Probarlo
Este es un asistente de solo copia — la solicitud no se envía desde tu navegador. Pega el comando en tu terminal para ejecutarlo.
- Scope: `tasks:write`.
- Límite de solicitudes: 60 escrituras por minuto por actor.
- Funciona con una sesión iniciada, un token de usuario del CLI, una API key personal, o una key de agente o de la organización. Una key personal ve lo que ve su persona; una key de agente o de la organización actúa como actor del sistema y solo ve los tableros visibles para la organización.
Esta página es la referencia de Plan · Proyectos. Todos los endpoints viven bajo https://api.dailybot.com/v1/plan/ y responden JSON.
Autentícate con una sesión iniciada o un token de usuario del CLI (Authorization: Bearer …), o con una API key (X-API-KEY). Una API key personal actúa como su persona y puede hacer todo lo que esa persona puede hacer en Dailybot; una key de agente o de la organización nunca actúa como una persona y se rechaza en los endpoints que la requieren. En un endpoint, la insignia API key significa que también se acepta una key de agente o de la organización. Consulta Autenticación para Plan, Autenticación y Errores para las reglas comunes a todas las APIs de Dailybot.
Si es tu primera vez con Plan, lee la introducción para entender el modelo: proyectos, tableros, estados, claves, orden, versiones y archivado.