---
title: "Criar proposta na negociação"
method: POST
path: "/deals/{deal_id}/proposals"
tags: ["crm-v2-proposals"]
---

# Criar proposta na negociação

`POST /deals/{deal_id}/proposals`

Cria uma nova proposta comercial para a negociação, a partir de um modelo (`proposal_template_id`), seções de conteúdo e, opcionalmente, `status`.

**Autor da proposta:** na API v2, o CRM associa a criação ao primeiro usuário administrador disponível da instância (não ao token OAuth do chamador).

## Erros comuns

* **404**: negociação não encontrada ou não acessível.
* **422**: payload inválido (ex.: `data` não é um objeto, `status` fora de `active`/`inactive`, falha de validação do contrato).
* **500**: falhas de domínio na geração da proposta (ex.: modelo não encontrado, limite de seções, limite de produtos na negociação), retornando `errors` com mensagem descritiva.

## Path parameters

- `deal_id` string, required

## Request body

- object
  - `data` object — Atributos aceitos em `data` ao criar uma proposta (além do que o contrato valida, o serviço exige modelo e seções coerentes com o template).
    - `proposal_template_id` string, required — ID do modelo de proposta utilizado como base.
    - `status` 'active' | 'inactive' — Status inicial da proposta (`active` ou `inactive`).
    - `sections` ProposalSection[], required — Seções do documento. Até três seções por proposta.
      - `id` string — Identificador da seção, quando persistido.
      - `slug` string — Slug da seção no modelo.
      - `type` 'html' | 'products_list' — Tipo da seção.
      - `value` string — Conteúdo da seção (ex. HTML para tipo `html`; sanitizado no servidor quando aplicável).
      - `order` integer — Ordem de exibição da seção.
      - `lock` boolean — Indica se a seção está bloqueada para edição.
      - `properties` ProposalSectionProperties — Propriedades da seção. Para `html`, use `layout` com espaçamento vertical. Para `products_list`, use `columns` (lista de colunas) e, opcionalmente, `layout`.
        - `layout` ProposalSectionLayoutProperties — Configuração de layout vertical da seção.
          - `padding_top` integer — Espaçamento superior da seção, em pixels.
          - `padding_bottom` integer — Espaçamento inferior da seção, em pixels.
        - `columns` ProposalSectionProductsListColumn[] — Colunas da tabela de produtos (apenas para seções `products_list`).
          - `entity` string, required — Entidade de origem do campo (`product` ou `deal_product`).
          - `field_type` string, required — Tipo do campo (`default` ou `custom`).
          - `identifier` string, required — Identificador do campo na entidade.

## Response `201`

Created

- object
  - `data` object — Proposta comercial vinculada à negociação (recurso serializado pela API v2).
    - `id` string — Identificador único da proposta.
    - `status` 'active' | 'inactive' — Status da proposta. Valores: `active`, `inactive`.
    - `approval_status` 'pending' | 'approved' — Status de aprovação. Valores: `pending`, `approved`.
    - `approved_at` string, date-time — Data em que a proposta foi aprovada.
    - `token` string — Token público de acesso à proposta (compartilhamento).
    - `total` number, float — Valor total da proposta (alinhado ao total da negociação no momento da criação).
    - `sections` ProposalSection[] — Seções persistidas da proposta.
      - `id` string — Identificador da seção, quando persistido.
      - `slug` string — Slug da seção no modelo.
      - `type` 'html' | 'products_list' — Tipo da seção.
      - `value` string — Conteúdo da seção (ex. HTML para tipo `html`; sanitizado no servidor quando aplicável).
      - `order` integer — Ordem de exibição da seção.
      - `lock` boolean — Indica se a seção está bloqueada para edição.
      - `properties` ProposalSectionProperties — Propriedades da seção. Para `html`, use `layout` com espaçamento vertical. Para `products_list`, use `columns` (lista de colunas) e, opcionalmente, `layout`.
        - `layout` ProposalSectionLayoutProperties — Configuração de layout vertical da seção.
          - `padding_top` integer — Espaçamento superior da seção, em pixels.
          - `padding_bottom` integer — Espaçamento inferior da seção, em pixels.
        - `columns` ProposalSectionProductsListColumn[] — Colunas da tabela de produtos (apenas para seções `products_list`).
          - `entity` string, required — Entidade de origem do campo (`product` ou `deal_product`).
          - `field_type` string, required — Tipo do campo (`default` ou `custom`).
          - `identifier` string, required — Identificador do campo na entidade.
    - `deal_id` string — ID da negociação associada.
    - `proposal_template_id` string — ID do modelo de proposta utilizado na criação.
    - `created_by_id` string — ID do usuário que criou a proposta.
    - `created_at` string, date-time — Data de criação da proposta.
    - `updated_at` string, date-time — Data de atualização da proposta.

## Other responses

- `400` — A requisição está malformada e não consegue ser processada.
- `401` — O token da API está ausente ou inválido.
- `403` — O token não tem permissão para acessar o recurso solicitado.
- `404` — O recurso solicitado não existe.
- `422` — A entidade não pode ser processada.
- `429` — O limite de requisições foi excedido.
- `500` — Internal Server Error

---

[API](https://skmtc.net/rdstation/apis/webhook-service.md) · [All operations](https://skmtc.net/rdstation/apis/webhook-service/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/rdstation/webhook-service/revisions/3867c21388e8/schema)
