﻿{
  "openapi": "3.0.0",
  "info": {
    "title": "API Listar Apolices",
    "version": "1.0.0"
  },
  "servers": [
    {
      "url": "https://sauto.dsv.bradescoseguros.com.br:443/V2/WSBL-CotacaoCSP/service/",
      "description": "Desenvolvimento"
    },
    {
      "url": "https://sauto.hml.bradescoseguros.com.br:443/V2/WSBL-CotacaoCSP/service/",
      "description": "Homologação"
    },
    {
      "url": "https://sauto.bradescoseguros.com.br:443/V2/WSBL-CotacaoCSP/service/",
      "description": "Produção"
    }
  ],
  "paths": {
    "/historicoApolices": {
      "post": {
        "tags": [
          "Lista de Apolices"
        ],
        "summary": "Listar apólices",
        "operationId": "listarHistoricoApolices",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/HistoricoApolicesDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Operação bem-sucedida",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HistoricoApolicesVo"
                }
              }
            }
          },
          "400": {
            "description": "Requisição inválida",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MensagemErroVo"
                }
              }
            }
          },
          "404": {
            "description": "Não encontrado",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MensagemErroVo"
                }
              }
            }
          },
          "500": {
            "description": "Erro interno do servidor",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MensagemErroVo"
                }
              }
            }
          },
          "503": {
            "description": "Serviço indisponível",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MensagemErroVo"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    }
  },
  "components": {
    "securitySchemes": {
      "bearerAuth": {
        "type": "http",
        "scheme": "bearer",
        "bearerFormat": "JWT"
      }
    },
    "schemas": {
      "HistoricoApolicesDto": {
        "type": "object",
        "properties": {
          "autenticacao": {
            "$ref": "#/components/schemas/Autenticacao",
            "description": "Dados de autenticação"
          },
          "filtros": {
            "$ref": "#/components/schemas/HistoricoApolicesVoIn",
            "description": "Filtros para histórico de apólices"
          }
        },
        "required": [
          "autenticacao",
          "filtros"
        ]
      },
      "Autenticacao": {
        "type": "object",
        "properties": {
          "provedor": {
            "type": "integer",
            "format": "int64",
            "description": "Provedor de autenticação",
            "example": 1
          },
          "usuario": {
            "type": "string",
            "description": "Nome de usuário",
            "example": "usuario123"
          },
          "senha": {
            "type": "string",
            "description": "Senha do usuário",
            "example": "senhaSegura123"
          }
        },
        "required": [
          "provedor",
          "usuario",
          "senha"
        ]
      },
      "HistoricoApolicesVoIn": {
        "type": "object",
        "properties": {
          "flagEndosso": {
            "type": "boolean",
            "description": "Determina a presença de endosso",
            "example": true
          },
          "nomeSegurado": {
            "type": "string",
            "description": "Nome do segurado",
            "example": "João da Silva"
          },
          "cpfCnpjSegurado": {
            "type": "string",
            "description": "CPF ou CNPJ do segurado",
            "example": "12345678901"
          },
          "placaVeiculo": {
            "type": "string",
            "description": "Placa do veículo",
            "example": "ABC1234"
          },
          "chassiVeiculo": {
            "type": "string",
            "description": "Chassi do veículo",
            "example": "9BWZZZ377VT004251"
          },
          "chaveApolice": {
            "$ref": "#/components/schemas/ChaveApoliceVo"
          },
          "corretor": {
            "$ref": "#/components/schemas/CorretorVo"
          },
          "periodoEmissao": {
            "$ref": "#/components/schemas/PeriodoVo"
          },
          "periodoInicioVigencia": {
            "$ref": "#/components/schemas/PeriodoVo"
          },
          "codigoIdentificacao": {
            "type": "string",
            "description": "Código de identificação",
            "example": "ID123456"
          },
          "situacaoApolice": {
            "type": "string",
            "description": "Situação da apólice",
            "example": "1"
          },
          "codigoProduto": {
            "type": "string",
            "description": "Código do produto",
            "example": "1234"
          },
          "proposta": {
            "type": "string",
            "description": "Proposta",
            "example": "1234567890"
          }
        },
        "required": [
          "situacaoApolice"
        ]
      },
      "ChaveApoliceVo": {
        "type": "object",
        "properties": {
          "sucursalApolice": {
            "type": "integer",
            "description": "Sucursal da apólice",
            "example": 1
          },
          "numeroApolice": {
            "type": "integer",
            "description": "Número da apólice",
            "example": 123456
          },
          "itemApolice": {
            "type": "integer",
            "description": "Item da apólice",
            "example": 1234
          }
        },
        "required": [
          "sucursalApolice",
          "numeroApolice",
          "itemApolice"
        ]
      },
      "CorretorVo": {
        "type": "object",
        "properties": {
          "codigoCpdCorretor": {
            "type": "integer",
            "description": "Código CPD do corretor",
            "example": 12345
          },
          "sucursalCorretor": {
            "type": "integer",
            "description": "Sucursal do corretor",
            "example": 678
          }
        }
      },
      "PeriodoVo": {
        "type": "object",
        "properties": {
          "dataInicial": {
            "type": "string",
            "description": "Data inicial do período",
            "example": "2023-01-01"
          },
          "dataFinal": {
            "type": "string",
            "description": "Data final do período",
            "example": "2023-12-31"
          }
        }
      },
      "HistoricoApolicesVo": {
        "type": "object",
        "properties": {
          "qtdApolices": {
            "$ref": "#/components/schemas/QuantidadeApolicesVo",
            "description": "Quantidade de apólices"
          },
          "historicoApolices": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApoliceModel"
            },
            "description": "Histórico de apólices"
          },
          "mensagemErro": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MensagemErroVo"
            },
            "description": "Mensagens de erro"
          }
        }
      },
      "QuantidadeApolicesVo": {
        "type": "object",
        "properties": {
          "qtdApolices": {
            "type": "integer",
            "description": "Quantidade de apólices",
            "example": 5
          },
          "mensagem": {
            "type": "string",
            "description": "Mensagem associada",
            "example": "Operação realizada com sucesso"
          }
        }
      },
      "ApoliceModel": {
        "type": "object",
        "properties": {
          "flagEndosso": {
            "type": "boolean",
            "description": "Determina presença de endosso",
            "example": true
          },
          "placaVeiculo": {
            "type": "string",
            "description": "Placa do veículo",
            "example": "ABC1234"
          },
          "sucursalApolice": {
            "type": "string",
            "description": "Sucursal da apólice",
            "example": "Sucursal 1"
          },
          "ciaApolice": {
            "type": "string",
            "description": "Companhia da apólice",
            "example": "Companhia X"
          },
          "ramoApolice": {
            "type": "string",
            "description": "Ramo da apólice",
            "example": "Ramo Y"
          },
          "numeroApolice": {
            "type": "string",
            "description": "Número da apólice",
            "example": "123456789"
          },
          "itemApolice": {
            "type": "string",
            "description": "Item da apólice",
            "example": "Item 1"
          },
          "proposta": {
            "type": "string",
            "description": "Proposta da apólice",
            "example": "Proposta 123"
          },
          "dataEmissao": {
            "type": "string",
            "format": "date",
            "description": "Data de emissão da apólice",
            "example": "2023-01-01"
          },
          "dataInicioVigencia": {
            "type": "string",
            "format": "date",
            "description": "Data de início de vigência da apólice",
            "example": "2023-01-01"
          },
          "dataFimVigencia": {
            "type": "string",
            "format": "date",
            "description": "Data de fim de vigência da apólice",
            "example": "2024-01-01"
          },
          "codigoCpdCorretor": {
            "type": "string",
            "description": "Código CPD do corretor",
            "example": "CPD123"
          },
          "nomeSegurado": {
            "type": "string",
            "description": "Nome do segurado",
            "example": "João da Silva"
          },
          "chassiVeiculo": {
            "type": "string",
            "description": "Chassi do veículo",
            "example": "9BWZZZ377VT004251"
          },
          "cpfCnpjSegurado": {
            "type": "string",
            "description": "CPF ou CNPJ do segurado",
            "example": "123.456.789-00"
          },
          "cpfCnpjCorretor": {
            "type": "string",
            "description": "CPF ou CNPJ do corretor",
            "example": "987.654.321-00"
          },
          "codigoIdentificacao": {
            "type": "string",
            "description": "Código de identificação",
            "example": "ID123"
          },
          "statusApolice": {
            "type": "string",
            "description": "Status da apólice",
            "example": "Ativa"
          },
          "codigoProduto": {
            "type": "string",
            "description": "Código do produto",
            "example": "PROD123"
          },
          "nomeProduto": {
            "type": "string",
            "description": "Nome do produto",
            "example": "Produto X"
          },
          "descricaoStatusApolice": {
            "type": "string",
            "description": "Descrição do status da apólice",
            "example": "Apólice ativa"
          },
          "motivoEncerramento": {
            "type": "string",
            "description": "Motivo de encerramento da apólice",
            "example": "Encerramento por término de vigência"
          }
        }
      },
      "MensagemErroVo": {
        "type": "object",
        "properties": {
          "cdErro": {
            "type": "integer"
          },
          "dsErro": {
            "type": "string"
          }
        }
      }
    }
  }
}