Skip to content
ver .md sin procesar

Plan · Objetivos

Los objetivos dicen para qué es el trabajo. Apuntan a proyectos; un objetivo no contiene nada directamente. Parte de la API de Dailybot Plan (Beta).

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/goals/BetaAPI keyCLI AuthPaginación por número de página

Listar objetivos

Los objetivos que puedes ver, en una página. Filtra por status, owned_by, una fecha dentro del periodo del objetivo con active_on o con search. include=progress,projects agrega el cálculo de progreso y los proyectos vinculados.

Parámetros de consulta

Orden y expansión

NombreTipoRequeridoDescripción
includestringOpcionalResúmenes agregados para incrustar, separados por comas: progress, projects. Se omiten por defecto porque cada uno es un agregado. Un token desconocido es 400 invalid_filter_value; un valor vacío no tiene efecto.

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.

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.
statusstringOpcionalRepetible. Filtra por el estado del objetivo declarado.
owned_bystringOpcionalEl uuid de la persona responsable. Se llama owned_by en lugar de owner porque el owner de la gramática de tareas acepta me y unowned, y un mismo nombre de parámetro con dos espacios de valores distintos es la forma en que un cliente envía el equivocado.
active_onstringOpcionalObjetivos cuyo periodo cubre esta fecha: la pregunta propia del roadmap.

Filas archivadas

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.

Objeto Goal

NombreTipoRequeridoDescripción
uuiduuidRequeridoIdentificador público estable.
namestringRequeridoNombre visible. Máx. 120 caracteres.
descriptionstring | nullOpcionalDescripción libre.
statusenumRequeridoEstado actual. Uno de not_started, on_track, at_risk, off_track, achieved, missed.
period_startdateRequeridoPrimer día del periodo del objetivo.
period_enddateRequeridoÚltimo día del periodo del objetivo.
ownerUserRef | nullOpcionalLa persona responsable de la tarea. Ver UserRef.
teamTeamRef | nullOpcionalEl equipo. Ver TeamRef.
progressGoalProgress | nullOpcionalResumen agregado del progreso sobre las tareas que puedes ver. Ver GoalProgress.
project_countintegerOpcionalNúmero de proyectos vinculados.
projectsarrayOpcionalProyectos vinculados. Elementos: {uuid, name, slug, health, lead}.
is_archivedbooleanRequeridoSi la fila está archivada. Archivar es la forma de eliminar: las filas archivadas siguen siendo legibles y se pueden restaurar.
completed_atdate-time | nullOpcionalCuándo se completó, o null.
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.
viewerobjectRequeridoLo que puedes hacer con esta fila. Forma: {can_manage: boolean}.

Objeto UserRef

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

Objeto TeamRef

NombreTipoRequeridoDescripción
uuidstringRequeridoIdentificador público estable.
namestringOpcionalNombre visible.

Objeto GoalProgress

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.
is_partialbooleanRequeridotrue cuando parte del trabajo del objetivo está oculto para ti, así que las cifras cubren solo lo que puedes ver.

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<Goal>RequeridoLas filas de esta página. Ver Goal.

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`).
429Llegaste al límite de solicitudes. Espera los segundos que indica `Retry-After`.
curl -sS "https://api.dailybot.com/v1/plan/goals/?include=progress,projects" \
  -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/goals/BetaCLI Auth

Crear un objetivo

Crea un objetivo con un periodo y un status declarado. Un objetivo activo con el mismo nombre es 409 goal_name_conflict. Todo miembro no invitado puede llamarlo (con una sesión iniciada o una API key personal); una key de agente o de la organización no puede.

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.
descriptionstringOpcionalDescripción libre. Máx. 2000 caracteres.
period_startdateRequeridoPrimer día del periodo del objetivo.
period_enddateRequeridoÚltimo día del periodo del objetivo.
owneruuid | nullOpcionalEl uuid de usuario del responsable. La persona ya debe poder ver el tablero (de lo contrario, 400 participant_cannot_access_board).
teamuuid | nullOpcionalEl equipo.
statusenumOpcionalEstado actual. Uno de not_started, on_track, at_risk, off_track, achieved, missed.
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)GoalRequeridoUn objeto Goal.

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`).
409Un objetivo activo ya tiene este nombre (`goal_name_conflict`).
429Llegaste al límite de solicitudes. Espera los segundos que indica `Retry-After`.
curl -sS -X POST "https://api.dailybot.com/v1/plan/goals/" \
  -H "Authorization: Bearer $DAILYBOT_TOKEN" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Q4 Roadmap",
    "period_start": "2026-10-01",
    "period_end": "2026-12-31",
    "status": "on_track"
  }'

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/goals/{goal_id}/BetaAPI keyCLI Auth

