openapi: 3.0.0
info:
  title: API Claim Notification - Open Insurance Brasil
  description: |
    API de aviso de sinistro do Open Insurance Brasil - Fase 3.\
    Envia informações do aviso de sinistro manualmente escritas nas instituições transmissoras por seus clientes.\
    Possui segregação entre pessoa natural e pessoa jurídica somente para os endPoints de dados customizáveis de cadastro.\
    Requer consentimento do cliente para todos os 'endpoints'.

    # Orientações
    A `Role` do diretório de participantes relacionada à presente API é a `ICS`.\
    Para todos os `endpoints` desta API é previsto o envio de um `token` através do header `Authorization`.\
    Este `token` deverá estar relacionado ao consentimento (identificado pelo `consentId`) mantido na instituição transmissora dos dados, o qual permitirá a pesquisa e retorno, na API em questão, dos
    dados relacionados ao `consentId` específico.\
    Os dados serão devolvidos na consulta desde que o `consentId` relacionado corresponda a um consentimento válido e com o status `AUTHORISED`.\
    É também necessário que o recurso em questão (aviso de sinistro, etc.) esteja disponível na instituição transmissora (ou seja, sem bloqueios de qualquer natureza e com todas as autorizações/consentimentos já autorizados).\
    Os dados presentes na solicitação de aviso de sinistro devem ser validados contra os dados presentes no campo `claimNotificationInformation` do consentimento. Caso exista uma divergência entre os dados informados na solicitação e no consentimento, a solicitação deve ser rejeitada com um retorno HTTP Status Code 422.
    Além disso, as `permissions` necessárias deverão ter sido solicitadas quando da criação do consentimento relacionado.\
    Relacionamos a seguir as `permissions` necessárias para a consulta de dados em cada `endpoint` da presente API.

    ## Permissions necessárias para a API Claim Notification

    Para cada um dos `paths` desta API, além dos escopos (`scopes`) indicados existem `permissions` que deverão ser observadas: 

    ### `/request/damage`
      - permissions:
        - POST: **CLAIM_NOTIFICATION_REQUEST_DAMAGE_CREATE**
    ### `/request/person`
      - permissions:
        - POST: **CLAIM_NOTIFICATION_REQUEST_PERSON_CREATE**
        
    ## Válidações Semanticas - Entidade não processável - 422
      - 1 - `Idempotência:` Valida se há divergência entre chave de idempotência e informações enviadas (ERRO_IDEMPOTENCIA);
      - 2 - `Não Informado:` Valida itens não explicitamente informados pelo servidor - (NAO_INFORMADO).  
      
  version: 2.0.0
  license:
    name: Apache 2.0
    url: 'http://www.apache.org/licenses/LICENSE-2.0'
  contact:
    name: Governança do Open Insurance Brasil - Especificações
    url: 'https://www.gov.br/susep'
servers:
  - url: 'https://api.seguro.com.br/open-insurance/claim-notification/v2'
    description: Servidor de Produção
  - url: 'https://apih.seguro.com.br/open-insurance/claim-notification/v2'
    description: Servidor de Homologação
tags:
  - name: Claim Notification Damage
    description: Envia dados de solicitação de Aviso de Sinistro para Seguros de Danos
  - name: Claim Notification Person
    description: Envia dados de solicitação de Aviso de Sinistro para Seguros de Pessoas
