Skip to content
ver .md sin procesar

Plan · Tableros

Tableros y sus estados de flujo, la instantánea del tablero en una sola llamada, el feed de cambios, miembros, etiquetas 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].

GET/v1/plan/boards/BetaAPI keyCLI AuthPaginación por número de página

Listar tableros

Los tableros que puedes ver, en una página. Filtra por project, busca con search, por fechas con start_date / end_date y trae los tableros archivados con include_archived. Una key de agente o de la organización solo ve los tableros visibles para la organización; una key personal ve lo que ve su persona.

Parámetros de consulta

Paginación

NombreTipoRequeridoDescripción
pageintegerOpcionalNúmero de página, empezando en 1.
page_sizeintegerOpcionalFilas por página. 50 por defecto, máximo 100. Los valores fuera de rango se ajustan, nunca se rechazan: pedir 500 devuelve 100.
limitintegerOpcionalAlias de page_size, traducido en el servidor.
offsetintegerOpcionalAlias traducido a page en el servidor.

Filtros

NombreTipoRequeridoDescripción
searchstringOpcionalCoincide 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.
projectarrayOpcionaluuids de proyectos. Repetible; los valores se combinan con OR.

Fechas

NombreTipoRequeridoDescripción
start_datestringOpcionalInicio de la ventana de fecha de creación. Es lo que produce --since del CLI.
end_datestringOpcionalFin de la ventana de fecha de creación. Es lo que produce --until del CLI.

Filas archivadas

NombreTipoRequeridoDescripción
is_archivedbooleanOpcionaltrue 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_archivedbooleanOpcionalIncluye 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 Board

NombreTipoRequeridoDescripción
uuiduuidRequeridoIdentificador público estable.
keystringRequeridoLa clave del tablero: el prefijo de las claves de sus tareas. Al renombrarla, la clave anterior queda reservada y sigue resolviéndose.
namestringRequeridoNombre visible. Máx. 120 caracteres.
projectProjectOpcionalEl proyecto. Ver Project.
teamuuid | nullOpcionalEl equipo.
visibilityenumRequeridoorg (todos en la organización) o members (solo miembros explícitos). Uno de org, members.
effective_visibilitystringOpcionalSi el tablero es efectivamente visible para toda la organización (org) o solo para los miembros (members). Un tablero dentro de un proyecto members es members aquí, mientras que visibility sigue siendo el ajuste almacenado del propio tablero.
estimate_scaleenumOpcionalCómo se expresan las estimaciones en este tablero. Uno de none, fibonacci, linear.
default_viewSavedView | nullOpcionalLa vista guardada predeterminada del tablero, o null. Ver SavedView.
archive_after_daysinteger | nullOpcionalArchivar automáticamente las tareas terminadas después de esta cantidad de días, o null para conservarlas.
task_countintegerOpcionalNúmero de tareas activas.
wip_limitsobjectOpcionalLímites de trabajo en curso por columna.
is_archivedbooleanOpcionalSi la fila está archivada. Archivar es la forma de eliminar: las filas archivadas siguen siendo legibles y se pueden restaurar.
created_atdate-timeOpcionalCuándo se creó la fila.
updated_atdate-timeOpcionalCuándo cambió la fila por última vez.
viewerobjectOpcionalLo que puedes hacer con esta fila. Forma: {is_member, can_see_content, can_manage: boolean} (all required).
statesarray<WorkflowState>OpcionalLos estados del tablero, en orden de columnas. Ver WorkflowState.

Objeto Project

NombreTipoRequeridoDescripción
uuiduuidRequeridoIdentificador público estable.
namestringRequeridoNombre visible. Máx. 120 caracteres.
slugstringOpcionalNombre apto para URL. Máx. 48 caracteres.
descriptionstring | nullOpcionalDescripción libre.
leadUserRef | nullOpcionalEl líder del proyecto. Ver UserRef.
goalsarrayOpcionalObjetivos a los que apunta este proyecto. Un proyecto puede servir a varios objetivos. Siempre presentes: uuid. Elementos: {uuid, name}.
goalobjectOpcionalEl objetivo, cuando hay exactamente uno. Forma: {uuid, name}|null.
board_countintegerOpcionalNúmero de tableros activos en el proyecto.
healthenumOpcionalSalud declarada. Uno de not_set, on_track, at_risk, off_track.
start_datedate | nullOpcionalFecha de inicio planificada.
target_datedate | nullOpcionalFecha de fin planificada.
progressProjectProgress | nullOpcionalResumen agregado del progreso sobre las tareas que puedes ver. Ver ProjectProgress.
is_archivedbooleanRequeridoSi la fila está archivada. Archivar es la forma de eliminar: las filas archivadas siguen siendo legibles y se pueden restaurar.
archived_atdate-time | nullOpcionalCuándo se archivó la fila.
created_atdate-timeOpcionalCuándo se creó la fila.
updated_atdate-timeOpcionalCuándo cambió la fila por última vez.
viewerobjectOpcionalLo que puedes hacer con esta fila. Forma: {can_see_content: boolean, can_manage: boolean} (both required).

Objeto SavedView