Un objetivo, con su progreso derivado

Siempre devuelve progress, projects y project_count; el parámetro include no hace falta aquí.

Parámetros de ruta

NombreTipoRequeridoDescripción
goal_idstringRequeridoEl uuid del objetivo.

Respuesta

NombreTipoRequeridoDescripción
(body)GoalRequeridoUn objeto Goal.

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.
429Llegaste al límite de solicitudes. Espera los segundos que indica `Retry-After`.
curl -sS "https://api.dailybot.com/v1/plan/goals/00000000-0000-4000-8000-000000000006/" \
  -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/goals/{goal_id}/BetaCLI Auth

Actualizar un objetivo o declarar su estado

Cambia los campos de un objetivo o declara su status (on_track, at_risk, …). Envía solo los campos que cambias. Todo miembro no invitado puede llamarlo (con una sesión iniciada o una API key personal); una key de agente o de la organización no puede.

Parámetros de ruta

NombreTipoRequeridoDescripción
goal_idstringRequeridoEl uuid del objetivo.

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. 120 caracteres.
descriptionstringOpcionalDescripción libre. Máx. 2000 caracteres.
period_startdateOpcionalPrimer día del periodo del objetivo.
period_enddateOpcionalÚltimo día del periodo del objetivo.
owneruuid | nullOpcionalEl uuid de usuario del responsable. La persona ya debe poder ver el tablero (de lo contrario, 400 participant_cannot_access_board).
teamuuid | nullOpcionalEl equipo.
statusenumOpcionalEstado actual. Uno de not_started, on_track, at_risk, off_track, achieved, missed.
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)GoalRequeridoUn objeto Goal.

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.
409Ya existe un objetivo activo con este nombre (`goal_name_conflict`).
429Llegaste al límite de solicitudes. Espera los segundos que indica `Retry-After`.
curl -sS -X PATCH "https://api.dailybot.com/v1/plan/goals/00000000-0000-4000-8000-000000000006/" \
  -H "Authorization: Bearer $DAILYBOT_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "status": "at_risk"
  }'

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/goals/{goal_id}/archive/BetaCLI Auth

Archivar un objetivo. Los proyectos se conservan, sin objetivo

Archiva el objetivo. Nada vive dentro de un objetivo, así que sus proyectos se quedan donde están, sin apuntar a él. Envía ?dry_run=true antes para ver la consecuencia sin archivar.

Parámetros de ruta

NombreTipoRequeridoDescripción
goal_idstringRequeridoEl uuid del objetivo.

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)Goal | DryRunPreviewRequeridoUn objeto Goal. 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.
429Llegaste al límite de solicitudes. Espera los segundos que indica `Retry-After`.
curl -sS -X POST "https://api.dailybot.com/v1/plan/goals/00000000-0000-4000-8000-000000000006/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/goals/{goal_id}/restore/BetaCLI Auth

Recuperar un objetivo archivado

Lo inverso de archive/, igual que boards/{board_id}/restore/. Restaurar un objetivo que ya está activo es un 200 sin efecto, no un error. Los nombres de los objetivos son únicos entre los objetivos ACTIVOS, así que si el nombre se ocupó mientras este estaba archivado, la restauración responde 409 goal_name_conflict: el único caso que distingue una restauración real de un simple cambio de indicador.

Parámetros de ruta

NombreTipoRequeridoDescripción
goal_idstringRequeridoEl uuid del objetivo.

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)GoalRequeridoUn objeto Goal.

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.
409Ya existe un objetivo activo con este nombre (`goal_name_conflict`).
curl -sS -X POST "https://api.dailybot.com/v1/plan/goals/00000000-0000-4000-8000-000000000006/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`.
GET/v1/plan/goals/{goal_id}/attachments/BetaAPI keyCLI AuthPaginación por número de página

Listar los adjuntos de un objetivo

Los adjuntos del objetivo, ordenados por posición. Cualquiera que pueda ver el objetivo puede listar sus adjuntos; un objetivo que no puedes ver es 404. Cada url es un enlace de descarga. No lo guardes: conserva el uuid del adjunto y vuelve a leerlo cuando necesites el archivo. Para mostrar una imagen en la descripción del objetivo, refiérete a ella como attachment:{uuid} y resuélvela al renderizar con el url reciente de esta lista.

Parámetros de ruta

