Skip to content
ver .md original

Formulários

Crie, configure e arquive formulários por API; gerencie perguntas com lógica condicional; envie respostas e transite estados na máquina de fluxo.

GET/v1/forms/Chave de APICLI AuthPaginação limit-offset

Listar formulários

Retorna todos os formulários da organização do chamador (arquivados excluídos por padrão). Suporta filtragem por escopo, proprietário, busca por nome, ordenação por nome/data/total de respostas, intervalos de data e inclusão opcional de perguntas. As capacidades — edição, visibilidade de respostas, mudanças de estado — são governadas pelas permissões do formulário; o proprietário e os administradores sempre têm acesso completo.

Parâmetros de consulta

NomeTipoObrigatórioDescrição
searchstringOpcionalBusca sem distinção de maiúsculas no nome do formulário. Corresponde a formulários do sistema e criados pelo usuário. Máx. 200 caracteres.
filterstringOpcionalFiltro de escopo. Um de: all, public, approval, workflow, archived. Padrão: todos os formulários da organização. Valor obsoleto: me — use owner_user_ids com seu próprio UUID.
owner_user_idsstring (CSV)OpcionalFiltra por UUIDs de proprietários de formulários. Separados por vírgulas (máx. 50), semântica OR. AND com todos os outros parâmetros (search, filter, paginação, ordenação). UUIDs de outras organizações nunca correspondem. Substitui o obsoleto filter=me.
orderstringOpcionalCampo de ordenação. Um de: alphabetical, recent, total. Padrão: recent.
is_ascendbooleanOpcionalDireção de ordenação. true para ascendente, false para descendente. Padrão: false.
includestringOpcionalLista separada por vírgulas de campos extras a incluir. Atualmente suporta: questions (retorna as perguntas de cada formulário com UUID, label, type, options).
include_archivedbooleanOpcionalQuando true, inclui formulários arquivados nos resultados. Não necessário com filter=archived. Padrão: false.
start_datestring (YYYY-MM-DD)OpcionalFiltra formulários criados em ou após esta data. Inclusivo, fuso horário do chamador.
end_datestring (YYYY-MM-DD)OpcionalFiltra formulários criados em ou antes desta data. Inclusivo, fuso horário do chamador.
offsetintegerOpcionalOffset de paginação. Padrão: 0.
limitintegerOpcionalTamanho da página. Padrão: 25, máximo: 50.

Resposta

{
  "count": "integer",
  "next": "string | null",
  "previous": "string | null",
  "results": "array<{ uuid, name, is_active, collect_responses_anonymously, privacy, shortcut, start_on, end_on, is_archived, workflow_enabled, approval_flow_enabled, created_at, questions? }>"
}

Erros

StatusQuando
400Erro de validação (invalid_filter, invalid_order, search_query_too_long, invalid_date_range, invalid_owner_user_id, too_many_owner_user_ids)
401Credencial ausente, inválida ou expirada
403Autenticado mas sem permissão
429Limitado — cabeçalho Retry-After presente
curl -sS 'https://api.dailybot.com/v1/forms/?filter=workflow&order=alphabetical&is_ascend=true' \
  -H 'X-API-KEY: $DAILYBOT_API_KEY'

Testar

Este é um ajudante apenas de cópia — a requisição não é enviada do seu navegador. Cole o comando no seu terminal para executá-lo.

  • Quando include=questions está configurado, cada objeto de formulário inclui um array questions com UUID, label, type, flag required e options de cada pregunta.
  • Obsoleto: filter=me — use owner_user_ids com seu próprio UUID de usuário. Clientes legados continuam funcionando: me ainda resolve para o escopo do proprietário do chamador e intersecta com qualquer owner_user_ids explícito. O escopo me em endpoints de respostas de formulário não está relacionado e NÃO está obsoleto. Tanto filter=me quanto available_on_list_view continuam sendo aceitos indefinidamente; a remoção será anunciada como uma entrada de changelog separada com sua própria janela de migração.
  • Obsoleto: available_on_list_view — ainda aceito em POST /v1/forms/create/ e PATCH /v1/forms/{uuid}/config/ mas ignorado no servidor. A visibilidade na lista agora é organizacional. Para ocultar um formulário, arquive-o.
POST/v1/forms/create/Chave de APICLI Auth

Criar um formulário com perguntas inline

Cria um formulário com pelo menos uma pergunta e configuração opcional. Requer função admin ou manager.

Corpo da requisição

{
  "name": "string (required, min 3)",
  "questions": "array (required, min 1)",
  "report_channels": "string[] (max 3)",
  "generate_short_question": "boolean (optional, top-level)"
}

Resposta

{
  "uuid": "string (uuid)",
  "name": "string",
  "questions": "array",
  "report_channels": "array",
  "public_url": "string|null"
}

Erros