NombreTipoRequeridoDescripción
namestringRequeridoNombre visible. Máx. 64 caracteres.
view_modeenumOpcionalCómo se dibuja el conjunto filtrado. Las lecturas siempre devuelven board para el diseño kanban. Uno de list, board, timeline, calendar.
group_byenumOpcionalLa dimensión de agrupación. Uno de state, owner, priority, category.
sortstringOpcionalUna clave de orden, con prefijo - para orden descendente.
filtersobjectRequeridoLos filtros de la vista, con la gramática compartida de filtros de tareas.
schema_versionintegerOpcionalVersión del formato guardado de la vista.
visibilityenumOpcionalpersonal (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.
collapsedobject | array | string | number | booleanOpcionalEstado de la interfaz del cliente guardado tal cual (qué grupos están colapsados). Solo se validan el tamaño y la profundidad.
columnsobject | array | string | number | booleanOpcionalEstado de la interfaz del cliente guardado tal cual (qué columnas se muestran). Solo se validan el tamaño y la profundidad.
uuiduuidOpcionalIdentificador público estable.
scopeenumOpcionalA qué contenedor pertenece la vista: board o project. Solo lectura. Uno de board, project.
boarduuid | nullOpcionalEl uuid del tablero cuando scope es board; null para una vista de proyecto. Solo lectura.
ownerobjectOpcionalQuién es dueño de la vista. Forma: {uuid, name}.
created_atdate-timeOpcionalCuándo se creó la fila.
updated_atdate-timeOpcionalCuándo cambió la fila por última vez.

Objeto WorkflowState

NombreTipoRequeridoDescripción
uuiduuidRequeridoIdentificador público estable.
namestringRequeridoNombre visible. Máx. 48 caracteres.
categoryenumRequeridoUna de las cinco categorías fijas. Nunca cambia después de crearse. Uno de backlog, todo, in_progress, done, canceled.
positionintegerRequeridoPosición de la columna, de izquierda a derecha. Mínimo 0.
colorstringOpcionalColor de visualización (hex).
is_defaultbooleanOpcionalSi las tareas nuevas llegan a este estado de forma predeterminada.
is_archivedbooleanOpcionalSi la fila está archivada. Archivar es la forma de eliminar: las filas archivadas siguen siendo legibles y se pueden restaurar.
task_countintegerOpcionalNúmero de tareas activas.

Objeto UserRef

NombreTipoRequeridoDescripción
uuiduuidRequeridoIdentificador público estable.
namestringOpcionalNombre visible.
avatar_urlstring | nullOpcional—
has_photobooleanOpcional—

Objeto ProjectProgress

NombreTipoRequeridoDescripción
totalintegerRequeridoTodas las tareas contadas.
completedintegerRequeridoTareas en un estado done o canceled.
openintegerOpcionalTareas en un estado backlog, todo o in_progress.
blockedintegerOpcionalTareas con un bloqueo activo.
overdueintegerOpcionalTareas abiertas con la fecha de vencimiento ya pasada.
percent_completeintegerRequeridocompleted como porcentaje de total.

Respuesta

NombreTipoRequeridoDescripción
countintegerRequeridoNúmero total de filas.
nexturiRequeridoURL de la página siguiente, o null.
previousuriRequeridoURL de la página anterior, o null.
resultsarray<Board>RequeridoLas filas de esta página. Ver Board.

Errores

EstadoCuándo
401Credencial ausente, vencida o con formato inválido (`credential_absent`, `credential_expired`, `credential_malformed`).
402Plan 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/boards/" \
  -H "X-API-KEY: $DAILYBOT_API_KEY"

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.
POST/v1/plan/boards/BetaCLI Auth

Crear un tablero con sus cinco estados predeterminados

Crea un tablero dentro de un proyecto y siembra sus cinco estados del flujo de trabajo por defecto. La key del tablero es el prefijo de cada clave de tarea (ENG-142) y debe ser única (409 duplicate_board_key). Todo miembro no invitado puede crearlo (con una sesión iniciada o una API key personal); una key de agente o de la organización no puede. El límite de tableros del plan responde 402 task_boards_limit_reached.

Encabezados

NombreTipoRequeridoDescripción
Idempotency-KeystringOpcionalUna 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-NamestringOpcionalEl 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

NombreTipoRequeridoDescripción
namestringRequeridoNombre visible. Máx. 120 caracteres.
keystringRequeridoLa clave del tablero, el prefijo de las claves de sus tareas (por ejemplo ENG).
projectuuidRequeridoEl proyecto.
teamuuid | nullOpcionalEl equipo.
visibilityenumOpcionalorg (todos en la organización) o members (solo miembros explícitos). Uno de org, members.
estimate_scaleenumOpcionalCómo se expresan las estimaciones en este tablero. Uno de none, fibonacci, linear.
archive_after_daysinteger | nullOpcionalArchivar automáticamente las tareas terminadas después de esta cantidad de días, o null para conservarlas. Mínimo 1.
default_viewSavedView | nullOpcionalLa vista guardada predeterminada del tablero, o null. Ver SavedView.
agent_namestringOpcionalEl 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

NombreTipoRequeridoDescripción
(body)BoardRequeridoUn objeto Board.

Errores

EstadoCuándo
400La 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.
401Credencial ausente, vencida o con formato inválido (`credential_absent`, `credential_expired`, `credential_malformed`).
402Plan aún no está habilitado para tu organización (`plan_upgrade_required`), o se alcanzó el tope de tableros del plan (`task_boards_limit_reached`).
409Otro tablero ya usa esta clave (`duplicate_board_key`).
curl -sS -X POST "https://api.dailybot.com/v1/plan/boards/" \
  -H "Authorization: Bearer $DAILYBOT_TOKEN" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Engineering",
    "key": "ENG",
    "project": "00000000-0000-4000-8000-000000000001",
    "visibility": "org",
    "estimate_scale": "fibonacci"
  }'

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`.
GET/v1/plan/boards/{board_id}/BetaAPI keyCLI Auth

Obtener un tablero

Un tablero por su uuid. Un tablero que no puedes ver responde 404, igual que uno que no existe.

Parámetros de ruta

NombreTipoRequeridoDescripción
board_idstringRequeridoEl uuid del tablero.

Respuesta

NombreTipoRequeridoDescripción
(body)BoardRequeridoUn objeto Board.

Errores

EstadoCuándo
401Credencial ausente, vencida o con formato inválido (`credential_absent`, `credential_expired`, `credential_malformed`).
402Plan aún no está habilitado para tu organización (`plan_upgrade_required`). Es lo esperado durante la Beta: escribe a [email protected].
404No existe o no es visible para ti. Ambos casos devuelven el mismo cuerpo.
curl -sS "https://api.dailybot.com/v1/plan/boards/00000000-0000-4000-8000-000000000002/" \
  -H "X-API-KEY: $DAILYBOT_API_KEY"

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.
PATCH/v1/plan/boards/{board_id}/BetaCLI Auth

Actualizar un tablero, incluido el cambio de nombre de su clave

Renombrar key retira la clave anterior y la mantiene reservada, así que ENG-142 escrito años después sigue resolviéndose. Cambiar visibility a members te agrega como miembro, porque un tablero solo para miembros sin miembros no sería visible para nadie.

Parámetros de ruta

NombreTipoRequeridoDescripción
board_idstringRequeridoEl uuid del tablero.

Encabezados

NombreTipoRequeridoDescripción
Idempotency-KeystringOpcionalUna 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-NamestringOpcionalEl 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

NombreTipoRequeridoDescripción
namestringOpcionalNombre visible. Máx. 120 caracteres.
keystringOpcionalLa clave del tablero, el prefijo de las claves de sus tareas (por ejemplo ENG).
projectuuidOpcionalEl proyecto.
teamuuid | nullOpcionalEl equipo.
visibilityenumOpcionalorg (todos en la organización) o members (solo miembros explícitos). Uno de org, members.
estimate_scaleenumOpcionalCómo se expresan las estimaciones en este tablero. Uno de none, fibonacci, linear.
archive_after_daysinteger | nullOpcionalArchivar automáticamente las tareas terminadas después de esta cantidad de días, o null para conservarlas. Mínimo 1.
default_viewSavedView | nullOpcionalLa vista guardada predeterminada del tablero, o null. Ver SavedView.
agent_namestringOpcionalEl 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

NombreTipoRequeridoDescripción
(body)BoardRequeridoUn objeto Board.

Errores

EstadoCuándo
400La 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.
401Credencial ausente, vencida o con formato inválido (`credential_absent`, `credential_expired`, `credential_malformed`).
402Plan aún no está habilitado para tu organización (`plan_upgrade_required`). Es lo esperado durante la Beta: escribe a [email protected].
404No existe o no es visible para ti. Ambos casos devuelven el mismo cuerpo.
409Otro tablero ya usa esta clave (`duplicate_board_key`).
curl -sS -X PATCH "https://api.dailybot.com/v1/plan/boards/00000000-0000-4000-8000-000000000002/" \
  -H "Authorization: Bearer $DAILYBOT_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "key": "PLAT"
  }'

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`.
POST/v1/plan/boards/{board_id}/archive/BetaCLI Auth

Archivar un tablero, en cascada a sus tareas

Archiva el tablero y, con él, sus tareas. La clave del tablero queda reservada, así que nunca se reutiliza. Envía ?dry_run=true antes para ver la consecuencia sin archivar; restaura el tablero con el endpoint de restaurar.

Parámetros de ruta

NombreTipoRequeridoDescripción
board_idstringRequeridoEl uuid del tablero.

Parámetros de consulta

NombreTipoRequeridoDescripción
dry_runbooleanOpcionalPrevisualiza 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

NombreTipoRequeridoDescripción
Idempotency-KeystringOpcionalUna 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-NamestringOpcionalEl 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.

NombreTipoRequeridoDescripción
operationstringRequeridoLa operación que se ejecutaría.
dry_runbooleanRequeridoSiempre true.
reversiblebooleanRequeridoSi la operación se puede deshacer.
restore_pathstring | nullRequeridoLa ruta que la desharía, o null cuando no hay ninguna.
consequencestringRequeridoUna frase para mostrarle a una persona antes de actuar. Describe el efecto en cascada en lugar de resumirlo.
affectsobjectRequeridoLo que tocaría la operación, como conteos (enteros) por tipo.
would_refusebooleanOpcionalSolo al archivar un estado del flujo de trabajo: true cuando la llamada real se rechazaría.
refusal_codestringOpcionalSolo al archivar un estado del flujo de trabajo: el código de error con el que respondería la llamada real.

Respuesta

NombreTipoRequeridoDescripción
(body)Board | DryRunPreviewRequeridoUn objeto Board. Con ?dry_run=true, un objeto DryRunPreview en su lugar.

Errores

EstadoCuándo
400El nombre del agente no es válido (`invalid_agent_attribution`).
401Credencial ausente, vencida o con formato inválido (`credential_absent`, `credential_expired`, `credential_malformed`).
402Plan aún no está habilitado para tu organización (`plan_upgrade_required`). Es lo esperado durante la Beta: escribe a [email protected].
403Autenticado 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`).
404No existe o no es visible para ti. Ambos casos devuelven el mismo cuerpo.
curl -sS -X POST "https://api.dailybot.com/v1/plan/boards/00000000-0000-4000-8000-000000000002/archive/" \
  -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`.
POST/v1/plan/boards/{board_id}/restore/BetaCLI Auth

Restaurar un tablero archivado

Lo inverso de archivar. La clave del tablero nunca se retiró: sigue reservada al archivar y restaurar. Las tareas archivadas en cascada siguen archivadas; restáuralas con POST …/tasks/{task_id}/restore/. Restaurar consume un cupo de creación de tableros (archivar libera uno).

Parámetros de ruta

NombreTipoRequeridoDescripción
board_idstringRequeridoEl uuid del tablero.

Encabezados

NombreTipoRequeridoDescripción
Idempotency-KeystringOpcionalUna 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-NamestringOpcionalEl 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

NombreTipoRequeridoDescripción
(body)BoardRequeridoUn objeto Board.

Errores

EstadoCuándo
400El nombre del agente no es válido (`invalid_agent_attribution`).
401Credencial ausente, vencida o con formato inválido (`credential_absent`, `credential_expired`, `credential_malformed`).
402Plan todavía no está habilitado para tu organización (`plan_upgrade_required`), o no hay ningún cupo de tablero libre (`task_boards_limit_reached`).
403Autenticado 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`).
404No existe o no es visible para ti. Ambos casos devuelven el mismo cuerpo.
curl -sS -X POST "https://api.dailybot.com/v1/plan/boards/00000000-0000-4000-8000-000000000002/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: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`.
POST/v1/plan/boards/{board_id}/visit/BetaCLI Auth

Registrar que quien llama abrió un tablero (recent_boards de HomePulse)

