openapi: 3.0.0
info:
  title: API de ingestão da coleta de métricas
  description: |
    API que recebe os logs da troca de dados para geração de métricas.

    A API de reporte fornece operações que permitem a inclusão dos
    registros de chamada na plataforma de Coleta de Métricas.

    A inclusão de reportes pode ser feita de maneira individual ou em
    lote, conforme respectivas documentações.

    Os dados que são inseridos na API de Reporte são sempre
    processados de maneira assíncrona, e sua persistência se utiliza
    de consistência posterior (eventual consistency), portanto, um
    registro tem um tempo de processamento em que ele não estará
    disponível para consulta até que ele seja persistido.

    ## Segurança

    A autenticação das requisições se dará com base na assinatura do body das requisições.

    Requisitos:

      * Organização devidamente registrada no diretório
      * Certificado de assinatura devidamente cadastrado no diretório a nivel de organização

    A validação da autenticidade será baseada no certificado de assinatura do body que
    será validado no keystore do diretório.

    Todas as requisições deveram ser enviadas com o Content-Type: application/jwt.<br />
    Para assinar uma requisição a organização deverá:
      1) Identifique a chave privada e o certificado de assinatura correspondente a serem usados para assinar o payload
      2) Geração do JOSE Header

          Montar um JSON com os campos obrigatórios:
          * **alg** - Algoritmo que será usado para assinar o JWS. Deve ser preenchido com o valor **"PS256"**.
          * **kid** - Valor do identificador da chave utilizado para a assinatura.
          * **typ** - Tipo de conteúdo usado para trafegar mensagens na API. Deve ser preenchido com o valor **"JWT"**.

          E converter para Base64Url seguindo o padrão especificado na [RFC4648](https://datatracker.ietf.org/doc/html/rfc4648#section-5).
      3) Montando o payload JWS

          Body da requisição no formato JSON convertido para Base64Url seguindo o padrão especificado na [RFC4648](https://datatracker.ietf.org/doc/html/rfc4648#section-5).

      4) Gerar a assinatura digital conforme especificado na [RFC7515](https://datatracker.ietf.org/doc/html/rfc7515).
      5) Juntar as partes concatenando com ponto (.) para formar o JWS

          **JWS = Base64url(JOSEHeader) + "." + Base64url(payload JWT) + "." + Base64url(digital signature)**

    A assinatura do body deve seguir o padrão JWS definido na [RFC7515](https://datatracker.ietf.org/doc/html/rfc7515).

    ## Grupos de endpoints

    ### Fase 1
      - /open-insurance/channels/v1/branches
      - /open-insurance/channels/v1/electronic-channels
      - /open-insurance/channels/v1/intermediary/{countrySubDivision}
      - /open-insurance/channels/v1/phone-channels
      - /open-insurance/channels/v1/referenced-network/{countrySubDivision}/{serviceType}
      - /open-insurance/products-services/v1/assistance-general-assets
      - /open-insurance/products-services/v1/auto-extended-warranty
      - /open-insurance/products-services/v1/auto-insurance/{commercializationArea}/{fipeCode}/{year}
      - /open-insurance/products-services/v1/business
      - /open-insurance/products-services/v1/capitalization-title
      - /open-insurance/products-services/v1/condominium
      - /open-insurance/products-services/v1/cyber-risk
      - /open-insurance/products-services/v1/directors-officers-liability
      - /open-insurance/products-services/v1/domestic-credit
      - /open-insurance/products-services/v1/engineering
      - /open-insurance/products-services/v1/environmental-liability
      - /open-insurance/products-services/v1/equipment-breakdown
      - /open-insurance/products-services/v1/errors-omissions-liability
      - /open-insurance/products-services/v1/export-credit
      - /open-insurance/products-services/v1/extended-warranty
      - /open-insurance/products-services/v1/financial-risk
      - /open-insurance/products-services/v1/general-liability
      - /open-insurance/products-services/v1/global-banking
      - /open-insurance/products-services/v1/home-insurance/commercializationArea/{commercializationArea}
      - /open-insurance/products-services/v1/housing
      - /open-insurance/products-services/v1/life-pension
      - /open-insurance/products-services/v1/lost-profit
      - /open-insurance/products-services/v1/named-operational-risks
      - /open-insurance/products-services/v1/pension-plan
      - /open-insurance/products-services/v1/person
      - /open-insurance/products-services/v1/private-guarantee
      - /open-insurance/products-services/v1/public-guarantee
      - /open-insurance/products-services/v1/rent-guarantee
      - /open-insurance/products-services/v1/rural
      - /open-insurance/products-services/v1/stop-loss
      - /open-insurance/products-services/v1/transport

    ### Fase 2
      - /open-insurance/consents/v1/consents
      - /open-insurance/consents/v1/consents/{consentId}
      - /open-insurance/resources/v1/resources
      - /open-insurance/customers/v1/personal/identifications
      - /open-insurance/customers/v1/personal/qualifications
      - /open-insurance/customers/v1/personal/complimentary-information
      - /open-insurance/customers/v1/business/identifications
      - /open-insurance/customers/v1/business/qualifications
      - /open-insurance/customers/v1/business/complimentary-information
      - /open-insurance/insurance-acceptance-and-branches-abroad/v1/insurance-acceptance-and-branches-abroad
      - /open-insurance/insurance-acceptance-and-branches-abroad/v1/insurance-acceptance-and-branches-abroad/{policyId}/policy-info
      - /open-insurance/insurance-acceptance-and-branches-abroad/v1/insurance-acceptance-and-branches-abroad/{policyId}/premium
      - /open-insurance/insurance-acceptance-and-branches-abroad/v1/insurance-acceptance-and-branches-abroad/{policyId}/claim
      - /open-insurance/insurance-auto/v1/insurance-auto
      - /open-insurance/insurance-auto/v1/insurance-auto/{policyId}/policy-info
      - /open-insurance/insurance-auto/v1/insurance-auto/{policyId}/premium
      - /open-insurance/insurance-auto/v1/insurance-auto/{policyId}/claim
      - /open-insurance/insurance-financial-risk/v1/insurance-financial-risk
      - /open-insurance/insurance-financial-risk/v1/insurance-financial-risk/{policyId}/policy-info
      - /open-insurance/insurance-financial-risk/v1/insurance-financial-risk/{policyId}/premium
      - /open-insurance/insurance-financial-risk/v1/insurance-financial-risk/{policyId}/claim
      - /open-insurance/insurance-patrimonial/v1/insurance-patrimonial
      - /open-insurance/insurance-patrimonial/v1/insurance-patrimonial/{policyId}/policy-info
      - /open-insurance/insurance-patrimonial/v1/insurance-patrimonial/{policyId}/premium
      - /open-insurance/insurance-patrimonial/v1/insurance-patrimonial/{policyId}/claim
      - /open-insurance/insurance-responsibility/v1/insurance-responsibility
      - /open-insurance/insurance-responsibility/v1/insurance-responsibility/{policyId}/policy-info
      - /open-insurance/insurance-responsibility/v1/insurance-responsibility/{policyId}/premium
      - /open-insurance/insurance-responsibility/v1/insurance-responsibility/{policyId}/claim
      - /open-insurance/insurance-rural/v1/insurance-rural
      - /open-insurance/insurance-rural/v1/insurance-rural/{policyId}/policy-info
      - /open-insurance/insurance-rural/v1/insurance-rural/{policyId}/premium
      - /open-insurance/insurance-rural/v1/insurance-rural/{policyId}/claim
      - /open-insurance/insurance-housing/v1/insurance-housing
      - /open-insurance/insurance-housing/v1/insurance-housing/{policyId}/policy-info
      - /open-insurance/insurance-housing/v1/insurance-housing/{policyId}/premium
      - /open-insurance/insurance-housing/v1/insurance-housing/{policyId}/claim
      - /open-insurance/insurance-transport/v1/insurance-transport
      - /open-insurance/insurance-transport/v1/insurance-transport/{policyId}/policy-info
      - /open-insurance/insurance-transport/v1/insurance-transport/{policyId}/premium
      - /open-insurance/insurance-transport/v1/insurance-transport/{policyId}/claim
      - /open-insurance/insurance-capitalization-title/v1/insurance-capitalization-title
      - /open-insurance/insurance-capitalization-title/v1/insurance-capitalization-title/plans
      - /open-insurance/insurance-capitalization-title/v1/insurance-capitalization-title/{planId}/plan-info
      - /open-insurance/insurance-capitalization-title/v1/insurance-capitalization-title/{planId}/events
      - /open-insurance/insurance-capitalization-title/v1/insurance-capitalization-title/{planId}/settlements
      - /open-insurance/insurance-financial-assistance/v1/insurance-financial-assistance/contracts
      - /open-insurance/insurance-financial-assistance/v1/insurance-financial-assistance/{contractId}/contract-info
      - /open-insurance/insurance-financial-assistance/v1/insurance-financial-assistance/{contractId}/movements
      - /open-insurance/insurance-life-pension/v1/insurance-life-pension/contracts
      - /open-insurance/insurance-life-pension/v1/insurance-life-pension
      - /open-insurance/insurance-life-pension/v1/insurance-life-pension/{pensionIdentification}/contract-info
      - /open-insurance/insurance-life-pension/v1/insurance-life-pension/{pensionIdentification}/movements
      - /open-insurance/insurance-life-pension/v1/insurance-life-pension/{pensionIdentification}/portabilities
      - /open-insurance/insurance-life-pension/v1/insurance-life-pension/{pensionIdentification}/withdrawals
      - /open-insurance/insurance-life-pension/v1/insurance-life-pension/{pensionIdentification}/claim
      - /open-insurance/insurance-pension-plan/v1/insurance-pension-plan
      - /open-insurance/insurance-pension-plan/v1/insurance-pension-plan/contracts
      - /open-insurance/insurance-pension-plan/v1/insurance-pension-plan/{pensionIdentification}/contract-info
      - /open-insurance/insurance-pension-plan/v1/insurance-pension-plan/{pensionIdentification}/movements
      - /open-insurance/insurance-pension-plan/v1/insurance-pension-plan/{pensionIdentification}/portabilities
      - /open-insurance/insurance-pension-plan/v1/insurance-pension-plan/{pensionIdentification}/withdrawals
      - /open-insurance/insurance-pension-plan/v1/insurance-pension-plan/{pensionIdentification}/claim
      - /open-insurance/insurance-person/v1/insurance-person
      - /open-insurance/insurance-person/v1/insurance-person/{policyId}/policy-info
      - /open-insurance/insurance-person/v1/insurance-person/{policyId}/claim
      - /open-insurance/insurance-person/v1/insurance-person/{policyId}/premium

    ### Fase 3
      - /open-insurance/claim-notification/v1/request/damage/{consentId}
      - /open-insurance/claim-notification/v1/request/person/{consentId}
      - /open-insurance/endorsement/v1/request/{consentId}
      - /open-insurance/quote-patrimonial/v1/lead/request
      - /open-insurance/quote-patrimonial/v1/lead/request/{consentId}
      - /open-insurance/quote-patrimonial/v1/home/request/{consentId}/quote-status
      - /open-insurance/quote-patrimonial/v1/home/request
      - /open-insurance/quote-patrimonial/v1/home/request/{consentId}
      - /open-insurance/quote-patrimonial/v1/condominium/request/{consentId}/quote-status
      - /open-insurance/quote-patrimonial/v1/condominium/request
      - /open-insurance/quote-patrimonial/v1/condominium/request/{consentId}
      - /open-insurance/quote-patrimonial/v1/business/request/{consentId}/quote-status
      - /open-insurance/quote-patrimonial/v1/business/request
      - /open-insurance/quote-patrimonial/v1/business/request/{consentId}
      - /open-insurance/quote-patrimonial/v1/diverse-risks/request/{consentId}/quote-status
      - /open-insurance/quote-patrimonial/v1/diverse-risks/request
      - /open-insurance/quote-patrimonial/v1/diverse-risks/request/{consentId}
      - /open-insurance/quote-responsibility/v1/lead/request
      - /open-insurance/quote-responsibility/v1/lead/request/{consentId}
      - /open-insurance/quote-financial-risk/v1/lead/request
      - /open-insurance/quote-financial-risk/v1/lead/request/{consentId}
      - /open-insurance/quote-acceptance-and-branches-abroad/v1/lead/request
      - /open-insurance/quote-acceptance-and-branches-abroad/v1/lead/request/{consentId}
      - /open-insurance/quote-rural/v1/lead/request
      - /open-insurance/quote-rural/v1/lead/request/{consentId}
      - /open-insurance/quote-auto/v1/lead/request
      - /open-insurance/quote-auto/v1/lead/request/{consentId}
      - /open-insurance/quote-auto/v1/request
      - /open-insurance/quote-auto/v1/request/{consentId}/quote-status
      - /open-insurance/quote-auto/v1/request/{consentId}
      - /open-insurance/quote-transport/v1/lead/request
      - /open-insurance/quote-transport/v1/lead/request/{consentId}
      - /open-insurance/quote-housing/v1/lead/request
      - /open-insurance/quote-housing/v1/lead/request/{consentId}
      - /open-insurance/quote-capitalization-title/v1/lead/request
      - /open-insurance/quote-capitalization-title/v1/lead/request/{consentId}
      - /open-insurance/quote-capitalization-title/v1/request
      - /open-insurance/quote-capitalization-title/v1/request/{consentId}/quote-status
      - /open-insurance/quote-capitalization-title/v1/request/{consentId}
      - /open-insurance/quote-capitalization-title/v1/raffle/request
      - /open-insurance/quote-person/v1/lead/request
      - /open-insurance/quote-person/v1/lead/request/{consentId}
      - /open-insurance/quote-person/v1/life/request
      - /open-insurance/quote-person/v1/life/request/{consentId}/quote-status
      - /open-insurance/quote-person/v1/life/request/{consentId}
      - /open-insurance/quote-person/v1/travel/request
      - /open-insurance/quote-person/v1/travel/request/{consentId}/quote-status
      - /open-insurance/quote-person/v1/travel/request/{consentId}
      - /open-insurance/contract-life-pension/v1/lead/request
      - /open-insurance/contract-life-pension/v1/lead/request/{consentId}
      - /open-insurance/contract-life-pension/v1/request
      - /open-insurance/contract-life-pension/v1/request/{consentId}/quote-status
      - /open-insurance/contract-life-pension/v1/request/{consentId}
      - /open-insurance/withdrawal/v1/lead/request
      - /open-insurance/withdrawal/v1/pension/request
      - /open-insurance/withdrawal/v1/capitalization-title/request
      - /open-insurance/webhook/v1/quote/{versionApi}/request/{consentId}/quote-status
      - /open-insurance/webhook/v1/products-services/{authorisationServerId}/{versionApi}/capitalization-title
      - /open-insurance/webhook/v1/quote-capitalization-title/{versionApi}/request/{consentId}/quote-status
      - /open-insurance/webhook/v1/dynamic-fields/{authorisationServerId}/{versionApi}/damage-and-person
      - /open-insurance/webhook/v1/dynamic-fields/{authorisationServerId}/{versionApi}/capitalization-title

    ### Fases 2 e 3
      - /open-insurance/consents/v2/consents
      - /open-insurance/consents/v2/consents/{consentId}
      - /open-insurance/resources/v2/resources

  version: 1.0.13

servers:
  - url: 'https://ingestion-api.opinbrasil.com.br'
    description: Servidor de Producao
  - url: 'https://ingestion-api-sandbox.opinbrasil.com.br'
    description: Servidor de Homologacao


paths:
  /report-api/v1/server-event:
    post:
      summary: Inclusão unitária de reporte pelo servidor
      description: Inclusão de reporte individual na plataforma por um participante no papel de transmissor (lado que recebeu a chamada).
      operationId: reportServerEvent
      requestBody:
        content:
          application/jwt:
            schema:
              $ref: "#/components/schemas/eventBody"
      responses:
        "200":
          $ref: "#/components/responses/reportEventResponse200"
        "400":
          $ref: "#/components/responses/reportEventResponse400"
        "401":
          $ref: "#/components/responses/reportEventResponse401"
        "406":
          $ref: "#/components/responses/reportEventResponse406"
        "415":
          $ref: "#/components/responses/reportEventResponse415"
        "500":
          $ref: "#/components/responses/reportEventResponse500"
  /report-api/v1/server-batch:
    post:
      summary: Inclusão em massa de reportes pelo transmissor
      description: |
        Inclusão de reportes em massa na plataforma. Ao enviar um lote de reportes,
        a plataforma vai fazer o processo de validação de cada reporte de maneira síncrona
        e devolver o resultado dessa validação na resposta, sendo que o status HTTP de
        retorno vai refletir esse resultado (vide documentação de cada status de retorno).
        No entanto, o processamento de cada reporte ocorrerá de maneira assíncrona.

        O limite de registros de cada lote é 5.000 registros.
      operationId: reportServerBatch
      requestBody:
        content:
          application/jwt:
            schema:
              $ref: "#/components/schemas/batchBody"
      responses:
        "200":
          $ref: "#/components/responses/reportBatchResponse200"
        "207":
          $ref: "#/components/responses/reportBatchResponse207"
        "400":
          $ref: "#/components/responses/reportBatchResponse400"
        "401":
          $ref: "#/components/responses/reportBatchResponse401"
        "406":
          $ref: "#/components/responses/reportBatchResponse406"
        "413":
          $ref: "#/components/responses/reportBatchResponse413"
        "415":
          $ref: "#/components/responses/reportBatchResponse415"
        "500":
          $ref: "#/components/responses/reportBatchResponse500"
  /report-api/v1/client-event:
    post:
      summary: Inclusão unitária de reporte pelo cliente
      description: Inclusão de reporte individual na plataforma por um participante no papel de receptor (lado que iniciou a chamada).
      operationId: reportClientEvent
      requestBody:
        content:
          application/jwt:
            schema:
              $ref: "#/components/schemas/eventBody"
      responses:
        "200":
          $ref: "#/components/responses/reportEventResponse200"
        "400":
          $ref: "#/components/responses/reportEventResponse400"
        "401":
          $ref: "#/components/responses/reportEventResponse401"
        "406":
          $ref: "#/components/responses/reportEventResponse406"
        "415":
          $ref: "#/components/responses/reportEventResponse415"
        "500":
          $ref: "#/components/responses/reportEventResponse500"
  /report-api/v1/client-batch:
    post:
      summary: Inclusão em massa de reportes pelo lado do cliente (iniciador de chamada)
      description: |
        Inclusão de reportes em massa na plataforma. Ao enviar um lote de reportes, a plataforma
        vai fazer o processo de validação de cada reporte de maneira síncrona e devolver o resultado
        dessa validação na resposta, sendo que o status HTTP de retorno vai refletir esse resultado
        (vide documentação de cada status de retorno). No entanto, o processamento de cada reporte
        ocorrerá de maneira assíncrona.

        O limite de registros de cada lote é de 5.000 registros.
      operationId: reportClientBatch
      requestBody:
        content:
          application/jwt:
            schema:
              $ref: "#/components/schemas/batchBody"
      responses:
        "200":
          $ref: "#/components/responses/reportBatchResponse200"
        "207":
          $ref: "#/components/responses/reportBatchResponse207"
        "400":
          $ref: "#/components/responses/reportBatchResponse400"
        "401":
          $ref: "#/components/responses/reportBatchResponse401"
        "406":
          $ref: "#/components/responses/reportBatchResponse406"
        "413":
          $ref: "#/components/responses/reportBatchResponse413"
        "415":
          $ref: "#/components/responses/reportBatchResponse415"
        "500":
          $ref: "#/components/responses/reportBatchResponse500"
components:
  parameters:
    authorizationParameter:
      name: Authorization
      in: header
      description: Token de acesso
      required: true
      schema:
        type: string
      example: "Bearer 9fu19ef0i12je0ifj12102ijf0i2je"
  schemas:
    reportBody:
      type: object
      properties:
        reportId:
          type: string
          example: d12eid123d123dnodn2i3
        fapiInteractionId:
          type: string
          description: |
            Um UID [RFC4122](https://tools.ietf.org/html/rfc4122).

            Restrição: obrigatório para os endpoints com exceção da fase 1.
          example: "731d7aa0-09c3-4fa5-b024-905934d794e7"
          pattern: '^[a-zA-Z0-9][a-zA-Z0-9\\-]{0,99}$'
          minLength: 1
          maxLength: 100
        endpoint:
          type: string
          example: "/open-insurance/insurance-rural/v1/insurance-rural/{policyId}/claim"
          enum:
            - /open-insurance/channels/v1/branches
            - /open-insurance/channels/v1/electronic-channels
            - /open-insurance/channels/v1/intermediary/{countrySubDivision}
            - /open-insurance/channels/v1/phone-channels
            - /open-insurance/channels/v1/referenced-network/{countrySubDivision}/{serviceType}
            - /open-insurance/products-services/v1/assistance-general-assets
            - /open-insurance/products-services/v1/auto-extended-warranty
            - /open-insurance/products-services/v1/auto-insurance/{commercializationArea}/{fipeCode}/{year}
            - /open-insurance/products-services/v1/business
            - /open-insurance/products-services/v1/capitalization-title
            - /open-insurance/products-services/v1/condominium
            - /open-insurance/products-services/v1/cyber-risk
            - /open-insurance/products-services/v1/directors-officers-liability
            - /open-insurance/products-services/v1/domestic-credit
            - /open-insurance/products-services/v1/engineering
            - /open-insurance/products-services/v1/environmental-liability
            - /open-insurance/products-services/v1/equipment-breakdown
            - /open-insurance/products-services/v1/errors-omissions-liability
            - /open-insurance/products-services/v1/export-credit
            - /open-insurance/products-services/v1/extended-warranty
            - /open-insurance/products-services/v1/financial-risk
            - /open-insurance/products-services/v1/general-liability
            - /open-insurance/products-services/v1/global-banking
            - /open-insurance/products-services/v1/home-insurance/commercializationArea/{commercializationArea}
            - /open-insurance/products-services/v1/housing
            - /open-insurance/products-services/v1/life-pension
            - /open-insurance/products-services/v1/lost-profit
            - /open-insurance/products-services/v1/named-operational-risks
            - /open-insurance/products-services/v1/pension-plan
            - /open-insurance/products-services/v1/person
            - /open-insurance/products-services/v1/private-guarantee
            - /open-insurance/products-services/v1/public-guarantee
            - /open-insurance/products-services/v1/rent-guarantee
            - /open-insurance/products-services/v1/rural
            - /open-insurance/products-services/v1/stop-loss
            - /open-insurance/products-services/v1/transport
            - /open-insurance/consents/v1/consents
            - /open-insurance/consents/v1/consents/{consentId}
            - /open-insurance/resources/v1/resources
            - /open-insurance/customers/v1/personal/identifications
            - /open-insurance/customers/v1/personal/qualifications
            - /open-insurance/customers/v1/personal/complimentary-information
            - /open-insurance/customers/v1/business/identifications
            - /open-insurance/customers/v1/business/qualifications
            - /open-insurance/customers/v1/business/complimentary-information
            - /open-insurance/insurance-acceptance-and-branches-abroad/v1/insurance-acceptance-and-branches-abroad
            - /open-insurance/insurance-acceptance-and-branches-abroad/v1/insurance-acceptance-and-branches-abroad/{policyId}/policy-info
            - /open-insurance/insurance-acceptance-and-branches-abroad/v1/insurance-acceptance-and-branches-abroad/{policyId}/premium
            - /open-insurance/insurance-acceptance-and-branches-abroad/v1/insurance-acceptance-and-branches-abroad/{policyId}/claim
            - /open-insurance/insurance-auto/v1/insurance-auto
            - /open-insurance/insurance-auto/v1/insurance-auto/{policyId}/policy-info
            - /open-insurance/insurance-auto/v1/insurance-auto/{policyId}/premium
            - /open-insurance/insurance-auto/v1/insurance-auto/{policyId}/claim
            - /open-insurance/insurance-financial-risk/v1/insurance-financial-risk
            - /open-insurance/insurance-financial-risk/v1/insurance-financial-risk/{policyId}/policy-info
            - /open-insurance/insurance-financial-risk/v1/insurance-financial-risk/{policyId}/premium
            - /open-insurance/insurance-financial-risk/v1/insurance-financial-risk/{policyId}/claim
            - /open-insurance/insurance-patrimonial/v1/insurance-patrimonial
            - /open-insurance/insurance-patrimonial/v1/insurance-patrimonial/{policyId}/policy-info
            - /open-insurance/insurance-patrimonial/v1/insurance-patrimonial/{policyId}/premium
            - /open-insurance/insurance-patrimonial/v1/insurance-patrimonial/{policyId}/claim
            - /open-insurance/insurance-responsibility/v1/insurance-responsibility
            - /open-insurance/insurance-responsibility/v1/insurance-responsibility/{policyId}/policy-info
            - /open-insurance/insurance-responsibility/v1/insurance-responsibility/{policyId}/premium
            - /open-insurance/insurance-responsibility/v1/insurance-responsibility/{policyId}/claim
            - /open-insurance/insurance-rural/v1/insurance-rural
            - /open-insurance/insurance-rural/v1/insurance-rural/{policyId}/policy-info
            - /open-insurance/insurance-rural/v1/insurance-rural/{policyId}/premium
            - /open-insurance/insurance-rural/v1/insurance-rural/{policyId}/claim
            - /open-insurance/insurance-housing/v1/insurance-housing
            - /open-insurance/insurance-housing/v1/insurance-housing/{policyId}/policy-info
            - /open-insurance/insurance-housing/v1/insurance-housing/{policyId}/premium
            - /open-insurance/insurance-housing/v1/insurance-housing/{policyId}/claim
            - /open-insurance/insurance-transport/v1/insurance-transport
            - /open-insurance/insurance-transport/v1/insurance-transport/{policyId}/policy-info
            - /open-insurance/insurance-transport/v1/insurance-transport/{policyId}/premium
            - /open-insurance/insurance-transport/v1/insurance-transport/{policyId}/claim
            - /open-insurance/claim-notification/v1/request/damage/{consentId}
            - /open-insurance/claim-notification/v1/request/person/{consentId}
            - /open-insurance/endorsement/v1/request/{consentId}
            - /open-insurance/quote-patrimonial/v1/lead/request
            - /open-insurance/quote-patrimonial/v1/lead/request/{consentId}
            - /open-insurance/quote-patrimonial/v1/home/request/{consentId}/quote-status
            - /open-insurance/quote-patrimonial/v1/home/request
            - /open-insurance/quote-patrimonial/v1/home/request/{consentId}
            - /open-insurance/quote-patrimonial/v1/condominium/request/{consentId}/quote-status
            - /open-insurance/quote-patrimonial/v1/condominium/request
            - /open-insurance/quote-patrimonial/v1/condominium/request/{consentId}
            - /open-insurance/quote-patrimonial/v1/business/request/{consentId}/quote-status
            - /open-insurance/quote-patrimonial/v1/business/request
            - /open-insurance/quote-patrimonial/v1/business/request/{consentId}
            - /open-insurance/quote-patrimonial/v1/diverse-risks/request/{consentId}/quote-status
            - /open-insurance/quote-patrimonial/v1/diverse-risks/request
            - /open-insurance/quote-patrimonial/v1/diverse-risks/request/{consentId}
            - /open-insurance/quote-responsibility/v1/lead/request
            - /open-insurance/quote-responsibility/v1/lead/request/{consentId}
            - /open-insurance/quote-financial-risk/v1/lead/request
            - /open-insurance/quote-financial-risk/v1/lead/request/{consentId}
            - /open-insurance/quote-acceptance-and-branches-abroad/v1/lead/request
            - /open-insurance/quote-acceptance-and-branches-abroad/v1/lead/request/{consentId}
            - /open-insurance/quote-rural/v1/lead/request
            - /open-insurance/quote-rural/v1/lead/request/{consentId}
            - /open-insurance/quote-auto/v1/lead/request
            - /open-insurance/quote-auto/v1/lead/request/{consentId}
            - /open-insurance/quote-auto/v1/request
            - /open-insurance/quote-auto/v1/request/{consentId}/quote-status
            - /open-insurance/quote-auto/v1/request/{consentId}
            - /open-insurance/quote-transport/v1/lead/request
            - /open-insurance/quote-transport/v1/lead/request/{consentId}
            - /open-insurance/quote-housing/v1/lead/request
            - /open-insurance/quote-housing/v1/lead/request/{consentId}
            - /open-insurance/insurance-capitalization-title/v1/insurance-capitalization-title
            - /open-insurance/insurance-capitalization-title/v1/insurance-capitalization-title/plans
            - /open-insurance/insurance-capitalization-title/v1/insurance-capitalization-title/{planId}/plan-info
            - /open-insurance/insurance-capitalization-title/v1/insurance-capitalization-title/{planId}/events
            - /open-insurance/insurance-capitalization-title/v1/insurance-capitalization-title/{planId}/settlements
            - /open-insurance/insurance-financial-assistance/v1/insurance-financial-assistance/contracts
            - /open-insurance/insurance-financial-assistance/v1/insurance-financial-assistance/{contractId}/contract-info
            - /open-insurance/insurance-financial-assistance/v1/insurance-financial-assistance/{contractId}/movements
            - /open-insurance/insurance-life-pension/v1/insurance-life-pension/contracts
            - /open-insurance/insurance-life-pension/v1/insurance-life-pension
            - /open-insurance/insurance-life-pension/v1/insurance-life-pension/{pensionIdentification}/contract-info
            - /open-insurance/insurance-life-pension/v1/insurance-life-pension/{pensionIdentification}/movements
            - /open-insurance/insurance-life-pension/v1/insurance-life-pension/{pensionIdentification}/portabilities
            - /open-insurance/insurance-life-pension/v1/insurance-life-pension/{pensionIdentification}/withdrawals
            - /open-insurance/insurance-life-pension/v1/insurance-life-pension/{pensionIdentification}/claim
            - /open-insurance/insurance-pension-plan/v1/insurance-pension-plan
            - /open-insurance/insurance-pension-plan/v1/insurance-pension-plan/contracts
            - /open-insurance/insurance-pension-plan/v1/insurance-pension-plan/{pensionIdentification}/contract-info
            - /open-insurance/insurance-pension-plan/v1/insurance-pension-plan/{pensionIdentification}/movements
            - /open-insurance/insurance-pension-plan/v1/insurance-pension-plan/{pensionIdentification}/portabilities
            - /open-insurance/insurance-pension-plan/v1/insurance-pension-plan/{pensionIdentification}/withdrawals
            - /open-insurance/insurance-pension-plan/v1/insurance-pension-plan/{pensionIdentification}/claim
            - /open-insurance/insurance-person/v1/insurance-person
            - /open-insurance/insurance-person/v1/insurance-person/{policyId}/policy-info
            - /open-insurance/insurance-person/v1/insurance-person/{policyId}/claim
            - /open-insurance/insurance-person/v1/insurance-person/{policyId}/premium
            - /open-insurance/consents/v2/consents
            - /open-insurance/consents/v2/consents/{consentId}
            - /open-insurance/resources/v2/resources
            - /open-insurance/quote-capitalization-title/v1/lead/request
            - /open-insurance/quote-capitalization-title/v1/lead/request/{consentId}
            - /open-insurance/quote-capitalization-title/v1/request
            - /open-insurance/quote-capitalization-title/v1/request/{consentId}/quote-status
            - /open-insurance/quote-capitalization-title/v1/request/{consentId}
            - /open-insurance/quote-capitalization-title/v1/raffle/request
            - /open-insurance/quote-person/v1/lead/request
            - /open-insurance/quote-person/v1/lead/request/{consentId}
            - /open-insurance/quote-person/v1/life/request
            - /open-insurance/quote-person/v1/life/request/{consentId}/quote-status
            - /open-insurance/quote-person/v1/life/request/{consentId}
            - /open-insurance/quote-person/v1/travel/request
            - /open-insurance/quote-person/v1/travel/request/{consentId}/quote-status
            - /open-insurance/quote-person/v1/travel/request/{consentId}
            - /open-insurance/contract-life-pension/v1/lead/request
            - /open-insurance/contract-life-pension/v1/lead/request/{consentId}
            - /open-insurance/contract-life-pension/v1/request
            - /open-insurance/contract-life-pension/v1/request/{consentId}/quote-status
            - /open-insurance/contract-life-pension/v1/request/{consentId}
            - /open-insurance/withdrawal/v1/lead/request
            - /open-insurance/withdrawal/v1/pension/request
            - /open-insurance/withdrawal/v1/capitalization-title/request
            - /open-insurance/webhook/v1/quote/{versionApi}/request/{consentId}/quote-status
            - /open-insurance/webhook/v1/products-services/{authorisationServerId}/{versionApi}/capitalization-title
            - /open-insurance/webhook/v1/quote-capitalization-title/{versionApi}/request/{consentId}/quote-status
            - /open-insurance/webhook/v1/dynamic-fields/{authorisationServerId}/{versionApi}/damage-and-person
            - /open-insurance/webhook/v1/dynamic-fields/{authorisationServerId}/{versionApi}/capitalization-title
        url:
          type: string
          example: "/open-insurance/insurance-rural/v1/12345/claim"
          minLength: 2
          pattern: "^\/[a-zA-Z-]{2,}(\/.*)?$"
        statusCode:
          type: integer
          example: 200
          minimum: 100
          maximum: 599
        httpMethod:
          type: string
          example: "GET"
          enum:
            - GET
            - POST
            - PUT
            - DELETE
            - PATCH
        correlationId:
          type: string
          example: "577869e5-4c63-4b19-9235-a18d22c80986"
          minLength: 1
        additionalInfo:
          type: object
          properties:
            consentId:
              type: string
              pattern: '^urn:[a-zA-Z0-9][a-zA-Z0-9-]{0,31}:[a-zA-Z0-9()+,\-.:=@;$_!*''%\/?#]+$'
              maxLength: 256
              example: "urn:bancoex:C1DD33123"
              description: |-
                O consentId é o identificador único do consentimento e deverá ser um URN - Uniform Resource Name.
                Um URN, conforme definido na RFC8141 é um Uniform Resource Identifier - URI - que é atribuído sob o URI scheme "urn" e um namespace URN específico, com a intenção de que o URN seja um identificador de recurso persistente e independente da localização.
                Considerando a string urn:bancoex:C1DD33123 como exemplo para consentId temos:

                o namespace(urn)
                o identificador associado ao namespace da instituição transnmissora (bancoex)
                o identificador específico dentro do namespace (C1DD33123).
                Informações mais detalhadas sobre a construção de namespaces devem ser consultadas na RFC8141.
                Restrição: para endpoints que não sejam de fase 1 e tenham obtido statusCode 200-299, este campo é obrigatório
        timestamp:
          type: string
          example: "2022-11-07T17:26:32Z"
          description: "Data e hora envio ou recebimento da requisição. Uma string com data e hora conforme especificação RFC-3339, sempre com a utilização de timezone UTC(UTC time format)."
          maxLength: 20
          format: date-time
          pattern: '^((?:(\d{4}-\d{2}-\d{2})T(\d{2}:\d{2}:\d{2}(?:\.\d+)?))(Z)?)$'
        processTimespan:
          type: integer
          example: 120
          description: Tempo de processamento da requisição. Deverá ser informado em milliseconds.
          minimum: 1
        clientOrgId:
          type: string
          example: "1fb79963-4bff-4204-9370-93aceb8a2f0d"
          description: |
            Id da organização do cliente. Opcional para endpoints de fase 1.
            Os ids devem ser válidos e cadastrados no diretório, respeitando seus respectivos ambientes (sandbox e production).

            Restrição: obrigatório para os endpoints com exceção da fase 1.
          pattern: '^\w{8}-\w{4}-\w{4}-\w{4}-\w{12}$'
        clientSSId:
          type: string
          example: "2a59c2a3-529f-41c6-97e3-77395e9951ca"
          description: |
            Id do Software Statement do cliente. Opcional para endpoints de fase 1.
            * Os ids devem ser válidos e cadastrados no diretório, respeitando seus respectivos ambientes (sandbox e production).
            * Não é permitido trocar dados entre uma mesma marca.
            A validação é feita com base no nome cadastrado do Authorisation Server e Software Statement.
            Caso os dois possuam um mesmo nome cadastrado, entende-se que é uma mesma marca e o reporte não será aceito.

            Restrição: obrigatório para os endpoints com exceção da fase 1.
          pattern: '^\w{8}-\w{4}-\w{4}-\w{4}-\w{12}$'
        serverOrgId:
          type: string
          example: "ff66b95a-d817-4fbe-949a-c5912e240189"
          description: |
            Id da organização do servidor
            Os ids devem ser válidos e cadastrados no diretório, respeitando seus respectivos ambientes (sandbox e production).
          pattern: '^\w{8}-\w{4}-\w{4}-\w{4}-\w{12}$'
        serverASId:
          type: string
          example: "f8cd7b48-197d-419b-8680-f42226111b6f"
          description: |
            Id do Authorization Server do servidor.
            * Os ids devem ser válidos e cadastrados no diretório, respeitando seus respectivos ambientes (sandbox e production).
            * Não é permitido trocar dados entre uma mesma marca.
            A validação é feita com base no nome cadastrado do Authorisation Server e Software Statement.
            Caso os dois possuam um mesmo nome cadastrado, entende-se que é uma mesma marca e o reporte não será aceito.
          pattern: '^\w{8}-\w{4}-\w{4}-\w{4}-\w{12}$'
        endpointUriPrefix:
          type: string
          format: uri
          description: Base do URL da requisição
          example: "https://openbanking.instituicao.com.br"
          minimum: 8
          pattern: "^(https?:\/\/)?([a-zA-Z0-9-]+\\.)+[a-zA-Z-]{2,}$"
    success:
      type: object
      properties:
        reportId:
          type: string
          example: "7eb81ba1-9011-4c58-9d5b-1098550d2fca"
        correlationId:
          type: string
          example: FWUCp4yOA1b87LUJpgn1Mf52wi9KEF11
        status:
          type: string
          example: ACCEPTED
      required:
        - reportId
        - correlationId
        - status
      additionalProperties: false
    response400:
      type: object
      properties:
        correlationId:
          type: string
          example: FWUCp4yOA1b87LUJpgn1Mf52wi9KEF11
        status:
          type: string
          example: DISCARDED
        message:
          type: string
          example: "Missing fields: endpoint"
      required:
        - status
        - message
      additionalProperties: false
    response401:
      type: object
      properties:
        message:
          type: string
          example: "Unauthorized"
      required:
        - message
      additionalProperties: false
    response404:
      type: object
      properties:
        message:
          type: string
          example: "Not Found"
      required:
        - message
      additionalProperties: false
    response406:
      type: object
      properties:
        message:
          type: string
          example: "Content-Type not accepted"
      required:
        - message
      additionalProperties: false
    response413:
      type: object
      properties:
        message:
          type: string
          example: "Record limit exceeded"
      required:
        - message
      additionalProperties: false
    response415:
      type: object
      properties:
        message:
          type: string
          example: "Unsupported media type"
      required:
        - message
      additionalProperties: false
    response500:
      type: object
      properties:
        message:
          type: string
          example: "Internal Server Error"
      required:
        - message
      additionalProperties: false
    batchBody:
      type: object
      properties:
        organisationId:
          type: string
          example: "c1ddd896-1145-4177-9b58-8a6e310557e2"
        events:
          type: array
          items:
            "$ref": "#/components/schemas/eventBody"
      required:
        - "organisationId"
        - "events"
    eventBody:
      type: object
      properties:
        fapiInteractionId:
          type: string
          description: |
            Um UID [RFC4122](https://tools.ietf.org/html/rfc4122).

            Restrição: obrigatório para os endpoints com exceção da fase 1.
          example: "731d7aa0-09c3-4fa5-b024-905934d794e7"
          pattern: '^[a-zA-Z0-9][a-zA-Z0-9\\-]{0,99}$'
          minLength: 1
          maxLength: 100
        endpoint:
          type: string
          example: "/open-insurance/insurance-rural/v1/insurance-rural/{policyId}/claim"
          enum:
            - /open-insurance/channels/v1/branches
            - /open-insurance/channels/v1/electronic-channels
            - /open-insurance/channels/v1/intermediary/{countrySubDivision}
            - /open-insurance/channels/v1/phone-channels
            - /open-insurance/channels/v1/referenced-network/{countrySubDivision}/{serviceType}
            - /open-insurance/products-services/v1/assistance-general-assets
            - /open-insurance/products-services/v1/auto-extended-warranty
            - /open-insurance/products-services/v1/auto-insurance/{commercializationArea}/{fipeCode}/{year}
            - /open-insurance/products-services/v1/business
            - /open-insurance/products-services/v1/capitalization-title
            - /open-insurance/products-services/v1/condominium
            - /open-insurance/products-services/v1/cyber-risk
            - /open-insurance/products-services/v1/directors-officers-liability
            - /open-insurance/products-services/v1/domestic-credit
            - /open-insurance/products-services/v1/engineering
            - /open-insurance/products-services/v1/environmental-liability
            - /open-insurance/products-services/v1/equipment-breakdown
            - /open-insurance/products-services/v1/errors-omissions-liability
            - /open-insurance/products-services/v1/export-credit
            - /open-insurance/products-services/v1/extended-warranty
            - /open-insurance/products-services/v1/financial-risk
            - /open-insurance/products-services/v1/general-liability
            - /open-insurance/products-services/v1/global-banking
            - /open-insurance/products-services/v1/home-insurance/commercializationArea/{commercializationArea}
            - /open-insurance/products-services/v1/housing
            - /open-insurance/products-services/v1/life-pension
            - /open-insurance/products-services/v1/lost-profit
            - /open-insurance/products-services/v1/named-operational-risks
            - /open-insurance/products-services/v1/pension-plan
            - /open-insurance/products-services/v1/person
            - /open-insurance/products-services/v1/private-guarantee
            - /open-insurance/products-services/v1/public-guarantee
            - /open-insurance/products-services/v1/rent-guarantee
            - /open-insurance/products-services/v1/rural
            - /open-insurance/products-services/v1/stop-loss
            - /open-insurance/products-services/v1/transport
            - /open-insurance/consents/v1/consents
            - /open-insurance/consents/v1/consents/{consentId}
            - /open-insurance/resources/v1/resources
            - /open-insurance/customers/v1/personal/identifications
            - /open-insurance/customers/v1/personal/qualifications
            - /open-insurance/customers/v1/personal/complimentary-information
            - /open-insurance/customers/v1/business/identifications
            - /open-insurance/customers/v1/business/qualifications
            - /open-insurance/customers/v1/business/complimentary-information
            - /open-insurance/insurance-acceptance-and-branches-abroad/v1/insurance-acceptance-and-branches-abroad
            - /open-insurance/insurance-acceptance-and-branches-abroad/v1/insurance-acceptance-and-branches-abroad/{policyId}/policy-info
            - /open-insurance/insurance-acceptance-and-branches-abroad/v1/insurance-acceptance-and-branches-abroad/{policyId}/premium
            - /open-insurance/insurance-acceptance-and-branches-abroad/v1/insurance-acceptance-and-branches-abroad/{policyId}/claim
            - /open-insurance/insurance-auto/v1/insurance-auto
            - /open-insurance/insurance-auto/v1/insurance-auto/{policyId}/policy-info
            - /open-insurance/insurance-auto/v1/insurance-auto/{policyId}/premium
            - /open-insurance/insurance-auto/v1/insurance-auto/{policyId}/claim
            - /open-insurance/insurance-financial-risk/v1/insurance-financial-risk
            - /open-insurance/insurance-financial-risk/v1/insurance-financial-risk/{policyId}/policy-info
            - /open-insurance/insurance-financial-risk/v1/insurance-financial-risk/{policyId}/premium
            - /open-insurance/insurance-financial-risk/v1/insurance-financial-risk/{policyId}/claim
            - /open-insurance/insurance-patrimonial/v1/insurance-patrimonial
            - /open-insurance/insurance-patrimonial/v1/insurance-patrimonial/{policyId}/policy-info
            - /open-insurance/insurance-patrimonial/v1/insurance-patrimonial/{policyId}/premium
            - /open-insurance/insurance-patrimonial/v1/insurance-patrimonial/{policyId}/claim
            - /open-insurance/insurance-responsibility/v1/insurance-responsibility
            - /open-insurance/insurance-responsibility/v1/insurance-responsibility/{policyId}/policy-info
            - /open-insurance/insurance-responsibility/v1/insurance-responsibility/{policyId}/premium
            - /open-insurance/insurance-responsibility/v1/insurance-responsibility/{policyId}/claim
            - /open-insurance/insurance-rural/v1/insurance-rural
            - /open-insurance/insurance-rural/v1/insurance-rural/{policyId}/policy-info
            - /open-insurance/insurance-rural/v1/insurance-rural/{policyId}/premium
            - /open-insurance/insurance-rural/v1/insurance-rural/{policyId}/claim
            - /open-insurance/insurance-housing/v1/insurance-housing
            - /open-insurance/insurance-housing/v1/insurance-housing/{policyId}/policy-info
            - /open-insurance/insurance-housing/v1/insurance-housing/{policyId}/premium
            - /open-insurance/insurance-housing/v1/insurance-housing/{policyId}/claim
            - /open-insurance/insurance-transport/v1/insurance-transport
            - /open-insurance/insurance-transport/v1/insurance-transport/{policyId}/policy-info
            - /open-insurance/insurance-transport/v1/insurance-transport/{policyId}/premium
            - /open-insurance/insurance-transport/v1/insurance-transport/{policyId}/claim
            - /open-insurance/claim-notification/v1/request/damage/{consentId}
            - /open-insurance/claim-notification/v1/request/person/{consentId}
            - /open-insurance/endorsement/v1/request/{consentId}
            - /open-insurance/quote-patrimonial/v1/lead/request
            - /open-insurance/quote-patrimonial/v1/lead/request/{consentId}
            - /open-insurance/quote-patrimonial/v1/home/request/{consentId}/quote-status
            - /open-insurance/quote-patrimonial/v1/home/request
            - /open-insurance/quote-patrimonial/v1/home/request/{consentId}
            - /open-insurance/quote-patrimonial/v1/condominium/request/{consentId}/quote-status
            - /open-insurance/quote-patrimonial/v1/condominium/request
            - /open-insurance/quote-patrimonial/v1/condominium/request/{consentId}
            - /open-insurance/quote-patrimonial/v1/business/request/{consentId}/quote-status
            - /open-insurance/quote-patrimonial/v1/business/request
            - /open-insurance/quote-patrimonial/v1/business/request/{consentId}
            - /open-insurance/quote-patrimonial/v1/diverse-risks/request/{consentId}/quote-status
            - /open-insurance/quote-patrimonial/v1/diverse-risks/request
            - /open-insurance/quote-patrimonial/v1/diverse-risks/request/{consentId}
            - /open-insurance/quote-responsibility/v1/lead/request
            - /open-insurance/quote-responsibility/v1/lead/request/{consentId}
            - /open-insurance/quote-financial-risk/v1/lead/request
            - /open-insurance/quote-financial-risk/v1/lead/request/{consentId}
            - /open-insurance/quote-acceptance-and-branches-abroad/v1/lead/request
            - /open-insurance/quote-acceptance-and-branches-abroad/v1/lead/request/{consentId}
            - /open-insurance/quote-rural/v1/lead/request
            - /open-insurance/quote-rural/v1/lead/request/{consentId}
            - /open-insurance/quote-auto/v1/lead/request
            - /open-insurance/quote-auto/v1/lead/request/{consentId}
            - /open-insurance/quote-auto/v1/request
            - /open-insurance/quote-auto/v1/request/{consentId}/quote-status
            - /open-insurance/quote-auto/v1/request/{consentId}
            - /open-insurance/quote-transport/v1/lead/request
            - /open-insurance/quote-transport/v1/lead/request/{consentId}
            - /open-insurance/quote-housing/v1/lead/request
            - /open-insurance/quote-housing/v1/lead/request/{consentId}
            - /open-insurance/insurance-capitalization-title/v1/insurance-capitalization-title
            - /open-insurance/insurance-capitalization-title/v1/insurance-capitalization-title/plans
            - /open-insurance/insurance-capitalization-title/v1/insurance-capitalization-title/{planId}/plan-info
            - /open-insurance/insurance-capitalization-title/v1/insurance-capitalization-title/{planId}/events
            - /open-insurance/insurance-capitalization-title/v1/insurance-capitalization-title/{planId}/settlements
            - /open-insurance/insurance-financial-assistance/v1/insurance-financial-assistance/contracts
            - /open-insurance/insurance-financial-assistance/v1/insurance-financial-assistance/{contractId}/contract-info
            - /open-insurance/insurance-financial-assistance/v1/insurance-financial-assistance/{contractId}/movements
            - /open-insurance/insurance-life-pension/v1/insurance-life-pension/contracts
            - /open-insurance/insurance-life-pension/v1/insurance-life-pension
            - /open-insurance/insurance-life-pension/v1/insurance-life-pension/{pensionIdentification}/contract-info
            - /open-insurance/insurance-life-pension/v1/insurance-life-pension/{pensionIdentification}/movements
            - /open-insurance/insurance-life-pension/v1/insurance-life-pension/{pensionIdentification}/portabilities
            - /open-insurance/insurance-life-pension/v1/insurance-life-pension/{pensionIdentification}/withdrawals
            - /open-insurance/insurance-life-pension/v1/insurance-life-pension/{pensionIdentification}/claim
            - /open-insurance/insurance-pension-plan/v1/insurance-pension-plan
            - /open-insurance/insurance-pension-plan/v1/insurance-pension-plan/contracts
            - /open-insurance/insurance-pension-plan/v1/insurance-pension-plan/{pensionIdentification}/contract-info
            - /open-insurance/insurance-pension-plan/v1/insurance-pension-plan/{pensionIdentification}/movements
            - /open-insurance/insurance-pension-plan/v1/insurance-pension-plan/{pensionIdentification}/portabilities
            - /open-insurance/insurance-pension-plan/v1/insurance-pension-plan/{pensionIdentification}/withdrawals
            - /open-insurance/insurance-pension-plan/v1/insurance-pension-plan/{pensionIdentification}/claim
            - /open-insurance/insurance-person/v1/insurance-person
            - /open-insurance/insurance-person/v1/insurance-person/{policyId}/policy-info
            - /open-insurance/insurance-person/v1/insurance-person/{policyId}/claim
            - /open-insurance/insurance-person/v1/insurance-person/{policyId}/premium
            - /open-insurance/consents/v2/consents
            - /open-insurance/consents/v2/consents/{consentId}
            - /open-insurance/resources/v2/resources
            - /open-insurance/quote-capitalization-title/v1/lead/request
            - /open-insurance/quote-capitalization-title/v1/lead/request/{consentId}
            - /open-insurance/quote-capitalization-title/v1/request
            - /open-insurance/quote-capitalization-title/v1/request/{consentId}/quote-status
            - /open-insurance/quote-capitalization-title/v1/request/{consentId}
            - /open-insurance/quote-capitalization-title/v1/raffle/request
            - /open-insurance/quote-person/v1/lead/request
            - /open-insurance/quote-person/v1/lead/request/{consentId}
            - /open-insurance/quote-person/v1/life/request
            - /open-insurance/quote-person/v1/life/request/{consentId}/quote-status
            - /open-insurance/quote-person/v1/life/request/{consentId}
            - /open-insurance/quote-person/v1/travel/request
            - /open-insurance/quote-person/v1/travel/request/{consentId}/quote-status
            - /open-insurance/quote-person/v1/travel/request/{consentId}
            - /open-insurance/contract-life-pension/v1/lead/request
            - /open-insurance/contract-life-pension/v1/lead/request/{consentId}
            - /open-insurance/contract-life-pension/v1/request
            - /open-insurance/contract-life-pension/v1/request/{consentId}/quote-status
            - /open-insurance/contract-life-pension/v1/request/{consentId}
            - /open-insurance/withdrawal/v1/lead/request
            - /open-insurance/withdrawal/v1/pension/request
            - /open-insurance/withdrawal/v1/capitalization-title/request
            - /open-insurance/webhook/v1/quote/{versionApi}/request/{consentId}/quote-status
            - /open-insurance/webhook/v1/products-services/{authorisationServerId}/{versionApi}/capitalization-title
            - /open-insurance/webhook/v1/quote-capitalization-title/{versionApi}/request/{consentId}/quote-status
            - /open-insurance/webhook/v1/dynamic-fields/{authorisationServerId}/{versionApi}/damage-and-person
            - /open-insurance/webhook/v1/dynamic-fields/{authorisationServerId}/{versionApi}/capitalization-title

        url:
          type: string
          example: "/open-insurance/insurance-rural/v1/12345/claim"
          minLength: 2
          pattern: "^\/[a-zA-Z-]{2,}(\/.*)?$"
        statusCode:
          type: integer
          example: 200
          minimum: 100
          maximum: 599
        httpMethod:
          type: string
          example: "GET"
          enum:
            - GET
            - POST
            - PUT
            - DELETE
            - PATCH
        correlationId:
          type: string
          example: "577869e5-4c63-4b19-9235-a18d22c80986"
          minLength: 1
        additionalInfo:
          type: object
          properties:
            consentId:
              type: string
              pattern: '^urn:[a-zA-Z0-9][a-zA-Z0-9-]{0,31}:[a-zA-Z0-9()+,\-.:=@;$_!*''%\/?#]+$'
              maxLength: 256
              example: "urn:bancoex:C1DD33123"
              description: |-
                O consentId é o identificador único do consentimento e deverá ser um URN - Uniform Resource Name.
                Um URN, conforme definido na RFC8141 é um Uniform Resource Identifier - URI - que é atribuído sob o URI scheme "urn" e um namespace URN específico, com a intenção de que o URN seja um identificador de recurso persistente e independente da localização.
                Considerando a string urn:bancoex:C1DD33123 como exemplo para consentId temos:

                o namespace(urn)
                o identificador associado ao namespace da instituição transnmissora (bancoex)
                o identificador específico dentro do namespace (C1DD33123).
                Informações mais detalhadas sobre a construção de namespaces devem ser consultadas na RFC8141.
                Restrição: para endpoints que não sejam de fase 1 e tenham obtido statusCode 200-299, este campo é obrigatório
        timestamp:
          type: string
          example: "2022-11-07T17:26:32Z"
          description: "Data e hora envio ou recebimento da requisição. Uma string com data e hora conforme especificação RFC-3339, sempre com a utilização de timezone UTC(UTC time format)."
          maxLength: 20
          format: date-time
          pattern: '^((?:(\d{4}-\d{2}-\d{2})T(\d{2}:\d{2}:\d{2}(?:\.\d+)?))(Z)?)$'
        processTimespan:
          type: integer
          example: 120
          description: Tempo de processamento da requisição. Deverá ser informado em milliseconds.
          minimum: 1
        clientOrgId:
          type: string
          example: "1fb79963-4bff-4204-9370-93aceb8a2f0d"
          description: |
            Id da organização do cliente. Opcional para endpoints de fase 1.
            Os ids devem ser válidos e cadastrados no diretório, respeitando seus respectivos ambientes (sandbox e production).

            Restrição: obrigatório para os endpoints com exceção da fase 1.
          pattern: '^\w{8}-\w{4}-\w{4}-\w{4}-\w{12}$'
        clientSSId:
          type: string
          example: "2a59c2a3-529f-41c6-97e3-77395e9951ca"
          description: |
            Id do Software Statement do cliente. Opcional para endpoints de fase 1.
            * Os ids devem ser válidos e cadastrados no diretório, respeitando seus respectivos ambientes (sandbox e production).
            * Não é permitido trocar dados entre uma mesma marca.
            A validação é feita com base no nome cadastrado do Authorisation Server e Software Statement.
            Caso os dois possuam um mesmo nome cadastrado, entende-se que é uma mesma marca e o reporte não será aceito.

            Restrição: obrigatório para os endpoints com exceção da fase 1.
          pattern: '^\w{8}-\w{4}-\w{4}-\w{4}-\w{12}$'
        serverOrgId:
          type: string
          example: "ff66b95a-d817-4fbe-949a-c5912e240189"
          description: |
            Id da organização do servidor
            Os ids devem ser válidos e cadastrados no diretório, respeitando seus respectivos ambientes (sandbox e production).
          pattern: '^\w{8}-\w{4}-\w{4}-\w{4}-\w{12}$'
        serverASId:
          type: string
          example: "f8cd7b48-197d-419b-8680-f42226111b6f"
          description: |
            Id do Authorization Server do servidor.
            * Os ids devem ser válidos e cadastrados no diretório, respeitando seus respectivos ambientes (sandbox e production).
            * Não é permitido trocar dados entre uma mesma marca.
            A validação é feita com base no nome cadastrado do Authorisation Server e Software Statement.
            Caso os dois possuam um mesmo nome cadastrado, entende-se que é uma mesma marca e o reporte não será aceito.

          pattern: '^\w{8}-\w{4}-\w{4}-\w{4}-\w{12}$'
        endpointUriPrefix:
          type: string
          format: uri
          description: Base do URL da requisição
          example: "https://openbanking.instituicao.com.br"
          minimum: 8
          pattern: "^(https?:\/\/)?([a-zA-Z0-9-]+\\.)+[a-zA-Z-]{2,}$"
      required:
        - endpoint
        - url
        - statusCode
        - httpMethod
        - correlationId
        - timestamp
        - processTimespan
        - serverOrgId
        - serverASId
  responses:
    reportEventResponse200:
      description: Registro recebido com sucesso.
      content:
        application/json:
          schema:
            "$ref": "#/components/schemas/success"
    reportEventResponse400:
      description: Ocorre quando uma requisição não envia os dados obrigatórios.
      content:
        application/json:
          schema:
            "$ref": "#/components/schemas/response400"
    reportEventResponse401:
      description: Ocorre quando uma requisição não é autorizada.
      content:
        application/json:
          schema:
            "$ref": "#/components/schemas/response401"
    reportEventResponse404:
      description: Ocorre quando o reporte não é encontrado.
      content:
        application/json:
          schema:
            "$ref": "#/components/schemas/response404"
    reportEventResponse406:
      description: Ocorre quando um cliente espera uma resposta diferente de application/json usando o header Accept.
      content:
        application/json:
          schema:
            "$ref": "#/components/schemas/response406"
    reportEventResponse415:
      description: Ocorre quando uma requisição envia um Content-Type diferente de application/jwt.
      content:
        application/json:
          schema:
            "$ref": "#/components/schemas/response415"
    reportEventResponse500:
      description: É devolvido quando ocorre um erro não identificado no servidor.
      content:
        application/json:
          schema:
            "$ref": "#/components/schemas/response500"
    reportBatchResponse200:
      description: |
        O status 200 representa a situação onde todos os registros enviados no lote foram validados
        e serão direcionados para processamento.

        A operação vai devolver um array com todos os resultados, e garantir que ele esteja na mesma
        ordem do array de requisição.
      content:
        application/json:
          schema:
            type: array
            items:
              "$ref": "#/components/schemas/success"
    reportBatchResponse207:
      description: |
        O status 207 (Multi-Status) informa ao solicitante que o formato da solicitação está
        correto, mas que entradas do array da solicitação contém erro de validação, independente
        da quantidade. Ou seja, se todos os elementos do array informado estiverem com falha
        de validação, a operação vai devolver o status 207, e no corpo da resposta todos os
        elementos do array estarão com o status DISCARDED e com suas respectivas mensagens.

        A operação vai devolver um array com todos os resultados, e garantir que ele esteja na mesma
        ordem do array de requisição.
      content:
        application/json:
          schema:
            type: array
            items:
              "$ref": "#/components/schemas/response400"
    reportBatchResponse400:
      description: O formato do corpo da requisição não é um array.
      content:
        application/json:
          schema:
            type: object
            properties:
              message:
                type: string
                example: "Invalid payload format: MUST be an array"
            required:
              - message
            additionalProperties: false
    reportBatchResponse401:
      description: Ocorre quando uma requisição não é autorizada.
      content:
        application/json:
          schema:
            "$ref": "#/components/schemas/response401"
    reportBatchResponse406:
      description: Ocorre quando um cliente espera uma resposta diferente de application/json usando o header Accept.
      content:
        application/json:
          schema:
            "$ref": "#/components/schemas/response406"
    reportBatchResponse413:
      description: |
        A quantidade de registros enviados excede o limite da operação, ou o tamanho do payload
        excede o limite configurado no servidor http.
      content:
        application/json:
          schema:
            "$ref": "#/components/schemas/response413"
    reportBatchResponse415:
      description: Ocorre quando uma requisição envia um Content-Type diferente de application/jwt.
      content:
        application/json:
          schema:
            "$ref": "#/components/schemas/response415"
    reportBatchResponse500:
      description: É devolvido quando ocorre um erro não identificado no servidor.
      content:
        application/json:
          schema:
            "$ref": "#/components/schemas/response500"
    getReportResponse200:
      description: Retorna os dados encontrados para o reporte id consultado.
      content:
        application/json:
          schema:
            "$ref": "#/components/schemas/reportBody"
