Pular para o conteúdo

Limites e erros

Todos os limites da definição de formulário do trulyform, a diferença entre erros ao salvar e problemas de publicação, os códigos de erro do MCP e como resolver os mais comuns.

Ver em Markdown (inglês)

Todas as páginas da documentação
Nesta página

O que você precisa saber

  • O trulyform verifica o formulário em dois momentos. Ao salvar, recusa uma definição com formato errado e não salva nada. Ao publicar, também exige que o rascunho não tenha nenhum item em issues.
  • Dá para salvar um rascunho com problemas, como uma pergunta sem título, e montar o formulário aos poucos.
  • Todo erro indica onde está o problema: um caminho na definição, nos erros ao salvar, ou um nodeId, nos problemas de publicação.
  • Os limites abaixo não podem ser ultrapassados.

Limites

A referência técnica a seguir é gerada a partir do código e está em inglês, como os assistentes de IA a leem. As mensagens de erro aparecem como a API as retorna, em inglês.

Limite Valor Observações
definition_bytes 2.000.000 Maximum size of the whole definition as UTF-8 JSON.
fields 200 Questions per form.
options_per_field 250 Choices per question (matrix columns included).
rows_per_field 100 Rows per matrix question.
rules 300 Logic rules per form.
conditions_per_rule 20 Conditions per logic rule.
calculations 100 Calculations per form.
expression_depth 12 Nesting depth of one calculation expression.
calculation_name_length 100 Characters per calculation name.
hidden_fields 30 Hidden URL parameters captured per form.
text_length 10.000 Characters per rich-text text node.
label_length 2.000 Characters per choice or row label.
button_length 100 Characters per button label.
max_files_per_answer 10 Largest maxFiles setting. The respondent can upload no more than the form owner's plan allows: Free 1 file, Pro 10 files, Business 10 files.
max_file_megabytes 10 Largest file a respondent can upload, in MB, whatever maxSizeMB says.

Limites por plano

Lógica, cálculos e todos os tipos de pergunta estão disponíveis em todos os planos. Os itens abaixo dependem do plano do dono do formulário:

Plano Arquivos por resposta Armazenamento de arquivos Respostas parciais Logo próprio
Free 1 10 MB Não Não
Pro 10 1 GB Sim Não
Business 10 10 GB Sim Sim

Cada pessoa pode fazer até 120 requisições MCP por minuto.

Erros ao salvar

Quando o formato está errado, save_form_draft retorna validation_failed com um objeto errors, que liga cada caminho às mensagens de erro dele:

Um erro ao salvar

{
    "code": "validation_failed",
    "message": "Correct the indicated fields and try again.",
    "errors": { "fields.0.kind": ["The selected fields.0.kind is invalid."] }
}

Selecione o texto para copiá-lo.

Os caminhos partem da definição: fields.0.kind é o kind da primeira pergunta. Nos erros de texto formatado, os caminhos começam com definition., como definition.fields.0.title, e apontam para o mesmo lugar. A lista docs do erro indica as seções que o explicam; passe uma delas para read_docs.

Mensagem Causa Correção
The selected fields.0.kind is invalid. Não é um dos tipos de pergunta Use um dos tipos de Tipos de pergunta.
The fields.0.id field must be a valid UUID. O ID não é um UUIDv7 Use um UUIDv7. Veja Identificadores.
The fields.0.id field must be lowercase. ID com letras maiúsculas Escreva os IDs em minúsculas.
The fields.0.id field has a duplicate value. Duas perguntas com o mesmo ID Dê um ID diferente a cada uma.
Every question, choice, row, rule, and calculation needs a unique identifier. Um ID usado duas vezes, por exemplo numa opção e numa pergunta Use um ID novo para cada item.
Use supported text formatting. Um título ou uma descrição está como string, ou usa um nó ou uma formatação desconhecidos Escreva como texto formatado.
Use paragraphs with inline text and answer references. Nós de texto formatado no lugar errado, como texto solto direto no doc Coloque o texto dentro de um parágrafo, e o parágrafo dentro do doc.
The fields.0.settings field must be an array. settings tem uma chave que não é configuração, como options ou required Remova a chave. As chaves permitidas estão em Configurações.
The definition field must be an array. Uma chave principal desconhecida, como pages Envie só as chaves principais.
The fields.0.required field must be true or false. Uma string, como "true" Envie um booleano JSON.
The theme.primary field format is invalid. Uma cor fora do formato #RRGGBB Use uma cor hexadecimal de seis dígitos, como #2563eb.
Use a lowercase UUIDv7 asset identifier or null. Uma string vazia como ID de arquivo Use null.
This form exceeds the 2 MB definition limit. Remove unused content and try again. A definição passa de 2 MB Encurte os textos ou remova perguntas.

