openapi: 3.0.0
info:
  title: Listar Endossos
  version: 1.0.0
servers:
  - url: https://sauto.hml.bradescoseguros.com.br:443/V2/WSBL-GerenciaCarteiraCsp/service/lista-endossos
    description: Homologação
  - url: https://sauto.dsv.bradescoseguros.com.br:443/V2/WSBL-GerenciaCarteiraCsp/service/lista-endossos
    description: Desenvolvimento
  - url: https://sauto.bradescoseguros.com.br:443/V2/
    description: Local
tags:
  - name: Listar Endossos
    description: Listar Endossos
paths:
 /lista-endossos:
    post:
      tags:
        - Listar Endossos
      summary: Listar Endossos
      operationId: lista-endossos
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ApoliceEndossoParams'
      responses:
        '200':
          description: Operação bem-sucedida
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApoliceEndossoResponse'
        '400':
          description: Requisição inválida
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MensagemErroResponseDTO'
        '403':
          description: Acesso negado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MensagemErroResponseDTO'
        '404':
          description: Recurso não encontrado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MensagemErroResponseDTO'
        '422':
          description: Erro de processamento
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MensagemErroResponseDTO'
        '500':
          description: Erro interno do servidor
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MensagemErroResponseDTO'

components:
  schemas:
    ApoliceEndossoParams:
      type: object
      properties:
        autenticacao:
          $ref: '#/components/schemas/Autenticacao'
        apolice:
          $ref: '#/components/schemas/ApoliceEndossoRequest'
      required:
        - autenticacao
        - apolice
      example:
        autenticacao:
          provedor: "ProvedorExemplo"
          usuario: "usuarioExemplo"
        apolice:
          codigoSucursal: "001"
          numero: "123456"
          item: "001"

    Autenticacao:
      type: object
      properties:
        provedor:
          type: string
          description: Provedor para autenticação
        usuario:
          type: string
          description: Usuário para autenticação
        senha:
          type: string
          description: Senha para autenticação     

    ApoliceEndossoRequest:
      type: object
      properties:
        codigoSucursal:
          type: string
          description: Código da sucursal
        numero:
          type: string
          description: Número da apólice
        item:
          type: string
          description: Código do item

    ApoliceEndossoResponse:
      type: object
      properties:
        codSucursal:
          type: integer
          description: Código da sucursal
        numero:
          type: integer
          description: Número da apólice
        item:
          type: integer
          description: Código do item
        endosso:
          type: array
          items:
            $ref: '#/components/schemas/ApoliceEndossoDetalhe'

    ApoliceEndossoDetalhe:
      type: object
      properties:
        numero:
          type: integer
          description: Número do detalhe
        dataInicioVigencia:
          type: string
          format: date
          description: Data de início da cobertura
        dataRealizada:
          type: string
          format: date
          description: Data em que a ação foi realizada
        alteracoes:
          type: array
          items:
            $ref: '#/components/schemas/ApoliceEndossoAlteracao'
        numeroProposta:
          type: integer
          description: Número da proposta
          example: 12341234
        dataEfetivacaoProposta:
          type: string
          format: date
          description: Data de efetivação da proposta no formato DD/MM/YYYY
          example: "18/06/2025"
        tipoEndosso:
          type: string
          description: |
            Tipo de endosso conforme classificação:
            - E: Endosso SEM movimento de prêmio
            - O: Endosso COM Cobrança
            - S: Endosso COM Restituição
            - C: Endosso de Cancelamento SEM restituição
            - T: Endosso de Cancelamento COM restituição
            - X: Movimento não identificado neste Endosso de Cancelamento
            - Y: Movimento financeiro não identificado neste Endosso
          enum: [E, O, S, C, T, X, Y]
          example: "E"
        descricaoTipoEndosso:
          type: string
          description: |
            Tipo de endosso conforme classificação financeira:
            - E: Endosso SEM movimento de prêmio
            - O: Endosso COM Cobrança
            - S: Endosso COM Restituição
            - C: Endosso de Cancelamento SEM restituição
            - T: Endosso de Cancelamento COM restituição
            - X: Movimento não identificado neste Endosso de Cancelamento
            - Y: Movimento financeiro não identificado neste Endosso
          example: "Endosso SEM movimento de prêmio"

    ApoliceEndossoAlteracao:
      type: object
      properties:
        descricao:
          type: string
          description: Descrição da alteração
        valorAnterior:
          type: string
          description: Valor anterior
        valorAtual:
          type: string
          description: Valor atual

    MensagemErroResponseDTO:
      type: object
      properties:
        cdErro:
          type: integer
        dsErro:
          type: string
      example:
        cdErro: 422
        dsErro: "Mensagem de erro aqui"