Crea o actualiza la marca de tiempo de la última visita de quien llama a este tablero. Los POST repetidos actualizan visited_at y nunca crean filas duplicadas. Requiere una persona: una sesión iniciada o una API key personal (las keys de agente y de la organización se rechazan). La autorización coincide con el acceso de lectura al tablero: los tableros inexistentes y los de otra organización comparten el mismo 404.

Parámetros de ruta

NombreTipoRequeridoDescripción
board_idstringRequeridoEl uuid del tablero.

Encabezados

NombreTipoRequeridoDescripción
X-Dailybot-Agent-NamestringOpcionalEl 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 BoardVisit

NombreTipoRequeridoDescripción
boarduuidRequeridoEl tablero.
visited_atdate-timeRequeridoCuándo abriste el tablero por última vez.

Respuesta

NombreTipoRequeridoDescripción
(body)BoardVisitRequeridoUn objeto BoardVisit.

Errores

EstadoCuándo
400La 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.
401Credencial ausente, vencida o con formato inválido (`credential_absent`, `credential_expired`, `credential_malformed`).
402Plan aún no está habilitado para tu organización (`plan_upgrade_required`). Es lo esperado durante la Beta: escribe a [email protected].
403Autenticado 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`).
404No existe o no es visible para ti. Ambos casos devuelven el mismo cuerpo.
curl -sS -X POST "https://api.dailybot.com/v1/plan/boards/00000000-0000-4000-8000-000000000002/visit/" \
  -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.
  • 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`.
GET/v1/plan/boards/{board_id}/states/BetaAPI keyCLI Auth

Listar los estados de un tablero, en orden de columna

Los estados del flujo de trabajo del tablero (sus columnas), ordenados por posición. Cada uno tiene una category (como in_progress) que se mantiene aunque se renombre el estado. Agrega include_archived=true para ver los estados archivados.

Parámetros de ruta

NombreTipoRequeridoDescripción
board_idstringRequeridoEl uuid del tablero.

Parámetros de consulta

NombreTipoRequeridoDescripción
include_archivedbooleanOpcionalIncluye 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.

Respuesta

NombreTipoRequeridoDescripción
(body)array<WorkflowState>RequeridoUn arreglo JSON de objetos WorkflowState.

Errores

EstadoCuándo
401Credencial ausente, vencida o con formato inválido (`credential_absent`, `credential_expired`, `credential_malformed`).
402Plan aún no está habilitado para tu organización (`plan_upgrade_required`). Es lo esperado durante la Beta: escribe a [email protected].
404No existe o no es visible para ti. Ambos casos devuelven el mismo cuerpo.
curl -sS "https://api.dailybot.com/v1/plan/boards/00000000-0000-4000-8000-000000000002/states/" \
  -H "X-API-KEY: $DAILYBOT_API_KEY"

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.
POST/v1/plan/boards/{board_id}/states/BetaCLI Auth

Agregar un estado a un tablero

category es uno de cinco valores fijos y nunca cambia después de crearse; name es libre y se puede renombrar. La categoría es lo que responde "¿esto está terminado?".

position inserta en ese lugar, contando desde 1 entre las columnas activas: la columna que ocupaba esa posición y todas las siguientes se desplazan a la derecha. Una posición más allá del final queda al final.

Parámetros de ruta

NombreTipoRequeridoDescripción
board_idstringRequeridoEl uuid del tablero.

Encabezados

NombreTipoRequeridoDescripción
Idempotency-KeystringOpcionalUna 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-NamestringOpcionalEl 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

NombreTipoRequeridoDescripción
namestringRequeridoNombre visible. Máx. 48 caracteres.
categoryenumRequeridoUna de las cinco categorías fijas. Nunca cambia después de crearse. Uno de backlog, todo, in_progress, done, canceled.
positionintegerOpcionalPosición de la columna entre las columnas activas, desde 1, de izquierda a derecha. 0 y 1 significan la primera columna, y un valor más allá del final queda al final. Omítelo para agregar el nuevo estado al final. Mínimo 0.
colorstringOpcionalColor de visualización (hex).
is_defaultbooleanOpcionalSi las tareas nuevas llegan a este estado de forma predeterminada.
agent_namestringOpcionalEl 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

NombreTipoRequeridoDescripción
(body)WorkflowStateRequeridoUn objeto WorkflowState.

Errores

EstadoCuándo
400La 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.
401Credencial ausente, vencida o con formato inválido (`credential_absent`, `credential_expired`, `credential_malformed`).
402Plan aún no está habilitado para tu organización (`plan_upgrade_required`). Es lo esperado durante la Beta: escribe a [email protected].
404No existe o no es visible para ti. Ambos casos devuelven el mismo cuerpo.
409Conflicto. El `code` de la respuesta indica cuál (por ejemplo, `version_conflict`).
curl -sS -X POST "https://api.dailybot.com/v1/plan/boards/00000000-0000-4000-8000-000000000002/states/" \
  -H "Authorization: Bearer $DAILYBOT_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "In review",
    "category": "in_progress",
    "position": 3
  }'

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`.
PATCH/v1/plan/boards/{board_id}/states/{state_id}/BetaCLI Auth

Renombrar, cambiar el color o reordenar un estado

Solo se permiten los campos name, color y position. Los campos desconocidos se rechazan con 400 (nunca se ignoran en silencio). category no puede cambiar después de crearse.

Parámetros de ruta

NombreTipoRequeridoDescripción
board_idstringRequeridoEl uuid del tablero.
state_idstringRequeridoEl uuid del estado.

Encabezados

NombreTipoRequeridoDescripción
X-Dailybot-Agent-NamestringOpcionalEl 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

NombreTipoRequeridoDescripción
namestringOpcionalNombre visible. Máx. 48 caracteres.
positionintegerOpcionalPosición de la columna entre las columnas activas, desde 1, de izquierda a derecha. 0 y 1 significan la primera columna, y un valor más allá del final queda al final. Mínimo 0.
colorstringOpcionalColor de visualización (hex).
agent_namestringOpcionalEl 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

NombreTipoRequeridoDescripción
(body)WorkflowStateRequeridoUn objeto WorkflowState.

Errores

EstadoCuándo
400La 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.
401Credencial ausente, vencida o con formato inválido (`credential_absent`, `credential_expired`, `credential_malformed`).
402Plan aún no está habilitado para tu organización (`plan_upgrade_required`). Es lo esperado durante la Beta: escribe a [email protected].
404No existe o no es visible para ti. Ambos casos devuelven el mismo cuerpo.
curl -sS -X PATCH "https://api.dailybot.com/v1/plan/boards/00000000-0000-4000-8000-000000000002/states/00000000-0000-4000-8000-000000000003/" \
  -H "Authorization: Bearer $DAILYBOT_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Code review"
  }'

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`.
POST/v1/plan/boards/{board_id}/states/{state_id}/archive/BetaCLI Auth

Retirar una columna

Se rechaza con 409 state_in_use mientras haya tareas activas en la columna, a menos que el cuerpo indique migrate_to: otro estado activo del mismo tablero que recibe todas las tarjetas en una actualización masiva antes de archivar la columna.

Parámetros de ruta

NombreTipoRequeridoDescripción
board_idstringRequeridoEl uuid del tablero.
state_idstringRequeridoEl uuid del estado.

Parámetros de consulta

NombreTipoRequeridoDescripción
dry_runbooleanOpcionalPrevisualiza 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

NombreTipoRequeridoDescripción
X-Dailybot-Agent-NamestringOpcionalEl 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

NombreTipoRequeridoDescripción
migrate_touuidOpcionalOtro estado activo del mismo tablero que recibe todas las tareas de la columna antes de archivarla.
agent_namestringOpcionalEl 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

NombreTipoRequeridoDescripción
(body)WorkflowState | DryRunPreviewRequeridoUn objeto WorkflowState. Con ?dry_run=true, un objeto DryRunPreview en su lugar.

Errores

EstadoCuándo
400El nombre del agente no es válido (`invalid_agent_attribution`).
401Credencial ausente, vencida o con formato inválido (`credential_absent`, `credential_expired`, `credential_malformed`).
402Plan aún no está habilitado para tu organización (`plan_upgrade_required`). Es lo esperado durante la Beta: escribe a [email protected].
404No existe o no es visible para ti. Ambos casos devuelven el mismo cuerpo.
409Todavía hay tareas activas en la columna (`state_in_use`). Envía `migrate_to` para moverlas primero.
curl -sS -X POST "https://api.dailybot.com/v1/plan/boards/00000000-0000-4000-8000-000000000002/states/00000000-0000-4000-8000-000000000003/archive/" \
  -H "Authorization: Bearer $DAILYBOT_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "migrate_to": "00000000-0000-4000-8000-000000000004"
  }'

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`.
POST/v1/plan/boards/{board_id}/states/{state_id}/restore/BetaCLI Auth

Restaurar una columna retirada

Lo inverso de archivar. La columna vuelve después de las columnas activas, y un segundo POST sobre una columna activa es un 200 sin efecto. Léela con GET …/states/?include_archived=true mientras siga retirada.

Parámetros de ruta

NombreTipoRequeridoDescripción
board_idstringRequeridoEl uuid del tablero.
state_idstringRequeridoEl uuid del estado.

Encabezados

NombreTipoRequeridoDescripción
X-Dailybot-Agent-NamestringOpcionalEl 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

NombreTipoRequeridoDescripción
(body)WorkflowStateRequeridoUn objeto WorkflowState.

Errores

EstadoCuándo
400El nombre del agente no es válido (`invalid_agent_attribution`).
401Credencial ausente, vencida o con formato inválido (`credential_absent`, `credential_expired`, `credential_malformed`).
402Plan aún no está habilitado para tu organización (`plan_upgrade_required`). Es lo esperado durante la Beta: escribe a [email protected].
403Autenticado 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`).
404No existe o no es visible para ti. Ambos casos devuelven el mismo cuerpo.
curl -sS -X POST "https://api.dailybot.com/v1/plan/boards/00000000-0000-4000-8000-000000000002/states/00000000-0000-4000-8000-000000000003/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: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`.
POST/v1/plan/boards/{board_id}/states/reorder/BetaCLI Auth