Problemas de publicação

Os issues aparecem em get_form, em todo retorno de save_form_draft e, quando a publicação falha, no erro de publish_form:

Um erro ao publicar

{
    "code": "validation_failed",
    "message": "Resolve these issues before publishing.",
    "issues": [
        { "nodeId": "01990000-0000-7000-8000-000000000001", "path": "options", "message": "Add at least two choices.", "severity": "error" }
    ]
}

Selecione o texto para copiá-lo.

nodeId é o ID de uma pergunta, regra ou cálculo, ou então form, theme, welcome ou ending. path indica qual parte corrigir.

Problema Correção
Add at least one question. Adicione uma pergunta em fields.
Write your question. Dê um título à pergunta. Um texto informativo pode ficar só com a descrição.
The title is empty and your text is in the description. Move it to the title. Passe o texto da pergunta de description para title.
Add at least two choices. Adicione opções à pergunta de escolha.
Give every choice a label. Preencha o label de todas as opções.
Add a label for every matrix row. Adicione linhas à matriz e dê um rótulo a cada uma.
Statements cannot require or collect answers. Defina required como false e deixe options e rows vazios.
Use a response limit above zero, or no limit. Defina fillLimit como null ou um número maior que 0.
Use a numeric choice score. Escreva o score como string decimal, como "10" ou "2.5".
Use whole-number scale limits with at most 11 choices. Use números inteiros no min e no max da escala de opinião, com diferença de no máximo 10.
Minimum must not exceed maximum. Inverta min e max.
Increase the contrast of form text in Design so everyone can read it. Use um foreground mais escuro ou um background mais claro. Veja Cores legíveis.
Increase the contrast of button text in Design so everyone can read it. Ajuste buttonText ou primary até o contraste entre eles chegar a 4,5:1.
Choose a question and a target later in the form. O sourceId da regra precisa vir antes do targetId. Veja Regras de lógica.
Conditions must use an answer available before this rule runs. Baseie as condições na pergunta de origem da regra ou em perguntas anteriores.
Choose an operator supported by this answer type. Use um operador aceito pelo tipo de pergunta. Veja Condições.
Set a comparison value. Adicione um value à condição.
This condition references a choice that was removed. Choose an available answer. Use um ID de opção que ainda exista.
Name this calculation. Dê um name ao cálculo.
This calculation has a missing reference or a circular dependency. Aponte cada referência para um cálculo que existe, sem ciclos. Veja Cálculos.
Piped answers must come from an earlier question. Coloque o token de resposta depois da pergunta que ele mostra, ou use outra pergunta. Veja Referências de resposta.

Os problemas de intervalo citam o nome da configuração, por exemplo "Set maxFiles between 1 and 10." Use um valor dentro do intervalo indicado em Configurações.

Códigos de erro

Todo erro de ferramenta traz um code e uma message:

Código Significado O que fazer
unauthenticated A conexão não está autenticada. Entre de novo pelo cliente.
organization_required A conta não tem organização. O usuário precisa entrar em uma organização ou criar uma no trulyform.
validation_failed A entrada é inválida. errors ou issues explicam o motivo. Corrija o que eles apontam e tente de novo.
draft_conflict O rascunho mudou depois da revisão enviada, ou um mutation_id foi reaproveitado com outro conteúdo. revision traz a revisão atual. Leia o formulário de novo e refaça a alteração.
not_found Esse formulário ou essa resposta não existe nesta organização. Confira o ID com list_forms ou list_responses.
forbidden O usuário não tem permissão para isso. Pergunte ao usuário.
operation_failed Algo inesperado deu errado. Leia o formulário de novo antes de repetir uma alteração.

Pronto para criar?
Conecte seu assistente.

Escolha o assistente que você usa, entre no trulyform e peça o formulário de que precisa.

Escolher assistente