StatusQuando
401Credencial ausente ou inválida
403Permissões insuficientes (admin/manager necessário para escrita)
429Limite de taxa — cabeçalho Retry-After definido
400questions_required, unknown_field, etc.
curl -sS -X POST 'https://api.dailybot.com/v1/forms/create/' -H 'X-API-KEY: $DAILYBOT_API_KEY' -H 'Content-Type: application/json' -d '{"name":"Incident Report","questions":[{"type":"text","label":"What happened?","short_question":"Description"}]}'

Testar

Este é um ajudante apenas de cópia — a requisição não é enviada do seu navegador. Cole o comando no seu terminal para executá-lo.

  • Aliases: question_type por type, question por label. short_question obrigatório salvo generate_short_question: true.
GET/v1/forms/form-owners/Chave de APICLI AuthPaginação limit-offset

Listar proprietários de formulários

Seletor paginado e pesquisável de membros da organização que possuem pelo menos um formulário não arquivado. Apenas membros ativos e aprovados aparecem. Ordenado por full_name ascendente. Projetado para seletores de UI: uma organização de 1000 membros retorna apenas seus (tipicamente poucos) proprietários de formulários, não todo o diretório.

Parâmetros de consulta

NomeTipoObrigatórioDescrição
searchstringOpcionalBusca sem distinção de maiúsculas no nome e email do membro. O email é comparado no servidor para todos os chamadores mas o valor só é retornado para chamadores com visibilidade de email (admins, managers, team admins).
offsetintegerOpcionalOffset de paginação. Padrão: 0.
limitintegerOpcionalTamanho da página. Padrão: 20, máximo: 50.

Resposta

{
  "count": "integer",
  "next": "string | null",
  "previous": "string | null",
  "results": "array<{ uuid, full_name, image, role, email (conditional — present only for admin/manager/team-admin-scoped callers) }>"
}

Erros

StatusQuando
400Erro de validação (search_query_too_long)
401Credencial ausente, inválida ou expirada
403Autenticado mas sem permissão
429Limitado — cabeçalho Retry-After presente
curl -sS 'https://api.dailybot.com/v1/forms/form-owners/?search=serg&limit=20' \
  -H 'X-API-KEY: $DAILYBOT_API_KEY'

Testar

Este é um ajudante apenas de cópia — a requisição não é enviada do seu navegador. Cole o comando no seu terminal para executá-lo.

  • Os emails dos membros estão ocultos nos payloads do seletor. O campo email aparece APENAS quando o chamador tem visibilidade de email — admins da organização, managers e admins de equipe. Chamadores com escopo de membro recebem linhas sem a chave email (omitida, nunca null). API keys herdam o papel do proprietário da chave. search ainda corresponde ao email no servidor para todos, mas o valor nunca é retornado para chamadores sem visibilidade.
  • O campo role contém o slug do papel organizacional: ADMIN_ORG, MANAGER, ADMIN, MEMBER ou GUEST.
GET/v1/forms/{uuid}/Chave de APICLI Auth

Obter um formulário

Obtém um formulário por UUID. A porta de leitura é a membresía organizacional — qualquer membro autenticado da organização pode ler qualquer formulário. Os campos privacy e available_on_list_view não afetam quem pode ler o formulário; as capacidades como editar, ver respostas e mudar estados de workflow são governadas pelas permissões por escopo do formulário (o proprietário e os admins sempre têm acesso completo).

Parâmetros de rota

NomeTipoObrigatórioDescrição
uuidstring (uuid)Obrigatório

Resposta

{
  "uuid": "string (uuid)",
  "name": "string",
  "is_active": "boolean",
  "collect_responses_anonymously": "boolean",
  "privacy": "string",
  "questions": "array",
  "workflow": "object",
  "created_at": "string (ISO 8601)"
}

Erros

StatusQuando
401Credencial ausente, inválida ou expirada
403Autenticado mas sem permissão
429Limitado — cabeçalho Retry-After presente
404Formulário não encontrado ou o chamador não é membro da organização
curl -sS -X GET 'https://api.dailybot.com/v1/forms/{uuid}/' -H 'X-API-KEY: $DAILYBOT_API_KEY'

Testar

Este é um ajudante apenas de cópia — a requisição não é enviada do seu navegador. Cole o comando no seu terminal para executá-lo.

  • A porta de leitura do detalhe é a membresía organizacional. O campo privacy reflete o escopo de envio do formulário (OWNER, TEAM, EVERYONE), não quem pode ler a definição do formulário. O campo available_on_list_view está obsoleto e não tem efeito — todos os formulários da organização agora aparecem no endpoint de lista.
PATCH/v1/forms/{uuid}/config/Chave de APICLI Auth

Atualizar configuração do formulário

Atualização parcial. Campos desconhecidos retornam 400 unknown_field.

Parâmetros de rota

NomeTipoObrigatórioDescrição
uuidstring (uuid)Obrigatório

Corpo da requisição

{
  "name": "string?",
  "workflow": "object?",
  "who_can_edit": "object?",
  "report_channels": "string[]?"
}

Resposta

{
  "id": "uuid",
  "name": "string",
  "questions": "array",
  "workflow": "object"
}

Erros