NombreTipoRequeridoDescripción
goal_idstringRequeridoEl uuid del objetivo.

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>RequeridoLas filas de esta página. Ver 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 objetivo o el adjunto no existe o no puedes verlo (`not_found`), nunca un 403.
curl -sS "https://api.dailybot.com/v1/plan/goals/00000000-0000-4000-8000-000000000006/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/goals/{goal_id}/attachments/BetaCLI Auth

Subir un adjunto a un objetivo

Adjunta un archivo a un objetivo. Envía multipart/form-data con el campo file y un caption opcional; aquí no hay flujo de prefirmado. El límite es de 5 MiB en todos los entornos: un archivo más grande es 400 attachment_too_large, con extra.max_size_bytes. El tipo de archivo se verifica por su contenido contra la misma lista que los adjuntos de tareas (attachment_invalid_type). Un objetivo admite como máximo 50 adjuntos (attachment_limit_reached).

Parámetros de ruta

NombreTipoRequeridoDescripción
goal_idstringRequeridoEl uuid del objetivo.

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 a subir (máximo 5 MiB por esta vía).
captionstringOpcionalPie de texto opcional. Máximo 255 caracteres.

Respuesta

NombreTipoRequeridoDescripción
(body)TaskAttachmentRequeridoUn objeto TaskAttachment.

Errores

EstadoCuándo
400Falta el archivo, es demasiado grande (`attachment_too_large`, más de 5 MiB), su tipo no se admite (`attachment_invalid_type`) o se alcanzó el límite de 50 (`attachment_limit_reached`). `invalid_agent_attribution` significa que el nombre del agente no es válido.
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 actúas como miembro no invitado con una sesión iniciada o una API key personal (`insufficient_scope`); una key de agente o de la organización siempre recibe esto.
404El objetivo o el adjunto no existe o no puedes verlo (`not_found`), nunca un 403.
curl -sS -X POST "https://api.dailybot.com/v1/plan/goals/00000000-0000-4000-8000-000000000006/attachments/" \
  -H "Authorization: Bearer $DAILYBOT_TOKEN" \
  -F "file=@./screenshot.png" \
  -F "caption=Staging dashboard"

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/goals/{goal_id}/attachments/{attachment_id}/content/BetaAPI keyCLI Auth

Descargar los bytes de un adjunto de un objetivo

Transmite el archivo con el tipo de contenido registrado al subirlo, X-Content-Type-Options: nosniff y Cache-Control: no-store. Nunca redirige al almacenamiento. Cualquiera que pueda ver el objetivo puede descargarlo.

Parámetros de ruta

NombreTipoRequeridoDescripción
goal_idstringRequeridoEl uuid del objetivo.
attachment_idstringRequeridoEl uuid 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 objetivo o el adjunto no existe o no puedes verlo (`not_found`), nunca un 403.
curl -sS "https://api.dailybot.com/v1/plan/goals/00000000-0000-4000-8000-000000000006/attachments/00000000-0000-4000-8000-000000000009/content/" \
  -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.
DELETE/v1/plan/goals/{goal_id}/attachments/{attachment_id}/BetaCLI Auth

Quitar un adjunto de un objetivo

Quita el adjunto del objetivo.

Parámetros de ruta

NombreTipoRequeridoDescripción
goal_idstringRequeridoEl uuid del objetivo.
attachment_idstringRequeridoEl 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
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].
403No actúas como miembro no invitado con una sesión iniciada o una API key personal (`insufficient_scope`); una key de agente o de la organización siempre recibe esto.
404El objetivo o el adjunto no existe o no puedes verlo (`not_found`), nunca un 403.
curl -sS -X DELETE "https://api.dailybot.com/v1/plan/goals/00000000-0000-4000-8000-000000000006/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`.
PATCH/v1/plan/goals/{goal_id}/attachments/{attachment_id}/BetaCLI Auth

Renombrar un adjunto del objetivo

Cambia el nombre visible del archivo; los bytes guardados no cambian. Las reglas son las del contenedor: solo administradores de la organización.

Parámetros de ruta

NombreTipoRequeridoDescripción
goal_idstringRequeridoEl uuid del objetivo.
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 elemento padre o el adjunto no existe o no puedes verlo (`not_found`), nunca un 403.
curl -sS -X PATCH "https://api.dailybot.com/v1/plan/goals/00000000-0000-4000-8000-000000000006/attachments/00000000-0000-4000-8000-000000000009/" \
  -H "Authorization: Bearer $DAILYBOT_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "filename": "spec-v2.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`.

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