Propostas (Quotes)
Gerencie propostas comerciais e seus itens vinculados a negocios.
Listar Propostas
GET /external/v1/quotes
Retorna uma lista paginada de propostas.
Query Parameters:
| Parametro | Tipo | Obrigatorio | Descricao |
|---|---|---|---|
page | number | Nao | Pagina atual (default: 1) |
limit | number | Nao | Itens por pagina (default: 20, max: 100) |
dealId | string | Nao | Filtro por negocio |
status | string | Nao | Filtro: DRAFT, SENT, ACCEPTED, REJECTED, EXPIRED |
orderBy | string | Nao | Campo: createdAt, totalAmount (default: createdAt) |
order | string | Nao | ASC ou DESC (default: DESC) |
Exemplo de requisicao:
curl -X GET "https://api.tesselys.com.br/external/v1/quotes?page=1&limit=10&status=SENT" \
-H "Authorization: Bearer {accessToken}" \
-H "x-company-token: {companyToken}"
Resposta (200):
{
"data": [
{
"id": "clx7q8r9s0t1u2v3w4x5y6z7",
"code": "COT-1018",
"dealId": "clx3c4d5e6f7g8h9i0j1k2l3",
"title": "Proposta Implantacao Tesselys - Tech Solutions",
"status": "SENT",
"totalAmount": 85000.00,
"discount": 5000.00,
"validUntil": "2026-04-30T23:59:59.000Z",
"notes": "Condicoes especiais para contratacao ate fim de abril.",
"isActive": true,
"createdAt": "2026-03-10T09:00:00.000Z",
"updatedAt": "2026-03-12T14:20:00.000Z"
}
],
"meta": {
"total": 23,
"page": 1,
"limit": 10,
"totalPages": 3
}
}
Buscar Proposta por ID
GET /external/v1/quotes/:id
Exemplo de requisicao:
curl -X GET "https://api.tesselys.com.br/external/v1/quotes/clx7q8r9s0t1u2v3w4x5y6z7" \
-H "Authorization: Bearer {accessToken}" \
-H "x-company-token: {companyToken}"
Resposta (200):
{
"id": "clx7q8r9s0t1u2v3w4x5y6z7",
"code": "COT-1018",
"dealId": "clx3c4d5e6f7g8h9i0j1k2l3",
"title": "Proposta Implantacao Tesselys - Tech Solutions",
"status": "SENT",
"totalAmount": 85000.00,
"discount": 5000.00,
"validUntil": "2026-04-30T23:59:59.000Z",
"notes": "Condicoes especiais para contratacao ate fim de abril.",
"isActive": true,
"createdAt": "2026-03-10T09:00:00.000Z",
"updatedAt": "2026-03-12T14:20:00.000Z"
}
Criar Proposta
POST /external/v1/quotes
Body:
| Campo | Tipo | Obrigatorio | Descricao |
|---|---|---|---|
dealId | string | Sim | ID do negocio vinculado |
title | string | Sim | Titulo da proposta (max: 255) |
validUntil | string | Nao | Data de validade (ISO 8601) |
notes | string | Nao | Observacoes da proposta |
discount | number | Nao | Valor de desconto global |
Exemplo de requisicao:
curl -X POST "https://api.tesselys.com.br/external/v1/quotes" \
-H "Authorization: Bearer {accessToken}" \
-H "x-company-token: {companyToken}" \
-H "Content-Type: application/json" \
-d '{
"dealId": "clx3c4d5e6f7g8h9i0j1k2l3",
"title": "Proposta Consultoria Fiscal Q2 2026",
"validUntil": "2026-05-15",
"notes": "Inclui revisao tributaria completa e adequacao de obrigacoes acessorias.",
"discount": 1500.00
}'
Resposta (201):
{
"id": "clx8r9s0t1u2v3w4x5y6z7a8",
"code": "COT-1019",
"dealId": "clx3c4d5e6f7g8h9i0j1k2l3",
"title": "Proposta Consultoria Fiscal Q2 2026",
"status": "DRAFT",
"totalAmount": 0.00,
"discount": 1500.00,
"validUntil": "2026-05-15T23:59:59.000Z",
"notes": "Inclui revisao tributaria completa e adequacao de obrigacoes acessorias.",
"isActive": true,
"createdAt": "2026-03-25T10:30:00.000Z",
"updatedAt": "2026-03-25T10:30:00.000Z"
}
A proposta e criada automaticamente com status DRAFT. O campo code e gerado automaticamente pelo sistema. O totalAmount e recalculado conforme itens sao adicionados.
Atualizar Proposta
PUT /external/v1/quotes/:id
Atualiza os dados de uma proposta existente. Envie apenas os campos que deseja alterar.
Body (campos opcionais):
| Campo | Tipo | Descricao |
|---|---|---|
title | string | Novo titulo |
status | string | Novo status (DRAFT, SENT, ACCEPTED, REJECTED, EXPIRED) |
validUntil | string | Nova data de validade (ISO 8601) |
notes | string | Novas observacoes |
Exemplo de requisicao:
curl -X PUT "https://api.tesselys.com.br/external/v1/quotes/clx8r9s0t1u2v3w4x5y6z7a8" \
-H "Authorization: Bearer {accessToken}" \
-H "x-company-token: {companyToken}" \
-H "Content-Type: application/json" \
-d '{
"status": "SENT",
"validUntil": "2026-06-01"
}'
Resposta (200):
{
"id": "clx8r9s0t1u2v3w4x5y6z7a8",
"code": "COT-1019",
"dealId": "clx3c4d5e6f7g8h9i0j1k2l3",
"title": "Proposta Consultoria Fiscal Q2 2026",
"status": "SENT",
"totalAmount": 13500.00,
"discount": 1500.00,
"validUntil": "2026-06-01T23:59:59.000Z",
"notes": "Inclui revisao tributaria completa e adequacao de obrigacoes acessorias.",
"isActive": true,
"createdAt": "2026-03-25T10:30:00.000Z",
"updatedAt": "2026-03-25T11:45:00.000Z"
}
Itens de Proposta (Quote Items)
Listar Itens de Proposta
GET /external/v1/quote-items
Retorna uma lista paginada de itens de proposta.
Query Parameters:
| Parametro | Tipo | Obrigatorio | Descricao |
|---|---|---|---|
page | number | Nao | Pagina atual (default: 1) |
limit | number | Nao | Itens por pagina (default: 20, max: 100) |
quoteId | string | Nao | Filtro por proposta |
Exemplo de requisicao:
curl -X GET "https://api.tesselys.com.br/external/v1/quote-items?quoteId=clx8r9s0t1u2v3w4x5y6z7a8&page=1&limit=20" \
-H "Authorization: Bearer {accessToken}" \
-H "x-company-token: {companyToken}"
Resposta (200):
{
"data": [
{
"id": "clx9s0t1u2v3w4x5y6z7a8b9",
"quoteId": "clx8r9s0t1u2v3w4x5y6z7a8",
"description": "Diagnostico tributario completo",
"quantity": 1,
"unitPrice": 5000.00,
"discount": 0.00,
"totalPrice": 5000.00,
"isActive": true,
"createdAt": "2026-03-25T10:35:00.000Z",
"updatedAt": "2026-03-25T10:35:00.000Z"
},
{
"id": "clx0t1u2v3w4x5y6z7a8b9c0",
"quoteId": "clx8r9s0t1u2v3w4x5y6z7a8",
"description": "Adequacao de obrigacoes acessorias (mensal)",
"quantity": 4,
"unitPrice": 2500.00,
"discount": 500.00,
"totalPrice": 9500.00,
"isActive": true,
"createdAt": "2026-03-25T10:40:00.000Z",
"updatedAt": "2026-03-25T10:40:00.000Z"
}
],
"meta": {
"total": 2,
"page": 1,
"limit": 20,
"totalPages": 1
}
}
Buscar Item de Proposta por ID
GET /external/v1/quote-items/:id
Exemplo de requisicao:
curl -X GET "https://api.tesselys.com.br/external/v1/quote-items/clx9s0t1u2v3w4x5y6z7a8b9" \
-H "Authorization: Bearer {accessToken}" \
-H "x-company-token: {companyToken}"
Resposta (200):
{
"id": "clx9s0t1u2v3w4x5y6z7a8b9",
"quoteId": "clx8r9s0t1u2v3w4x5y6z7a8",
"description": "Diagnostico tributario completo",
"quantity": 1,
"unitPrice": 5000.00,
"discount": 0.00,
"totalPrice": 5000.00,
"isActive": true,
"createdAt": "2026-03-25T10:35:00.000Z",
"updatedAt": "2026-03-25T10:35:00.000Z"
}
Criar Item de Proposta
POST /external/v1/quote-items
Body:
| Campo | Tipo | Obrigatorio | Descricao |
|---|---|---|---|
quoteId | string | Sim | ID da proposta vinculada |
description | string | Sim | Descricao do item |
quantity | number | Sim | Quantidade |
unitPrice | number | Sim | Preco unitario |
discount | number | Nao | Valor de desconto do item |
Exemplo de requisicao:
curl -X POST "https://api.tesselys.com.br/external/v1/quote-items" \
-H "Authorization: Bearer {accessToken}" \
-H "x-company-token: {companyToken}" \
-H "Content-Type: application/json" \
-d '{
"quoteId": "clx8r9s0t1u2v3w4x5y6z7a8",
"description": "Treinamento equipe fiscal (8h)",
"quantity": 2,
"unitPrice": 3000.00,
"discount": 500.00
}'
Resposta (201):
{
"id": "clx1u2v3w4x5y6z7a8b9c0d1",
"quoteId": "clx8r9s0t1u2v3w4x5y6z7a8",
"description": "Treinamento equipe fiscal (8h)",
"quantity": 2,
"unitPrice": 3000.00,
"discount": 500.00,
"totalPrice": 5500.00,
"isActive": true,
"createdAt": "2026-03-25T11:00:00.000Z",
"updatedAt": "2026-03-25T11:00:00.000Z"
}
O totalAmount da proposta vinculada e recalculado automaticamente ao adicionar, atualizar ou remover itens.
Atualizar Item de Proposta
PUT /external/v1/quote-items/:id
Atualiza os dados de um item de proposta existente. Envie apenas os campos que deseja alterar.
Body (campos opcionais):
| Campo | Tipo | Descricao |
|---|---|---|
description | string | Nova descricao |
quantity | number | Nova quantidade |
unitPrice | number | Novo preco unitario |
discount | number | Novo valor de desconto |
Exemplo de requisicao:
curl -X PUT "https://api.tesselys.com.br/external/v1/quote-items/clx1u2v3w4x5y6z7a8b9c0d1" \
-H "Authorization: Bearer {accessToken}" \
-H "x-company-token: {companyToken}" \
-H "Content-Type: application/json" \
-d '{
"quantity": 3,
"unitPrice": 2800.00
}'
Resposta (200):
{
"id": "clx1u2v3w4x5y6z7a8b9c0d1",
"quoteId": "clx8r9s0t1u2v3w4x5y6z7a8",
"description": "Treinamento equipe fiscal (8h)",
"quantity": 3,
"unitPrice": 2800.00,
"discount": 500.00,
"totalPrice": 7900.00,
"isActive": true,
"createdAt": "2026-03-25T11:00:00.000Z",
"updatedAt": "2026-03-25T11:15:00.000Z"
}
Valores de Enum
status (Proposta)
| Valor | Descricao |
|---|---|
DRAFT | Rascunho |
SENT | Enviada ao cliente |
ACCEPTED | Aceita pelo cliente |
REJECTED | Rejeitada pelo cliente |
EXPIRED | Expirada (passou da data de validade) |