StatusQuando
401Credencial ausente ou inválida
403Permissões insuficientes (admin/manager necessário para escrita)
429Limite de taxa — cabeçalho Retry-After definido
400unknown_field, etc.
404form_not_found
curl -sS -X PATCH 'https://api.dailybot.com/v1/forms/{uuid}/config/' -H 'X-API-KEY: $DAILYBOT_API_KEY' -H 'Content-Type: application/json' -d '{"allow_public_responses":true}'

Testar

Este é um ajudante apenas de cópia — a requisição não é enviada do seu navegador. Cole o comando no seu terminal para executá-lo.

  • report_channels substitui o conjunto completo (máx. 3).
DELETE/v1/forms/{uuid}/archive/Chave de APICLI Auth

Arquivar (desativar) um formulário

Marca o formulário como inativo e arquivado. Idempotente.

Parâmetros de rota

NomeTipoObrigatórioDescrição
uuidstring (uuid)Obrigatório

Erros

StatusQuando
401Credencial ausente ou inválida
403Permissões insuficientes (admin/manager necessário para escrita)
429Limite de taxa — cabeçalho Retry-After definido
404form_not_found
curl -sS -X DELETE 'https://api.dailybot.com/v1/forms/{uuid}/archive/' -H 'X-API-KEY: $DAILYBOT_API_KEY'

Testar

Este é um ajudante apenas de cópia — a requisição não é enviada do seu navegador. Cole o comando no seu terminal para executá-lo.

POST/v1/forms/{uuid}/questions/Chave de APICLI Auth

Add a question to a form

Add a question to a form

Parâmetros de rota

NomeTipoObrigatórioDescrição
uuidstring (uuid)Obrigatório

Corpo da requisição

{
  "type": "string",
  "label": "string",
  "short_question": "string (required unless generate_short_question)"
}

Erros

StatusQuando
401Credencial ausente ou inválida
403Permissões insuficientes (admin/manager necessário para escrita)
429Limite de taxa — cabeçalho Retry-After definido
400Erros de validação
curl -sS -X POST 'https://api.dailybot.com/v1/forms/{uuid}/questions/' -H 'X-API-KEY: $DAILYBOT_API_KEY' -H 'Content-Type: application/json'

Testar

Este é um ajudante apenas de cópia — a requisição não é enviada do seu navegador. Cole o comando no seu terminal para executá-lo.

PATCH/v1/forms/{uuid}/questions/{q_uuid}/Chave de APICLI Auth

Update a form question

Update a form question

Parâmetros de rota

NomeTipoObrigatórioDescrição
uuidstring (uuid)Obrigatório
q_uuidstring (uuid)Obrigatório

Corpo da requisição

{
  "type": "string",
  "label": "string",
  "short_question": "string (required unless generate_short_question)"
}

Erros

StatusQuando
401Credencial ausente ou inválida
403Permissões insuficientes (admin/manager necessário para escrita)
429Limite de taxa — cabeçalho Retry-After definido
400Erros de validação
curl -sS -X PATCH 'https://api.dailybot.com/v1/forms/{uuid}/questions/{q_uuid}/' -H 'X-API-KEY: $DAILYBOT_API_KEY' -H 'Content-Type: application/json'

Testar

Este é um ajudante apenas de cópia — a requisição não é enviada do seu navegador. Cole o comando no seu terminal para executá-lo.

DELETE/v1/forms/{uuid}/questions/{q_uuid}/delete/Chave de APICLI Auth

Delete a form question

Delete a form question

Parâmetros de rota

NomeTipoObrigatórioDescrição
uuidstring (uuid)Obrigatório
q_uuidstring (uuid)Obrigatório

Corpo da requisição

{
  "type": "string",
  "label": "string",
  "short_question": "string (required unless generate_short_question)"
}

Erros

StatusQuando
401Credencial ausente ou inválida
403Permissões insuficientes (admin/manager necessário para escrita)
429Limite de taxa — cabeçalho Retry-After definido
400Erros de validação
curl -sS -X DELETE 'https://api.dailybot.com/v1/forms/{uuid}/questions/{q_uuid}/delete/' -H 'X-API-KEY: $DAILYBOT_API_KEY' -H 'Content-Type: application/json'

Testar

Este é um ajudante apenas de cópia — a requisição não é enviada do seu navegador. Cole o comando no seu terminal para executá-lo.

PUT/v1/forms/{uuid}/questions/reorder/Chave de APICLI Auth

Reorder all form questions

Reorder all form questions

Parâmetros de rota

NomeTipoObrigatórioDescrição
uuidstring (uuid)Obrigatório

Corpo da requisição

{
  "question_uuids": "uuid[] (required, complete set)"
}

Erros

StatusQuando
401Credencial ausente ou inválida
403Permissões insuficientes (admin/manager necessário para escrita)
429Limite de taxa — cabeçalho Retry-After definido
400Erros de validação
curl -sS -X PUT 'https://api.dailybot.com/v1/forms/{uuid}/questions/reorder/' -H 'X-API-KEY: $DAILYBOT_API_KEY' -H 'Content-Type: application/json'