paths:
  /request/damage/{consentId}:
    post:
      tags:
       - Claim Notification Damage
      summary: Enviar os dados de solicitação de Aviso de Sinistro Danos
      operationId: postClaimNotificationDamage
      description: Método para a criação de solicitação Aviso de Sinistro Danos
      parameters:
        - $ref: '#/components/parameters/consentId'      
        - $ref: '#/components/parameters/Authorization'
        - $ref: '#/components/parameters/xFapiAuthDate'
        - $ref: '#/components/parameters/xFapiCustomerIpAddress'
        - $ref: '#/components/parameters/xFapiInteractionId'
        - $ref: '#/components/parameters/xCustomerUserAgent'
        - $ref: '#/components/parameters/xIdempotencyKey'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateClaimNotificationDamage'
        description: Payload para criação do Aviso de Sinistro Danos.
        required: true
      responses:
        '201':
          $ref: '#/components/responses/201ClaimNotificationDamageCreated'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '405':
          $ref: '#/components/responses/MethodNotAllowed'
        '406':
          $ref: '#/components/responses/NotAcceptable'
        '422':
          $ref: '#/components/responses/UnprocessableEntityClaimNotification'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalServerError'
        default:
          $ref: '#/components/responses/Default'
      security:
        - OpenId:
            - openid
          OAuth2Security:
            - 'consent:consentId'
            - claim-notification
  /request/person/{consentId}:
    post:
      tags:
        - Claim Notification Person
      summary: Enviar dados de solicitação de Aviso de Sinistro Pessoas
      operationId: postClaimNotificationPerson
      description: Método para a criação de solicitação Aviso de Sinistro Pessoas
      parameters:
        - $ref: '#/components/parameters/consentId'
        - $ref: '#/components/parameters/Authorization'
        - $ref: '#/components/parameters/xFapiAuthDate'
        - $ref: '#/components/parameters/xFapiCustomerIpAddress'
        - $ref: '#/components/parameters/xFapiInteractionId'
        - $ref: '#/components/parameters/xCustomerUserAgent'
        - $ref: '#/components/parameters/page'
        - $ref: '#/components/parameters/pageSize'
        - $ref: '#/components/parameters/xIdempotencyKey'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateClaimNotificationPerson'
        description: Payload para criação do Aviso de Sinistro Pessoas.
        required: true
      responses:
        '201':
          $ref: '#/components/responses/201ClaimNotificationPersonCreated'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '405':
          $ref: '#/components/responses/MethodNotAllowed'
        '406':
          $ref: '#/components/responses/NotAcceptable'
        '422':
          $ref: '#/components/responses/UnprocessableEntityClaimNotification'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalServerError'
        default:
          $ref: '#/components/responses/Default'
      security:
        - OpenId:
            - openid
          OAuth2Security:
            - 'consent:consentId'
            - claim-notification
