---
title: "Salvar versão das respostas"
method: POST
path: "/api/management/answers-history"
tags: ["answers-history"]
---

# Salvar versão das respostas

`POST /api/management/answers-history`

Congela as respostas atuais de um formulário em uma nova [versão](https://docs.olie.ai/guides/forms/loose-forms) do histórico; com `clean_edges`, os campos são esvaziados em seguida para o próximo ciclo. O formulário é identificado pelo [pivot](https://docs.olie.ai/api-reference/general/form-answer-pivot), em que `father_class` e `father_id` são obrigatórios.

## Request body

- object — Endereço (pivot) do formulário a versionar.
  - `pivot_class` string, required — Tipo de vínculo do formulário (ex.: App\Models\ProjectLooseForm). Define quais atributos de endereço são obrigatórios.
  - `form_id` integer, required — ID do formulário.
  - `project_id` string, uuid, nullable — Atributo de endereço: ID do projeto, para vínculos de funil, etapa e avulso.
  - `id` union — Atributo de endereço: ID do registro (projeto, cliente, contato, usuário da conta ou formulário avulso).
    - string
    - integer
  - `project_funnel_id` integer, nullable — Atributo de endereço: ID do funil, para App\Models\ProjectFunnelAssignment.
  - `funnel_step_id` integer, nullable — Atributo de endereço: ID da etapa, para App\Models\ProjectStepForm.
  - `father_class` string, required — Tipo do registro de origem, quase sempre App\Models\Project. Usado para conferir se o formulário está anexado ali.
  - `father_id` string, required — ID do registro de origem.
  - `clean_edges` boolean, nullable — Se true, esvazia as respostas do formulário depois de salvar a versão. Padrão: false.

## Response `200`

Sucesso

- object — Versão criada.
  - `response` boolean — Indicador de sucesso da requisição. Sempre true nas respostas bem-sucedidas.
  - `answer_history` object — Versão das respostas.
    - `user_id` string, uuid, nullable — ID do usuário que salvou a versão. Nulo quando feita por aplicação.
    - `frame_id` string, uuid — ID da conta.
    - `form_id` integer — ID do formulário versionado.
    - `model_class` string — Tipo de vínculo (pivot_class) onde o formulário está anexado.
    - `model_id` union — ID do registro de vínculo onde o formulário está anexado.
      - string
      - integer
    - `updated_at` string, date-time — Data da última alteração.
    - `created_at` string, date-time — Data em que a versão foi salva.
    - `id` integer — ID da versão.
    - `answers` object[] — Campos do formulário com as respostas congeladas.
      - `id` integer — ID do campo.
      - `type` 'short_text' | 'long_text' | 'rich_text' | 'attachment' | 'checkbox' | 'date' | 'date_and_time' | 'email' | 'phone' | 'select' | 'radio' | 'currency' | 'number' | 'link' | 'time' | 'matrix' | 'user' | 'contact' | 'customer' | 'project' | 'counter' — Tipo do campo.
      - `label` string — Rótulo do campo.
      - `index` integer — Posição do campo no formulário (ordem crescente).
      - `help_text` string, nullable — Texto de ajuda exibido junto ao campo.
      - `description` string, nullable — Descrição do campo.
      - `options` union — Opções do campo: lista de textos para select, radio e checkbox; objeto com rows/columns para matrix; lista vazia nos demais tipos.
        - string[]
        - object
      - `initial_value` union — Valor pré-preenchido do campo, no mesmo formato de uma resposta daquele tipo.
        - string
        - number
        - unknown[]
          - unknown
        - object
      - `required` boolean — Se o preenchimento é obrigatório.
      - `custom_validation` string, nullable — Expressão regular que a resposta precisa atender.
      - `conditional` unknown
      - `form_id` integer — ID do formulário ao qual o campo pertence.
      - `created_at` string, date-time — Data de criação do campo.
      - `updated_at` string, date-time — Data da última alteração do campo.
      - `deleted_at` string, date-time, nullable — Data em que o campo foi arquivado. Nulo quando ativo.
      - `is_multiple` boolean — Se o campo aceita mais de um valor (ex.: vários links).
      - `logical_operator` 'and' | 'or' — Como as regras condicionais do campo se combinam.
      - `is_migrated` boolean — Marcador interno de migração de dados. Pode ser ignorado.
      - `conditional_action` 'show' | 'hide' | 'null', nullable — O que acontece com o campo quando as regras são atendidas: show (exibe) ou hide (oculta). Nulo quando não há lógica condicional.
      - `answer` union — Resposta do campo no momento da versão. Nulo quando vazio.
        - string
        - number
        - boolean
        - unknown[]
          - unknown
        - object
      - `answered_by` string, uuid, nullable — ID do usuário que deu a resposta.
    - `user` object, nullable — Usuário que salvou a versão.
      - `id` string, uuid — ID do usuário.
      - `name` string — Nome do usuário.
      - `avatar_url` string, nullable — URL da foto do usuário.

## Other responses

- `404` — Registro de origem não encontrado
- `422` — Validação falhou

## Changes

- **2026-09-22** `d8fb547e20a2` — 24 breaking, 29 warning, 5 info
  - the request property `father_id` became not nullable
  - the request property `form_id` became not nullable
  - the request property `father_class` became required
  - the request property `father_id` became required
  - …54 more
- **2026-09-22** `d71b18b1685d` — 4 info
  - added optional request body
  - added the media type `application/json` for the response with the status `200`
  - added the non-success response with the status `404`
  - added the non-success response with the status `422`

[Change history](https://skmtc.dev/olie-ai/apis/olie-api/changes/api/management/answers-history/post.md)

---

[API](https://skmtc.dev/olie-ai/apis/olie-api.md) · [All operations](https://skmtc.dev/olie-ai/apis/olie-api/llms.txt) · [OpenAPI document](https://skmtc.dev/olie-ai/apis/olie-api/revisions/d7bda7d32f67?raw)