Testar

Este é um ajudante apenas de cópia — a requisição não é enviada do seu navegador. Cole o comando no seu terminal para executá-lo.

  • question_uuids deve incluir todos os UUIDs.
GET/v1/forms/{uuid}/responses/Chave de APICLI AuthPaginação limit-offset

Listar respostas de um formulário

Lista paginada de respostas do formulário. Por padrão retorna apenas as respostas do chamador. Com all=true ou qualquer filtro avançado (submission_sources, submitter_user_ids, flow_status), retorna todas as respostas e requer permissão VIEW_REPORTS. Suporta busca de texto completo, filtragem por origem de envio, estado de workflow, estado de aprovação, intervalos de data e ordenação.

Parâmetros de rota

NomeTipoObrigatórioDescrição
uuidstring (uuid)Obrigatório

Parâmetros de consulta

NomeTipoObrigatórioDescrição
allbooleanOpcionalRetorna todas as respostas. Requer permissão VIEW_REPORTS no formulário. Padrão: false (apenas respostas próprias).
userstring (uuid)OpcionalFiltra por UUID de autor específico. Requer permissão VIEW_REPORTS. UUIDs inválidos retornam 400 invalid_user_identifier.
searchstringOpcionalBusca de texto completo em conteúdo da resposta, nome do autor e email do autor. Identidades anônimas não são pesquisáveis (privacidade). Máx. 256 caracteres.
submission_sourcesstring (CSV)OpcionalFiltra por origem de envio. Separados por vírgulas, semântica OR. Valores: member, anonymous, automation, public. Requer permissão VIEW_REPORTS.
submitter_user_idsstring (CSV)OpcionalFiltra por UUIDs de autores. Separados por vírgulas (máx. 50), semântica OR. Requer permissão VIEW_REPORTS.
flow_statusstringOpcionalEstado do fluxo de aprovação. Um de: pending, approved, denied. Ignorado silenciosamente se o formulário não tem fluxo de aprovação. Requer permissão VIEW_REPORTS.
statestringOpcionalChave de estado de workflow (ex. draft, in_review, done). Retorna 400 invalid_workflow_state se o formulário não tem workflow.
orderstringOpcionalDireção de ordenação. Um de: recent (mais recente primeiro), oldest. Padrão: recent.
is_ascendbooleanOpcionalQuando true, equivalente a order=oldest. Padrão: false.
start_datestring (YYYY-MM-DD)OpcionalFiltra por início de intervalo de data de criação. Inclusivo, fuso horário do chamador.
end_datestring (YYYY-MM-DD)OpcionalFiltra por fim de intervalo de data de criação. Inclusivo, fuso horário do chamador.
offsetintegerOpcionalOffset de paginação. Padrão: 0.
limitintegerOpcionalTamanho da página. Padrão: 25, máximo: 50.

Resposta

{
  "count": "integer",
  "next": "string | null",
  "previous": "string | null",
  "results": "array<{ uuid, user, is_dailybot_bot, is_guest_user, is_anonymous, guest_user, submission_source, flow_status, current_state, content, response_completed, has_issue, created_at, updated_at }>"
}

Erros

StatusQuando
400Erro de validação (invalid_submission_sources, invalid_submitter_user_id, too_many_submitter_user_ids, invalid_flow_status, invalid_workflow_state, invalid_user_identifier, search_query_too_long, invalid_date_range)
401Credencial ausente, inválida ou expirada
403O chamador não tem permissão VIEW_REPORTS para filtros avançados (form_response_view_all_forbidden)
429Limitado — cabeçalho Retry-After presente
curl -sS 'https://api.dailybot.com/v1/forms/{uuid}/responses/?all=true&submission_sources=automation,public&order=recent' \
  -H 'X-API-KEY: $DAILYBOT_API_KEY'

Testar

Este é um ajudante apenas de cópia — a requisição não é enviada do seu navegador. Cole o comando no seu terminal para executá-lo.

  • Todos os filtros se compõem com AND entre grupos e OR dentro de cada grupo. Exemplo: submission_sources=member,automation AND flow_status=pending retorna respostas de membros OU automação que estão pendentes de aprovação.
  • Usar qualquer filtro avançado (submission_sources, submitter_user_ids, flow_status) implica automaticamente all=true e requer permissão VIEW_REPORTS.
POST/v1/forms/{uuid}/responses/Chave de APICLI Authform_responses

Criar uma resposta de formulário

Envia uma nova resposta a um formulário. O campo content mapeia cada UUID de pergunta ao seu valor de resposta. Opcionalmente use modo automação (sem atribuição de autor), modo anônimo (nome aleatório), identidade de convidado (metadados de pessoa externa) ou um rótulo de origem de envio para rastreabilidade.

Parâmetros de rota

NomeTipoObrigatórioDescrição
uuidstring (uuid)Obrigatório

Corpo da requisição