Reordenar todas las columnas activas de un tablero en una sola llamada

El cuerpo { "order": [state_uuid, …] } debe incluir cada columna activa del tablero exactamente una vez, en el orden deseado de izquierda a derecha. Las listas parciales, los uuids desconocidos y los duplicados devuelven 400 states_reorder_invalid. Emite state.reordered por cada columna. Para definir una vista por defecto a nivel de tablero (o quitarla), usa PATCH /boards/{board_id}/ con default_view; no existe un endpoint aparte para marcarla por defecto.

Parámetros de ruta

NombreTipoRequeridoDescripción
board_idstringRequeridoEl uuid del tablero.

Encabezados

NombreTipoRequeridoDescripción
X-Dailybot-Agent-NamestringOpcionalEl 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

NombreTipoRequeridoDescripción
orderarrayRequeridoEl uuid de cada columna activa exactamente una vez, de izquierda a derecha. Elementos: uuid.
agent_namestringOpcionalEl 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

NombreTipoRequeridoDescripción
(body)array<WorkflowState>RequeridoUn arreglo JSON de objetos WorkflowState.

Errores

EstadoCuándo
400La 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.
401Credencial ausente, vencida o con formato inválido (`credential_absent`, `credential_expired`, `credential_malformed`).
402Plan aún no está habilitado para tu organización (`plan_upgrade_required`). Es lo esperado durante la Beta: escribe a [email protected].
404No existe o no es visible para ti. Ambos casos devuelven el mismo cuerpo.
curl -sS -X POST "https://api.dailybot.com/v1/plan/boards/00000000-0000-4000-8000-000000000002/states/reorder/" \
  -H "Authorization: Bearer $DAILYBOT_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "order": [
      "00000000-0000-4000-8000-000000000003",
      "00000000-0000-4000-8000-000000000004"
    ]
  }'

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`.
GET/v1/plan/boards/{board_id}/board/BetaAPI keyCLI Auth

El tablero completo, con sus estados y sus tareas, en un solo viaje de ida y vuelta

Una llamada renderiza un tablero: una entrada en groups por columna, en orden de columnas, cada una con sus primeras tareas en orden de rank, el task_count real de la columna y has_more. Pagina el resto de una columna con GET /v1/plan/tasks/?board=…&state=….

Guarda delta_cursor y cambia al feed de cambios para cada lectura posterior. Responde If-None-Match con 304. …/snapshot/ es un alias con la misma respuesta. Los parámetros de consulta desconocidos y los valores de filtro no válidos devuelven 400 invalid_filter_value.

Parámetros de ruta

NombreTipoRequeridoDescripción
board_idstringRequeridoEl uuid del tablero.

Parámetros de consulta

Filtros

NombreTipoRequeridoDescripción
group_bystringOpcionalAgrupa la instantánea por otra dimensión en lugar del estado. La agrupación existe solo en la instantánea: agrupar una lista paginada bifurcaría su envoltura.
tasks_per_stateintegerOpcionalCuántas tareas incluir por columna. Máximo 50, más ajustado que el habitual de 100 porque esta lectura incluye las etiquetas de cada tarjeta.
ownerarrayOpcionalUn uuid de usuario, me o unowned. Repetible; los valores se combinan con OR, incluidos los tokens: owner=me&owner=unowned devuelve tus tareas y las que no tienen responsable. me con una key de agente o de la organización es 400 actor_required.
labelarrayOpcionaluuids de etiquetas: solo v4, como máximo 50, igual que el límite existente del filtro de etiquetas compartido. Un valor que no es v4 es 400 invalid_label_filter.
priorityarrayOpcional1=urgente, 2=alta, 3=media, 4=baja, 5=ninguna. Repetible.
blockedbooleanOpcionalDerivado de las relaciones, no de un estado. Es la consulta que el producto responde con un vínculo en lugar de un estado. blocked=true significa un bloqueador activo: una relación blocks cuya tarea de origen no está archivada ni en una categoría terminal. Un bloqueador que a su vez está done o canceled no bloquea nada y no coincide. Independiente del ciclo de vida. Una tarea terminada puede seguir teniendo un bloqueador activo, así que blocked=true por sí solo también devuelve filas terminales. El trabajo sobre el que una persona puede actuar es blocked=true&state=open: esa combinación es la que reproduce el mosaico blocked de GET /v1/plan/pulse/.
searchstringOpcionalCoincide 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.

Fechas

NombreTipoRequeridoDescripción
due_beforestringOpcionalInclusivo. Por sí solo, significa vencido o con vencimiento hasta esa fecha; no excluye el trabajo que ya está terminado. Vencido se escribe due_before=<today>&state=open. Esa combinación es la forma admitida, es la que reproduce el mosaico overdue de GET /v1/plan/pulse/, y deliberadamente no existe el atajo state=overdue: state es una dimensión del ciclo de vida y vencido es una dimensión de fecha, así que una única forma evita que ambas se desalineen. state=overdue responde 400 invalid_filter_value, lo que dice algo sobre esa forma de escribirlo y no sobre la capacidad.
due_afterstringOpcionalInclusivo.

Encabezados

NombreTipoRequeridoDescripción
If-None-MatchstringOpcionalEl ETag de tu lectura anterior. Si coincide, responde 304.

Objeto BoardSnapshot

NombreTipoRequeridoDescripción
boardBoardRequeridoEl tablero. Ver Board.
generated_atdate-timeRequeridoCuándo se calculó la respuesta.
delta_cursordate-timeRequeridoPásalo como updated_since al feed de cambios.
group_bystringOpcionalLa dimensión de agrupación.
groupsarrayRequeridoUna entrada por columna (o grupo), en orden. Siempre presentes: key, task_count, has_more, tasks. Elementos: {key: string, name: string, category: string|null, position: integer|null, color: string|null, task_count: integer, has_more: boolean, tasks: array}.
viewerobjectOpcionalLo que puedes hacer con esta fila. Forma: {is_member, can_see_content, can_manage} (all required).

Respuesta

NombreTipoRequeridoDescripción
(body)BoardSnapshotRequeridoUn objeto BoardSnapshot.

Errores

EstadoCuándo
304Sin cambios: el ETag que enviaste en `If-None-Match` sigue coincidiendo.
401Credencial ausente, vencida o con formato inválido (`credential_absent`, `credential_expired`, `credential_malformed`).
402Plan aún no está habilitado para tu organización (`plan_upgrade_required`). Es lo esperado durante la Beta: escribe a [email protected].
404No existe o no es visible para ti. Ambos casos devuelven el mismo cuerpo.
curl -sS "https://api.dailybot.com/v1/plan/boards/00000000-0000-4000-8000-000000000002/board/?tasks_per_state=25" \
  -H "X-API-KEY: $DAILYBOT_API_KEY"

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.
GET/v1/plan/boards/{board_id}/delta/BetaAPI keyCLI Auth

Qué cambió en este tablero desde una marca de tiempo. NO es paginación

Un feed de cambios, no una página: sin count, next ni previous. Envía el cursor de tu respuesta anterior (o el delta_cursor de la instantánea) tal cual como updated_since; nunca lo calcules con tu propio reloj.

La entrega es al menos una vez, así que una fila escrita en el mismo instante que tu cursor se envía de nuevo en lugar de perderse. Las entradas se compactan a una por tarea (gana la fila actual). states es null a menos que se haya creado, renombrado, reordenado o archivado una columna; cuando viene definido, reemplaza toda tu lista de columnas.

Consulta de nuevo después de poll_after_seconds (15 s, duplicándose hasta 120 s mientras el tablero está inactivo, y se reinicia con cualquier cambio). Pausa mientras la página está oculta y actualiza cuando vuelve a ser visible. Si truncated es true, consulta de nuevo de inmediato. Los cursores de más de 7 días devuelven 400 delta_window_expired: vuelve a leer la instantánea. El polling es el transporte de v1.

Parámetros de ruta

NombreTipoRequeridoDescripción
board_idstringRequeridoEl uuid del tablero.

Parámetros de consulta

NombreTipoRequeridoDescripción
updated_sincestringRequeridoEl cursor de tu consulta de cambios anterior, o el delta_cursor de una instantánea del tablero. Si tiene más de 7 días se rechaza con delta_window_expired. since se acepta como alias obsoleto para clientes antiguos; envía updated_since.
limitintegerOpcionalMáximo de entradas en changed.

Objeto BoardDelta

NombreTipoRequeridoDescripción
sincedate-timeRequeridoEl updated_since que enviaste.
cursordate-timeRequeridoEnvíalo como updated_since en tu próxima consulta.
changedarray<Task>RequeridoTareas que cambiaron, una entrada por tarea. Ver Task.
removedarrayRequeridoTareas que salieron del tablero, con un reason como archived. Elementos: {uuid, key, reason}.
statesarray | nullOpcionalLos estados del tablero, en orden de columnas.
truncatedbooleanRequeridotrue cuando hay más cambios esperando: consulta de nuevo de inmediato.
poll_after_secondsintegerRequeridoCuándo consultar de nuevo, sugerido por el servidor (15 a 120 segundos). Es una sugerencia, no se impone. De 15 a 120.

Objeto Task

NombreTipoRequeridoDescripción
uuiduuidRequeridoIdentificador público estable.
keystringRequeridoClave legible KEY-n, por ejemplo ENG-142. Las claves retiradas siguen resolviéndose.
titlestringRequeridoEl título de la tarea. Máx. 255 caracteres.
descriptionstring | nullOpcionalDescripción libre.
boarduuidOpcionalEl tablero.
stateWorkflowStateRequeridoEl estado de la tarea (su columna). Ver WorkflowState.
priorityintegerOpcional1 urgente, 2 alta, 3 media, 4 baja, 5 ninguna. De 1 a 5.
estimateinteger | nullOpcionalEstimación en la escala del tablero.
ownerUserRef | nullOpcionalLa persona responsable de la tarea. Ver UserRef.
executorActorRef | nullOpcionalEl actor que hace el trabajo, cuando es distinto del responsable (por ejemplo, un agente). Ver ActorRef.
executorsobject[]OpcionalCada agente que ejecutó una escritura en esta tarea en nombre de alguien, del más reciente al más antiguo: {uuid, name, username, avatar, first_at, last_at}. Es distinto de executor, que sigue siendo quien tiene la pelota ahora. Solo en el detalle de la tarea y en las respuestas de escritura de una sola tarea; no viene en las filas de listas.
participant_countintegerOpcionalNúmero de participantes.
start_datedate | nullOpcionalFecha de inicio planificada.
due_datedate | nullOpcionalFecha de vencimiento.
milestonenull | {uuid, name, date}OpcionalEl hito al que cuenta esta tarea. Todos los campos están siempre presentes.
parent_tasknull | {uuid, key, title}OpcionalLa tarea padre, para una subtarea. Solo un nivel de anidación. Todos los campos están siempre presentes.
subtask_countintegerOpcionalNúmero de subtareas.
subtask_done_countintegerOpcionalNúmero de subtareas terminadas.
attachment_countintegerOpcionalNúmero de adjuntos.
open_blocker_countintegerOpcionalNúmero de bloqueos activos.
labelsarray<Label>OpcionalEtiquetas de la organización en la tarea. Ver Label.
rankstring | nullOpcionalOrden opaco dentro de la columna. Nunca lo calcules: mueve con after / before.
blockedbooleanOpcionalTareas con un bloqueo activo.
blocked_sincedate-time | nullOpcionalCuándo se bloqueó la tarea.
completed_atdate-time | nullOpcionalCuándo se completó, o null.
is_archivedbooleanRequeridoSi la fila está archivada. Archivar es la forma de eliminar: las filas archivadas siguen siendo legibles y se pueden restaurar.
subscribedbooleanOpcionalSi observas esta tarea.
versionintegerRequeridoSe incrementa en cada escritura. Devuélvelo como If-Match para rechazar una actualización desactualizada.
created_byActorRef | nullOpcionalQuién creó la fila. Ver ActorRef.
created_atdate-timeOpcionalCuándo se creó la fila.
updated_atdate-timeOpcionalCuándo cambió la fila por última vez.

Objeto ActorRef

NombreTipoRequeridoDescripción
kindstringRequerido—
uuidstringRequeridoIdentificador público estable.
namestringOpcionalNombre visible.
usernamestring | nullOpcional—
avatar_urlstring | nullOpcional—
has_photobooleanOpcional—

Objeto Label

NombreTipoRequeridoDescripción
uuiduuidRequeridoIdentificador público estable.
namestringRequeridoNombre visible. Máx. 64 caracteres.
colorstringOpcionalColor de visualización (hex).

Respuesta

NombreTipoRequeridoDescripción
(body)BoardDeltaRequeridoUn objeto BoardDelta.

Errores

EstadoCuándo
400El cursor tiene más de 7 días (`delta_window_expired`): vuelve a leer la instantánea del tablero. También se devuelve para un `updated_since` mal formado.
401Credencial ausente, vencida o con formato inválido (`credential_absent`, `credential_expired`, `credential_malformed`).
402Plan aún no está habilitado para tu organización (`plan_upgrade_required`). Es lo esperado durante la Beta: escribe a [email protected].
404No existe o no es visible para ti. Ambos casos devuelven el mismo cuerpo.
curl -sS "https://api.dailybot.com/v1/plan/boards/00000000-0000-4000-8000-000000000002/delta/?updated_since=2026-09-25T10:14:02.113954Z" \
  -H "X-API-KEY: $DAILYBOT_API_KEY"

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: 240 consultas al feed de cambios 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.
GET/v1/plan/boards/{board_id}/views/BetaCLI AuthPaginación por número de página

Las vistas guardadas de quien llama para este tablero

Tus vistas guardadas de este tablero. Las vistas son personales. Requiere una persona: las keys de agente y de la organización se rechazan; una API key personal funciona.

Parámetros de ruta

NombreTipoRequeridoDescripción
board_idstringRequeridoEl uuid del tablero.

Respuesta

NombreTipoRequeridoDescripción
countintegerRequeridoNúmero total de filas.
nexturiRequeridoURL de la página siguiente, o null.
previousuriRequeridoURL de la página anterior, o null.
resultsarray<SavedView>RequeridoLas filas de esta página. Ver SavedView.

Errores

EstadoCuándo
400La validación falló, o no se reconoció un valor de filtro, orden o `include`. El `code` de la respuesta indica cuál.
401Credencial ausente, vencida o con formato inválido (`credential_absent`, `credential_expired`, `credential_malformed`).
402Plan aún no está habilitado para tu organización (`plan_upgrade_required`). Es lo esperado durante la Beta: escribe a [email protected].
403Autenticado 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/boards/00000000-0000-4000-8000-000000000002/views/" \
  -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: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`.
