---
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`

## Request

- Base URL: `https://api.rd.services`
- URL: `https://api.rd.services/deals/{deal_id}/proposals`
- Auth: none declared

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.dev/rdstation/apis/webhook-service.md) - [All operations](https://skmtc.dev/rdstation/apis/webhook-service/llms.txt) - [OpenAPI document](https://skmtc.dev/rdstation/apis/webhook-service/revisions/3867c21388e8?raw)