components:
  schemas:
    CreateClaimNotificationDamage:
      type: object
      required:
        - data
      properties:
        data:
          type: object
          description: Objeto contendo dados de sinistro.
          required:
            - documentType
            - occurrenceDate
            - occurrenceDescription
            - insuredObjectId
          properties:
            documentType:
              description: Tipo de Documento Emitido.
              type: string
              enum: [APOLICE_INDIVIDUAL,
                    BILHETE,
                    CERTIFICADO,
                    APOLICE_INDIVIDUAL_AUTOMOVEL,
                    APOLICE_FROTA_AUTOMOVEL,
                    CERTIFICADO_AUTOMOVEL]
            policyId:
              description: 'Número da apólice, conforme regulamentação vigente. Condicional a seleção dos campos 1. Apólices Individual ou 2. Bilhete no campo "Tipo de Documento Emitido"'
              type: string
              maxLength: 60
              example: "111111"
            groupCertificateId: 
              description: Identificador do Certificado (Caso Tipo de Documento Emitido for certificado)
              type: string
              maxLength: 60
            insuredObjectId:
              description: lista de Identificador do Objeto Segurado 
              type: array
              items:  
                type: string
                maxLength: 100
                example: "216731531723"
            occurrenceDate:
              description: Data de Ocorrência do Sinistro
              type: string
              format: date
              maxLength: 10
              example: '2022-01-01'
            occurrenceTime:
              description: Horário de ocorrência do sinistro
              type: string
              pattern: '([0-1][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]'
              example: '22:18:54'
            occurrenceDescription:
              description: Descrição da Ocorrência/Relato da ocorrência
              type: string
              maxLength: 10000
            customData:
              type: object
              properties:
                customerIdentification:
                  type: array
                  items:
                    $ref: '#/components/schemas/CustomInfoData'
                customerQualification:
                  type: array
                  items:
                    $ref: '#/components/schemas/CustomInfoData'
                customerComplimentaryInfo:
                  type: array
                  items:
                    $ref: '#/components/schemas/CustomInfoData'
                businessIdentification:
                  type: array
                  items:
                    $ref: '#/components/schemas/CustomInfoData'
                businessQualification:
                  type: array
                  items:
                    $ref: '#/components/schemas/CustomInfoData'
                businessComplimentaryInfo:
                  type: array
                  items:
                    $ref: '#/components/schemas/CustomInfoData'
                generalQuoteInfo:
                  type: array
                  items:
                    $ref: '#/components/schemas/CustomInfoData'
                riskLocationInfo:
                  type: array
                  items:
                    $ref: '#/components/schemas/CustomInfoData'
                insuredObjects:
                  type: array
                  items:
                    $ref: '#/components/schemas/CustomInfoData'
                beneficiaries:
                  type: array
                  items:
                    $ref: '#/components/schemas/CustomInfoData'
                coverages:
                  type: array
                  items:
                    $ref: '#/components/schemas/CustomInfoData'
                generalClaimInfo:
                  type: array
                  items:
                    $ref: '#/components/schemas/CustomInfoData'
    CreateClaimNotificationPerson:
      type: object
      required:
        - data
      properties:
        data:
          description: Objeto contendo dados de sinistro.
          type: object
          required:
            - documentType
            - occurrenceDate
            - occurrenceDescription
            - requestorIsInsured
            - proposalId
            - insuredObjectId
          properties:
            requestorIsInsured:
                  type: boolean
                  description: O solicitante é o segurado?
                  example: false
            requestor:
              description: | 
                Objeto contendo informações do solicitante.
                Obrigatório caso requestorIsInsured seja false.
              type: object
              required:
                - name
                - documentType
                - documentNumber
              properties:
                name:
                  type: string
                  maxLength: 70
                  pattern: '[\w\W\s]*'
                  example: string
                  description: Nome da Instituição ou da pessoa física que está solicitando o sinistro.
                documentType:
                  type: string
                  enum: [CNPJ,
                          CPF,
                          RG_RE,
                          PASSAPORTE,
                          OUTROS]
                  description: Tipo de documento de identificação do solicitante
                documentTypeOthers:
                  type: string
                  description: Deve ser preenchido caso o tipo de documento informado seja 'OUTROS.'
                documentNumber:
                  type: string
                  maxLength: 20
                  pattern: '[\w\W\s]*'
                  example: '73677831148'
                  description: Número do documento informado.
                phones:
                  type: array
                  items:
                    $ref: '#/components/schemas/RequestorPhone'
                  minItems: 1
                  description: Lista com telefones de contato da pessoa natural
                emails:
                  type: array
                  items:
                    $ref: '#/components/schemas/RequestorEmail'
                  minItems: 1
                  description: Lista e-mails de contato
            claimant:
              description: | 
                Quem é o sinistrado?
                Opcional somente para o Seguro Viagem 
              type: string
              enum: [CONJUGE, 
                    FILHO,
                    SEGURADO]
            documentType:
              description: Tipo de Documento Emitido.
              type: string
              enum: [APOLICE_INDIVIDUAL,
                    BILHETE,
                    CERTIFICADO,
                    APOLICE_INDIVIDUAL_AUTOMOVEL,
                    APOLICE_FROTA_AUTOMOVEL,
                    CERTIFICADO_AUTOMOVEL]
            policyId:
              description: Número da apólice, conforme regulamentação vigente
              type: string
              maxLength: 60
              example: "111111"
            groupCertificateId: 
              description: Identificador do Certificado(Caso Tipo de Documento Emitido for certificado)
              type: string
              maxLength: 60
            insuredObjectId:
              description: lista de Identificador do Objeto Segurado 
              type: array
              items:  
                type: string
                maxLength: 100
                example: "216731531723"
            proposalId:
              description: Identificador da proposta ou certificado
              type: string
              maxLength: 60
              example: "987"
            occurrenceDate:
              description: Data de Ocorrência do Sinistro
              type: string
              format: date
              maxLength: 10
              example: '2022-01-01'
            occurrenceTime:
              description: Horário de ocorrência do sinistro
              type: string
              pattern: '([0-1][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]'
              example: '22:18:54'
            occurrenceDescription:
              description: Descrição da Ocorrência/Relato da ocorrência
              type: string
              maxLength: 10000
            customData:
              type: object
              properties:
                customerIdentification:
                  type: array
                  items:
                    $ref: '#/components/schemas/CustomInfoData'
                customerQualification:
                  type: array
                  items:
                    $ref: '#/components/schemas/CustomInfoData'
                customerComplimentaryInfo:
                  type: array
                  items:
                    $ref: '#/components/schemas/CustomInfoData'
                businessIdentification:
                  type: array
                  items:
                    $ref: '#/components/schemas/CustomInfoData'
                businessQualification:
                  type: array
                  items:
                    $ref: '#/components/schemas/CustomInfoData'
                businessComplimentaryInfo:
                  type: array
                  items:
                    $ref: '#/components/schemas/CustomInfoData'
                generalQuoteInfo:
                  type: array
                  items:
                    $ref: '#/components/schemas/CustomInfoData'
                riskLocationInfo:
                  type: array
                  items:
                    $ref: '#/components/schemas/CustomInfoData'
                insuredObjects:
                  type: array
                  items:
                    $ref: '#/components/schemas/CustomInfoData'
                beneficiaries:
                  type: array
                  items:
                    $ref: '#/components/schemas/CustomInfoData'
                coverages:
                  type: array
                  items:
                    $ref: '#/components/schemas/CustomInfoData'
                generalClaimInfo:
                  type: array
                  items:
                    $ref: '#/components/schemas/CustomInfoData'
    ResponseClaimNotificationDamage:
      type: object
      required:
        - data
      properties:
        data:
          type: object
          description: Objeto contendo dados de sinistro.
          required:
            - documentType
            - occurrenceDate
            - occurrenceDescription
            - protocolNumber
            - protocolDateTime
            - insuredObjectId
          properties:
            protocolNumber:
              description: Identificador da Solicitação do aviso de sinistro, conforme protocolo interno da seguradora avisada.
              type: string
              maxLength: 60
            protocolDateTime:
                description: Data e hora do protocolamento do aviso de sinistro, conforme especificação RFC-3339, formato UTC.
                type: string
                format: date-time
                maxLength: 20
                example: '2021-08-20T08:30:00Z'
            documentType:
              description: Tipo de Documento Emitido.
              type: string
              enum: [APOLICE_INDIVIDUAL,
                    BILHETE,
                    CERTIFICADO,
                    APOLICE_INDIVIDUAL_AUTOMOVEL,
                    APOLICE_FROTA_AUTOMOVEL,
                    CERTIFICADO_AUTOMOVEL]
            policyId:
              description: 'Número da apólice, conforme regulamentação vigente. Condicional a seleção dos campos 1. Apólices Individual ou 2. Bilhete no campo "Tipo de Documento Emitido"'
              type: string
              maxLength: 60
              example: "111111"
            groupCertificateId: 
              description: Identificador do Certificado (Caso Tipo de Documento Emitido for certificado)
              type: string
              maxLength: 60
            insuredObjectId:
              description: lista de Identificador do Objeto Segurado (Caso aplicável)
              type: array
              items:  
                type: string
                maxLength: 100
                example: "216731531723"
            occurrenceDate:
              description: Data de Ocorrência do Sinistro
              type: string
              format: date
              maxLength: 10
              example: '2022-01-01'
            occurrenceTime:
              description: Horário de ocorrência do sinistro
              type: string
              pattern: '([0-1][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]'
              example: '22:18:54'
            occurrenceDescription:
              description: Descrição da Ocorrência/Relato da ocorrência
              type: string
              maxLength: 10000
            customData:
              type: object
              properties:
                customerIdentification:
                  type: array
                  items:
                    $ref: '#/components/schemas/CustomInfoData'
                customerQualification:
                  type: array
                  items:
                    $ref: '#/components/schemas/CustomInfoData'
                customerComplimentaryInfo:
                  type: array
                  items:
                    $ref: '#/components/schemas/CustomInfoData'
                businessIdentification:
                  type: array
                  items:
                    $ref: '#/components/schemas/CustomInfoData'
                businessQualification:
                  type: array
                  items:
                    $ref: '#/components/schemas/CustomInfoData'
                businessComplimentaryInfo:
                  type: array
                  items:
                    $ref: '#/components/schemas/CustomInfoData'
                generalQuoteInfo:
                  type: array
                  items:
                    $ref: '#/components/schemas/CustomInfoData'
                riskLocationInfo:
                  type: array
                  items:
                    $ref: '#/components/schemas/CustomInfoData'
                insuredObjects:
                  type: array
                  items:
                    $ref: '#/components/schemas/CustomInfoData'
                beneficiaries:
                  type: array
                  items:
                    $ref: '#/components/schemas/CustomInfoData'
                coverages:
                  type: array
                  items:
                    $ref: '#/components/schemas/CustomInfoData'
                generalClaimInfo:
                  type: array
                  items:
                    $ref: '#/components/schemas/CustomInfoData'
        links:
          $ref: '#/components/schemas/Links'
    ResponseClaimNotificationPerson:
      type: object
      required:
        - data
      properties:
        data:
          type: object
          description: Objeto contendo dados de sinistro.
          required:
            - documentType
            - occurrenceDate
            - occurrenceDescription
            - requestorIsInsured
            - protocolNumber
            - protocolDateTime
            - insuredObjectId
            - proposalId
          properties:
            protocolNumber:
              description: Identificador da Solicitação do aviso de sinistro, conforme protocolo interno da seguradora avisada.
              type: string
              maxLength: 60
            protocolDateTime:
                description: Data e hora do protocolamento do aviso de sinistro, conforme especificação RFC-3339, formato UTC.
                type: string
                maxLength: 20
                format: date-time
                example: '2021-08-20T08:30:00Z'
            requestorIsInsured:
                  type: boolean
                  description: O solicitante é o segurado?
                  example: false
            requestor:
              description: | 
                Objeto contendo informações do solicitante.
                Obrigatório caso requestorIsInsured seja false.
              type: object
              required:
                - name
                - documentType
                - documentNumber
              properties:
                name:
                  type: string
                  maxLength: 70
                  pattern: '[\w\W\s]*'
                  example: string
                  description: Nome da Instituição ou da pessoa física que está solicitando o sinistro.
                documentType:
                  type: string
                  enum: [CNPJ,
                        CPF,
                        RG_RE,
                        PASSAPORTE,
                        OUTROS]
                  description: Tipo de documento de identificação do solicitante
                documentTypeOthers:
                  type: string
                  description: Deve ser preenchido caso o tipo de documento informado seja 'OUTROS'
                documentNumber:
                  type: string
                  maxLength: 20
                  pattern: '[\w\W\s]*'
                  example: '73677831148'
                  description: Número do documento informado.
                phones:
                  type: array
                  items:
                    $ref: '#/components/schemas/RequestorPhone'
                  minItems: 1
                  description: Lista com telefones de contato da pessoa natural
                emails:
                  type: array
                  items:
                    $ref: '#/components/schemas/RequestorEmail'
                  minItems: 1
                  description: Lista e-mails de contato
            claimant:
              description: | 
                Quem é o sinistrado?
                Opcional somente para o Seguro Viagem 
              type: string
              enum: [CONJUGE, 
                    FILHO,
                    SEGURADO]
            documentType:
              description: Tipo de Documento Emitido.
              type: string
              enum: [APOLICE_INDIVIDUAL,
                    BILHETE,
                    CERTIFICADO,
                    APOLICE_INDIVIDUAL_AUTOMOVEL,
                    APOLICE_FROTA_AUTOMOVEL,
                    CERTIFICADO_AUTOMOVEL]
            policyId:
              description: Número da apólice, conforme regulamentação vigente
              type: string
              maxLength: 60
              example: "111111"
            groupCertificateId: 
              description: Identificador do Certificado(Caso Tipo de Documento Emitido for certificado)
              type: string
              maxLength: 60
            insuredObjectId:
              description: lista de Identificador do Objeto Segurado (Caso aplicável)
              type: array
              items:  
                type: string
                maxLength: 100
                example: "216731531723"
            proposalId:
              description: Identificador da proposta ou certificado
              type: string
              maxLength: 60
              example: "987"
            occurrenceDate:
              description: Data de Ocorrência do Sinistro
              type: string
              format: date
              maxLength: 10
              example: '2022-01-01'
            occurrenceTime:
              description: Horário de ocorrência do sinistro
              type: string
              pattern: '([0-1][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]'
              example: '22:18:54'
            occurrenceDescription:
              description: Descrição da Ocorrência/Relato da ocorrência
              type: string
              maxLength: 10000
            customData:
              type: object
              properties:
                customerIdentification:
                  type: array
                  items:
                    $ref: '#/components/schemas/CustomInfoData'
                customerQualification:
                  type: array
                  items:
                    $ref: '#/components/schemas/CustomInfoData'
                customerComplimentaryInfo:
                  type: array
                  items:
                    $ref: '#/components/schemas/CustomInfoData'
                businessIdentification:
                  type: array
                  items:
                    $ref: '#/components/schemas/CustomInfoData'
                businessQualification:
                  type: array
                  items:
                    $ref: '#/components/schemas/CustomInfoData'
                businessComplimentaryInfo:
                  type: array
                  items:
                    $ref: '#/components/schemas/CustomInfoData'
                generalQuoteInfo:
                  type: array
                  items:
                    $ref: '#/components/schemas/CustomInfoData'
                riskLocationInfo:
                  type: array
                  items:
                    $ref: '#/components/schemas/CustomInfoData'
                insuredObjects:
                  type: array
                  items:
                    $ref: '#/components/schemas/CustomInfoData'
                beneficiaries:
                  type: array
                  items:
                    $ref: '#/components/schemas/CustomInfoData'
                coverages:
                  type: array
                  items:
                    $ref: '#/components/schemas/CustomInfoData'
                generalClaimInfo:
                  type: array
                  items:
                    $ref: '#/components/schemas/CustomInfoData'
        links:
          $ref: '#/components/schemas/Links'
    RequestorEmail:
      type: object
      properties:
        email:
          type: string
          description: Endereço de email
          maxLength: 320
          pattern: '\S+@\S+\.\S+'
          example: nome@br.net
      additionalProperties: false
    RequestorPhone:
      type: object
      properties:
        countryCallingCode:
          type: string
          maxLength: 4
          pattern: '^\d{1,4}$|^NA$'
          example: '55'
          description: Número de DDI (Discagem Direta Internacional) para telefone de acesso ao Cliente - se aplicável
        areaCode:
          $ref: '#/components/schemas/EnumAreaCode'
        number:
          type: string
          maxLength: 11
          pattern: '^([0-9]{8,11})|^NA$'
          example: '29875132'
          description: Número de telefone do cliente
      additionalProperties: false
    EnumAreaCode:
      type: string
      description: Número de DDD (Discagem Direta à Distância) do telefone do cliente - se houver
      enum:
        - '11'
        - '12'
        - '13'
        - '14'
        - '15'
        - '16'
        - '17'
        - '18'
        - '19'
        - '21'
        - '22'
        - '24'
        - '27'
        - '28'
        - '31'
        - '32'
        - '33'
        - '34'
        - '35'
        - '37'
        - '38'
        - '41'
        - '42'
        - '43'
        - '44'
        - '45'
        - '46'
        - '47'
        - '48'
        - '49'
        - '51'
        - '53'
        - '54'
        - '55'
        - '61'
        - '62'
        - '63'
        - '64'
        - '65'
        - '66'
        - '67'
        - '68'
        - '69'
        - '71'
        - '73'
        - '74'
        - '75'
        - '77'
        - '79'
        - '81'
        - '82'
        - '83'
        - '84'
        - '85'
        - '86'
        - '87'
        - '88'
        - '89'
        - '91'
        - '92'
        - '93'
        - '94'
        - '95'
        - '96'
        - '97'
        - '98'
        - '99'
        - NA
    CustomInfoData:
      type: object
      description: Estrutura para identificação e transmissão de dados customizáveis.
      required:
        - fieldId
        - value
      properties:
        fieldId:
          type: string
          pattern: '^[a-zA-Z0-9][a-zA-Z0-9\-]{0,99}$'
          maxLength: 100
          description: Um identificador único usado para identificar o valor transmitido.
          example: "578-psd-71md6971kjh-2d414"
        value:
          description: Valor do campo identificado acima, esse campo pode ser implementado como qualquer tipo de dado (objeto, texto, número, booleano, etc.)
      additionalProperties: false
    ResponseError:
      type: object
      required:
        - errors
      properties:
        errors:
          type: array
          minItems: 1
          maxItems: 13
          items:
            type: object
            required:
              - code
              - title
              - detail
              - requestDateTime
            properties:
              code:
                description: Código de erro específico do endpoint
                type: string
                pattern: '[\w\W\s]*'
                maxLength: 255
              title:
                description: Título legível por humanos deste erro específico
                type: string
                pattern: '[\w\W\s]*'
                maxLength: 255
              detail:
                description: Descrição legível por humanos deste erro específico
                type: string
                pattern: '[\w\W\s]*'
                maxLength: 2048
              requestDateTime:
                description: Data e hora da consulta, conforme especificação RFC-3339, formato UTC.
                type: string
                format: date-time
                pattern: ^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])T(?:[01]\d|2[0123]):(?:[012345]\d):(?:[012345]\d)Z$
                example: '2021-05-21T08:30:00Z'  
            additionalProperties: false
        meta:
          $ref: '#/components/schemas/Meta' 
      additionalProperties: false 
    422ResponseErrorCreateClaimNotification:
      type: object
      required:
        - errors
      properties:
        errors:
          type: array
          minItems: 1
          items:
            type: object
            required:
              - code
              - title
              - detail
              - requestDateTime
            properties:
              code:
                type: string
                enum:
                  - ERRO_IDEMPOTENCIA
                  - NAO_INFORMADO
                example: 'ERRO_IDEMPOTENCIA'
                description: 'Código do erro 422 de Entidade não processada.'
              title:
                type: string
                maxLength: 255
                pattern: '[\w\W\s*]'
                example: 'Tentativa de alteração de requisição já processada'
                description: |
                  - ERRO_IDEMPOTENCIA: Tentativa de alteração de requisição já processada
                  - NAO_INFORMADO: Não informada pelo servidor
              detail:
                type: string
                maxLength: 2048
                pattern: '[\w\W\s*]'
                example: 'Tentativa de alteração de requisição já processada'
                description: |
                  - ERRO_IDEMPOTENCIA: Tentativa de alteração de requisição já processada
                  - NAO_INFORMADO: Não informada pelo servidor 
              requestDateTime:
                description: Data e hora da consulta, conforme especificação RFC-3339, formato UTC.
                type: string
                format: date-time
                pattern: ^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])T(?:[01]\d|2[0123]):(?:[012345]\d):(?:[012345]\d)Z$
                example: '2021-05-21T08:30:00Z'  
          
        meta:
          $ref: '#/components/schemas/Meta'
    XFapiInteractionId:
      type: string
      pattern: '^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}'
      maxLength: 100
      description: Um UID [RFC4122](https://tools.ietf.org/html/rfc4122) usado como um ID de correlação. Se fornecido, o transmissor deve reproduzir" esse valor no cabeçalho de resposta.'
    Links:
      type: object
      required:
        - redirect
      properties:
        redirect:
          description: Campo destinado a disponibilização de links de acesso a outros materiais.
          type: string
          example: 'https://www.abcseguros.com/endorsement?id=000123'
    Meta:
      type: object
      description: Meta informações referente à API requisitada.
      required:
        - totalRecords
        - totalPages
      properties:
        totalRecords:
          type: integer
          format: int32
          description: Número total de registros no resultado
          example: 1
        totalPages:
          type: integer
          format: int32
          description: Número total de páginas no resultado
          example: 1
      additionalProperties: false
  parameters:
    consentId:
      name: consentId
      in: path
      description: |
        O consentId é o identificador único do consentimento a ser revogado e deverá ser um URN - Uniform Resource Name.
      required: true
      schema:
        type: string
        pattern: '^urn:[a-zA-Z0-9][a-zA-Z0-9-]{0,31}:[a-zA-Z0-9()+,\-.:=@;$_!*''%\/?#]+$'
        maxLength: 256
    Authorization:
      name: Authorization
      in: header
      description: Cabeçalho HTTP padrão. Permite que as credenciais sejam fornecidas dependendo do tipo de recurso solicitado
      required: true
      schema:
        type: string
        pattern: '[\w\W\s]*'
        maxLength: 2048
    page:
      name: page
      in: query
      description: Número da página que está sendo requisitada (o valor da primeira página é 1).
      schema:
        type: integer
        default: 1
        minimum: 1
        format: int32
    pageSize:
      name: page-size
      in: query
      description: Quantidade total de registros por páginas.
      schema:
        type: integer
        default: 25
        minimum: 1
        format: int32
        maximum: 1000
    xCustomerUserAgent:
      name: x-customer-user-agent
      in: header
      description: Indica o user-agent que o usuário utiliza.
      required: false
      schema:
        type: string
        pattern: '[\w\W\s]*'
        minLength: 1
        maxLength: 100
    xFapiAuthDate:
      name: x-fapi-auth-date
      in: header
      description: "Data em que o usuário logou pela última vez com o receptor. Representada de acordo com a [RFC7231](https://tools.ietf.org/html/rfc7231).Exemplo: Sun, 10 Sep 2017 19:43:31 UTC"
      required: false
      schema:
        type: string
        pattern: '^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), \d{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) \d{4} \d{2}:\d{2}:\d{2} (GMT|UTC)$'
        minLength: 29
        maxLength: 29
    xFapiCustomerIpAddress:
      name: x-fapi-customer-ip-address
      in: header
      description: O endereço IP do usuário se estiver atualmente logado com o receptor.
      required: false
      schema:
        type: string
        pattern: '[\w\W\s]*'
        minLength: 1
        maxLength: 100
    xFapiInteractionId:
      name: x-fapi-interaction-id
      in: header
      description: | 
        Um UID [RFC4122](https://tools.ietf.org/html/rfc4122) usado como um ID de correlação entre request e response. Campo de geração e envio obrigatório pela receptora (client)
        e o seu valor deve ser “espelhado” pela transmissora (server) no cabeçalho de resposta. Caso não seja recebido ou se for recebido um valor inválido, a transmissora deve gerar 
        um x-fapi-interaction-id e retorná-lo na resposta com o HTTP Status Code 400. A receptora deve acatar o valor recebido da transmissora.'
      required: true
      schema:
        type: string
        pattern: '^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}'
        minLength: 1
        maxLength: 100
    xIdempotencyKey:
      name: x-idempotency-key
      in: header
      description: | 
        Cabeçalho HTTP personalizado. Identificador de solicitação 
        exclusivo para suportar a idempotência.
      required: true
      schema:
        type: string
        minLength: 1
        maxLength: 40
        pattern: ^(?!\s)(.*)(\S)$
  securitySchemes:
    OpenId:
      type: openIdConnect
      openIdConnectUrl: 'https://auth.mockbank.poc.raidiam.io/.well-known/openid-configuration'
    OAuth2Security:
      type: oauth2
      description: Fluxo OAuth necessário para que a receptora tenha acesso aos dados na instituição transmissora. Inclui o processo de redirecionamento e autenticação do usuário a que se referem os dados.
      flows:
        authorizationCode:
          authorizationUrl: 'https://authserver.example/authorization'
          tokenUrl: 'https://authserver.example/token'
          scopes:
            claim-notification: Escopo necessário para acesso à API Claim Notification.
  responses:
    BadRequest:
      description: A requisição foi malformada, omitindo atributos obrigatórios, seja no payload ou através de atributos na URL.
      content:
        application/json; charset=utf-8:
          schema:
            $ref: '#/components/schemas/ResponseError'
    Forbidden:
      description: O token tem escopo incorreto ou uma política de segurança foi violada
      content:
        application/json; charset=utf-8:
          schema:
            $ref: '#/components/schemas/ResponseError'
    InternalServerError:
      description: Ocorreu um erro no gateway da API ou no microsserviço
      content:
        application/json; charset=utf-8:
          schema:
            $ref: '#/components/schemas/ResponseError'
    MethodNotAllowed:
      description: O consumidor tentou acessar o recurso com um método não suportado
      content:
        application/json; charset=utf-8:
          schema:
            $ref: '#/components/schemas/ResponseError'
    NotAcceptable:
      description: A solicitação continha um cabeçalho Accept diferente dos tipos de mídia permitidos ou um conjunto de caracteres diferente de UTF-8
      content:
        application/json; charset=utf-8:
          schema:
            $ref: '#/components/schemas/ResponseError'
    NotFound:
      description: O recurso solicitado não existe ou não foi implementado
      content:
        application/json; charset=utf-8:
          schema:
            $ref: '#/components/schemas/ResponseError'
    UnprocessableEntityClaimNotification:
      description: Seguir as orientações presentes na descrição deste endpoint
      content:
        application/json; charset=utf-8:
          schema:
            $ref: '#/components/schemas/422ResponseErrorCreateClaimNotification'
    TooManyRequests:
      description: A operação foi recusada, pois muitas solicitações foram feitas dentro de um determinado período ou o limite global de requisições concorrentes foi atingido
      content:
        application/json; charset=utf-8:
          schema:
            $ref: '#/components/schemas/ResponseError'
    Unauthorized:
      description: Cabeçalho de autenticação ausente/inválido ou token inválido
      content:
        application/json; charset=utf-8:
          schema:
            $ref: '#/components/schemas/ResponseError'
    Default:
      description: Erro inesperado.
      content:
        application/json; charset=utf-8:
          schema:
            $ref: '#/components/schemas/ResponseError'
    201ClaimNotificationDamageCreated:
      description: Aviso de Sinistro Danos enviado com sucesso
      headers:
        x-fapi-interaction-id:
          schema:
            $ref: '#/components/schemas/XFapiInteractionId'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ResponseClaimNotificationDamage'
    201ClaimNotificationPersonCreated:
      description: Aviso de Sinistro Pessoas enviado com sucesso
      headers:
        x-fapi-interaction-id:
          schema:
            $ref: '#/components/schemas/XFapiInteractionId'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ResponseClaimNotificationPerson'