PUT/v1/plan/boards/{board_id}/views/BetaCLI Auth

Reemplazar las vistas guardadas de quien llama para este tablero

Reemplaza todo tu arreglo de vistas guardadas, por eso If-Match es obligatorio: sin él, dos guardados simultáneos descartarían en silencio la vista del otro.

Parámetros de ruta

NombreTipoRequeridoDescripción
board_idstringRequeridoEl uuid del tablero.

Encabezados

NombreTipoRequeridoDescripción
If-MatchstringRequeridoEl 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-NamestringOpcionalEl 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

NombreTipoRequeridoDescripción
(body)array<SavedView>RequeridoUn arreglo JSON de objetos SavedView.

Errores

EstadoCuándo
400La 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.
401Credencial ausente, vencida o con formato inválido (`credential_absent`, `credential_expired`, `credential_malformed`).
402Plan aún no está habilitado para tu organización (`plan_upgrade_required`). Es lo esperado durante la Beta: escribe a [email protected].
403Autenticado 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`).
404No existe o no es visible para ti. Ambos casos devuelven el mismo cuerpo.
412El validador `If-Match` está desactualizado (`precondition_failed`). Vuelve a leer e inténtalo de nuevo.
428`If-Match` es obligatorio (`precondition_required`).
curl -sS -X PUT "https://api.dailybot.com/v1/plan/boards/00000000-0000-4000-8000-000000000002/views/" \
  -H "Authorization: Bearer $DAILYBOT_TOKEN" \
  -H "If-Match: $VIEWS_ETAG" \
  -H "Content-Type: application/json" \
  -d '[
    {
      "name": "My open work",
      "view_mode": "board",
      "group_by": "state",
      "sort": "-updated_at",
      "filters": {
        "owner": [
          "me"
        ],
        "state": [
          "open"
        ]
      }
    }
  ]'

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`.
GET/v1/plan/boards/{board_id}/mentionables/BetaCLI Auth

Buscar personas que se pueden mencionar en un tablero

La lista para los selectores de responsable y participantes, con búsqueda por q (nombre, handle o id externo, nunca una dirección de correo completa). No uses la lista de miembros para los selectores: solo muestra permisos explícitos y suele estar vacía en tableros visibles para toda la organización.