{
  "content": "object (required) — answers keyed by question UUID. Values can be strings, booleans, numbers, or arrays of scalars for multiple-choice.",
  "automation": "boolean (optional, default: false) — submit as automation; channel notifications show no submitter. Response marked with is_dailybot_bot=true.",
  "anonymous": "boolean (optional, default: false) — submit anonymously; channel notifications show a random generated name.",
  "guest_user": "object (optional) — guest identity for the submission: { full_name: string (max 255), email: string (max 254) }. Only accepted when automation=true; silently ignored otherwise. Required when form has email_and_name_mandatory enabled.",
  "submission_source": "string (optional, max 512) — free-text provenance label stored in response metadata (e.g. \"github-actions:deploy-pipeline\", \"zapier:feedback-sync\")"
}

Resposta

{
  "uuid": "string (uuid)",
  "form": "string (uuid)",
  "content": "object — question UUID → answer value",
  "response_completed": "boolean",
  "has_issue": "boolean",
  "blockers_status": "string | null",
  "is_anonymous": "boolean",
  "is_dailybot_bot": "boolean — true when submitted as automation",
  "is_guest_user": "boolean — true when guest identity was recorded",
  "guest_user": "object | null — { full_name, email } when guest identity exists",
  "submission_source": "string | null — provenance label from metadata",
  "created_at": "string (ISO 8601)"
}

Erros

StatusQuando
400Erro de validação (content ausente, UUIDs de pergunta inválidos, perguntas obrigatórias não respondidas, guest_user_required quando o form exige nome+email, formato de email inválido, submission_source excede 512 caracteres)
401Credencial ausente, inválida ou expirada
403Autenticado mas sem permissão
404Formulário não encontrado ou não visível
413O corpo da solicitação excede o limite de 64 KB
429Limitado — cabeçalho Retry-After presente
curl -s -X POST \
  -H 'X-API-KEY: $DAILYBOT_API_KEY' \
  -H 'Content-Type: application/json' \
  'https://api.dailybot.com/v1/forms/{uuid}/responses/' \
  -d '{
    "content": {"<question-uuid>": "Approved"},
    "automation": true,
    "guest_user": {"full_name": "Ops Bot", "email": "ops@company.com"},
    "submission_source": "workflow:on-call-handoff"
  }'

Testar

Este é um ajudante apenas de cópia — a requisição não é enviada do seu navegador. Cole o comando no seu terminal para executá-lo.

  • Quando automation é true, a resposta aparece sem atribuição de usuário nas notificações de canal — ideal para pipelines CI/CD, bridges de formulários web ou encaminhamento de webhooks. O campo is_dailybot_bot na resposta confirma o modo automação.
  • Quando anonymous é true, um nome gerado aleatoriamente (ex., "Purple Elephant") substitui o autor real nas notificações de canal. Se tanto automation quanto anonymous forem true, automation tem precedência.
  • Use guest_user para anexar identidade externa (nome + email) a envios de automação. Obrigatório quando o form tem email_and_name_mandatory habilitado. Use submission_source para marcar qual integração ou workflow produziu a resposta.
GET/v1/forms/{uuid}/responses/{response_uuid}/Chave de APICLI Auth

Obter uma resposta de formulário

Obtém uma resposta de formulário identificada por uuid. Retorna current_state, allowed_transitions e content.

Parâmetros de rota

NomeTipoObrigatórioDescrição
uuidstring (uuid)Obrigatório
response_uuidstring (uuid)Obrigatório

Resposta

{
  "uuid": "string (uuid)",
  "form": "string (uuid)",
  "content": "array",
  "current_state": "string",
  "allowed_transitions": "array<string>",
  "response_completed": "boolean",
  "has_issue": "boolean",
  "blockers_status": "string | null",
  "is_anonymous": "boolean",
  "is_dailybot_bot": "boolean",
  "is_guest_user": "boolean",
  "guest_user": "object | null — { full_name, email }",
  "submission_source": "string | null",
  "flow_status": "string | null — approval status: approved, denied, or null (pending/no flow)",
  "created_at": "string (ISO 8601)",
  "updated_at": "string (ISO 8601)"
}

Erros

StatusQuando
401Missing/invalid/expired credential
403Authenticated but not permitted
429Throttled - Retry-After header set
404Not found or not visible
curl -sS -X GET 'https://api.dailybot.com/v1/forms/{uuid}/responses/{response_uuid}/' -H 'X-API-KEY: $DAILYBOT_API_KEY'

Testar

Este é um ajudante apenas de cópia — a requisição não é enviada do seu navegador. Cole o comando no seu terminal para executá-lo.

PATCH/v1/forms/{uuid}/responses/{response_uuid}/Chave de APICLI Authform_responses

Atualizar uma resposta de formulário

Atualiza uma resposta de formulário identificada por uuid. A resposta retorna o recurso atualizado, incluindo current_state e allowed_transitions.

Parâmetros de rota

NomeTipoObrigatórioDescrição
uuidstring (uuid)Obrigatório
response_uuidstring (uuid)Obrigatório

Corpo da requisição

