{
  "openapi": "3.0.4",
  "info": {
    "title": "API de Integração VendaSimples",
    "version": "v1",
    "description": "Acesso aos dados do grupo para sistemas externos. Todas as chamadas vão para produção e trabalham com dados reais: não há ambiente de homologação.\n\nRespostas em JSON, campos em camelCase, conteúdo dentro de `data`. As respostas podem ganhar campos e valores de enum novos: ignore o que não conhecer."
  },
  "servers": [
    {
      "url": "https://production.bredasapi.com.br/api",
      "description": "Produção"
    }
  ],
  "paths": {
    "/v1/empresa": {
      "get": {
        "tags": [
          "Empresa"
        ],
        "summary": "Listar as empresas liberadas",
        "description": "Empresas do grupo que a integração pode acessar. O `idEmpresa` de cada uma é usado nos outros recursos e chega no aviso do webhook.\n\n- Se o administrador escolheu empresas ao criar a integração, só elas aparecem.\n- Se não escolheu nenhuma, aparecem todas as empresas do grupo com contrato ativo.\n- Em qualquer caso, a empresa precisa ter a API de Integração no contrato.\n\nO token guarda as empresas liberadas no momento em que foi gerado: mudanças na integração só aparecem em tokens gerados depois.",
        "responses": {
          "200": {
            "description": "Empresas liberadas",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmpresaConsultaV1ViewModelListSwaggerResult"
                },
                "example": {
                  "data": [
                    {
                      "idEmpresa": 989,
                      "cpfCnpj": "11222333000181",
                      "nomeRazaoSocial": "Empresa Exemplo LTDA",
                      "nomeFantasia": "Exemplo"
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "operationId": "getV1Empresa",
        "x-rate-limit": {
          "escopo": "grupo",
          "limite": 100,
          "reposicao": 5,
          "periodoEmSegundos": 3
        }
      }
    },
    "/v1/pedido/{id}/aberto": {
      "get": {
        "tags": [
          "Pedido"
        ],
        "summary": "Consultar um pedido em aberto",
        "description": "Dados de um pedido em aberto (orçamento), com cliente, produtos, serviços e formas de pagamento. O `id` é o mesmo que chega no aviso do webhook de orçamento criado.\n\nErros `400` possíveis:\n\n- \"Pedido não encontrado\"\n- \"Pedido não está aberto\": foi faturado ou cancelado, por exemplo logo depois do aviso do webhook\n- \"Sem permissão para consulta de pedido desta empresa\" ou \"Pedido de empresa não liberada para esta integração\": a empresa do pedido não está liberada para a sua integração\n\nDatas em UTC (ISO 8601 com `Z`, podem ter fração de segundo). Campos opcionais sem valor vêm como `null`, não são omitidos. Textos vazios podem vir como `\"\"` ou `null`: trate os dois.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Id do pedido (o mesmo do aviso do webhook)",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            },
            "example": 98765
          }
        ],
        "responses": {
          "200": {
            "description": "Pedido em aberto",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PedidoAbertoConsultaEspecificaV1ViewModelSwaggerResult"
                },
                "example": {
                  "data": {
                    "id": 98765,
                    "idEmpresa": 989,
                    "data": "2026-10-23T13:30:00Z",
                    "dataFaturamentoIndicada": "2026-10-25T03:00:00Z",
                    "dataCriacao": "2026-10-23T13:30:00.123456Z",
                    "dataUltimaAlteracao": "2026-10-23T14:05:00.654321Z",
                    "usuarioCriacao": "maria",
                    "usuarioUltimaAlteracao": "maria",
                    "idFinalidade": 1,
                    "indicadorPresencial": 1,
                    "origem": 1,
                    "idTabelaPreco": 3,
                    "modalidadeFrete": 0,
                    "dataEntrega": "2026-10-26T03:00:00Z",
                    "valorFrete": 15,
                    "valorSeguro": 0,
                    "valorOutrasDespesas": 0,
                    "valorDesconto": 10,
                    "valorTotalIpi": 0,
                    "valorTotalIcmsSt": 0,
                    "valorTotalBrutoProduto": 119.8,
                    "valorTotalLiquidoProduto": 124.8,
                    "valorTotalBrutoServico": 50,
                    "valorTotalDeduzidoServico": 0,
                    "valorTotalLiquidoServico": 50,
                    "valorTotalBruto": 169.8,
                    "valorTotalLiquido": 174.8,
                    "valorCotacao": null,
                    "codigoIBGEServicoPrestado": 4106902,
                    "observacao": "Entregar pela manhã",
                    "observacaoInterna": "Cliente pediu nota com CNPJ",
                    "dadosParceiro": {
                      "idParceiro": 3301,
                      "nomeParceiro": "Cliente Exemplo LTDA",
                      "cpfCnpjParceiro": "11222333000181",
                      "idEnderecoEntrega": 77
                    },
                    "itens": [
                      {
                        "idProduto": 1520,
                        "idVariacao": 4410,
                        "quantidade": 2,
                        "valorUnitario": 59.9,
                        "valorIcmsSt": 0,
                        "valorIpi": 0,
                        "valorTotal": 119.8,
                        "idDeposito": 1,
                        "idVendedor": 12,
                        "percentualComissao": 3,
                        "valorDolar": null,
                        "descricaoAdicional": "",
                        "informacaoAdicional": "",
                        "codigoLoteEspecificado": "",
                        "quantidadeReservada": 2
                      }
                    ],
                    "servicoItens": [
                      {
                        "idServico": 45,
                        "quantidade": 1,
                        "valorUnitario": 50,
                        "valorTotal": 50,
                        "complemento": "Instalação",
                        "valorDeduzidoISSQN": 0,
                        "valorDeduzidoINSS": 0,
                        "valorDeduzidoIR": 0,
                        "valorDeduzidoCSLL": 0,
                        "valorDeduzidoPIS": 0,
                        "valorDeduzidoCOFINS": 0,
                        "valorTotalDeduzido": 0,
                        "idVendedor": 12,
                        "percentualComissao": 3
                      }
                    ],
                    "formasPagamento": [
                      {
                        "idFormaPagamento": 2,
                        "descricaoFormaPagamento": "Pix",
                        "valor": 174.8,
                        "data": "2026-10-23T03:00:00Z",
                        "observacao": "",
                        "creditoCliente": false
                      }
                    ],
                    "dadosEstoque": {
                      "statusEstoque": 0,
                      "statusEstoqueDescricao": "NaoIniciado",
                      "motivo": ""
                    },
                    "statusReserva": 0,
                    "statusReservaMotivo": "",
                    "possuiReservaComSaldo": true
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "operationId": "getV1PedidoIdAberto",
        "x-rate-limit": {
          "escopo": "grupo",
          "limite": 100,
          "reposicao": 5,
          "periodoEmSegundos": 3
        }
      }
    },
    "/auth/integracao": {
      "post": {
        "tags": [
          "Autenticação"
        ],
        "summary": "Gerar o token de acesso",
        "description": "Troca a chave de integração por um token, que vai no header `Authorization` de todas as outras chamadas, sem o prefixo `Bearer`.\n\n- O token vale 24 horas e não é renovado: gere outro com a mesma chave.\n- Gerar um token novo não invalida os anteriores.\n- O token guarda as empresas liberadas no momento em que foi gerado.\n\nChame a partir do seu servidor. A chave é uma senha: nunca a coloque no navegador nem em aplicativo instalado no celular.",
        "operationId": "postAuthIntegracao",
        "servers": [
          {
            "url": "https://production.bredasapi.com.br/overall",
            "description": "Autenticação (produção)"
          }
        ],
        "security": [],
        "x-bredas-testar": false,
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AuthIntegracaoEntrada"
              },
              "example": {
                "chave": "SUA_CHAVE_DE_INTEGRACAO"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Token gerado",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthIntegracaoTokenResult"
                },
                "example": {
                  "data": {
                    "access_token": "3f9a1c0e7b2d4e6f8a1b2c3d4e5f6a7bbredas0a1b2c3d4e5f60718293a4b5c6d7e8f9",
                    "created_date": "2026-10-23T14:00:00Z",
                    "expire_date": "2026-10-24T14:00:00Z",
                    "expires_in": 1440,
                    "gmt_offset": -3
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "AuthIntegracaoEntrada": {
        "type": "object",
        "required": [
          "chave"
        ],
        "properties": {
          "chave": {
            "type": "string",
            "description": "Chave de integração, gerada pelo administrador do grupo no sistema (exibida uma única vez)"
          }
        }
      },
      "AuthIntegracaoToken": {
        "type": "object",
        "properties": {
          "access_token": {
            "type": "string",
            "description": "Token a enviar no header `Authorization`, sem `Bearer`"
          },
          "created_date": {
            "type": "string",
            "format": "date-time",
            "description": "Quando o token foi gerado, em UTC"
          },
          "expire_date": {
            "type": "string",
            "format": "date-time",
            "description": "Quando o token expira, em UTC"
          },
          "expires_in": {
            "type": "integer",
            "format": "int32",
            "description": "Validade em MINUTOS (1440), não em segundos"
          },
          "gmt_offset": {
            "type": "integer",
            "format": "int32",
            "description": "Fuso do grupo em horas em relação ao UTC (ex.: -3). Use para converter as datas da API para o horário do grupo"
          }
        }
      },
      "AuthIntegracaoTokenResult": {
        "type": "object",
        "properties": {
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/AuthIntegracaoToken"
              }
            ],
            "description": "Token gerado. Atenção: os campos desta resposta são snake_case, diferente do resto da API"
          }
        }
      },
      "DomainValidatorError": {
        "type": "object",
        "properties": {
          "errorMessage": {
            "type": "string",
            "nullable": true,
            "description": "Mensagem do erro, em português"
          },
          "field": {
            "type": "string",
            "nullable": true,
            "description": "Campo que causou o erro, quando houver"
          },
          "value": {
            "type": "string",
            "nullable": true,
            "description": "Valor recebido no campo, quando houver"
          }
        }
      },
      "EmpresaConsultaV1ViewModel": {
        "type": "object",
        "properties": {
          "idEmpresa": {
            "type": "integer",
            "format": "int64",
            "description": "Id da empresa, usado nos outros recursos",
            "example": 989
          },
          "cpfCnpj": {
            "type": "string",
            "nullable": true,
            "description": "CPF ou CNPJ da empresa, só números",
            "example": "11222333000181"
          },
          "nomeRazaoSocial": {
            "type": "string",
            "nullable": true,
            "description": "Nome ou razão social"
          },
          "nomeFantasia": {
            "type": "string",
            "nullable": true,
            "description": "Nome fantasia"
          }
        }
      },
      "EmpresaConsultaV1ViewModelListSwaggerResult": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EmpresaConsultaV1ViewModel"
            },
            "nullable": true,
            "description": "Empresas liberadas para a integração"
          }
        }
      },
      "IndicadorPresencialV1": {
        "enum": [
          1,
          2,
          3,
          5,
          9
        ],
        "type": "integer",
        "format": "int32",
        "x-enum-varnames": [
          "Presencial",
          "Internet",
          "Teleatendimento",
          "PresencialForaDoEstabelecimento",
          "OutrosNaoPresencial"
        ],
        "x-enum-descriptions": {
          "1": "Presencial",
          "2": "Internet",
          "3": "Teleatendimento",
          "5": "Presencial, fora do estabelecimento",
          "9": "Outros, não presencial"
        }
      },
      "ModalidadeFreteV1": {
        "enum": [
          0,
          1,
          2,
          3,
          4,
          9
        ],
        "type": "integer",
        "format": "int32",
        "x-enum-varnames": [
          "CIF",
          "FOB",
          "PorContaTerceiros",
          "TransporteProprioPorContaRemetente",
          "TransporteProprioPorContaDestinatario",
          "SemFrete"
        ],
        "x-enum-descriptions": {
          "0": "Por conta do remetente (CIF)",
          "1": "Por conta do destinatário (FOB)",
          "2": "Por conta de terceiros",
          "3": "Transporte próprio, por conta do remetente",
          "4": "Transporte próprio, por conta do destinatário",
          "9": "Sem frete"
        }
      },
      "PedidoAbertoConsultaEspecificaV1ViewModel": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64",
            "description": "Id do pedido"
          },
          "idEmpresa": {
            "type": "integer",
            "format": "int64",
            "description": "Empresa do pedido"
          },
          "data": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "description": "Data indicada no pedido"
          },
          "dataFaturamentoIndicada": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "description": "Data prevista para o faturamento"
          },
          "dataUltimaAlteracao": {
            "type": "string",
            "format": "date-time",
            "description": "Quando o pedido foi alterado pela última vez. Igual a `dataCriacao` se nunca foi alterado"
          },
          "dataCriacao": {
            "type": "string",
            "format": "date-time",
            "description": "Quando o pedido foi criado. É o mesmo momento do campo `data` do aviso do webhook (o texto pode diferir nas últimas casas da fração de segundo)"
          },
          "usuarioCriacao": {
            "type": "string",
            "nullable": true,
            "description": "Usuário que criou o pedido"
          },
          "usuarioUltimaAlteracao": {
            "type": "string",
            "nullable": true,
            "description": "Usuário que alterou o pedido por último"
          },
          "idFinalidade": {
            "type": "integer",
            "format": "int64",
            "nullable": true,
            "description": "Finalidade do pedido"
          },
          "indicadorPresencial": {
            "allOf": [
              {
                "$ref": "#/components/schemas/IndicadorPresencialV1"
              }
            ],
            "description": "Como a venda foi feita"
          },
          "valorDesconto": {
            "type": "number",
            "format": "double",
            "nullable": true,
            "description": "Desconto do pedido, em valor (não em %)"
          },
          "valorFrete": {
            "type": "number",
            "format": "double",
            "description": "Valor do frete"
          },
          "dataEntrega": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "description": "Data prevista de entrega. Datas que representam um dia são a meia-noite do grupo em UTC (com `gmt_offset` -3, o dia 26/10 vem como `2026-10-26T03:00:00Z`)"
          },
          "modalidadeFrete": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ModalidadeFreteV1"
              }
            ],
            "description": "Quem paga o frete"
          },
          "valorSeguro": {
            "type": "number",
            "format": "double",
            "description": "Valor do seguro"
          },
          "valorOutrasDespesas": {
            "type": "number",
            "format": "double",
            "description": "Outras despesas acessórias"
          },
          "valorTotalIpi": {
            "type": "number",
            "format": "double",
            "nullable": true,
            "description": "Total de IPI"
          },
          "valorTotalIcmsSt": {
            "type": "number",
            "format": "double",
            "nullable": true,
            "description": "Total de ICMS por substituição tributária"
          },
          "valorTotalBrutoProduto": {
            "type": "number",
            "format": "double",
            "nullable": true,
            "description": "Soma do `valorTotal` dos itens"
          },
          "valorTotalLiquidoProduto": {
            "type": "number",
            "format": "double",
            "nullable": true,
            "description": "`valorTotalBrutoProduto` − `valorDesconto` + `valorFrete` + `valorSeguro` + `valorOutrasDespesas` + `valorTotalIcmsSt` + `valorTotalIpi`"
          },
          "valorTotalDeduzidoServico": {
            "type": "number",
            "format": "double",
            "nullable": true,
            "description": "Total deduzido dos serviços (impostos retidos)"
          },
          "valorTotalBrutoServico": {
            "type": "number",
            "format": "double",
            "nullable": true,
            "description": "Soma do `valorTotal` dos serviços"
          },
          "valorTotalLiquidoServico": {
            "type": "number",
            "format": "double",
            "nullable": true,
            "description": "`valorTotalBrutoServico` − `valorTotalDeduzidoServico`"
          },
          "valorTotalBruto": {
            "type": "number",
            "format": "double",
            "nullable": true,
            "description": "`valorTotalBrutoProduto` + `valorTotalBrutoServico`. Não inclui desconto, frete, seguro, outras despesas nem impostos"
          },
          "valorTotalLiquido": {
            "type": "number",
            "format": "double",
            "nullable": true,
            "description": "`valorTotalLiquidoProduto` + `valorTotalLiquidoServico`"
          },
          "observacao": {
            "type": "string",
            "nullable": true,
            "description": "Observação do pedido"
          },
          "observacaoInterna": {
            "type": "string",
            "nullable": true,
            "description": "Observação de uso interno da empresa"
          },
          "codigoIBGEServicoPrestado": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "description": "Código IBGE do município onde o serviço é prestado"
          },
          "valorCotacao": {
            "type": "number",
            "format": "double",
            "nullable": true,
            "description": "Cotação do dólar usada no pedido"
          },
          "idTabelaPreco": {
            "type": "integer",
            "format": "int64",
            "nullable": true,
            "description": "Tabela de preço usada"
          },
          "dadosParceiro": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PedidoAbertoDadosParceiroConsultaEspecificaV1ViewModel"
              }
            ],
            "description": "Cliente do pedido"
          },
          "itens": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PedidoAbertoItemConsultaEspecificaV1ViewModel"
            },
            "nullable": true,
            "description": "Produtos do pedido"
          },
          "servicoItens": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PedidoAbertoServicoItemConsultaEspecificaV1ViewModel"
            },
            "nullable": true,
            "description": "Serviços do pedido"
          },
          "formasPagamento": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PedidoAbertoFormaPagamentoConsultaEspecificaV1ViewModel"
            },
            "nullable": true,
            "description": "Formas de pagamento do pedido"
          },
          "dadosEstoque": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PedidoAbertoDadosEstoqueConsultaEspecificaV1ViewModel"
              }
            ],
            "description": "Baixa de estoque. Só vem quando a empresa usa o controle de estoque; nas outras vem `null`"
          },
          "origem": {
            "allOf": [
              {
                "$ref": "#/components/schemas/TipoOrigemPedidoV1"
              }
            ],
            "description": "Por onde o pedido entrou"
          },
          "statusReserva": {
            "allOf": [
              {
                "$ref": "#/components/schemas/StatusPedidoReservaV1"
              }
            ],
            "description": "Situação da reserva dos itens"
          },
          "statusReservaMotivo": {
            "type": "string",
            "nullable": true,
            "description": "Motivo, quando a reserva é reprovada"
          },
          "possuiReservaComSaldo": {
            "type": "boolean",
            "description": "Se há itens com quantidade reservada"
          }
        }
      },
      "PedidoAbertoConsultaEspecificaV1ViewModelSwaggerResult": {
        "type": "object",
        "properties": {
          "data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PedidoAbertoConsultaEspecificaV1ViewModel"
              }
            ],
            "description": "Pedido em aberto"
          }
        }
      },
      "PedidoAbertoDadosEstoqueConsultaEspecificaV1ViewModel": {
        "type": "object",
        "properties": {
          "statusEstoque": {
            "allOf": [
              {
                "$ref": "#/components/schemas/StatusPedidoEstoqueV1"
              }
            ],
            "description": "Situação da baixa de estoque"
          },
          "statusEstoqueDescricao": {
            "type": "string",
            "nullable": true,
            "description": "Nome da situação correspondente ao código, como `NaoIniciado` ou `AprovadoBaixa`. É um identificador, não um texto para exibir ao usuário"
          },
          "motivo": {
            "type": "string",
            "nullable": true,
            "description": "Motivo, quando a baixa é reprovada"
          }
        }
      },
      "PedidoAbertoDadosParceiroConsultaEspecificaV1ViewModel": {
        "type": "object",
        "properties": {
          "idParceiro": {
            "type": "integer",
            "format": "int64",
            "nullable": true,
            "description": "Id do cliente"
          },
          "nomeParceiro": {
            "type": "string",
            "nullable": true,
            "description": "Nome ou razão social do cliente"
          },
          "cpfCnpjParceiro": {
            "type": "string",
            "nullable": true,
            "description": "CPF ou CNPJ do cliente, só números"
          },
          "idEnderecoEntrega": {
            "type": "integer",
            "format": "int64",
            "nullable": true,
            "description": "Endereço de entrega escolhido"
          }
        }
      },
      "PedidoAbertoFormaPagamentoConsultaEspecificaV1ViewModel": {
        "type": "object",
        "properties": {
          "idFormaPagamento": {
            "type": "integer",
            "format": "int64",
            "description": "Id da forma de pagamento"
          },
          "descricaoFormaPagamento": {
            "type": "string",
            "nullable": true,
            "description": "Nome da forma de pagamento"
          },
          "valor": {
            "type": "number",
            "format": "double",
            "description": "Valor pago nessa forma"
          },
          "data": {
            "type": "string",
            "format": "date-time",
            "description": "Data de vencimento desse valor"
          },
          "observacao": {
            "type": "string",
            "nullable": true,
            "description": "Observação"
          },
          "creditoCliente": {
            "type": "boolean",
            "description": "Se o valor usa crédito que o cliente tem na empresa"
          }
        }
      },
      "PedidoAbertoItemConsultaEspecificaV1ViewModel": {
        "type": "object",
        "properties": {
          "idProduto": {
            "type": "integer",
            "format": "int64",
            "description": "Id do produto no sistema"
          },
          "idVariacao": {
            "type": "integer",
            "format": "int64",
            "nullable": true,
            "description": "Id da variação, quando o produto tem variações"
          },
          "quantidade": {
            "type": "number",
            "format": "double",
            "description": "Quantidade vendida"
          },
          "valorUnitario": {
            "type": "number",
            "format": "double",
            "description": "Preço unitário"
          },
          "valorIcmsSt": {
            "type": "number",
            "format": "double",
            "nullable": true,
            "description": "ICMS por substituição tributária do item"
          },
          "valorIpi": {
            "type": "number",
            "format": "double",
            "nullable": true,
            "description": "IPI do item"
          },
          "valorTotal": {
            "type": "number",
            "format": "double",
            "description": "Total do item (`quantidade` × `valorUnitario`), antes do desconto do pedido"
          },
          "idDeposito": {
            "type": "integer",
            "format": "int64",
            "nullable": true,
            "description": "Depósito de onde sai o produto"
          },
          "idVendedor": {
            "type": "integer",
            "format": "int64",
            "nullable": true,
            "description": "Vendedor do item"
          },
          "percentualComissao": {
            "type": "number",
            "format": "double",
            "nullable": true,
            "description": "Comissão do vendedor, em %. `null` quando o item não tem vendedor"
          },
          "valorDolar": {
            "type": "number",
            "format": "double",
            "nullable": true,
            "description": "Preço em dólar, quando o item é cotado em dólar"
          },
          "descricaoAdicional": {
            "type": "string",
            "nullable": true,
            "description": "Complemento da descrição do produto"
          },
          "informacaoAdicional": {
            "type": "string",
            "nullable": true,
            "description": "Informação adicional do item"
          },
          "codigoLoteEspecificado": {
            "type": "string",
            "nullable": true,
            "description": "Lote escolhido, quando o produto controla lote"
          },
          "quantidadeReservada": {
            "type": "number",
            "format": "double",
            "description": "Quantidade já reservada no estoque para este item"
          }
        }
      },
      "PedidoAbertoServicoItemConsultaEspecificaV1ViewModel": {
        "type": "object",
        "properties": {
          "idServico": {
            "type": "integer",
            "format": "int64",
            "description": "Id do serviço"
          },
          "valorUnitario": {
            "type": "number",
            "format": "double",
            "description": "Preço unitário"
          },
          "quantidade": {
            "type": "integer",
            "format": "int32",
            "description": "Quantidade"
          },
          "complemento": {
            "type": "string",
            "nullable": true,
            "description": "Complemento da descrição"
          },
          "valorDeduzidoISSQN": {
            "type": "number",
            "format": "double",
            "nullable": true,
            "description": "ISSQN retido"
          },
          "valorDeduzidoINSS": {
            "type": "number",
            "format": "double",
            "nullable": true,
            "description": "INSS retido"
          },
          "valorDeduzidoIR": {
            "type": "number",
            "format": "double",
            "nullable": true,
            "description": "IR retido"
          },
          "valorDeduzidoCSLL": {
            "type": "number",
            "format": "double",
            "nullable": true,
            "description": "CSLL retida"
          },
          "valorDeduzidoPIS": {
            "type": "number",
            "format": "double",
            "nullable": true,
            "description": "PIS retido"
          },
          "valorDeduzidoCOFINS": {
            "type": "number",
            "format": "double",
            "nullable": true,
            "description": "COFINS retida"
          },
          "valorTotalDeduzido": {
            "type": "number",
            "format": "double",
            "nullable": true,
            "description": "Soma dos impostos retidos"
          },
          "idVendedor": {
            "type": "integer",
            "format": "int64",
            "nullable": true,
            "description": "Vendedor do serviço"
          },
          "percentualComissao": {
            "type": "number",
            "format": "double",
            "nullable": true,
            "description": "Comissão do vendedor, em %"
          },
          "valorTotal": {
            "type": "number",
            "format": "double",
            "description": "Total do serviço, antes das deduções"
          }
        }
      },
      "StatusPedidoEstoqueV1": {
        "enum": [
          0,
          1,
          2,
          3,
          4,
          5,
          10,
          11,
          12,
          13,
          14,
          99
        ],
        "type": "integer",
        "format": "int32",
        "x-enum-varnames": [
          "NaoIniciado",
          "ProcessandoBaixa",
          "AprovadoBaixa",
          "ReprovadoBaixa",
          "AprovadoBaixaRollback",
          "ReprovadoBaixaRollBack",
          "ProcessandoBaixaEstorno",
          "AprovadoBaixaEstorno",
          "ReprovadoBaixaEstorno",
          "AprovadoBaixaEstornoRollback",
          "ReprovadoBaixaEstornoRollback",
          "NaoUtiliza"
        ],
        "x-enum-descriptions": {
          "0": "Não iniciado",
          "1": "Processando a baixa",
          "2": "Baixa aprovada",
          "3": "Baixa reprovada (motivo em `motivo`)",
          "4": "Desfazer da baixa aprovado",
          "5": "Desfazer da baixa reprovado",
          "10": "Processando o estorno da baixa",
          "11": "Estorno da baixa aprovado",
          "12": "Estorno da baixa reprovado",
          "13": "Desfazer do estorno aprovado",
          "14": "Desfazer do estorno reprovado",
          "99": "Empresa não usa o controle de estoque"
        }
      },
      "StatusPedidoReservaV1": {
        "enum": [
          0,
          1,
          2
        ],
        "type": "integer",
        "format": "int32",
        "x-enum-varnames": [
          "Nenhum",
          "Processando",
          "Reprovado"
        ],
        "x-enum-descriptions": {
          "0": "Nenhum",
          "1": "Processando",
          "2": "Reprovado (motivo em `statusReservaMotivo`)"
        }
      },
      "SwaggerErrorResult": {
        "type": "object",
        "properties": {
          "errors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DomainValidatorError"
            },
            "nullable": true,
            "description": "Lista de erros, com a mensagem de cada um"
          },
          "sessionGuid": {
            "type": "string",
            "nullable": true,
            "description": "Identificador da requisição. Informe ao suporte quando pedir ajuda"
          }
        },
        "description": "Corpo das respostas de erro"
      },
      "TipoOrigemPedidoV1": {
        "enum": [
          1,
          2,
          3
        ],
        "type": "integer",
        "format": "int32",
        "x-enum-varnames": [
          "PedidoVenda",
          "ForcaVendaAplicativo",
          "Consignado"
        ],
        "x-enum-descriptions": {
          "1": "Pedido de venda",
          "2": "Força de vendas (aplicativo)",
          "3": "Consignado"
        }
      }
    },
    "securitySchemes": {
      "Authorization": {
        "type": "apiKey",
        "description": "Token gerado em `POST https://production.bredasapi.com.br/overall/auth/integracao` com a chave de integração. Envie no header `Authorization` **sem** o prefixo `Bearer`. Vale 24 horas.",
        "name": "Authorization",
        "in": "header"
      }
    },
    "responses": {
      "BadRequest": {
        "description": "Dados inválidos ou regra de negócio não atendida. A mensagem em `errors` diz o motivo.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/SwaggerErrorResult"
            }
          }
        }
      },
      "Unauthorized": {
        "description": "Token ausente, inválido, expirado ou enviado com o prefixo `Bearer`.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/SwaggerErrorResult"
            },
            "example": {
              "errors": [
                {
                  "errorMessage": "Unauthorized"
                }
              ]
            }
          }
        }
      },
      "TooManyRequests": {
        "description": "Limite de requisições do grupo atingido (até 100 de uma vez; repõe 5 a cada 3 segundos, cerca de 100 por minuto). Espere os segundos do header `Retry-After`; a mensagem também diz quanto esperar.",
        "headers": {
          "Retry-After": {
            "description": "Segundos a esperar antes de tentar de novo",
            "schema": {
              "type": "integer"
            }
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/SwaggerErrorResult"
            },
            "example": {
              "errors": [
                {
                  "errorMessage": "Limite de requisições do plano atingido. Tente novamente em 3 segundos."
                }
              ],
              "sessionGuid": "b28a419684c1432f23b6fddb3d748c51"
            }
          }
        }
      },
      "InternalServerError": {
        "description": "Erro inesperado do nosso lado. Tente de novo; se persistir, fale com o suporte.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/SwaggerErrorResult"
            }
          }
        }
      }
    }
  },
  "security": [
    {
      "Authorization": []
    }
  ],
  "tags": [
    {
      "name": "Autenticação",
      "description": "Troca da chave de integração por um token de acesso. É outro serviço (`/overall`), por isso não tem o botão Testar: a chave nunca deve ir para o navegador."
    },
    {
      "name": "Empresa",
      "description": "Empresas do grupo liberadas para a integração. O `idEmpresa` é usado nos outros recursos."
    },
    {
      "name": "Pedido",
      "description": "Pedidos em aberto (orçamentos). O id chega no aviso do webhook de orçamento criado."
    }
  ]
}