Las personas que no pueden ver el tablero nunca aparecen, aunque coincidan con q, igual que la regla que las rechaza como responsables o participantes (participant_cannot_access_board). limit (25 por defecto) y offset recorren toda la lista en un orden estable.

Las filas son {uuid, name, handle, avatar_url, has_photo, kind}, sin correo. avatar_url y has_photo significan lo mismo que en el responsable de una tarea: cuando has_photo es false, muestra las iniciales; en una fila agent son null y false. Identifica los chips de mención por uuid, nunca por handle: handle no es único dentro de una organización, así que muestra name para distinguir. kinds=agent lista los agentes del espacio de trabajo, pero todavía no se puede mencionar a un agente; no construyas una mención a partir de una fila agent.

Parámetros de ruta

NombreTipoRequeridoDescripción
board_idstringRequeridoEl uuid del tablero.

Parámetros de consulta

NombreTipoRequeridoDescripción
qstringOpcionalCoincide con el nombre, el handle o un id externo, nunca con una dirección de correo completa.
limitintegerOpcionalTamaño de página. Se ajusta al máximo que devuelve la respuesta; los valores inválidos se ignoran en lugar de rechazarse, porque es un control de autocompletado y un 400 aquí rompería el selector por una tecla accidental.
offsetintegerOpcionalFilas que se omiten, sobre el orden determinista full_name, id, para que un límite de página no pueda omitir ni repetir a nadie.
kindsstringOpcionaluser, agent separados por comas. Si se omite, solo usuarios, así que quien llama sin pedir agentes ve exactamente lo mismo que antes. Un token no reconocido se descarta, no se rechaza.

Objeto MentionableList

NombreTipoRequeridoDescripción
limitintegerRequeridoTamaño de página aplicado.
resultsarray<Mentionable>RequeridoLas filas de esta página. Ver Mentionable.

Objeto Mentionable

NombreTipoRequeridoDescripción
uuiduuidRequeridoEl uuid de la persona. Identifica los chips de mención con él.
namestringRequeridoNombre visible. Muéstralo para distinguir a personas con el mismo handle.
handlestring | nullRequeridoHandle, si la persona tiene uno. No es único dentro de una organización.
avatar_urlstring | nullRequeridoURL de la imagen de avatar, igual que en el responsable de una tarea. null en una fila de agente.
has_photobooleanRequeridofalse significa que no hay foto: muestra las iniciales. Siempre false en una fila de agente.
kindenumRequeridoSi la fila es una persona o un agente. Uno de user, agent.

Respuesta

NombreTipoRequeridoDescripción
(body)MentionableListRequeridoUn objeto MentionableList.

Errores

EstadoCuándo
401Credencial ausente, vencida o con formato inválido (`credential_absent`, `credential_expired`, `credential_malformed`).
402Plan aún no está habilitado para tu organización (`plan_upgrade_required`). Es lo esperado durante la Beta: escribe a [email protected].
403Autenticado 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`).
404No existe o no es visible para ti. Ambos casos devuelven el mismo cuerpo.
curl -sS "https://api.dailybot.com/v1/plan/boards/00000000-0000-4000-8000-000000000002/mentionables/" \
  -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: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`.
GET/v1/plan/boards/{board_id}/members/BetaAPI keyCLI AuthPaginación por número de página

Miembros de un tablero

Solo los permisos de membresía explícitos, nunca la lista completa de la organización, por lo que los tableros visibles para la organización suelen devolver una lista vacía. Úsalo para gestionar quién puede ver un tablero solo para miembros; para los selectores usa …/mentionables/. Un administrador de la organización puede leer esta lista sin obtener visibilidad de las tareas del tablero.

Parámetros de ruta

NombreTipoRequeridoDescripción
board_idstringRequeridoEl uuid del tablero.

Parámetros de consulta

NombreTipoRequeridoDescripción
pageintegerOpcionalNúmero de página, empezando en 1.
page_sizeintegerOpcionalFilas 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

NombreTipoRequeridoDescripción
subject_typeenumRequeridoUno de user, team.
user_uuiduuid | nullOpcionalEl uuid de usuario de la persona.
uuiduuid | nullOpcionalIdentificador público estable.
full_namestringOpcional—
namestringOpcionalNombre visible.
roleenum | nullOpcionalRol del participante. Uno de admin, member, guest.
team_uuiduuid | nullOpcionalEl 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_namestringOpcional—
added_atdate-timeRequerido—
added_by_uuiduuid | nullOpcional—

Respuesta

NombreTipoRequeridoDescripción
countintegerRequeridoNúmero total de filas.
nexturiRequeridoURL de la página siguiente, o null.
previousuriRequeridoURL de la página anterior, o null.
resultsarray<BoardMember>RequeridoLas filas de esta página. Ver BoardMember.

Errores

EstadoCuándo
401Credencial ausente, vencida o con formato inválido (`credential_absent`, `credential_expired`, `credential_malformed`).
402Plan aún no está habilitado para tu organización (`plan_upgrade_required`). Es lo esperado durante la Beta: escribe a [email protected].
404No existe o no es visible para ti. Ambos casos devuelven el mismo cuerpo.
curl -sS "https://api.dailybot.com/v1/plan/boards/00000000-0000-4000-8000-000000000002/members/" \
  -H "X-API-KEY: $DAILYBOT_API_KEY"

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.
POST/v1/plan/boards/{board_id}/members/BetaCLI Auth

Agregar un miembro a un tablero

La forma deliberada y visible de dar a una persona (user_uuid) o a un equipo (team_uuid) acceso a un tablero solo para miembros: 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. Escribe un evento board.member_added que los miembros del tablero pueden ver. Agregar a un miembro existente devuelve 200 con la fila existente. No hay roles a nivel de tablero. 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.

Parámetros de ruta

NombreTipoRequeridoDescripción
board_idstringRequeridoEl uuid del tablero.

Encabezados

NombreTipoRequeridoDescripción
Idempotency-KeystringOpcionalUna 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-NamestringOpcionalEl 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

NombreTipoRequeridoDescripción
user_uuiduuidOpcionalEl uuid de usuario de la persona.
team_uuiduuidOpcionalEl 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_namestringOpcionalEl 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

NombreTipoRequeridoDescripción
(body)BoardMemberRequeridoUn objeto BoardMember.

Errores

EstadoCuándo
400Enví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.
401Credencial ausente, vencida o con formato inválido (`credential_absent`, `credential_expired`, `credential_malformed`).
402Plan aún no está habilitado para tu organización (`plan_upgrade_required`). Es lo esperado durante la Beta: escribe a [email protected].
403Autenticado 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`).
404No existe o no es visible para ti. Ambos casos devuelven el mismo cuerpo.
curl -sS -X POST "https://api.dailybot.com/v1/plan/boards/00000000-0000-4000-8000-000000000002/members/" \
  -H "Authorization: Bearer $DAILYBOT_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "user_uuid": "00000000-0000-4000-8000-00000000000c"
  }'

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`.
DELETE/v1/plan/boards/{board_id}/members/{user_id}/BetaCLI Auth

Quitar a un miembro de un tablero

Emite board.member_removed. Quitar al último miembro de un tablero solo para miembros se rechaza con 409 last_grant_cannot_be_removed, porque un tablero privado sin miembros no podría leerlo nadie. Requiere una persona: las keys de agente y de la organización se rechazan; una API key personal funciona.

Parámetros de ruta

NombreTipoRequeridoDescripción
board_idstringRequeridoEl uuid del tablero.
user_idstringRequeridoEl uuid de usuario del miembro.

Encabezados

NombreTipoRequeridoDescripción
X-Dailybot-Agent-NamestringOpcionalEl 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

EstadoCuándo
400El nombre del agente no es válido (`invalid_agent_attribution`).
401Credencial ausente, vencida o con formato inválido (`credential_absent`, `credential_expired`, `credential_malformed`).
402Plan aún no está habilitado para tu organización (`plan_upgrade_required`). Es lo esperado durante la Beta: escribe a [email protected].
403Autenticado 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`).
404No existe o no es visible para ti. Ambos casos devuelven el mismo cuerpo.
409Es el último miembro de un tablero solo para miembros (`last_grant_cannot_be_removed`).
curl -sS -X DELETE "https://api.dailybot.com/v1/plan/boards/00000000-0000-4000-8000-000000000002/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`.
PATCH/v1/plan/boards/{board_id}/members/{user_id}/BetaCLI Auth

Consultar un permiso de membresía del tablero (el rol es de solo lectura)

La membresía del tablero no tiene columna de rol: los roles de la organización más la visibilidad del tablero son el modelo de acceso. Enviar role devuelve 400. Un PATCH vacío devuelve la fila de permiso actual.

Parámetros de ruta

NombreTipoRequeridoDescripción
board_idstringRequeridoEl uuid del tablero.
user_idstringRequeridoEl uuid de usuario del miembro.

Encabezados