{
  "content": "array (optional)",
  "response_completed": "boolean (optional)"
}

Resposta

{
  "uuid": "string (uuid)",
  "form": "string (uuid)",
  "content": "array",
  "current_state": "string",
  "allowed_transitions": "array<string>",
  "response_completed": "boolean",
  "updated_at": "string (ISO 8601)"
}

Erros

StatusQuando
401Missing/invalid/expired credential
403Authenticated but not permitted
429Throttled - Retry-After header set
400Validation error
404Not found or not visible
curl -sS -X PATCH 'https://api.dailybot.com/v1/forms/{uuid}/responses/{response_uuid}/' -H 'X-API-KEY: $DAILYBOT_API_KEY'

Testar

Este é um ajudante apenas de cópia — a requisição não é enviada do seu navegador. Cole o comando no seu terminal para executá-lo.

DELETE/v1/forms/{uuid}/responses/{response_uuid}/Chave de APICLI Auth

Delete a form response

Delete a form response

Parâmetros de rota

NomeTipoObrigatórioDescrição
uuidstring (uuid)Obrigatório
response_uuidstring (uuid)Obrigatório

Erros

StatusQuando
401Missing/invalid/expired credential
403Authenticated but not permitted
429Throttled - Retry-After header set
404Not found or not visible
curl -sS -X DELETE 'https://api.dailybot.com/v1/forms/{uuid}/responses/{response_uuid}/' -H 'X-API-KEY: $DAILYBOT_API_KEY'

Testar

Este é um ajudante apenas de cópia — a requisição não é enviada do seu navegador. Cole o comando no seu terminal para executá-lo.

POST/v1/forms/{uuid}/responses/{response_uuid}/transition/Chave de APICLI Auth

Transition a form response state

Runs the state machine transition. Body: to_state, optional note.

Parâmetros de rota

NomeTipoObrigatórioDescrição
uuidstring (uuid)Obrigatório
response_uuidstring (uuid)Obrigatório

Corpo da requisição

{
  "to_state": "string (required)",
  "note": "string (optional)"
}

Resposta

{
  "uuid": "string (uuid)",
  "form": "string (uuid)",
  "current_state": "string",
  "allowed_transitions": "array<string>",
  "content": "array",
  "updated_at": "string (ISO 8601)"
}

Erros

StatusQuando
401Missing/invalid/expired credential
403Authenticated but not permitted
429Throttled - Retry-After header set
400Validation error
404Not found or not visible
409State-machine conflict
curl -sS -X POST 'https://api.dailybot.com/v1/forms/{uuid}/responses/{response_uuid}/transition/' -H 'X-API-KEY: $DAILYBOT_API_KEY'

Testar

Este é um ajudante apenas de cópia — a requisição não é enviada do seu navegador. Cole o comando no seu terminal para executá-lo.

Formulários

Acesso programático aos formulários do Dailybot — listar, filtrar, ordenar, buscar, enviar respostas com modos de automação ou anônimo, anexar identidades de convidado, transitar estados de workflow e gerenciar fluxos de aprovação.

Veja a referência completa de endpoints — com parâmetros, schemas de request/response, códigos de erro e exemplos — na página interativa: /pt/developers/api/forms.

Cada endpoint deste grupo aceita tanto API key (X-API-KEY) quanto token Bearer do CLI (Authorization: Bearer …), salvo exceção explícita, conforme a matriz de métodos de autenticação em /pt/developers/authentication#parity-matrix.

Identificador

Os recursos Form e Form Response usam um campo uuid dedicado (RFC 4122 v4) como identificador canônico em toda solicitação e resposta. Parâmetros de rota como /v1/forms/{uuid}/responses/{response_uuid}/ também usam o valor uuid.

Paginação

Todos os endpoints de lista retornam o envelope de paginação padrão:

{
  "count": 42,
  "next": "https://api.dailybot.com/v1/forms/?offset=25&limit=25",
  "previous": null,
  "results": [...]
}
Parâmetro Tipo Padrão Máx. Descrição
offset integer 0 Offset de paginação
limit integer 25 50 Tamanho da página

Veja /pt/developers/conventions#pagination para a especificação completa.

Listar formulários

GET /v1/forms/ retorna todos os formulários da organização do chamador (arquivados excluídos por padrão). As capacidades — edição, visibilidade de respostas, mudanças de estado — são governadas pelas permissões do formulário; o proprietário e os administradores sempre têm acesso completo.

Suporta filtragem por escopo, proprietário, busca por nome, ordenação e intervalos de data.

Filtros de escopo (?filter=):

Valor Descrição
all Todos os formulários da organização (padrão)
public Apenas formulários com privacidade = EVERYONE
approval Apenas formulários com fluxo de aprovação habilitado
workflow Apenas formulários com estados de workflow habilitados
archived Apenas formulários arquivados
me Obsoleto — use owner_user_ids com seu próprio UUID. Ainda funciona por retrocompatibilidade.