NombreTipoRequeridoDescripción
X-Dailybot-Agent-NamestringOpcionalEl 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

NombreTipoRequeridoDescripción
(body)BoardMemberRequeridoUn objeto BoardMember.

Errores

EstadoCuándo
400La 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.
401Credencial ausente, vencida o con formato inválido (`credential_absent`, `credential_expired`, `credential_malformed`).
402Plan aún no está habilitado para tu organización (`plan_upgrade_required`). Es lo esperado durante la Beta: escribe a [email protected].
404No existe o no es visible para ti. Ambos casos devuelven el mismo cuerpo.
curl -sS -X PATCH "https://api.dailybot.com/v1/plan/boards/00000000-0000-4000-8000-000000000002/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`.
GET/v1/plan/boards/{board_id}/labels/BetaCLI Auth

Listar las etiquetas de la organización (verificación de acceso al tablero)

Las etiquetas de la organización, tras la verificación de acceso de este tablero, para que la configuración del tablero pueda gestionarlas sin salir de la API de Plan. Aplica etiquetas a las tarjetas con el PATCH de la tarea, el endpoint de lote de etiquetas o el set_labels masivo.

Parámetros de ruta

NombreTipoRequeridoDescripción
board_idstringRequeridoEl uuid del tablero.

Parámetros de consulta

NombreTipoRequeridoDescripción
pageintegerOpcionalNúmero de página, empezando en 1.
page_sizeintegerOpcionalFilas por página. 50 por defecto, máximo 100. Los valores fuera de rango se ajustan, nunca se rechazan: pedir 500 devuelve 100.
searchstringOpcionalCoincidencia de subcadena sin distinguir mayúsculas y minúsculas, solo en el nombre de la etiqueta. Vacío significa sin filtro; un valor sin coincidencias devuelve una lista vacía.
include_archivedbooleanOpcionalIncluye 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.

Respuesta

NombreTipoRequeridoDescripción
resultsarray<Label>RequeridoLas filas de esta página.

Errores

EstadoCuándo
401Credencial ausente, vencida o con formato inválido (`credential_absent`, `credential_expired`, `credential_malformed`).
402Plan aún no está habilitado para tu organización (`plan_upgrade_required`). Es lo esperado durante la Beta: escribe a [email protected].
404No existe o no es visible para ti. Ambos casos devuelven el mismo cuerpo.
curl -sS "https://api.dailybot.com/v1/plan/boards/00000000-0000-4000-8000-000000000002/labels/" \
  -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: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`.
POST/v1/plan/boards/{board_id}/labels/BetaCLI Auth

Crear una etiqueta de la organización

Crea una etiqueta de la organización desde la configuración de un tablero, detrás del control de acceso de ese tablero. La etiqueta pertenece a la organización, así que todos los tableros pueden usarla.

Parámetros de ruta

NombreTipoRequeridoDescripción
board_idstringRequeridoEl uuid del tablero.

Encabezados

NombreTipoRequeridoDescripción
X-Dailybot-Agent-NamestringOpcionalEl 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

NombreTipoRequeridoDescripción
namestringRequeridoNombre visible.
colorstringOpcionalColor de visualización (hex).
descriptionstringOpcionalDescripción libre.
agent_namestringOpcionalEl 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

NombreTipoRequeridoDescripción
(body)LabelRequeridoUn objeto Label.

Errores

EstadoCuándo
400La 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.
401Credencial ausente, vencida o con formato inválido (`credential_absent`, `credential_expired`, `credential_malformed`).
402Plan aún no está habilitado para tu organización (`plan_upgrade_required`). Es lo esperado durante la Beta: escribe a [email protected].
404No existe o no es visible para ti. Ambos casos devuelven el mismo cuerpo.
curl -sS -X POST "https://api.dailybot.com/v1/plan/boards/00000000-0000-4000-8000-000000000002/labels/" \
  -H "Authorization: Bearer $DAILYBOT_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "backend",
    "color": "#2563eb"
  }'

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`.
GET/v1/plan/views/{view_id}/BetaCLI Auth

Una vista guardada por uuid

Se puede leer cuando es tu propia vista, o una vista shared o board_default de un tablero que puedes ver. Cualquier otra, incluida la vista personal de otra persona, es 404, nunca 403.

Parámetros de ruta

NombreTipoRequeridoDescripción
view_iduuidRequeridoEl uuid de la vista guardada.

Respuesta

NombreTipoRequeridoDescripción
(body)SavedViewRequeridoUn objeto SavedView.

Errores

EstadoCuándo
401Credencial ausente, vencida o con formato inválido (`credential_absent`, `credential_expired`, `credential_malformed`).
402Plan aún no está habilitado para tu organización (`plan_upgrade_required`). Es lo esperado durante la Beta: escribe a [email protected].
404No existe o no es visible para ti. Ambos casos devuelven el mismo cuerpo.
curl -sS "https://api.dailybot.com/v1/plan/views/{view_id}/" \
  -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: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`.
PATCH/v1/plan/views/{view_id}/BetaCLI Auth

Editar una vista guardada

Parcial: solo cambian los campos que envías; los campos desconocidos se rechazan. Hacer una vista shared o board_default, o editar una que ya lo es, requiere a quien administra el tablero; de lo contrario, 403 view_visibility_forbidden.

Parámetros de ruta

NombreTipoRequeridoDescripción
view_iduuidRequeridoEl uuid de la vista guardada.

Encabezados

NombreTipoRequeridoDescripción
X-Dailybot-Agent-NamestringOpcionalEl 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

NombreTipoRequeridoDescripción
namestringOpcionalNombre visible. Máx. 64 caracteres.
view_modeenumOpcionalCómo se dibuja el conjunto filtrado. kanban se acepta como alias de board. Uno de list, board, kanban, timeline, calendar.
group_byenumOpcionalLa dimensión de agrupación. Uno de state, owner, priority, category.
sortstringOpcionalUna clave de orden, con prefijo - para orden descendente.
filtersobjectOpcionalLos filtros de la vista, con la gramática compartida de filtros de tareas.
schema_versionintegerOpcionalVersión del formato guardado de la vista.
visibilityenumOpcionalpersonal, shared o board_default. shared y board_default requieren 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.
collapsedobject | array | string | number | booleanOpcionalEstado de la interfaz del cliente guardado tal cual (qué grupos están colapsados). Solo se validan el tamaño y la profundidad.
columnsobject | array | string | number | booleanOpcionalEstado de la interfaz del cliente guardado tal cual (qué columnas se muestran). Solo se validan el tamaño y la profundidad.
agent_namestringOpcionalEl 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

NombreTipoRequeridoDescripción
(body)SavedViewRequeridoUn objeto SavedView.

Errores

EstadoCuándo
400La 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.
401Credencial ausente, vencida o con formato inválido (`credential_absent`, `credential_expired`, `credential_malformed`).
402Plan aún no está habilitado para tu organización (`plan_upgrade_required`). Es lo esperado durante la Beta: escribe a [email protected].
403Autenticado 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`).
404No existe o no es visible para ti. Ambos casos devuelven el mismo cuerpo.
curl -sS -X PATCH "https://api.dailybot.com/v1/plan/views/{view_id}/" \
  -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.
  • 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`.
DELETE/v1/plan/views/{view_id}/BetaCLI Auth

Eliminar una vista guardada

Permanente. Eliminar una vista shared o board_default requiere a quien administra el tablero; de lo contrario, 403 view_visibility_forbidden.

Parámetros de ruta

NombreTipoRequeridoDescripción
view_iduuidRequeridoEl uuid de la vista guardada.

Encabezados

NombreTipoRequeridoDescripción
X-Dailybot-Agent-NamestringOpcionalEl 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

EstadoCuándo
400El nombre del agente no es válido (`invalid_agent_attribution`).
401Credencial ausente, vencida o con formato inválido (`credential_absent`, `credential_expired`, `credential_malformed`).
402Plan aún no está habilitado para tu organización (`plan_upgrade_required`). Es lo esperado durante la Beta: escribe a [email protected].
403Autenticado 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`).
404No existe o no es visible para ti. Ambos casos devuelven el mismo cuerpo.
curl -sS -X DELETE "https://api.dailybot.com/v1/plan/views/{view_id}/" \
  -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.
  • 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`.
GET/v1/plan/boards/{board_id}/attachments/BetaAPI keyCLI AuthPaginación por número de página

Listar los adjuntos del tablero

Los adjuntos listos del tablero, ordenados por posición, como una página. Cualquiera que pueda ver el tablero puede listarlos; un tablero 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.

Parámetros de ruta

NombreTipoRequeridoDescripción
board_idstringRequeridoEl uuid del tablero.

Parámetros de consulta

NombreTipoRequeridoDescripción
pageintegerOpcionalNúmero de página, empezando en 1.
page_sizeintegerOpcionalFilas 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

NombreTipoRequeridoDescripción
uuiduuidRequeridoIdentificador público estable.
filenamestringRequeridoNombre del archivo.
content_typestringRequeridoTipo MIME.
sizeintegerRequeridoTamaño en bytes.
urlstringRequeridoDónde descargar el archivo.
thumbnail_urluri | nullOpcionalMiniatura para imágenes.
widthinteger | nullOpcional—
heightinteger | nullOpcional—
statusenumRequeridoEstado actual. Uno de pending, ready, scanning, rejected.
uploaded_byActorRef | nullOpcionalQuién subió el archivo. Ver ActorRef.
executed_by_agentobject | nullOpcionalEl 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_atdate-timeRequeridoCuándo se creó la fila.

Objeto ActorRef

NombreTipoRequeridoDescripción
kindstringRequerido—
uuidstringRequeridoIdentificador público estable.
namestringOpcionalNombre visible.
usernamestring | nullOpcional—
avatar_urlstring | nullOpcional—
has_photobooleanOpcional—

Respuesta

NombreTipoRequeridoDescripción
countintegerRequeridoNúmero total de filas.
nexturiRequeridoURL de la página siguiente, o null.
previousuriRequeridoURL de la página anterior, o null.
resultsarray<TaskAttachment>RequeridoLa página de objetos TaskAttachment.

Errores

EstadoCuándo
401Credencial ausente, vencida o con formato inválido (`credential_absent`, `credential_expired`, `credential_malformed`).
402Plan aún no está habilitado para tu organización (`plan_upgrade_required`). Es lo esperado durante la Beta: escribe a [email protected].
404El tablero no existe o no puedes verlo (`not_found`), nunca un 403.
curl -sS "https://api.dailybot.com/v1/plan/boards/00000000-0000-4000-8000-000000000002/attachments/" \
  -H "X-API-KEY: $DAILYBOT_API_KEY"

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.
POST/v1/plan/boards/{board_id}/attachments/BetaCLI Auth

Subir un adjunto al tablero

Adjunta un archivo al tablero en una sola solicitud. Envía multipart/form-data con el campo file y un caption opcional; aquí no hay flujo de presign. El límite es 5 MiB: un archivo más grande es 400 attachment_too_large, con extra.max_size_bytes. El tipo de archivo se verifica a partir de su contenido, con la misma política que los adjuntos de proyecto (400 attachment_invalid_type).

Parámetros de ruta

NombreTipoRequeridoDescripción
board_idstringRequeridoEl uuid del tablero.

Encabezados

NombreTipoRequeridoDescripción
X-Dailybot-Agent-NamestringOpcionalEl 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

NombreTipoRequeridoDescripción
filebinaryRequeridoEl archivo, como parte multipart.
captionstringOpcionalDescripción opcional, máx. 255 caracteres.

Respuesta

NombreTipoRequeridoDescripción
(body)TaskAttachmentRequeridoUn objeto TaskAttachment.

Errores

EstadoCuándo
400Falta el archivo, es demasiado grande (`attachment_too_large`) o de un tipo rechazado (`attachment_invalid_type`), o el tablero ya tiene el máximo de adjuntos (`attachment_limit_reached`). `invalid_agent_attribution` significa que el nombre del agente no es válido.
401Credencial ausente, vencida o con formato inválido (`credential_absent`, `credential_expired`, `credential_malformed`).
402Plan aún no está habilitado para tu organización (`plan_upgrade_required`). Es lo esperado durante la Beta: escribe a [email protected].
403No 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í.
404El tablero no existe o no puedes verlo (`not_found`), nunca un 403.
curl -sS -X POST "https://api.dailybot.com/v1/plan/boards/00000000-0000-4000-8000-000000000002/attachments/" \
  -H "Authorization: Bearer $DAILYBOT_TOKEN" \
  -F "file=@./roadmap.pdf" \
  -F "caption=Q4 roadmap"

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`.
GET/v1/plan/boards/{board_id}/attachments/{attachment_id}/BetaAPI keyCLI Auth

Obtener un adjunto del tablero

Un adjunto del tablero. Cualquiera que pueda ver el tablero puede leerlo.

Parámetros de ruta

NombreTipoRequeridoDescripción
board_idstringRequeridoEl uuid del tablero.
attachment_iduuidRequeridoEl uuid del adjunto.

Respuesta

NombreTipoRequeridoDescripción
(body)TaskAttachmentRequeridoUn objeto TaskAttachment.

Errores

EstadoCuándo
401Credencial ausente, vencida o con formato inválido (`credential_absent`, `credential_expired`, `credential_malformed`).
402Plan aún no está habilitado para tu organización (`plan_upgrade_required`). Es lo esperado durante la Beta: escribe a [email protected].
404El tablero o el adjunto no existe o no puedes verlo (`not_found`), nunca un 403.
curl -sS "https://api.dailybot.com/v1/plan/boards/00000000-0000-4000-8000-000000000002/attachments/00000000-0000-4000-8000-000000000009/" \
  -H "X-API-KEY: $DAILYBOT_API_KEY"

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.
GET/v1/plan/boards/{board_id}/attachments/{attachment_id}/content/BetaAPI keyCLI Auth

Descargar los bytes de un adjunto del tablero

Los bytes del archivo, con el tipo de contenido registrado, a través de la API en vez del enlace de medios. Un adjunto cuya subida aún no terminó es 409 attachment_not_ready.

Parámetros de ruta

NombreTipoRequeridoDescripción
board_idstringRequeridoEl uuid del tablero.
attachment_iduuidRequeridoEl uuid del adjunto.

Respuesta

NombreTipoRequeridoDescripción
(body)binaryRequeridoLos bytes del archivo; Content-Type es el del adjunto.

Errores

EstadoCuándo
401Credencial ausente, vencida o con formato inválido (`credential_absent`, `credential_expired`, `credential_malformed`).
402Plan aún no está habilitado para tu organización (`plan_upgrade_required`). Es lo esperado durante la Beta: escribe a [email protected].
404El tablero o el adjunto no existe o no puedes verlo (`not_found`), nunca un 403.
409El adjunto todavía no está listo (`attachment_not_ready`).
curl -sS "https://api.dailybot.com/v1/plan/boards/00000000-0000-4000-8000-000000000002/attachments/00000000-0000-4000-8000-000000000009/content/" \
  -H "X-API-KEY: $DAILYBOT_API_KEY" \
  -o roadmap.pdf

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.
PATCH/v1/plan/boards/{board_id}/attachments/{attachment_id}/BetaCLI Auth

Renombrar un adjunto del tablero

Cambia el nombre visible del archivo; los bytes guardados no cambian.

Parámetros de ruta

NombreTipoRequeridoDescripción
board_idstringRequeridoEl uuid del tablero.
attachment_iduuidRequeridoEl uuid del adjunto.

Encabezados

NombreTipoRequeridoDescripción
X-Dailybot-Agent-NamestringOpcionalEl 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

NombreTipoRequeridoDescripción
filenamestringRequeridoEl nuevo nombre del archivo (1–255 caracteres). Los bytes guardados no cambian.
agent_namestringOpcionalEl 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

NombreTipoRequeridoDescripción
(body)TaskAttachmentRequeridoUn objeto TaskAttachment.

Errores

EstadoCuándo
400La validación falló; el `code` de la respuesta indica qué campo. `invalid_agent_attribution` significa que el nombre del agente no es válido.
401Credencial ausente, vencida o con formato inválido (`credential_absent`, `credential_expired`, `credential_malformed`).
402Plan aún no está habilitado para tu organización (`plan_upgrade_required`). Es lo esperado durante la Beta: escribe a [email protected].
403No 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í.
404El tablero o el adjunto no existe o no puedes verlo (`not_found`), nunca un 403.
curl -sS -X PATCH "https://api.dailybot.com/v1/plan/boards/00000000-0000-4000-8000-000000000002/attachments/00000000-0000-4000-8000-000000000009/" \
  -H "Authorization: Bearer $DAILYBOT_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "filename": "roadmap-q4.pdf"
}'

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`.
DELETE/v1/plan/boards/{board_id}/attachments/{attachment_id}/BetaCLI Auth

Quitar un adjunto del tablero

Quita el adjunto del tablero. Responde 204.

Parámetros de ruta

NombreTipoRequeridoDescripción
board_idstringRequeridoEl uuid del tablero.
attachment_iduuidRequeridoEl uuid del adjunto.

Encabezados

NombreTipoRequeridoDescripción
X-Dailybot-Agent-NamestringOpcionalEl 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

EstadoCuándo
400La validación falló; el `code` de la respuesta indica qué campo. `invalid_agent_attribution` significa que el nombre del agente no es válido.
401Credencial ausente, vencida o con formato inválido (`credential_absent`, `credential_expired`, `credential_malformed`).
402Plan aún no está habilitado para tu organización (`plan_upgrade_required`). Es lo esperado durante la Beta: escribe a [email protected].
403No 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í.
404El tablero o el adjunto no existe o no puedes verlo (`not_found`), nunca un 403.
curl -sS -X DELETE "https://api.dailybot.com/v1/plan/boards/00000000-0000-4000-8000-000000000002/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: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`.

Esta página es la referencia de Plan · Tableros. 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.