Filtro por proprietário (?owner_user_ids=): UUIDs de usuários separados por vírgulas (máx. 50). Retorna apenas formulários desses proprietários. AND com todos os outros parâmetros (search, filter, paginação, ordenação). UUIDs de outras organizações nunca correspondem (retorna 0 resultados, não um erro). Substitui o obsoleto filter=me.

Ordenação (?order=):

Valor Descrição
recent Por data de criação, mais recente primeiro (padrão)
alphabetical Por nome do formulário
total Por total de respostas

Use ?is_ascend=true para inverter a direção de ordenação.

# Formulários com workflow, ordenados alfabeticamente ascendente
curl -H "X-API-KEY: $DAILYBOT_API_KEY" \
  "https://api.dailybot.com/v1/forms/?filter=workflow&order=alphabetical&is_ascend=true"

# Buscar por nome
curl -H "X-API-KEY: $DAILYBOT_API_KEY" \
  "https://api.dailybot.com/v1/forms/?search=Solicitação%20de%20Acesso"

# Formulários ordenados por mais respostas
curl -H "X-API-KEY: $DAILYBOT_API_KEY" \
  "https://api.dailybot.com/v1/forms/?order=total"

Incluir perguntas — passe ?include=questions para incluir as perguntas de cada formulário:

{
  "uuid": "...",
  "name": "Retro de Sprint",
  "questions": [
    {
      "uuid": "q-uuid-1",
      "label": "O que você realizou?",
      "type": "text",
      "required": true,
      "options": null
    }
  ]
}

Descobrir proprietários de formulários

GET /v1/forms/form-owners/ retorna uma lista paginada e pesquisável de membros da organização que possuem pelo menos um formulário não arquivado. Apenas membros ativos e aprovados aparecem. Ordenado por full_name ascendente.

Projetado para seletores de UI: uma organização de 1000 membros retorna apenas seus (tipicamente poucos) proprietários de formulários, não todo o diretório.

Parâmetro Tipo Padrão Máx. Descrição
search string Busca sem distinção de maiúsculas em nome e email
offset integer 0 Offset de paginação
limit integer 20 50 Tamanho da página

Cada resultado contém uuid, full_name, image e role (slug do papel: ADMIN_ORG, MANAGER, ADMIN, MEMBER, GUEST).

Visibilidade do email: o campo email aparece apenas quando o chamador tem visibilidade de email — admins da organização, managers e admins de equipe. Chamadores com escopo de membro recebem linhas sem a chave email (omitida, nunca null). API keys herdam o papel do proprietário da chave. O parâmetro search ainda corresponde ao email no servidor para todos, mas o valor nunca é retornado para chamadores sem visibilidade. Integradores não devem assumir que email está presente nas linhas do seletor.

# Buscar proprietários de formulários por nome
curl -H "X-API-KEY: $DAILYBOT_API_KEY" \
  "https://api.dailybot.com/v1/forms/form-owners/?search=serg&limit=20"

# Filtrar lista de formulários por proprietário
curl -H "X-API-KEY: $DAILYBOT_API_KEY" \
  "https://api.dailybot.com/v1/forms/?owner_user_ids=<uuid-1>,<uuid-2>"

Campos obsoletos:

  • available_on_list_view — ainda aceito em POST /v1/forms/create/ e PATCH /v1/forms/{uuid}/config/ mas é um no-op no servidor. A visibilidade na lista agora é organizacional. Para ocultar um formulário, arquive-o.
  • filter=me — ainda funciona por retrocompatibilidade mas está obsoleto. Use owner_user_ids com seu próprio UUID. Quando ambos são enviados, eles se intersectam. O escopo me em endpoints de respostas de formulário não está relacionado e não está obsoleto.

Ambos os campos obsoletos continuam sendo aceitos indefinidamente; a remoção (e a eventual eliminação da coluna) será anunciada como uma entrada de changelog separada com sua própria janela de migração. Os integradores devem migrar agora mas nada quebra no dia do deploy.

Nota de migração para integradores: substitua filter=me por owner_user_ids=<seu-uuid>. Clientes que dependiam de available_on_list_view para ocultar formulários agora devem filtrar do lado do cliente ou arquivar o formulário.

Listar respostas de formulário

GET /v1/forms/{uuid}/responses/ retorna as respostas do chamador por padrão. Passe ?all=true ou qualquer filtro avançado para ver todas as respostas (requer permissão VIEW_REPORTS no formulário).

Modelo de permissões:

Cenário Permissão necessária
Apenas respostas próprias (padrão) Qualquer usuário autenticado com acesso ao formulário
all=true ou submission_sources, submitter_user_ids, flow_status VIEW_REPORTS no formulário

Filtro de origem de envio (?submission_sources=):

Cada resposta pertence a exatamente uma destas quatro categorias mutuamente exclusivas:

Valor Descrição
member Envio normal de membro identificado da organização
anonymous Membro da organização em formulário anônimo (identidade oculta)
automation Enviado via API/CLI com flag de automação
public Enviado via URL pública do formulário por um convidado externo

Valores separados por vírgulas usam semântica OR: ?submission_sources=automation,public retorna respostas de automação OU públicas.

Filtro de fluxo de aprovação (?flow_status=): Um de pending, approved, denied. Ignorado silenciosamente se o formulário não tem fluxo de aprovação.

Filtro de estado de workflow (?state=): Filtra por chave de estado de workflow (ex. draft, in_review, done). Retorna 400 invalid_workflow_state se o formulário não tem workflow.

Ordenação (?order=): Um de recent (padrão, mais recente primeiro) ou oldest.

Composição de filtros — todos os filtros se compõem com AND entre grupos e OR dentro de cada grupo:

Resultados = (submission_sources OR)
  AND (submitter_user_ids OR)
  AND flow_status
  AND state
  AND search
  AND intervalo_de_datas

Comportamento de busca — o parâmetro search busca no conteúdo da resposta, nome/email do membro e nome/email do convidado. Identidades de membros anônimos nunca são pesquisáveis (proteção de privacidade).

FORM_UUID="96bd8829-1d2a-40fe-8acf-7edb08f742dd"

# Todas as respostas
curl -H "X-API-KEY: $DAILYBOT_API_KEY" \
  "https://api.dailybot.com/v1/forms/$FORM_UUID/responses/?all=true"

# Apenas envios de automação
curl -H "X-API-KEY: $DAILYBOT_API_KEY" \
  "https://api.dailybot.com/v1/forms/$FORM_UUID/responses/?all=true&submission_sources=automation"

# Aprovação pendente + origem membro + busca
curl -H "X-API-KEY: $DAILYBOT_API_KEY" \
  "https://api.dailybot.com/v1/forms/$FORM_UUID/responses/?all=true&submission_sources=member&flow_status=pending&search=bug"

# Mais antigo primeiro com intervalo de datas
curl -H "X-API-KEY: $DAILYBOT_API_KEY" \
  "https://api.dailybot.com/v1/forms/$FORM_UUID/responses/?all=true&order=oldest&start_date=2026-07-01&end_date=2026-07-10"

Enviar uma resposta de formulário

POST /v1/forms/{uuid}/responses/ cria uma nova resposta. O campo content mapeia cada UUID de pergunta ao seu valor de resposta (strings, booleanos, números ou arrays de escalares para múltipla escolha).

Modos de envio:

Modo Flags Notificação de canal Caso de uso
Normal (nenhum) Nome + avatar do autor Pessoa preenchendo um formulário
Anônimo anonymous: true Nome gerado aleatoriamente Feedback honesto sem atribuição
Automação automation: true Sem autor visível Pipeline CI/CD, integração, workflow
Automação + Convidado automation: true + guest_user Sem autor no canal; identidade de convidado no dashboard Envios externos encaminhados via API

Identidade de convidado — use guest_user para anexar a identidade de uma pessoa externa (nome e email) a envios de automação. Aceito apenas quando automation: true; ignorado caso contrário. Obrigatório quando o formulário tem email_and_name_mandatory habilitado. guest_user.full_name máx. 255 caracteres; guest_user.email email válido, máx. 254 caracteres.

Origem do envio — use submission_source (máx. 512 caracteres) para marcar qual automação ou integração produziu a resposta. Armazenado nos metadados da resposta e retornado nas visualizações de lista e detalhe. Valores sugeridos: "github-actions:deploy-pipeline", "zapier:feedback-sync", "cli:ci-release-bot", "make:onboarding-flow".

Regras de validação:

  • content é obrigatório e deve conter respostas correspondentes às perguntas do formulário
  • guest_user requer automation: true — ignorado caso contrário
  • Se o formulário tem email_and_name_mandatory=true e automation=true, tanto guest_user.full_name quanto guest_user.email devem ser fornecidos
  • Limite de tamanho do payload: 64 KB máximo
  • Valores de resposta não podem ser objetos aninhados — listas devem conter apenas escalares
# Modo automação com identidade de convidado e origem
curl -s -X POST \
  -H "X-API-KEY: $DAILYBOT_API_KEY" \
  -H "Content-Type: application/json" \
  "https://api.dailybot.com/v1/forms/{uuid}/responses/" \
  -d '{
    "content": {"<question-uuid>": "Aprovado"},
    "automation": true,
    "guest_user": {"full_name": "Ops Bot", "email": "ops@company.com"},
    "submission_source": "workflow:on-call-handoff"
  }'

# Envio anônimo
curl -s -X POST \
  -H "X-API-KEY: $DAILYBOT_API_KEY" \
  -H "Content-Type: application/json" \
  "https://api.dailybot.com/v1/forms/{uuid}/responses/" \
  -d '{
    "content": {"<question-uuid>": "Feedback honesto sobre o processo"},
    "anonymous": true
  }'

URLs do aplicativo web para integradores

URL Propósito
https://app.dailybot.com/forms/{form_uuid}/responses/create/ Link público para preenchimento (compartilhar com respondentes)
https://app.dailybot.com/forms/{form_uuid}/responses/{response_uuid} Link direto para uma resposta no dashboard