﻿openapi: 3.0.0
info:
  title: API Payroll Credit Portability - Open Finance Brasil
  description: |
    A API de Portabilidade de Crédito Consignado permite que usuários transfiram suas operações de crédito e arrendamento mercantil entre instituições financeiras em busca de melhores condições para o Open Finance Brasil.

    # Orientações
    
    ## Assinatura de payloads:
      No contexto da API de Portabilidade de crédito, os payloads de mensagem que trafegam tanto por parte da instituição credora quanto por parte da instituição proponente devem estar assinados. Para o processo de assinatura destes payloads as instituições devem seguir as especificações de segurança publicadas no Portal do desenvolvedor  
        &nbsp;&nbsp;- Certificados exigidos para assinatura de mensagens: [[PT] Padrão de Certificados Open Finance Brasil 2.1](https://openfinancebrasil.atlassian.net/wiki/spaces/OF/pages/245694518)  
        &nbsp;&nbsp;- Como assinar o payload JWS: [Como Assinar o Payload](https://openfinancebrasil.atlassian.net/wiki/spaces/OF/pages/905740608)
    
    ## Controle de Acesso
    - Os endpoints [GET] /portabilities/{portabilityId}, [GET] /portabilities/{portabilityId}/account-data, [POST] /portabilities/{portabilityId}/payment, [PATCH] / portabilities/{portabilityId}/cancel da API de Portabilidade de crédito devem utilizar o escopo client_credentials
    - Os endpoints [GET] /credit-operations/{contractId}/portability-eligibility e [POST] /portabilities devem utilizar o escopo authorization_code para validar a permissions de LOANS
    
    ## Validações para Portabilidade de Crédito
    **- Validações** (após o processo de DCR e obtenção de token client credential - não escopo dessa documentação):   
      &nbsp;Durante o processo de portabilidade de crédito, diferentes validações são necessárias pela instituição credora e devem ocorrer conforme a seguir:    
    **- Casos de erro relacionados às permissões de segurança para acesso à API** (ex. certificado, access_token, jwt, assinatura):    
      Validação de Certificado: Valida utilização de certificado correto durante processo de DCR - HTTP Code 401 (`INVALID_CLIENT`);   
      Validação de Access_Token: Verifica se Access_Token utilizado está correto - HTTP Code 401 (`UNAUTHORIZED`);   
      Validação de assinatura da mensagem: Valida se assinatura das mensagens enviadas está correta – HTTP Code 400 (`BAD_SIGNATURE`);   
      Validação de Claims (exceto data);   
        &emsp;- Valida se dados (aud, iss, iat e jti) são válidos - HTTP status code 403 - (`INVALID_CLIENT`);  
        &emsp;- Valida reuso de jti - HTTP Code 403 (`INVALID_CLIENT`).
        
    ## Validações de erros sintáticos e semânticos, previstas com retorno HTTP Code 422 - Unprocessable Entity
      **- Para todos os endpoints:**   
        &nbsp;&nbsp;**Sintáticos**   
          &emsp;- Envio de campos obrigatórios: Valida se todos os campos obrigatórios são informados (`PARAMETRO_NAO_INFORMADO`);   
          &emsp;- Formatação de parâmetros: Valida se parâmetros informados obedecem a formatação especificada (`PARAMETRO_INVALIDO`).   
          &emsp;- Demais validações não explicitamente informadas (`NAO_INFORMADO`)   
    **- Para endpoint ([POST] /portabilities):**   
        &nbsp;&nbsp;**Semânticos**   
        &emsp;- Portabilidade em andamento: Valida se já existe um pedido de portabilidade de crédito para o contrato solicitado pelo trilho do OFB ou da Registradora (`EM_ANDAMENTO`);   
        &emsp;- Prazo do empréstimo maior ao restante das parcelas a serem liquidadas no contrato original (`PRAZO_ACIMA_LIMITE`);   
        &emsp;- ID de contrato inválida (`CONTRATO_INVALIDO`);   
        &emsp;- Contrato não elegível para portabilidade dentro do trilho do OFB (`CONTRATO_NAO_ELEGIVEL`);   
        &emsp;- Idempotência: Valida se há divergência entre chave de idempotência e informações enviadas (`ERRO_IDEMPOTENCIA`);   
        &emsp;- Evidência de assinatura do contrato: Valida se o objeto de assinatura do contrato foi preenchido pela instituição proponente devidamente, em caso de ausência (`SEM_EVIDENCIA_ASSINATURA`);   
        &emsp;- Periodicidade: Valida se não houve mudança na periodicidade entre o novo contrato e o contrato original, caso tenha sido alterado a periodicidade (`PERIODICIDADE_INVALIDA`);   
        &emsp;- Campo com preenchimento incorreto: Valida se o preenchimento de alguns campos estão corretos 
        Ex.: CNPJ da instituição credora deve ser o mesmo retornado pela API de Empréstimos (`CAMPO_INCONSISTENTE`)   
    **- Para endpoint ([POST] /portabilities/{portabilityId}/payment):**   
      &nbsp;&nbsp;**Semânticos**   
        &emsp;- Estado da portabilidade diferente de `ACCEPTED_SETTLEMENT_IN_PROGRESS` ou `PAYMENT_ISSUE` (`PAGAMENTO_EFETUADO_FORA_PRAZO`). Obs.: Caso o pagamento tenha sido feito por engano a Instituição Proponente deve solicitar o estorno.   
    **- Para endpoint ([PATCH] /portabilities/{portabilityId}/cancel):**   
      &nbsp;&nbsp;**Semânticos**   
        &emsp;- Estado da portabilidade diferente de `RECEIVED`, `PENDING` ou `ACCEPTED_SETTLEMENT_IN_PROGRESS` (`CANCELAMENTO_NÃO_EFETUADO`). Obs.: De acordo com o PRD o usuário poderá cancelar o pedido de portabilidade até a etapa de liquidação, após esta etapa não será mais permitido o cancelamento da portabilidade
  version: 1.0.0-beta.1
  license:
    name: Apache 2.0
    url: 'https://www.apache.org/licenses/LICENSE-2.0'
  contact:
    name: Governança do Open Finance Brasil – Especificações
    email: gt-interfaces@openbankingbr.org
    url: 'https://openbanking-brasil.github.io/areadesenvolvedor/'
servers:
  - url: 'https://api.banco.com.br/open-banking/payroll-credit-portability/v1'
    description: Servidor de Produção
  - url: 'https://apih.banco.com.br/open-banking/payroll-credit-portability/v1'
    description: Servidor de Homologação
tags:
  - name: Account data
    description: 'Informação dos dados bancários para liquidação de contrato via STR exclusiva do OFB.'
  - name: Concurrency Management
    description: 'Para evitar o envio de múltiplas solicitações de portabilidade para o mesmo contrato, as instituições devem implementar mecanismos que permitam: recusar solicitações simultâneas de portabilidade de crédito referentes ao mesmo contrato, seja por meio da registradora ou do Open Finance Brasil (OFB), priorizando sempre a solicitação mais antiga.'
  - name: Credit Portability
    description: 'Permite que usuários transfiram suas operações de crédito e arrendamento mercantil entre instituições financeiras em busca de melhores condições.'
  - name: Registering Entity
    description: 'Fornece dados do contrato consignado junto a averbadora.'
  - name: Payments
    description: 'Informa a Instituição Credora a respeito da liquidação efetuada através da STR exclusiva do OFB.'
paths:
  /portabilities/{portabilityId}/account-data:
    get:
      tags:
        - Account data
      summary: Obtém os dados necessários para realização do pagamento da operação via TED.
      description: Método responsável por recuperar informações de contas  para realização do pagamento via TED.
      operationId: payrollCreditPortabilityGetPortabilitiesPortabilityIdAccountData
      parameters:
        - $ref: '#/components/parameters/portabilityId'
        - $ref: '#/components/parameters/Authorization'
        - $ref: '#/components/parameters/xFapiAuthDate'
        - $ref: '#/components/parameters/xFapiCustomerIpAddress'
        - $ref: '#/components/parameters/xFapiInteractionId'
        - $ref: '#/components/parameters/xCustomerUserAgent'
      responses:
        '200':
          $ref: '#/components/responses/OKResponseAccountData'
        '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/UnprocessableEntity'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '504':
          $ref: '#/components/responses/GatewayTimeout'
        '529':
          $ref: '#/components/responses/SiteIsOverloaded'
        default:
          $ref: '#/components/responses/Default'
      security:
        - OAuth2ClientCredentials:
            - payroll-credit-portability
  '/credit-operations/{contractId}/portability-eligibility':
    get:
      tags:
        - Concurrency Management
      summary: Informa se um contrato pertencente a um determinado cliente estará habilitado para a realização do pedido de portabilidade de crédito considerando a regra de só existir um pedido de portabilidade para um determinado contrato.
      operationId: payrollCreditPortabilityGetCreditOperationsContratIdPortabilityEligibility
      description: Informa se o contrato está disponível para solicitação de portabilidade de crédito.
      parameters:
        - $ref: '#/components/parameters/contractId'
        - $ref: '#/components/parameters/Authorization'
        - $ref: '#/components/parameters/xFapiAuthDate'
        - $ref: '#/components/parameters/xFapiCustomerIpAddress'
        - $ref: '#/components/parameters/xFapiInteractionId'
        - $ref: '#/components/parameters/xCustomerUserAgent'
      responses:
        '200':
          $ref: '#/components/responses/OKResponsePortabilityEligibility'
        '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/UnprocessableEntity'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '504':
          $ref: '#/components/responses/GatewayTimeout'
        '529':
          $ref: '#/components/responses/SiteIsOverloaded'
        default:
          $ref: '#/components/responses/Default'
      security:
        - OAuth2AuthorizationCodeLoans:
            - openId
            - 'consent:consentId'
            - loans
  '/portabilities':
    post:
      tags:
        - Credit Portability
      summary: Realiza pedido de portabilidade de crédito para um determinado contrato junto a instituição credora
      operationId: payrollCreditPortabilityPostPortabilities
      description: Solicitação de portabilidade de crédito via OFB.
      parameters:
        - $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/jwt:
            schema:
              $ref: '#/components/schemas/RequestCreditPortability'
        description: Payload para o pedido de portabilidade de crédito.
        required: true
      responses:
        '202':
          $ref: '#/components/responses/POSTResponseCreditPortability'
        '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/UnprocessableEntityPostPortabilities'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '504':
          $ref: '#/components/responses/GatewayTimeout'
        '529':
          $ref: '#/components/responses/SiteIsOverloaded'
        default:
          $ref: '#/components/responses/Default'
      security:
        - OAuth2AuthorizationCodeLoans:
            - openId
            - 'consent:consentId'
            - loans
  '/portabilities/{portabilityId}':
    get:
      tags:
        - Credit Portability
      summary: Consulta portabilidade de crédito através da propriedade portabilityId.
      description: Endpoint responsável por consultar pedidos de portabilidade de crédito.
      operationId: payrollCreditPortabilityGetPortabilitiesByPortabilityId
      parameters:
        - $ref: '#/components/parameters/portabilityId'
        - $ref: '#/components/parameters/Authorization'
        - $ref: '#/components/parameters/xFapiAuthDate'
        - $ref: '#/components/parameters/xFapiCustomerIpAddress'
        - $ref: '#/components/parameters/xFapiInteractionId'
        - $ref: '#/components/parameters/xCustomerUserAgent'
      responses:
        '200':
          $ref: '#/components/responses/OKResponsePortabilitiesByPortabilityId'
        '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/UnprocessableEntity'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '504':
          $ref: '#/components/responses/GatewayTimeout'
        '529':
          $ref: '#/components/responses/SiteIsOverloaded'
        default:
          $ref: '#/components/responses/Default'
      security:
        - OAuth2ClientCredentials:
            - payroll-credit-portability
  '/portabilities/{portabilityId}/cancel':
    patch:
      tags:
        - Credit Portability
      summary: Comunica a Instituição Credora a respeito do cancelamento da portabilidade de crédito.
      description: Comunica a Instituição Credora a respeito do cancelamento da portabilidade de crédito.
      operationId: payrollCreditPortabilityPatchPortabilitiesPortabilityIdCancel
      parameters:
        - $ref: '#/components/parameters/portabilityId'
        - $ref: '#/components/parameters/Authorization'
        - $ref: '#/components/parameters/xFapiAuthDate'
        - $ref: '#/components/parameters/xFapiCustomerIpAddress'
        - $ref: '#/components/parameters/xFapiInteractionId'
        - $ref: '#/components/parameters/xCustomerUserAgent'
      requestBody:
        content:
          application/jwt:
            schema:
              $ref: '#/components/schemas/RequestCreditPortabilityCancel'
        description: Payload para comunicar a liquidação efetuada pela proponente a credora e iniciar a proxima etapa do fluxo de portabilidade de crédito.
        required: true
      responses:
        '200':
          $ref: '#/components/responses/PatchResponseCreditPortabilityCancel'
        '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/UnprocessableEntityPatchCancel'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '504':
          $ref: '#/components/responses/GatewayTimeout'
        '529':
          $ref: '#/components/responses/SiteIsOverloaded'
        default:
          $ref: '#/components/responses/Default'
      security:
        - OAuth2ClientCredentials:
            - payroll-credit-portability
  '/credit-operations/{contractId}/registering-entity':
    get:
      tags:
        - Registering Entity
      summary: Obtém os dados necessários para identificar o contrato a ser portado junto a averbadora.
      description: Obtém os dados necessários para identificar o contrato a ser portado junto a averbadora.
      operationId: payrollCreditPortabilityGetCreditOperationsContractIdRegisteringEntity
      parameters:
        - $ref: '#/components/parameters/contractId'
        - $ref: '#/components/parameters/Authorization'
        - $ref: '#/components/parameters/xFapiAuthDate'
        - $ref: '#/components/parameters/xFapiCustomerIpAddress'
        - $ref: '#/components/parameters/xFapiInteractionId'
        - $ref: '#/components/parameters/xCustomerUserAgent'
      responses:
        '200':
          $ref: '#/components/responses/OKResponseRegisteringEntity'
        '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/UnprocessableEntity'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '504':
          $ref: '#/components/responses/GatewayTimeout'
        '529':
          $ref: '#/components/responses/SiteIsOverloaded'
        default:
          $ref: '#/components/responses/Default'
      security:
        - OAuth2ClientCredentials:
            - payroll-credit-portability
  /portabilities/{portabilityId}/payment:
    post:
      tags:
        - Payments
      summary: Comunica a Instituição Credora a respeito da liquidação da portabilidade de crédito.
      description: Comunica a Instituição Credora a respeito da liquidação da portabilidade de crédito.
      operationId: payrollCreditPortabilityGetPortabilitiesPortabilityIdPayment
      parameters:
        - $ref: '#/components/parameters/portabilityId'
        - $ref: '#/components/parameters/Authorization'
        - $ref: '#/components/parameters/xFapiAuthDate'
        - $ref: '#/components/parameters/xFapiCustomerIpAddress'
        - $ref: '#/components/parameters/xFapiInteractionId'
        - $ref: '#/components/parameters/xCustomerUserAgent'
      requestBody:
        content:
          application/jwt:
            schema:
              $ref: '#/components/schemas/RequestCreditPortabilityPayment'
        description: Payload para comunicar a liquidação efetuada pela proponente a credora e iniciar a proxima etapa do fluxo de portabilidade de crédito.
        required: true
      responses:
        '202':
          $ref: '#/components/responses/POSTResponseCreditPortabilityPayment'
        '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/UnprocessableEntityPostPayments'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '504':
          $ref: '#/components/responses/GatewayTimeout'
        '529':
          $ref: '#/components/responses/SiteIsOverloaded'
        default:
          $ref: '#/components/responses/Default'
      security:
        - OAuth2ClientCredentials:
            - payroll-credit-portability
    
  /portabilities/{portabilityId}/payment-reversal:
    post:
      tags:
        - Payments
      summary: Solicita o estorno da STR efetuada para liquidar o contrato consignado devido ao fato da Instituição Credora não ter desaverbado o contrato em tempo ábil conforme SLA definido pela SERPRO de 10 dias contados a partir da data de criação da solicitação da reserva da mergem para Instituição Proponente.
      description: Solicita o estorno da STR efetuada para liquidar o contrato consignado.
      operationId: payrollCreditPortabilityPostPortabilitiesPortabilityIdPaymentReversal
      parameters:
        - $ref: '#/components/parameters/portabilityId'
        - $ref: '#/components/parameters/Authorization'
        - $ref: '#/components/parameters/xFapiAuthDate'
        - $ref: '#/components/parameters/xFapiCustomerIpAddress'
        - $ref: '#/components/parameters/xFapiInteractionId'
        - $ref: '#/components/parameters/xCustomerUserAgent'
      requestBody:
        content:
          application/jwt:
            schema:
              $ref: '#/components/schemas/RequestCreditPortabilityPaymentReversal'
        description: Payload para comunicar a liquidação efetuada pela proponente a credora e iniciar a proxima etapa do fluxo de portabilidade de crédito.
        required: true
      responses:
        '202':
          $ref: '#/components/responses/POSTResponseCreditPortabilityPaymentReversal'
        '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/UnprocessableEntityPostPaymentReversal'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '504':
          $ref: '#/components/responses/GatewayTimeout'
        '529':
          $ref: '#/components/responses/SiteIsOverloaded'
        default:
          $ref: '#/components/responses/Default'
      security:
        - OAuth2ClientCredentials:
            - payroll-credit-portability
components:
  schemas:
    ResponseAccountData:
      type: object
      required:
        - data
        - links
        - meta
      properties:
        data:
          type: object
          description: Dados para realização do pagamento da operação via TED
          required:
            - strCode
          properties:
            strCode:
              type: object
              required:
                - ispb
                - branchCode
                - hasFinancialAgent
              properties:
                ispb:
                  type: string
                  pattern: '^[0-9A-Z]{8}$'
                  maxLength: 8
                  minLength: 8
                  description: Número do ISPB da Instituição credora a ser usada na STR para pagamento de portabilidade de crédito exclusiva para o OFB.
                  example: '22896431'
                name:
                  type: string
                  description: |
                    Nome do proprietário da conta a ser usada na STR para pagamento de portabilidade de crédito exclusiva para o OFB.
                    
                    [RESTRIÇÃO] campo de preenchimento obrigatório quando campo `hasFinancialAgent` for igual a true
                  pattern: '^(?!\s)[\w\W\s]*[^\s]$'
                  maxLength: 80
                  minLength: 1
                  example: 'Instituicao Credora'
                companyCnpj:
                  type: string
                  description: |
                    CNPJ do proprietário da conta a ser usada na STR para pagamento de portabilidade de crédito exclusiva para o OFB.
                    
                    [RESTRIÇÃO] campo de preenchimento obrigatório quando campo `hasFinancialAgent` for igual a true
                  pattern: '^[0-9A-Z]{12}[0-9]{2}$'
                  maxLength: 14
                  minLength: 14
                  example: '21128159000166'
                branchCode:
                  type: number
                  description: Número da Agência creditada a ser usada na STR para pagamento de portabilidade de crédito exclusiva para o OFB.
                  example: 0001
                hasFinancialAgent:
                  type: boolean
                  description: Instituição trabalha com agente financeiro ao invés da conta reserva?
                  example: true
                accountNumber:
                  type: number
                  description: |
                    Número da conta bancária da credora a ser usada na STR para pagamento de portabilidade de crédito exclusiva para o OFB.
                    
                    [RESTRIÇÃO] campo de preenchimento obrigatório quando campo `hasFinancialAgent` for igual a true
                  example: 12345678
        links:
          $ref: '#/components/schemas/Links'
        meta:
          $ref: '#/components/schemas/Meta'
    ResponsePortabilityEligibility:
      type: object
      required:
        - data
      properties:
        data:
          type: object
          description: Conjunto de informações de contratos de empréstimos/financiamentos mantidos pelo cliente na instituição credora e para os quais ele tenha fornecido consentimento
          required:
            - contractId
            - portability
          properties:
              contractId:
                type: string
                pattern: '^[a-zA-Z0-9][a-zA-Z0-9-]{0,99}$'
                maxLength: 100
                minLength: 1
                example: '92792126019929279212650822221989319252576'
                description: 'Identifica de forma única o contrato da operação de crédito do cliente, mantendo as regras de imutabilidade dentro da instituição transmissora.'
              portability:
                type: object
                required:
                  - isEligible
                properties:
                  isEligible:
                    type: boolean
                    description: Sinaliza se as características do contrato é elegível para pedido de portabilidade de crédito via OFB (sem considerar a disponibilidade da portabilidade de crédito)
                  ineligible:
                    type: object
                    required:
                      - reasonType
                    description: |
                      Objeto para auxiliar a Instituição Proponente a entender o porque um contrato está inelegivel para pedido de portabilidade de crédito
                      
                      [RESTRIÇÃO] Campo de preenchimento obrigatório quando o campo `isEligible` for igual a `FALSE`
                    properties:
                      reasonType:
                        type: string
                        example: CLIENTE_COM_ACAO_JUDICIAL
                        enum:
                          - CONTRATO_LIQUIDADO
                          - CLIENTE_COM_ACAO_JUDICIAL
                          - MODALIDADE_OPERACAO_INCOMPATIVEL
                          - FLUXO_COM_PARCELA_IRREGULAR
                          - TIPO_PESSOA_INVALIDO
                          - OUTROS
                        description: |
                          Informação sobre a disponibilidade ou não de um contrato para a portabilidade de crédito
                          Informação sobre o motivo de inelegibilidade
                          -`CONTRATO_LIQUIDADO`: Contrato liquidado pelo cliente.
                          -`CLIENTE_COM_ACAO_JUDICIAL`: Cliente possui ação judicial
                          -`MODALIDADE_OPERACAO_INCOMPATIVEL`: Caso o contrato tenha uma modalidade diferente do praticado no escopo de modalidades disponiveis para portabilidade de crédito
                          -`FLUXO_COM_PARCELA_IRREGULAR`: Empréstimos com fluxo de pagamento irregular
                          -`TIPO_PESSOA_INVALIDO`: Empréstimo pertence a um tipo de pessoa diferente de pessoa natural 
                          -`OUTROS`: Caso exista algum motivo de recusa que não se encaixa nas opções disponiveis de `reasonType`, o campo `reasonTypeAdditionalInfo` deverá ser preenchido com o motivo da inelegibilidade.
                          
                      reasonTypeAdditionalInfo:
                        description: |
                          Informação sobre a disponibilidade ou não de um contrato para a portabilidade de crédito. Deve ser preenchido como uma proposta para inclusão nas definições, exemplo `MOTIVO_NAO_MAPEADO`: descrição de usar esse motivo específico. Ao utilizar essa opção, é obrigatório enviar um ticket para a estrutura open finance para mapeamento em futuras versões.
 
                          [RESTRIÇÃO] Campo de preenchimento obrigatório quando o campo `reasonType` for igual a `OUTROS`.
                        type: string
                  status:
                    type: string
                    description: |
                      Informação sobre a disponibilidade ou não de um contrato para a portabilidade de crédito
                      
                      [RESTRIÇÃO] Campo de preenchimento obrigatório quando o campo `isEligible` for igual a `TRUE`
                    enum:
                      - DISPONIVEL
                      - EM_ANDAMENTO
                  statusUpdateDateTime:
                    type: string
                    maxLength: 20
                    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: "2020-07-21T08:30:00Z"
                    description: |
                      Data e hora em que o contrato teve o status atualizado. Uma string com data e hora conforme especificação [RFC-3339](https://datatracker.ietf.org/doc/html/rfc3339), sempre com a utilização de timezone UTC(UTC time format).
                      
                      [RESTRIÇÃO] Campo de preenchimento obrigatório quando o campo `isEligible` for igual a `TRUE`
                  
                  channel:
                    type: string
                    description: |
                      Informação sobre a disponibilidade ou não de um contrato para a portabilidade de crédito
                      
                      [RESTRIÇÃO] Campo de preenchimento obrigatório quando o campo `status` for igual a `EM_ANDAMENTO`
                    enum:
                      - OFB
                      - REGISTRADORA
                  companyName:
                        type: string
                        pattern: '^(?!\s)[\w\W\s]*[^\s]$'
                        maxLength: 80
                        example: Empresa da Organização A              
                        description: |
                          Nome da Instituição Proponente responsável pelo pedido de portabilidade de credito anterior a atual consulta p.ex.Empresa A.
                          
                          [RESTRIÇÃO] Campo de preenchimento obrigatório quando o campo `status` for igual a `EM_ANDAMENTO`         
                  companyCnpj:
                        type: string
                        pattern: '^[0-9A-Z]{12}[0-9]{2}$'
                        maxLength: 14
                        minLength: 14
                        example: '21128159000166'
                        description: |
                          Número completo do CNPJ da instituição
                          O CNPJ corresponde ao número de inscrição no Cadastro de Pessoa Jurídica.
                          Deve-se ter apenas números do CNPJ, sem máscara

                          [RESTRIÇÃO] Campo de preenchimento obrigatório quando o campo `status` for igual a `EM_ANDAMENTO`
        links:
          $ref: '#/components/schemas/Links'
        meta:
          $ref: '#/components/schemas/Meta'
    RequestCreditPortability:
      type: object
      required:
        - data
      properties:
        data:
          type: object
          description: Conjunto de informações referentes à Proposta de Portabilidade de Crédito da Proponente para a Credora
          required:
            - customerContact
            - institution
            - contractIdentification
            - proposedContract
            - creationDateTime
          properties:
              customerContact:
                type: array
                minItems: 0
                description: Dados de contato do cliente
                items:
                  type: object
                  required:
                    - type
                    - value 
                  properties:
                    type:
                      type: string
                      enum:
                        - TELEFONE
                        - EMAIL
                      description: "Tipo do contato do cliente."
                    value:
                      type: string
                      pattern: ^([1-9]{2}(?:[2-8]|9[0-9])[0-9]{3}[0-9]{4})|([a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,})$
                      example: "11999999999"
              institution:
                type: object
                description: Informações sobre proponente e credora participantes do presente pedido de portabilidade de crédito
                required:
                  - creditor
                  - proposing
                properties:
                  creditor:
                    type: object
                    description: Informações sobre a instituição credora
                    required:
                      - companyName
                      - companyCnpj
                    properties:
                      companyName:
                        type: string
                        pattern: '^[^\s](?:.*[^\s])?$'
                        maxLength: 80
                        example: Instituição Credora               
                        description: 'Nome da Instituição Credora.'
                      companyCnpj:
                        type: string
                        pattern: '^[0-9A-Z]{12}[0-9]{2}$'
                        maxLength: 14
                        example: '21128159000166'
                        description: 'Número completo do CNPJ da instituição responsável pelo Cadastro - o CNPJ corresponde ao número de inscrição no Cadastro de Pessoa Jurídica. Deve-se ter apenas os números do CNPJ, sem máscara.'
                  proposing:
                    type: object
                    description: Informações sobre a instituição proponente
                    required:
                      - companyName
                      - companyCnpj
                    properties:
                      companyName:
                        type: string
                        pattern: '^[^\s](?:.*[^\s])?$'
                        maxLength: 80
                        example: Instituição Proponente
                        description: 'Nome da Instituição Proponente'
                      companyCnpj:
                        type: string
                        pattern: '^[0-9A-Z]{12}[0-9]{2}$'
                        maxLength: 14
                        example: '21128159000166'
                        description: 'Número completo do CNPJ da instituição responsável pelo Cadastro - o CNPJ corresponde ao número de inscrição no Cadastro de Pessoa Jurídica. Deve-se ter apenas os números do CNPJ, sem máscara.'
                      contact:
                        type: array
                        minItems: 1
                        items:
                          type: object
                          properties:
                            type:
                              type: string
                              enum:
                                - EMAIL
                                - TELEFONE
                              description: "Tipo do contato da Instituição Proponente."
                            value:
                              type: string
                              pattern: ^([1-9]{2}(?:[2-8]|9[0-9])[0-9]{3}[0-9]{4})|([a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,})$
                              example: "contato@instituicaoproponente.com.br"
              contractIdentification:
                type: object
                required:
                  - contractId
                  - contractNumber
                  - ipocCode
                properties:
                  contractId:
                    type: string
                    pattern: ^[a-zA-Z0-9][a-zA-Z0-9-]{0,99}$
                    maxLength: 100
                    minLength: 1
                    example: "92792126019929279212650822221989319252576"
                    description: "Identifica de forma única o contrato da operação de crédito do cliente, mantendo as regras de imutabilidade dentro da instituição transmissora."
                  contractNumber:
                    type: string
                    pattern:  ^[\w\W]{1,100}$
                    maxLength: 100
                    minLength: 1
                    example: "1324926521496"
                    description: "Número do contrato dado pela instituição contratante."
                  ipocCode:
                    type: string
                    pattern:  ^[\w\W]{22,67}$
                    maxLength: 67
                    minLength: 22
                    example: "92792126019929279212650822221989319252576"
                    description: |
                      Número padronizado do contrato - IPOC (Identificação Padronizada da Operação de Crédito). Segundo DOC 3040, composta por:


                      CNPJ da instituição: 8 (oito) posições iniciais;
                      Modalidade da operação: 4 (quatro) posições;
                      Tipo do cliente: 1 (uma) posição( 1 = pessoa natural - CPF, 2= pessoa jurídica
                      
                      – CNPJ, 3 = pessoa física no exterior, 4 = pessoa jurídica no exterior, 5 = pessoa natural sem CPF e 6 = pessoa jurídica sem CNPJ);
                      
                      - Código do cliente: O número de posições varia conforme o tipo do cliente:
                      Para clientes pessoa física com CPF (tipo de cliente = 1), informar as 11 (onze) posições do CPF;
                      Para clientes pessoa jurídica com CNPJ (tipo de cliente = 2), informar as 8 (oito) posições iniciais do CNPJ;
                      Para os demais clientes (tipos de cliente 3, 4, 5 e 6), informar 14 (catorze) posições com complemento de zeros à esquerda se a identificação tiver tamanho inferior;
                      
                      - Código do contrato: 1 (uma) até 40 (quarenta) posições, sem complemento de caracteres
              proposedContract:
                type: object
                minItems: 1
                description: Proposta da Proponente para Portabilidade de Crédito
                required:
                  - interestRates
                  - contractedFees
                  - contractedFinanceCharges
                  - digitalSignatureProof
                  - CET
                  - amortizationScheduled
                  - instalmentPeriodicity
                  - totalNumberOfInstalments
                  - instalmentAmount
                  - dueDate
                  - contractAmount
                properties:
                  interestRates:
                    type: array
                    description: |
                      Objeto que traz o conjunto de informações necessárias para demonstrar a composição das taxas de juros remuneratórios da Modalidade de crédito.  
                      Caso o contrato não possua taxas de juros, deve ser compartilhada uma lista vazia. Caso o contrato possua uma taxa de juros com valor 0, deve ser compartilhado um objeto com o valor 0 de forma explícita.
                    minItems: 0
                    items:
                      $ref: '#/components/schemas/LoansContractInterestRate'
                  contractedFees:
                    type: array
                    description: Lista que traz as informações das tarifas pactuadas no contrato.
                    minItems: 0
                    items:
                      type: object
                      description: Objeto que traz o conjunto de informações necessárias para demonstrar a composição das taxas de juros remuneratórios da Modalidade de crédito
                      required:
                        - feeName
                        - feeCode
                        - feeChargeType
                        - feeCharge
                      properties:
                        feeName:
                          type: string
                          maxLength: 140
                          pattern: '^[^\s](?:.*[^\s])?$'
                          description: Denominação da Tarifa pactuada
                          example: Renovação de cadastro
                        feeCode:
                          type: string
                          maxLength: 140
                          pattern: '^[^\s](?:.*[^\s])?$'
                          description: Sigla identificadora da tarifa pactuada
                          example: CADASTRO
                        feeChargeType:
                          type: string
                          description: Tipo de cobrança para a tarifa pactuada no contrato.
                          enum:
                            - UNICA
                            - POR_PARCELA
                          example: UNICA
                        feeCharge:
                          type: string
                          description: |
                            "Forma de cobrança relativa a tarifa pactuada no contrato. (Vide Enum)
                            - Mínimo
                            - Máximo
                            - Fixo
                            - Percentual"
                          enum:
                            - MINIMO
                            - MAXIMO
                            - FIXO
                            - PERCENTUAL
                          example: MINIMO
                        feeAmount:
                          type: object
                          minItems: 1
                          description: |
                            Objeto para representar o valor monetário da tarifa pactuada no contrato.
                            
                            [Restrição] Preenchimento obrigatório quando a forma de cobrança for diferente de Percentual.
                          required:
                            - amount
                            - currency
                          properties:
                            amount:
                              type: string
                              format: double
                              maxLength: 20
                              minLength: 4
                              pattern: '^\d{1,15}\.\d{2,4}$'
                              example: '1000.0400'
                              description: Valor monetário da tarifa pactuada no contrato.
                            currency:
                              type: string
                              maxLength: 3
                              minLength: 3
                              pattern: '^(\w{3}){1}$'
                              example: 'BRL'
                              description: Moeda referenciada ao campo `amount`, segundo modelo ISO-4217.
                        feeRate:
                          type: string
                          pattern: '^\d{1}\.\d{6}$'
                          format: double
                          maxLength: 8
                          minLength: 8
                          description: |
                            É o valor da tarifa em percentual pactuada no contrato.
                
                            [Restrição] Preenchimento obrigatório quando a forma de cobrança for Percentual.
                          example: '0.062000'
                  contractedFinanceCharges:
                    type: array
                    description: Lista que traz os encargos pactuados no contrato
                    minItems: 0
                    items:
                      type: object
                      description: Conjunto de informações referentes à identificação da operação de crédito
                      required:
                        - chargeType
                        - chargeRate
                      properties:
                        chargeType:
                          type: string
                          description: Tipo de encargo pactuado no contrato.
                          enum:
                            - JUROS_REMUNERATORIOS_POR_ATRASO
                            - MULTA_ATRASO_PAGAMENTO
                            - JUROS_MORA_ATRASO
                            - IOF_CONTRATACAO
                            - IOF_POR_ATRASO
                            - SEM_ENCARGO
                            - OUTROS
                          example: JUROS_REMUNERATORIOS_POR_ATRASO
                        chargeAdditionalInfo:
                          type: string
                          maxLength: 140
                          description: |
                            Campo para informações adicionais.
                
                            [Restrição] Obrigatório se selecionada a opção 'OUTROS' em Tipo de encargo pactuado no contrato.
                          pattern: '^[^\s](?:.*[^\s])?$'
                          example: Informações adicionais sobre encargos.
                        chargeRate:
                          type: string
                          pattern: '^\d{1}\.\d{6}$'
                          format: double
                          maxLength: 8
                          minLength: 8
                          description: |
                            Representa o valor do encargo em percentual pactuado no contrato.
                
                            O preenchimento deve respeitar as 6 casas decimais, mesmo que venham preenchidas com zeros(representação de porcentagem p.ex: 0.150000. Este valor representa 15%. O valor 1 representa 100%).
                          example: '0.070000'
                  digitalSignatureProof:
                    type: object
                    required:
                      - documentId
                      - signatureDateTime
                    properties:
                      documentId:
                        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
                        minLength: 1
                        example: 54d5348c-1a3f-4ff4-a8a8-d0724fb806c6
                        description: "Código identificador do Documento assinado na instituição proponente."
                      signatureDateTime:
                        type: string
                        maxLength: 20
                        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: "2020-07-21T08:30:00Z"
                        description: |
                          Data e hora em que o contrato foi assinado pelo cliente  no canal digital da Instituição Proponente
                  CET: 
                    type: string
                    pattern: ^\d{1,6}\.\d{6}$
                    maxLength: 13
                    minLength: 8
                    example: "0.290000"
                    description: |
                      CET – Custo Efetivo Total deve ser expresso na forma de taxa percentual anual e incorpora todos os encargos e despesas incidentes nas operações de crédito (taxa de juro, mas também tarifas, tributos, seguros e outras despesas cobradas). O preenchimento deve respeitar as 6 casas decimais, mesmo que venham preenchidas com zeros (representação de porcentagem p.ex: 0.150000. Este valor representa 15%. O valor 1 representa 100%). Para o público PF (pessoa física) o campo é de envio obrigatório para contratos firmados a partir de 2008, conforme Resolução CMN 3.517. Para o público PJ (pessoa jurídica) o campo é de envio obrigatório para contratos firmados a partir de 2011, conforme Resolução CMN 3.909. O campo poderá ser preenchido com 0.00 em cenários nos quais a casa não tenha a informação de CET (Custo efetivo total) apenas para as exceções listadas abaixo:

                        - Em contratos anteriores a 2008 (para o público PF);

                        - Em contratos anteriores a 2011 (para o público PJ);

                        - Público PJ de médio ou grande porte.
                  amortizationScheduled:
                    type: string
                    enum:
                    - SAC
                    - PRICE
                    - SAM
                    - SEM_SISTEMA_AMORTIZACAO
                    - OUTROS
                    example: SAC
                    description: | 
                      Sistema de amortização (Vide Enum):

                      - SAC (Sistema de Amortização Constante): É aquele em que o valor da amortização permanece igual até o final. Os juros cobrados sobre o parcelamento não entram nesta conta.

                      - PRICE (Sistema Francês de Amortização): As parcelas são fixas do início ao fim do contrato. Ou seja, todas as parcelas terão o mesmo valor, desde a primeira até a última. Nos primeiros pagamentos, a maior parte do valor da prestação corresponde aos juros. Ao longo do tempo, a taxa de juros vai decrescendo. Como o valor da prestação é fixo, com o passar das parcelas, o valor de amortização vai aumentando.

                      - SAM (Sistema de Amortização Misto): Cada prestação (pagamento) é a média aritmética das prestações
                      respectivas no Sistemas Price e no Sistema de Amortização Constante (SAC).

                      - SEM SISTEMA DE AMORTIZAÇÃO
                  amortizationScheduledAdditionalInfo:
                    type: string
                    pattern: '^[^\s](?:.*[^\s])?$'
                    maxLength: 200
                    example: Informações complementares relativa à amortização do tipo `OUTROS`
                    description: |
                      Informação relativa ao complemento da amortização
                      
                      [Restrição] Campo de preenchimento obrigatório quando o campo amortizationScheduled for igual `OUTROS`
                  instalmentPeriodicity:
                    type: string
                    description: Informação relativa à periodicidade regular das parcelas. (Vide Enum) sem periodicidade regular, diário, semanal, quinzenal, mensal, bimestral, trimestral, semestral, anual.
                    example: SEM_PERIODICIDADE_REGULAR
                    enum:
                      - SEM_PERIODICIDADE_REGULAR
                      - DIARIO
                      - SEMANAL
                      - QUINZENAL
                      - MENSAL
                      - BIMESTRAL
                      - TRIMESTRAL
                      - SEMESTRAL
                      - ANUAL
                  totalNumberOfInstalments:
                    type: number
                    description: Total de parcelas, segundo a periodicidade regular das parcelas referente à Modalidade de Crédito informada.
                    maximum: 999999999
                    example: 30
                  instalmentAmount:
                    type: object
                    minItems: 1
                    description: Objeto para representar o Valor da parcela regular da operação após portabilidade.
                    required:
                      - amount
                      - currency
                    properties:
                      amount:
                        type: string
                        format: double
                        maxLength: 20
                        minLength: 4
                        pattern: '^\d{1,15}\.\d{2,4}$'
                        example: '1000.0400'
                        description: Valor da parcela regular da operação após portabilidade. Expresso em valor monetário com no mínimo 2 casas e no máximo 4 casas decimais.
                      currency:
                        type: string
                        maxLength: 3
                        minLength: 3
                        pattern: '^(\w{3}){1}$'
                        example: 'BRL'
                        description: Moeda referenciada ao campo `amount`, segundo modelo ISO-4217.
                  dueDate: 
                    type: string
                    maxLength: 20
                    minLength: 20
                    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: '2020-07-21T08:30:00Z'
                    description: |    
                      Prazo (data de vencimento final) da operação. Especificação RFC-3339.
                  contractAmount:
                    type: object
                    description: Valor do saldo remanescente do contrato de empréstimo original utilizado para compor a proposta.
                    required:
                      - amount
                      - currency
                    properties:
                      amount:
                        type: string
                        format: double
                        pattern: '^\d{1,15}\.\d{2,4}$'
                        maxLength: 20
                        minLength: 4
                        example: '1000.0400'
                        description: Valor do saldo remanescente do contrato de empréstimo original utilizado para compor a proposta.
                      currency:
                        type: string
                        pattern: '^(\w{3}){1}$'
                        maxLength: 3
                        minLength: 3
                        example: 'BRL'
                        description: Moeda referenciada ao campo `amount`, segundo modelo ISO-4217
              creationDateTime:
                type: string
                description: |
                  Data e hora em que a Proponente registrou a presente proposta (chamada ao POST /portabilities).
                  Uma string com data e hora conforme especificação [RFC-3339](https://datatracker.ietf.org/doc/html/rfc3339), sempre com a utilização de timezone UTC-0 (UTC time format).
                maxLength: 20
                minLength: 20
                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: '2020-07-21T08:30:00Z'
    POSTResponseCreditPortability:
      type: object
      required:
        - data
      properties:
        data:
          type: object
          minItems: 0
          description: Conjunto de informações de contratos de empréstimos/financiamentos mantidos pelo cliente na instituição credora e para os quais ele tenha fornecido consentimento
          required:
            - portabilityId
            - siapePortabilityId
            - creationDateTime
            - status
          properties:
              portabilityId:
                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: 36
                minLength: 36
                example: 54d5348c-1a3f-4ff4-a8a8-d0724fb806c6
                description: "Código identificador do pedido de portabilidade realizado."
              siapePortabilityId:
                type: string
                pattern: '[a-zA-Z0-9][a-zA-Z0-9-]{0,19}$'
                maxLength: 20
                minLength: 20
                example: "12346579841058798Asq"
                description: "Identificador único do pedido de portabilidade, destinado exclusivamente ao uso no sistema SIAPE, no campo `nrProcessoCip`."
              status:
                type: string
                description: Informação sobre a disponibilidade ou não de um contrato para a portabilidade de crédito
                enum:
                  - RECEIVED
                  - PENDING
                  - CANCELLED
              creationDateTime:
                type: string
                description: |
                  Data e hora em que a Proponente registrou a presente proposta (chamada ao POST /portabilities).
                  Uma string com data e hora conforme especificação [RFC-3339](https://datatracker.ietf.org/doc/html/rfc3339), sempre com a utilização de timezone UTC-0 (UTC time format).
                maxLength: 20
                minLength: 20
                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: '2020-07-21T08:30:00Z'
        meta:
          $ref: '#/components/schemas/Meta'
    ResponsePortabilitiesByPortabilityId:
      type: object
      required:
        - data
        - links
        - meta
      properties:
        data:
          type: object
          description: Conjunto de informações referentes à Proposta de Portabilidade de Crédito da Proponente para a Credora
          required:
            - customerContact
            - institution
            - contractIdentification
            - proposedContract
            - portabilityId
            - status
            - statusUpdateDateTime
            - creationDateTime
          properties:
              portabilityId:
                description: Código identificador do pedido de portabilidade realizado.
                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: 36
                minLength: 36
                example: "54d5348c-1a3f-4ff4-a8a8-d0724fb806c6"
              customerContact:
                type: array
                minItems: 0
                description: Dados de contato do cliente.
                items:
                  type: object
                  required:
                    - type
                    - value 
                  properties:
                    type:
                      type: string
                      enum:
                        - TELEFONE
                        - EMAIL
                      description: "Tipo do contato do cliente."
                    value:
                      type: string
                      pattern: ^([1-9]{2}(?:[2-8]|9[0-9])[0-9]{3}[0-9]{4})|([a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,})$
                      example: "11999999999"
              institution:
                type: object
                description: Informações sobre proponente e credora participantes do presente pedido de portabilidade de crédito.
                required:
                  - creditor
                  - proposing
                properties:
                  creditor:
                    type: object
                    description: Informações sobre a instituição credora.
                    required:
                      - companyName
                      - companyCnpj
                    properties:
                      companyName:
                        type: string
                        pattern: '^[^\s](?:.*[^\s])?$'
                        maxLength: 80
                        example: Instituição Credora               
                        description: 'Nome da Instituição Credora.'
                      companyCnpj:
                        type: string
                        pattern: '^[0-9A-Z]{12}[0-9]{2}$'
                        maxLength: 14
                        example: '21128159000166'
                        description: 'Número completo do CNPJ da instituição responsável pelo Cadastro - o CNPJ corresponde ao número de inscrição no Cadastro de Pessoa Jurídica. Deve-se ter apenas os números do CNPJ, sem máscara.'
                  proposing:
                    type: object
                    description: Informações sobre a instituição proponente
                    required:
                      - companyName
                      - companyCnpj
                    properties:
                      companyName:
                        type: string
                        pattern: '^[^\s](?:.*[^\s])?$'
                        maxLength: 80
                        example: Instituição Proponente
                        description: 'Nome da Instituição Proponente'
                      companyCnpj:
                        type: string
                        pattern: '^[0-9A-Z]{12}[0-9]{2}$'
                        maxLength: 14
                        example: '21128159000166'
                        description: 'Número completo do CNPJ da instituição responsável pelo Cadastro - o CNPJ corresponde ao número de inscrição no Cadastro de Pessoa Jurídica. Deve-se ter apenas os números do CNPJ, sem máscara.'
                      contact:
                        type: array
                        minItems: 1
                        items:
                          type: object
                          properties:
                            type:
                              type: string
                              enum:
                                - EMAIL
                                - TELEFONE
                              description: "Tipo do contato da Instituição Proponente."
                            value:
                              type: string
                              pattern: ^([1-9]{2}(?:[2-8]|9[0-9])[0-9]{3}[0-9]{4})|([a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,})$
                              example: "contato@instituicaoproponente.com.br"
              contractIdentification:
                type: object
                required:
                  - contractId
                  - contractNumber
                  - ipocCode
                properties:
                  contractId:
                    type: string
                    pattern: ^[a-zA-Z0-9][a-zA-Z0-9-]{0,99}$
                    maxLength: 100
                    minLength: 1
                    example: "92792126019929279212650822221989319252576"
                    description: "Identifica de forma única o contrato da operação de crédito do cliente, mantendo as regras de imutabilidade dentro da instituição transmissora."
                  contractNumber:
                    type: string
                    pattern:  ^[\w\W]{1,100}$
                    maxLength: 100
                    minLength: 1
                    example: "1324926521496"
                    description: "Número do contrato dado pela instituição contratante."
                  ipocCode:
                    type: string
                    pattern:  ^[\w\W]{22,67}$
                    maxLength: 67
                    minLength: 22
                    example: "92792126019929279212650822221989319252576"
                    description: |
                      Número padronizado do contrato - IPOC (Identificação Padronizada da Operação de Crédito). Segundo DOC 3040, composta por:


                      CNPJ da instituição: 8 (oito) posições iniciais;
                      Modalidade da operação: 4 (quatro) posições;
                      Tipo do cliente: 1 (uma) posição( 1 = pessoa natural - CPF, 2= pessoa jurídica
                      
                      – CNPJ, 3 = pessoa física no exterior, 4 = pessoa jurídica no exterior, 5 = pessoa natural sem CPF e 6 = pessoa jurídica sem CNPJ);
                      
                      - Código do cliente: O número de posições varia conforme o tipo do cliente:
                      Para clientes pessoa física com CPF (tipo de cliente = 1), informar as 11 (onze) posições do CPF;
                      Para clientes pessoa jurídica com CNPJ (tipo de cliente = 2), informar as 8 (oito) posições iniciais do CNPJ;
                      Para os demais clientes (tipos de cliente 3, 4, 5 e 6), informar 14 (catorze) posições com complemento de zeros à esquerda se a identificação tiver tamanho inferior;
                      
                      - Código do contrato: 1 (uma) até 40 (quarenta) posições, sem complemento de caracteres.
              proposedContract:
                type: object
                minItems: 1
                description: Proposta da Proponente para Portabilidade de Crédito.
                required:
                  - CET
                  - amortizationScheduled
                  - interestRates
                  - contractedFees
                  - contractedFinanceCharges
                  - digitalSignatureProof
                  - totalNumberOfInstalments
                  - instalmentPeriodicity
                  - dueDate
                  - contractAmount
                properties:
                  CET:
                    type: string
                    pattern: '^\d{1,6}\.\d{6}$'
                    maxLength: 13
                    minLength: 8
                    example: '0.290000'
                    description: |
                      CET – Custo Efetivo Total deve ser expresso na forma de taxa percentual anual e incorpora todos os encargos e despesas incidentes nas operações de crédito (taxa de juro, mas também tarifas, tributos, seguros e outras despesas cobradas).
            
                      O preenchimento deve respeitar as 6 casas decimais, mesmo que venham preenchidas com zeros (representação de porcentagem p.ex: 0.150000. Este valor representa 15%. O valor 1 representa 100%).
            
                      Para o público PF (pessoa física) o campo é de envio obrigatório para contratos firmados a partir de 2008, conforme Resolução CMN 3.517. Para o público PJ (pessoa jurídica) o campo é de envio obrigatório para contratos firmados a partir de 2011, conforme Resolução CMN 3.909. O campo poderá ser preenchido com 0.00 em cenários nos quais a casa não tenha a informação de CET (Custo efetivo total) apenas para as exceções listadas abaixo: 
            
                      - Em contratos anteriores a 2008 (para o público PF); 
                      - Em contratos anteriores a 2011 (para o público PJ); 
                      - Público PJ de médio ou grande porte. 
                  amortizationScheduled:
                    type: string
                    enum:
                      - SAC
                      - PRICE
                      - SAM
                      - SEM_SISTEMA_AMORTIZACAO
                      - OUTROS
                    example: SAC
                    description: |
                      Sistema de amortização (Vide Enum):
                      - SAC (Sistema de Amortização Constante) - É aquele em que o valor da amortização permanece igual até o final. Os juros cobrados sobre o parcelamento não entram nesta conta.
                      - PRICE (Sistema Francês de Amortização) - As parcelas são fixas do início ao fim do contrato. Ou seja, todas as parcelas terão o mesmo valor, desde a primeira até a última. Nos primeiros pagamentos, a maior parte do valor da prestação corresponde aos juros. Ao longo do tempo, a taxa de juros vai decrescendo. Como o valor da prestação é fixo, com o passar das parcelas, o valor de amortização vai aumentando.
                      - SAM (Sistema de Amortização Misto) - Cada prestação (pagamento) é a média aritmética das prestações respectivas no Sistemas Price e no Sistema de Amortização Constante (SAC).
                      - SEM SISTEMA DE AMORTIZAÇÃO
                  amortizationScheduledAdditionalInfo:
                    type: string
                    pattern: '^[^\s](?:.*[^\s])?$'
                    maxLength: 200
                    example: Informações complementares relativa à amortização do tipo `OUTROS`
                    description: |
                      Informação relativa ao complemento da amortização

                      [Restrição] Campo de preenchimento obrigatório quando o campo amortizationScheduled for igual `OUTROS`
                  interestRates:
                    type: array
                    description: |
                      Objeto que traz o conjunto de informações necessárias para demonstrar a composição das taxas de juros remuneratórios da Modalidade de crédito.  
                      Caso o contrato não possua taxas de juros, deve ser compartilhada uma lista vazia. Caso o contrato possua uma taxa de juros com valor 0, deve ser compartilhado um objeto com o valor 0 de forma explícita.
                    items:
                      $ref: '#/components/schemas/LoansContractInterestRate'
                    minItems: 0
                  contractedFees:
                    type: array
                    description: Lista que traz as informações das tarifas pactuadas no contrato.
                    items:
                      type: object
                      description: Objeto que traz o conjunto de informações necessárias para demonstrar a composição das taxas de juros remuneratórios da Modalidade de crédito
                      required:
                        - feeName
                        - feeCode
                        - feeChargeType
                        - feeCharge
                      properties:
                        feeName:
                          type: string
                          maxLength: 140
                          pattern: '^[^\s](?:.*[^\s])?$'
                          description: Denominação da Tarifa pactuada
                          example: Renovação de cadastro
                        feeCode:
                          type: string
                          maxLength: 140
                          pattern: '^[^\s](?:.*[^\s])?$'
                          description: Sigla identificadora da tarifa pactuada
                          example: CADASTRO
                        feeChargeType:
                          type: string
                          description: Tipo de cobrança para a tarifa pactuada no contrato.
                          enum:
                            - UNICA
                            - POR_PARCELA
                          example: UNICA
                        feeCharge:
                          type: string
                          description: |
                            "Forma de cobrança relativa a tarifa pactuada no contrato. (Vide Enum)
                            - Mínimo
                            - Máximo
                            - Fixo
                            - Percentual"
                          enum:
                            - MINIMO
                            - MAXIMO
                            - FIXO
                            - PERCENTUAL
                          example: MINIMO
                        feeAmount:
                          type: object
                          minItems: 1
                          description: |
                            Objeto para representar o valor monetário da tarifa pactuada no contrato.
                            
                            [Restrição] Preenchimento obrigatório quando a forma de cobrança for diferente de Percentual.
                          required:
                            - amount
                            - currency
                          properties:
                            amount:
                              type: string
                              format: double
                              maxLength: 20
                              minLength: 4
                              pattern: '^\d{1,15}\.\d{2,4}$'
                              example: '1000.0400'
                              description: Valor monetário da tarifa pactuada no contrato.
                            currency:
                              type: string
                              maxLength: 3
                              minLength: 3
                              pattern: '^(\w{3}){1}$'
                              example: 'BRL'
                              description: Moeda referenciada ao campo `amount`, segundo modelo ISO-4217.
                        feeRate:
                          type: string
                          pattern: '^\d{1}\.\d{6}$'
                          format: double
                          maxLength: 8
                          minLength: 8
                          description: |
                            É o valor da tarifa em percentual pactuada no contrato.
                
                            [Restrição] Preenchimento obrigatório quando a forma de cobrança for Percentual.
                          example: '0.062000'
                    minItems: 0
                  contractedFinanceCharges:
                    type: array
                    description: Lista que traz os encargos pactuados no contrato
                    items:
                      type: object
                      description: Conjunto de informações referentes à identificação da operação de crédito
                      required:
                        - chargeType
                      properties:
                        chargeType:
                          type: string
                          description: Tipo de encargo pactuado no contrato.
                          enum:
                            - JUROS_REMUNERATORIOS_POR_ATRASO
                            - MULTA_ATRASO_PAGAMENTO
                            - JUROS_MORA_ATRASO
                            - IOF_CONTRATACAO
                            - IOF_POR_ATRASO
                            - SEM_ENCARGO
                            - OUTROS
                          example: JUROS_REMUNERATORIOS_POR_ATRASO
                        chargeAdditionalInfo:
                          type: string
                          maxLength: 140
                          description: |
                            Campo para informações adicionais.
                
                            [Restrição] Obrigatório se selecionada a opção 'OUTROS' em Tipo de encargo pactuado no contrato.
                          pattern: '^[^\s](?:.*[^\s])?$'
                          example: Informações adicionais sobre encargos.
                        chargeRate:
                          type: string
                          pattern: '^\d{1}\.\d{6}$'
                          format: double
                          maxLength: 8
                          minLength: 8
                          description: |
                            Representa o valor do encargo em percentual pactuado no contrato.
                
                            O preenchimento deve respeitar as 6 casas decimais, mesmo que venham preenchidas com zeros(representação de porcentagem p.ex: 0.150000. Este valor representa 15%. O valor 1 representa 100%).
                          example: '0.070000'
                    minItems: 0
                  digitalSignatureProof:
                    type: object
                    properties:
                      documentId:
                        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
                        minLength: 1
                        example: "54d5348c-1a3f-4ff4-a8a8-d0724fb806c6"
                        description: "Código identificador do Documento assinado na instituição proponente."
                      signatureDateTime:
                        type: string
                        maxLength: 20
                        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: "2020-07-21T08:30:00Z"
                        description: |
                          Data e hora em que o contrato foi assinado pelo cliente  no canal digital da Instituição Proponente
                    required:
                      - documentId
                      - signatureDateTime
                  totalNumberOfInstalments:
                    type: number
                    description: total de parcelas, segundo a periodicidade regular das parcelas referente à Modalidade de Crédito informada.
                    example: 30
                  instalmentPeriodicity:
                    type: string
                    description: Informação relativa à periodicidade regular das parcelas. (Vide Enum) sem periodicidade regular, diario, semanal, quinzenal, mensal, bimestral, trimestral, semestral, anual.
                    enum:
                      - SEM_PERIODICIDADE_REGULAR
                      - DIARIO
                      - SEMANAL
                      - QUINZENAL
                      - MENSAL
                      - BIMESTRAL
                      - TRIMESTRAL
                      - SEMESTRAL
                      - ANUAL
                    example: SEM_PERIODICIDADE_REGULAR
                  instalmentAmount:
                    type: object
                    minItems: 1
                    description: Objeto para representar o Valor da parcela regular da operação após portabilidade.
                    required:
                      - amount
                      - currency
                    properties:
                      amount:
                        type: string
                        format: double
                        maxLength: 20
                        minLength: 4
                        pattern: '^\d{1,15}\.\d{2,4}$'
                        example: '1000.0400'
                        description: Valor da parcela regular da operação após portabilidade. Expresso em valor monetário com no mínimo 2 casas e no máximo 4 casas decimais.
                      currency:
                        type: string
                        maxLength: 3
                        minLength: 3
                        pattern: '^(\w{3}){1}$'
                        example: 'BRL'
                        description: Moeda referenciada ao campo `amount`, segundo modelo ISO-4217.
                  dueDate:
                    type: string
                    description: Prazo (data de vencimento final) da operação. Especificação [RFC-3339](https://datatracker.ietf.org/doc/html/rfc3339)
                    maxLength: 20
                    minLength: 20
                    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: '2020-07-21T08:30:00Z'
                  contractAmount:
                    type: object
                    description: Valor do saldo remanescente do contrato de empréstimo original utilizado para compor a proposta.
                    required:
                      - amount
                      - currency
                    properties:
                      amount:
                        type: string
                        format: double
                        pattern: '^\d{1,15}\.\d{2,4}$'
                        maxLength: 20
                        minLength: 4
                        example: '1000.0400'
                        description: Valor do saldo remanescente do contrato de empréstimo original utilizado para compor a proposta.
                      currency:
                        type: string
                        pattern: '^(\w{3}){1}$'
                        maxLength: 3
                        minLength: 3
                        example: 'BRL'
                        description: Moeda referenciada ao campo `amount`, segundo modelo ISO-4217
              status:
                type: string
                description: |
                  Informação sobre o status de um pedido de portabilidade de crédito, onde:
                  
                  - `RECEIVED`: Estado inicial. Indica que o pedido de portabilidade foi solicitado junto a instituição credora. O pedido deve permanecer neste estado até que o próximo dia útil (D+1) aonde começará a contar o prazo de 3 dias úteis para a etapa de contraproposta e o pedido de portabilidade deverá ser movido para PENDING
                  - `PENDING`: Indica que o pedido de portabilidade de crédito está na fase de contraproposta, onde a instituição credora poderá enviar uma contraproposta ou não para o cliente por qualquer canal (email, telefone, etc.) porém o aceite só deverá ser valido se o cliente aprovar no canal digital da instituição credora
                  - `ACCEPTED_SETTLEMENT_IN_PROGRESS`: Indica que a contraproposta não foi aceita pelo cliente e a instituição proponente terá que quitar o valor do contrato no mesmo dia em que o estado foi ativado
                  - `ACCEPTED_SETTLEMENT_COMPLETED`: Indica que a instituição proponente já liquidou o contrato e comunicou a respeito a credora que está validando os dados do contratos bem como valores recebidos para a quitação do mesmo (nesta etapa a instituição credora tem 2 dias úteis para fornecer a confirmação e o recibo de quitação do contrato de empréstimo)
                  - `AWAITING_CONTRACT_DISCHARGE`: Indica que a instituição credora finalizou a portabilidade de crédito fornecendo as informações referente a quitação do contrato original, ficando pendente a solicitação de desaverbação junto a averbadora do contrato consignado para a transferência da margem consignada 
                  - `PORTABILITY_COMPLETED`: Indica que o pedido de portabilidade foi concluído com sucesso
                  - `REJECTED`: Indica que o pedido de portabilidade de crédito foi rejeitado, seja porque o cliente aceitou a contraproposta, ou porque a proponente rejeitou a liquidação que excedeu em 15% o valor do contrato original, entre outras possibilidades
                  - `CANCELLED`: Indica que o cliente cancelou o pedido de portabilidade de crédito
                  - `PAYMENT_ISSUE`: Indica que a Instituição Credora encontrou alguma inconsistência na liquidação efetuada e que a Instituição Proponente deverá realizar ajustes conforme sugerido pela Instituição Credora para solucionar a pendencia antes do cancelamento do pedido de portabilidade de crédito
                enum:
                  - RECEIVED
                  - PENDING
                  - ACCEPTED_SETTLEMENT_IN_PROGRESS
                  - ACCEPTED_SETTLEMENT_COMPLETED
                  - AWAITING_CONTRACT_DISCHARGE
                  - PORTABILITY_COMPLETED
                  - REJECTED
                  - CANCELLED
                  - PAYMENT_ISSUE
              statusUpdateDateTime:
                type: string
                maxLength: 20
                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: "2020-07-21T08:30:00Z"
                description: |
                  Data e hora em que o contrato teve o status atualizado. Uma string com data e hora conforme especificação [RFC-3339](https://datatracker.ietf.org/doc/html/rfc3339), sempre com a utilização de timezone UTC(UTC time format).
              statusReason:
                type: object
                description: |
                  Motivo de recusa do pedido de portabilidade
                  
                  [RESTRIÇÃO] Campo de preenchimento obrigatório quando campo `status` for igual a `REJECTED` ou `CANCELLED` ou `PAYMENT_ISSUE`
                properties: 
                  reasonType:
                    description: |
                      Motivo de recusa do pedido de portabilidade, onde:
                      
                      `CANCELADO_PELO_CLIENTE` - Cliente desiste do pedido da portabilidade 
                      
                      `SALDO_DEVEDOR_ATUALIZADO_SUBSTANCIALMENTE_DIVERGENTE` - Saldo devedor atualizado divergente (superior a 15%) do informado inicialmente 
                      
                      `POLITICA_DE_CREDITO` - Proponente desiste da oferta ao cliente por políticas internas 
                      
                      `RETENCAO_DO_CLIENTE` - Cliente aceitou contraproposta da instituição credora (dentro do prazo)
                      
                      `CONTRATO_JA_LIQUIDADO` - Contrato liquidado pelo cliente. 
                      
                      `DIVERGENCIA_DE_PAGAMENTO_EFETUADO` - Proponente realizou a liquidação com valor divergente 

                      `DECURSO_DO_PRAZO_PARA_PAGAMENTO` - Proponente realizou a liquidação fora do prazo 
                      
                      `PORTABILIDADE_CANCELADA_POR_FALTA_DE_LIQUIDACAO` - Proponente não realizou a liquidação do contrato 
                      
                      `PORTABILIDADE_EM_ANDAMENTO` - Posteriormente à efetivação do pedido de portabilidade, a IF credora identificou que o cliente já possui outro pedido de portabilidade em andamento para o mesmo contrato. 
                      
                      `CLIENTE_COM_ACAO_JUDICIAL` - Possui ação judicial 

                      `MODALIDADE_DA_OPERACAO_INCOMPATIVEL` - Modalidade divergente da indicada pela instituição proponente

                      `RESERVA_DA_MARGEM` - Não foi possível realizar a reserva da margem consignada pela instituição proponente.

                      `OUTROS` - Motivo da rejeição não se encaixa nas opções disponíveis
                    type: string
                    enum:
                      - CANCELADO_PELO_CLIENTE
                      - SALDO_DEVEDOR_ATUALIZADO_SUBSTANCIALMENTE_DIVERGENTE
                      - POLITICA_DE_CREDITO
                      - RETENCAO_DO_CLIENTE
                      - CONTRATO_JA_LIQUIDADO
                      - DIVERGENCIA_DE_PAGAMENTO_EFETUADO
                      - DECURSO_DO_PRAZO_PARA_PAGAMENTO
                      - PORTABILIDADE_CANCELADA_POR_FALTA_DE_LIQUIDACAO
                      - PORTABILIDADE_EM_ANDAMENTO
                      - CLIENTE_COM_ACAO_JUDICIAL
                      - MODALIDADE_DA_OPERACAO_INCOMPATIVEL
                      - RESERVA_DA_MARGEM
                      - OUTROS
                  reasonTypeAdditionalInfo: 
                    description: |
                      Informação sobre a disponibilidade ou não de um contrato para a portabilidade de crédito.
                      Ao utilizar essa opção, é fortemente recomendável enviar um ticket como sugestão da estrutura Open Finance 
                      para discussão e mapeamento em futuras versões.

                      [RESTRIÇÃO] Campo de preenchimento obrigatório quando campo `reasonType` for igual `OUTROS`
                    type: string
                    maxLength: 144
                    pattern: '^[^\s](?:.*[^\s])?$'
                    example: Informações Adicionais                   
                  digitalSignatureProof:
                    type: object
                    description: |
                      Comprovante de assinatura da contraproposta
                      
                      [RESTRIÇÃO] Objeto de preenchimento obrigatório quando campo `reasonType` for igual a `RETENCAO_DO_CLIENTE`
                    properties:
                      documentId:
                        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
                        minLength: 1
                        example: "54d5348c-1a3f-4ff4-a8a8-d0724fb806c6"
                        description: "Código identificador do Documento assinado na instituição proponente."
                      signatureDateTime:
                        type: string
                        maxLength: 20
                        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: "2020-07-21T08:30:00Z"
                        description: |
                          Data e hora em que o contrato foi assinado pelo cliente  no canal digital da Instituição Proponente
                    required:
                      - documentId
                      - signatureDateTime
              creationDateTime:
                type: string
                description: |
                  Data e hora em que a Proponente registrou a presente proposta (chamada ao POST /portabilities).
                  Uma string com data e hora conforme especificação [RFC-3339](https://datatracker.ietf.org/doc/html/rfc3339), sempre com a utilização de timezone UTC-0 (UTC time format).
                maxLength: 20
                minLength: 20
                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: '2020-07-21T08:30:00Z'
              rejection:
                type: object
                description: |
                  Objeto contendo detalhes do cancelamento do pedido de portabilidade de crédito junto a Instituição Credora.

                  [RESTRIÇÃO] Campo de preenchimento obrigatório quando `status` for igual a `REJECTED` ou `CANCELLED`
                required:
                  - rejectedBy
                  - reason
                properties:
                  rejectedBy:
                    type: string
                    description: |
                      Informar usuário responsável pela rejeição da proposta, onde:
                      PROPONENTE - Indica que o pedido de portabilidade de crédito foi rejeitado pela proponente, seja porque a
                      proponente rejeitou a liquidação que excedeu em 15% o valor do contrato original, entre outras possibilidades.
                      USUARIO - Indica que o cliente cancelou o pedido de portabilidade de crédito.
                      CREDORA- Indica que a Instituição Credora cancelou o contrato por retenção do cliente ou outros motivos
                      conforme motivo de recusa.
                    example: PROPONENTE
                    enum:
                      - PROPONENTE
                      - USUARIO
                      - CREDORA
                  reason:
                    type: object
                    description: Motivo de recusa do pedido de portabilidade de crédito.
                    required:
                      - type
                    properties:
                      type:
                        type: string
                        description: |
                          Motivo de recusa do pedido de portabilidade, onde:
                          CANCELADO_PELO_CLIENTE - Cliente desiste do pedido da portabilidade;   
                          SALDO_DEVEDOR_ATUALIZADO_SUBSTANCIALMENTE_DIVERGENTE - Saldo devedor atualizado divergente (superior a 15%) do informado inicialmente;   
                          POLITICA_DE_CREDITO - Proponente desiste da oferta ao cliente por políticas internas;   
                          RETENCAO_DO_CLIENTE - Cliente aceitou contraproposta da instituição credora (dentro do prazo);   
                          CONTRATO_JA_LIQUIDADO - Contrato liquidado pelo cliente;   
                          DIVERGENCIA_DE_PAGAMENTO_EFETUADO - Proponente realizou a liquidação com valor divergente;   
                          DECURSO_DO_PRAZO_PARA_PAGAMENTO - Proponente realizou a liquidação fora do prazo;   
                          PORTABILIDADE_CANCELADA_POR_FALTA_DE_LIQUIDACAO - Proponente não realizou a liquidação da Portabilidade;   
                          PORTABILIDADE_EM_ANDAMENTO - Posteriormente à efetivação do pedido de portabilidade, a IF credora identificou que o cliente já possui outro pedido de portabilidade em andamento para o mesmo contrato;   
                          CLIENTE_COM_ACAO_JUDICIAL - Possui ação judicial;   
                          MODALIDADE_DA_OPERACAO_INCOMPATIVEL - Modalidade divergente da indicada pela instituição proponente;  
                          RESERVA_DA_MARGEM - Não foi possível realizar a reserva da margem consignada pela instituição proponente;  
                          OUTROS - Motivo da rejeição não se encaixa nas opções disponíveis.  
                        enum:
                        - CANCELADO_PELO_CLIENTE
                        - SALDO_DEVEDOR_ATUALIZADO_SUBSTANCIALMENTE_DIVERGENTE
                        - POLITICA_DE_CREDITO
                        - RETENCAO_DO_CLIENTE
                        - CONTRATO_JA_LIQUIDADO
                        - DIVERGENCIA_DE_PAGAMENTO_EFETUADO
                        - DECURSO_DO_PRAZO_PARA_PAGAMENTO 
                        - PORTABILIDADE_CANCELADA_POR_FALTA_DE_LIQUIDACAO
                        - PORTABILIDADE_EM_ANDAMENTO
                        - CLIENTE_COM_ACAO_JUDICIAL
                        - MODALIDADE_DA_OPERACAO_INCOMPATIVEL
                        - RESERVA_DA_MARGEM
                        - OUTROS
                        example: CANCELADO_PELO_CLIENTE
                      typeAdditionalInfo:
                        type: string
                        description: |
                          Informação sobre a disponibilidade ou não de um contrato para a portabilidade de crédito. 
                          Ao utilizar essa opção, é fortemente recomendável enviar um ticket como sugestão da estrutura Open Finance para discussão e mapeamento em futuras versões.
                          
                          [RESTRIÇÃO] Campo de preenchimento obrigatório quando campo type for igual a OUTROS.
                        maxLength: 144
                        pattern: '^[^\s](?:.*[^\s])?$'
                        example: Informações Adicionais
              loanSettlementInstruction:
                type: object
                description: |
                  Objeto contendo o recibo de quitação do contrato original de empréstimo após finalizado o
                  pedido de portabilidade de crédito com sucesso junto a Instituição Credora.

                  [RESTRIÇÃO] Campo de preenchimento obrigatório quando `status` for igual a `PORTABILITY_COMPLETED` ou `AWAITING_CONTRACT_DISCHARGE`
                required:
                  - settlementDateTime
                  - settlementAmount
                  - transactionId
                properties:
                  settlementDateTime:
                    type: string
                    description: Data e hora em que a instituição credora realizou a quitação do contrato de empréstimo.
                    maxLength: 20
                    minLength: 20
                    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: '2020-07-21T08:30:00Z'
                  settlementAmount:
                    type: object
                    minItems: 1
                    description: Objeto para representar o valor pago para liquidação do contrato de empréstimo.
                    required:
                      - amount
                      - currency
                    properties:
                      amount:
                        type: string
                        format: double
                        maxLength: 20
                        minLength: 4
                        pattern: '^\d{1,15}\.\d{2,4}$'
                        example: '1000.0400'
                        description: Valor pago para liquidação do contrato de empréstimo.
                      currency:
                        type: string
                        maxLength: 3
                        minLength: 3
                        pattern: '^(\w{3}){1}$'
                        example: 'BRL'
                        description: Moeda referenciada ao campo `amount`, segundo modelo ISO-4217.
                  transactionId:
                    type: string
                    description: |
                      Identificador da transação utilizada para proponente liquidar a portabilidade de crédito com a credora.
                      
                      No contexto da STR0052, utilizar o valor do campo de retorno NumCtrlSTR (Numero de Controle da STR)
                    maxLength: 20
                    minLength: 1
                    pattern: '^[a-zA-Z0-9][a-zA-Z0-9-]{1,20}$'
                    example: 'STR20181108000000013'
        links:
          $ref: '#/components/schemas/Links'
        meta:
          $ref: '#/components/schemas/Meta'
    RequestCreditPortabilityCancel:
      type: object
      required:
        - data
      properties:
        data:
          type: object
          description: Objeto para notificar a respeito da liquidação efetuada pela proponente a Credora.
          required:
            - rejectedBy
            - reason
          properties:
            rejectedBy:
              type: string
              description: |
                Informar usuário responsável pela rejeição da proposta, onde:

                `PROPONENTE ` - Indica que o pedido de portabilidade de crédito foi rejeitado pela proponente, seja porque a proponente rejeitou a liquidação que excedeu em 15% o valor do contrato original, entre outras possibilidades.

                `USUARIO` - Indica que o cliente cancelou o pedido de portabilidade de crédito.
              enum:
                - PROPONENTE
                - USUARIO
            reason:
              type: object
              description: Motivo de recusa do pedido de portabilidade
              required:
                - type
              properties:
                type:
                  type: string
                  description: |
                    Motivo de recusa do pedido de portabilidade, onde:

                    `CANCELADO_PELO_CLIENTE` - Cliente desiste do pedido da portabilidade

                    `SALDO_DEVEDOR_ATUALIZADO_SUBSTANCIALMENTE_DIVERGENTE` - Saldo devedor atualizado divergente (superior a 15%) do informado inicialmente

                    `POLITICA_DE_CREDITO` - Proponente desiste da oferta ao cliente por políticas internas
                    
                    `RESERVA_DA_MARGEM` - Problemas relacionado a liberação/reserva da margem solicitada pela proponente

                    `OUTROS` - Motivo da rejeição não se encaixa nas opções disponíveis
                  enum:
                    - CANCELADO_PELO_CLIENTE
                    - SALDO_DEVEDOR_ATUALIZADO_SUBSTANCIALMENTE_DIVERGENTE
                    - POLITICA_DE_CREDITO
                    - RESERVA_DA_MARGEM
                    - OUTROS
                typeAdditionalInfo:
                  type: string
                  maxLength: 144
                  pattern: '^[^\s](?:.*[^\s])?$'
                  example: "Informações Adicionais"
                  description: |
                    Informação adicional sobre rejeição de portabilidade de crédito. 
                    Ao utilizar essa opção, é fortemente recomendável enviar um ticket para o GT de Portabilidade de Crédito como sugestão para estrutura Open Finance para discussão e mapeamento em futuras versões.
                    
                    [RESTRIÇÃO] Campo de preenchimento obrigatório quando campo `type` for igual a `OUTROS` ou quando o campo `type` for igual a `RESERVA_DE_MARGEM`.
    PatchResponseCreditPortabilityCancel:
      type: object
      required:
        - data
      properties:
        data:
          type: object
          description: Objeto para notificar a respeito da liquidação efetuada pela proponente a Credora.
          required:
            - rejectedBy
            - reason
          properties:
            rejectedBy:
              type: string
              description: |
                Informar usuário responsável pela rejeição da proposta, onde:

                `PROPONENTE ` - Indica que o pedido de portabilidade de crédito foi rejeitado pela proponente, seja porque a proponente rejeitou a liquidação que excedeu em 15% o valor do contrato original, entre outras possibilidades.

                `USUARIO` - Indica que o cliente cancelou o pedido de portabilidade de crédito.
              enum:
                - PROPONENTE
                - USUARIO
            reason:
              type: object
              description: Motivo de recusa do pedido de portabilidade
              required:
                - type
              properties:
                type:
                  type: string
                  description: |
                    Motivo de recusa do pedido de portabilidade, onde:

                    `CANCELADO_PELO_CLIENTE` - Cliente desiste do pedido da portabilidade

                    `SALDO_DEVEDOR_ATUALIZADO_SUBSTANCIALMENTE_DIVERGENTE` - Saldo devedor atualizado divergente (superior a 15%) do informado inicialmente

                    `POLITICA_DE_CREDITO` - Proponente desiste da oferta ao cliente por políticas internas

                    `RESERVA_DA_MARGEM` - Problemas relacionado a liberação/reserva da margem solicitada pela proponente
                    
                    `OUTROS` - Motivo da rejeição não se encaixa nas opções disponíveis
                  enum:
                    - CANCELADO_PELO_CLIENTE
                    - SALDO_DEVEDOR_ATUALIZADO_SUBSTANCIALMENTE_DIVERGENTE
                    - POLITICA_DE_CREDITO
                    - RESERVA_DA_MARGEM
                    - OUTROS
                typeAdditionalInfo:
                  type: string
                  maxLength: 144
                  pattern: '^[^\s](?:.*[^\s])?$'
                  example: "Informações Adicionais"
                  description: |
                    Informação adicional sobre rejeição de portabilidade de crédito. 
                    Ao utilizar essa opção, é fortemente recomendável enviar um ticket para o GT de Portabilidade de Crédito como sugestão para estrutura Open Finance para discussão e mapeamento em futuras versões.
                    
                    [RESTRIÇÃO] Campo de preenchimento obrigatório quando campo `type` for igual a `OUTROS` ou quando o campo `type` for igual a `RESERVA_DE_MARGEM`.
        meta:
          $ref: '#/components/schemas/Meta'
    ResponseRegisteringEntity:
      type: object
      required:
        - data
        - links
        - meta
      properties:
        data:
          type: object
          description: Dados para identificação do contrato a ser portado junto a averbadora
          required:
            - payrollData
          properties:
            payrollData:
              description: Dados do contrato de empréstimo consignado.
              type: object
              required:
                - contractId
                - registeringEntity
              properties:
                contractId:
                  type: string
                  pattern: '^[a-zA-Z0-9][a-zA-Z0-9-]{0,19}$'
                  maxLength: 20
                  minLength: 1
                  description: Número do contrato dado pela instituição contratante no sistema da averbadora.
                  example: '12346579841058798Asq'
                registeringEntity:
                  type: string
                  enum:
                    - SERPRO
                  description: |
                    Nome da averbadora do empréstimo consignado.
                  example: 'SERPRO'
        links:
          $ref: '#/components/schemas/Links'
        meta:
          $ref: '#/components/schemas/Meta'
    RequestCreditPortabilityPayment:
      type: object
      required:
        - data
      properties:
        data:
          type: object
          description: Objeto para notificar a respeito da liquidação efetuada pela proponente a credora
          required:
            - paymentDateTime
            - paymentAmount
            - transactionId
          properties:
              paymentDateTime:
                type: string
                maxLength: 20
                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: "2020-07-21T08:30:00Z"
                description: |
                  Data e hora em que o pagamento à instituição credora foi realizado pela instituição proponente. 
                  Uma string com data e hora conforme especificação [RFC-3339](https://datatracker.ietf.org/doc/html/rfc3339), sempre com a utilização de timezone UTC-0 (UTC time format)
              paymentAmount:
                type: object
                minItems: 1
                description: Objeto para representar o valor pago para liquidação do contrato de empréstimo.
                required:
                  - amount
                  - currency
                properties:
                  amount:
                    type: string
                    format: double
                    maxLength: 20
                    minLength: 4
                    pattern: '^\d{1,15}\.\d{2,4}$'
                    example: '1000.0400'
                    description: Valor pago para liquidação do contrato de empréstimo.
                  currency:
                    type: string
                    maxLength: 3
                    minLength: 3
                    pattern: '^(\w{3}){1}$'
                    example: 'BRL'
                    description: Moeda referenciada ao campo `amount`, segundo modelo ISO-4217.
              transactionId:
                type: string
                pattern: '^[^\s](?:.*[^\s])?$'
                maxLength: 20
                minLength: 1
                example: 'STR20181108000000013'
                description: |
                  Identificador da transação utilizada para proponente liquidar a portabilidade de crédito com a credora.
                  
                  No contexto da STR0052, utilizar o valor do campo de retorno NumCtrlSTR (Numero de Controle da STR)
    POSTResponseCreditPortabilityPayment:
      type: object
      required:
        - data
      properties:
        data:
          type: object
          minItems: 0
          description: Objeto para notificar a respeito da liquidação efetuada pela proponente a credora
          required:
            - paymentDateTime
            - paymentAmount
            - transactionId
          properties:
              paymentDateTime:
                type: string
                maxLength: 20
                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: "2020-07-21T08:30:00Z"
                description: |
                  Data e hora em que o pagamento à instituição credora foi realizado pela instituição proponente. 
                  Uma string com data e hora conforme especificação [RFC-3339](https://datatracker.ietf.org/doc/html/rfc3339), sempre com a utilização de timezone UTC-0 (UTC time format)
              paymentAmount:
                type: object
                minItems: 1
                description: Objeto para representar o valor pago para liquidação do contrato de empréstimo.
                required:
                  - amount
                  - currency
                properties:
                  amount:
                    type: string
                    format: double
                    maxLength: 20
                    minLength: 4
                    pattern: '^\d{1,15}\.\d{2,4}$'
                    example: '1000.0400'
                    description: Valor pago para liquidação do contrato de empréstimo.
                  currency:
                    type: string
                    maxLength: 3
                    minLength: 3
                    pattern: '^(\w{3}){1}$'
                    example: 'BRL'
                    description: Moeda referenciada ao campo `amount`, segundo modelo ISO-4217.
              transactionId:
                type: string
                pattern: '^[^\s](?:.*[^\s])?$'
                maxLength: 20
                minLength: 1
                example: 'STR20181108000000013'
                description: |
                  Identificador da transação utilizada para proponente liquidar a portabilidade de crédito com a credora.
                  
                  No contexto da STR0052, utilizar o valor do campo de retorno NumCtrlSTR (Numero de Controle da STR)
        meta:
          $ref: '#/components/schemas/Meta'
    RequestCreditPortabilityPaymentReversal:
      type: object
      required:
        - data
      properties:
        data:
          type: object
          description: Objeto para notificar a respeito da solicita o estorno da STR efetuada para liquidar o contrato consignado.
          required:
            - transactionId
            - payrollData
          properties:
              transactionId:
                type: string
                pattern: '^[^\s](?:.*[^\s])?$'
                maxLength: 20
                minLength: 1
                example: 'STR20181108000000013'
                description: |
                  Identificador da transação utilizada para proponente liquidar a portabilidade de crédito com a credora.
                  
                  No contexto da STR0052, utilizar o valor do campo de retorno NumCtrlSTR (Numero de Controle da STR)
              payrollData:
                description: Dados do contrato de empréstimo consignado.
                type: object
                required:
                  - contractId
                  - registeringEntity
                properties:
                  contractId:
                    type: string
                    pattern: '^[a-zA-Z0-9][a-zA-Z0-9-]{0,19}$'
                    maxLength: 20
                    minLength: 1
                    description: Número do contrato dado pela instituição contratante no sistema da averbadora.
                    example: '12346579841058798Asq'
                  registeringEntity:
                    type: string
                    enum:
                      - SERPRO
                    description: |
                      Nome da averbadora do empréstimo consignado.
                    example: 'SERPRO'
    POSTResponseCreditPortabilityPaymentReversal:
      type: object
      required:
        - data
      properties:
        data:
          type: object
          minItems: 0
          description: Objeto para notificar a respeito da solicita o estorno da STR efetuada para liquidar o contrato consignado.
          required:
            - transactionId
            - payrollData
          properties:
              transactionId:
                type: string
                pattern: '^[^\s](?:.*[^\s])?$'
                maxLength: 20
                minLength: 1
                example: 'STR20181108000000013'
                description: |
                  Identificador da transação utilizada para proponente liquidar a portabilidade de crédito com a credora.
                  
                  No contexto da STR0052, utilizar o valor do campo de retorno NumCtrlSTR (Numero de Controle da STR)
              payrollData:
                description: Dados do contrato de empréstimo consignado.
                type: object
                required:
                  - contractId
                  - registeringEntity
                properties:
                  contractId:
                    type: string
                    pattern: '^[a-zA-Z0-9][a-zA-Z0-9-]{0,19}$'
                    maxLength: 20
                    minLength: 1
                    description: Número do contrato dado pela instituição contratante no sistema da averbadora.
                    example: '12346579841058798Asq'
                  registeringEntity:
                    type: string
                    enum:
                      - SERPRO
                    description: |
                      Nome da averbadora do empréstimo consignado.
                    example: 'SERPRO'
        meta:
            type: object
            properties:
              requestDateTime:
                description: 'Data e hora da consulta, conforme especificação [RFC-3339](https://datatracker.ietf.org/doc/html/rfc3339), formato UTC.'
                type: string
                maxLength: 20
                format: date-time
                example: '2021-05-21T08:30:00Z'
    LoansContractInterestRate:
      type: object
      description: Objeto que traz o conjunto de informações necessárias para demonstrar a composição das taxas de juros remuneratórios da Modalidade de crédito
      required:
        - taxType
        - interestRateType
        - taxPeriodicity
        - calculation
        - referentialRateIndexerType
        - preFixedRate
        - postFixedRate
      properties:
        taxType:
          type: string
          description: |
            "Tipo de Taxa (vide  Enum)
            - NOMINAL (taxa nominal é uma taxa de juros em que a unidade referencial não coincide com a unidade de tempo da capitalização. Ela é sempre fornecida em termos anuais, e seus períodos de capitalização podem ser diários, mensais, trimestrais ou semestrais. p.ex. Uma taxa de 12% ao ano com capitalização mensal)
            - EFETIVA (É a taxa de juros em que a unidade referencial coincide com a unidade de tempo da capitalização. Como as unidades de medida de tempo da taxa de juros e dos períodos de capitalização são iguais, usa-se exemplos simples como 1% ao mês, 60% ao ano)"
          enum:
            - NOMINAL
            - EFETIVA
          example: EFETIVA
        interestRateType:
          type: string
          description: |
            "Tipo de Juros  (vide  Enum)
            - SIMPLES (aplicada/cobrada sempre sobre o capital inicial, que é o valor emprestado/investido. Não há cobrança de juros sobre juros acumulados no(s) período(s) anterior(es). Exemplo: em um empréstimo de R$1.000, com taxa de juros simples de 8% a.a., com duração de 2 anos, o total de juros será R$80 no primeiro ano e R$ 80 no segundo ano. Ao final do contrato, o tomador irá devolver o principal e os juros simples de cada ano: R$1.000+R$80+R$80=R$1.160)
            - COMPOSTO (para cada período do contrato (diário, mensal, anual etc.), há um “novo capital” para a cobrança da taxa de juros contratada. Esse “novo capital” é a soma do capital e do juro cobrado no período anterior. Exemplo: em um empréstimo de R$1.000, com taxa de juros composta de 8% a.a., com duração de 2 anos, o total de juros será R$80 no primeiro ano. No segundo ano, os juros vão ser somados ao capital (R$1.000 + R$ 80 = R$ 1.080), resultando em juros de R$ 86 (8%de R$ 1.080))"
          enum:
            - SIMPLES
            - COMPOSTO
          example: SIMPLES
        referentialRateIndexerSubType:
          $ref: '#/components/schemas/EnumReferentialRateIndexerSubType'
        taxPeriodicity:
          type: string
          description: |
            "Periodicidade da taxa . (Vide  Enum)
            a.m - ao mês
            a.a. - ao ano"
          enum:
            - AM
            - AA
          example: AA
        calculation:
          type: string
          description: Base de cálculo
          enum:
            - 21/252
            - 30/360
            - 30/365
          example: 21/252
        referentialRateIndexerType:
          type: string
          description: |
            "Tipos de taxas referenciais ou indexadores, conforme Anexo 5: Taxa referencial ou Indexador (Indx), do Documento 3040"
          enum:
            - SEM_TIPO_INDEXADOR
            - PRE_FIXADO
            - POS_FIXADO
            - FLUTUANTES
            - INDICES_PRECOS
            - CREDITO_RURAL
            - OUTROS_INDEXADORES
          example: PRE_FIXADO
        referentialRateIndexerAdditionalInfo:
          type: string
          description: |
            Campo livre para complementar a informação relativa ao Tipo de taxa referencial ou indexador.
            [Restrição] Obrigatório para complementar a informação relativa ao Tipo de taxa referencial ou indexador, quando selecionado o tipo ou subtipo `OUTRO`.
          maxLength: 140
          pattern: '^[^\s](?:.*[^\s])?$'
          example: Informações adicionais
        preFixedRate:
          type: string
          pattern: '^\d{1,2}\.\d{6}$'
          format: double
          maxLength: 9
          minLength: 8
          example: '0.600000'
          description: |
            Taxa pré fixada aplicada sob o contrato da modalidade crédito. p.ex. 0.014500. O preenchimento deve respeitar as 6 casas decimais, mesmo que venham preenchidas com zeros(representação de porcentagem p.ex: 0.150000. Este valor representa 15%. O valor 1 representa 100%). Preencher o campo não aplicável ao contrato com zeros, seguindo o pattern (0.000000).
        postFixedRate:
          type: string
          pattern: '^\d{1,2}\.\d{6}$'
          format: double
          maxLength: 9
          minLength: 8
          description: |
            Taxa pós fixada aplicada sob o contrato da modalidade crédito. p.ex. 0.0045 .O preenchimento deve respeitar as 6 casas decimais, mesmo que venham preenchidas com zeros (representação de porcentagem p.ex: 0.1500. Este valor representa 15%. O valor 1 representa 100%). Preencher o campo não aplicável ao contrato com zeros, seguindo o pattern (0.000000)
          example: '0.550000'
        additionalInfo:
          type: string
          maxLength: 1200
          pattern: '^[^\s](?:.*[^\s])?$'
          example: Informações adicionais
          description: |
            Texto com informações adicionais sobre a composição das taxas de juros pactuadas. 

            [Restrição] Caso a instituição possua a informação para compartilhamento, esta deverá ser informada.
    EnumReferentialRateIndexerSubType:
      type: string
      description: |
        "Sub tipos de taxas referenciais ou indexadores, conforme Anexo 5: Taxa referencial ou Indexador (Indx), do Documento 3040"
      enum:
        - SEM_SUB_TIPO_INDEXADOR
        - PRE_FIXADO
        - TR_TBF
        - TJLP
        - LIBOR
        - TLP
        - OUTRAS_TAXAS_POS_FIXADAS
        - CDI
        - SELIC
        - OUTRAS_TAXAS_FLUTUANTES
        - IGPM
        - IPCA
        - IPCC
        - OUTROS_INDICES_PRECO
        - TCR_PRE
        - TCR_POS
        - TRFC_PRE
        - TRFC_POS
        - OUTROS_INDEXADORES
      example: TJLP
    EnumErrorsRequestPortability:
      type: string
      enum:
        - EM_ANDAMENTO
        - PRAZO_ACIMA_LIMITE
        - CONTRATO_INVALIDO
        - CONTRATO_NAO_ELEGIVEL
        - ERRO_IDEMPOTENCIA
        - SEM_EVIDENCIA_ASSINATURA
        - PERIODICIDADE_INVALIDA
        - CAMPO_INCONSISTENTE
        - VALOR_DIVERGENTE
        - PARAMETRO_NAO_INFORMADO
        - PARAMETRO_INVALIDO
        - NAO_INFORMADO
      example: EM_ANDAMENTO
      description: |
        Códigos de erros previstos na criação da iniciação de pagamento:
        - EM_ANDAMENTO: Valida se já existe um pedido de portabilidade de crédito para o contrato solicitado pelo trilho do OFB ou da Registradora.
        - PRAZO_ACIMA_LIMITE: Prazo do empréstimo maior ao restante das parcelas a serem liquidadas no contrato original.
        - CONTRATO_INVALIDO: ID de contrato inválida.
        - ERRO_IDEMPOTENCIA: Valida se há divergência entre chave de idempotência e informações enviadas.
        - SEM_EVIDENCIA_ASSINATURA – Valida se o objeto de assinatura do contrato foi preenchido pela instituição proponente devidamente, em caso de ausência.
        - CONTRATO_NAO_ELEGIVEL: Contrato não elegível para portabilidade dentro do trilho do OFB.
        - PERIODICIDADE_INVALIDA: Valida se não houve mudança na periodicidade entre o novo contrato e o contrato original, caso tenha sido alterado a periodicidade.
        - CAMPO_INCONSISTENTE: Valida se o preenchimento de alguns campos estão corretos Ex.: CNPJ da instituição credora deve ser o mesmo retornado pela API de Empréstimos.
        - VALOR_DIVERGENTE: Valor da proposta para quitar o saldo remanescente é inconsistente, podendo ser a maior ou a menor.
        - PARAMETRO_NAO_INFORMADO: Valida se todos os campos obrigatórios são informados.
        - PARAMETRO_INVALIDO: Valida se parâmetros informados obedecem a formatação especificada.
        - NAO_INFORMADO: Demais validações não explicitamente informadas.
    EnumErrorsPatchCancel:
      type: string
      enum:
        - CANCELAMENTO_NÃO_EFETUADO
      example: CANCELAMENTO_NÃO_EFETUADO
      description: |
        Códigos de erros previstos para portabilidade de crédito:
        - CANCELAMENTO_NÃO_EFETUADO: Estado da portabilidade diferente de RECEIVED, PENDING ou ACCEPTED_SETTLEMENT_IN_PROGRESS. Obs.: De acordo com o PRD o usuário poderá cancelar o pedido de portabilidade até a etapa de liquidação, após esta etapa não será mais permitido o cancelamento da portabilidade.
    EnumErrorsPostPayments:
      type: string
      enum:
        - PAGAMENTO_EFETUADO_FORA_PRAZO
      example: PAGAMENTO_EFETUADO_FORA_PRAZO
      description: |
        Códigos de erros previstos para portabilidade de crédito:
        - PAGAMENTO_EFETUADO_FORA_PRAZO: Estado da portabilidade diferente de ACCEPTED_SETTLEMENT_IN_PROGRESS ou PAYMENT_ISSUE. Obs.: Caso o pagamento tenha sido feito por engano a Instituição Proponente deve solicitar o estorno.
    EnumErrorsPostPaymentReversal:
      type: string
      enum:
        - DESAVERBACAO_POSSIVEL
      example: DESAVERBACAO_POSSIVEL
      description: |
        Códigos de erros previstos para portabilidade de crédito:
        - DESAVERBACAO_POSSIVEL: A Instituição credora tem um SLA de 10 dias contados apartir da comunicação do pagamento através do endpoint [POST] /portabilities/{portabilityId}/payment para realizar desaverbar o contrato consignado de empréstimo junto ao SERPRO.
    Meta:
      type: object
      description: Meta informações referentes à API requisitada.
      required:
        - requestDateTime
      properties:
        requestDateTime:
          description: 'Data e hora da consulta, conforme especificação [RFC-3339](https://datatracker.ietf.org/doc/html/rfc3339), formato UTC.'
          type: string
          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$'
          maxLength: 20
          format: date-time
          example: '2021-05-21T08:30:00Z'
    Links:
      type: object
      description: Referências para outros recursos da API requisitada.
      required:
        - self
      properties:
        self:
          type: string
          format: uri
          maxLength: 2000
          description: URI completo que gerou a resposta atual.
          example: 'https://api.banco.com.br/open-banking/api/v1/resource'
    ResponseErrorWithAbleAdditionalProperties:
      type: object
      required:
        - errors
      properties:
        errors:
          type: array
          minItems: 0
          maxItems: 13
          items:
            type: object
            required:
              - code
              - title
              - detail
            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
        meta:
          type: object
          properties:
            requestDateTime:
              description: 'Data e hora da consulta, conforme especificação [RFC-3339](https://datatracker.ietf.org/doc/html/rfc3339), formato UTC.'
              type: string
              maxLength: 20
              format: date-time
              example: '2021-05-21T08:30:00Z'
    422ResponseErrorPostPortabilities:
      type: object
      required:
        - errors
      properties:
        errors:
          type: array
          minItems: 0
          maxItems: 13
          items:
            type: object
            required:
              - code
              - title
              - detail
            properties:
              code:
                $ref: '#/components/schemas/EnumErrorsRequestPortability'
              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
        meta:
          type: object
          properties:
            requestDateTime:
              description: 'Data e hora da consulta, conforme especificação [RFC-3339](https://datatracker.ietf.org/doc/html/rfc3339), formato UTC.'
              type: string
              maxLength: 20
              format: date-time
              example: '2021-05-21T08:30:00Z'
    422ResponseErrorPatchCancel:
      type: object
      required:
        - errors
      properties:
        errors:
          type: array
          minItems: 0
          maxItems: 13
          items:
            type: object
            required:
              - code
              - title
              - detail
            properties:
              code:
                $ref: '#/components/schemas/EnumErrorsPatchCancel'
              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
        meta:
          type: object
          properties:
            requestDateTime:
              description: 'Data e hora da consulta, conforme especificação [RFC-3339](https://datatracker.ietf.org/doc/html/rfc3339), formato UTC.'
              type: string
              maxLength: 20
              format: date-time
              example: '2021-05-21T08:30:00Z'
    422ResponseErrorPostPayments:
      type: object
      required:
        - errors
      properties:
        errors:
          type: array
          minItems: 0
          maxItems: 13
          items:
            type: object
            required:
              - code
              - title
              - detail
            properties:
              code:
                $ref: '#/components/schemas/EnumErrorsPostPayments'
              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
        meta:
          type: object
          properties:
            requestDateTime:
              description: 'Data e hora da consulta, conforme especificação [RFC-3339](https://datatracker.ietf.org/doc/html/rfc3339), formato UTC.'
              type: string
              maxLength: 20
              format: date-time
              example: '2021-05-21T08:30:00Z'
    422ResponseErrorPostPaymentReversal:
      type: object
      required:
        - errors
      properties:
        errors:
          type: array
          minItems: 0
          maxItems: 13
          items:
            type: object
            required:
              - code
              - title
              - detail
            properties:
              code:
                $ref: '#/components/schemas/EnumErrorsPostPaymentReversal'
              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
        meta:
          type: object
          properties:
            requestDateTime:
              description: 'Data e hora da consulta, conforme especificação [RFC-3339](https://datatracker.ietf.org/doc/html/rfc3339), formato UTC.'
              type: string
              maxLength: 20
              format: date-time
              example: '2021-05-21T08:30:00Z'
    X-V:
      type: string
      pattern: '^\d+\.\d+\.\d+$'
      example: 1.0.0
    XFapiInteractionId:
      type: string
      format: uuid
      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: 36
      example: d78fc4e5-37ca-4da3-adf2-9b082bf92280
  parameters:
    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
    contractId:
      name: contractId
      in: path
      description: Identificador do contrato para todos os tipos de operação de crédito.
      required: true
      schema:
        type: string
        pattern: '^[a-zA-Z0-9][a-zA-Z0-9-]{0,99}$'
        maxLength: 100
    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
    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
        pattern: '^(?!\s)(.*)(\S)$'
        minLength: 1
        maxLength: 40
    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 UUID [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 IF Proponente (client) e o seu valor deve ser “espelhado” pela IF Credora (server) no cabeçalho de resposta. Caso não seja recebido ou se for recebido um valor inválido, a IF Credora deve gerar um x-fapi-interaction-id e retorná-lo na resposta com o HTTP Status Code 400. A IF Proponente deve acatar o valor recebido da IF Credora.'
      required: true
      schema:
        type: string
        format: uuid
        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: 36
        example: d78fc4e5-37ca-4da3-adf2-9b082bf92280
    portabilityId:
      name: portabilityId
      in: path
      description: Identificador do pedido de portabilidade de crédito.
      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}$'
        maxLength: 36
        minLength: 36
  securitySchemes:
    OpenId:
      type: openIdConnect
      openIdConnectUrl: 'https://auth.mockbank.poc.raidiam.io/.well-known/openid-configuration'
    OAuth2ClientCredentials:
      type: oauth2
      description: Fluxo OAuth necessário para que a receptora tenha acesso aos dados na instituição transmissora. Requer o processo de redirecionamento e autenticação do usuário a que se referem os dados.
      flows:
        clientCredentials:
          tokenUrl: 'https://authserver.example/token'
          scopes:
            payroll-credit-portability: Escopo necessário para acesso à API Portabilidade de Crédito.
    OAuth2AuthorizationCodeLoans:
      type: oauth2
      description: Fluxo OAuth necessário para que a receptora tenha acesso aos dados na instituição transmissora. Requer 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:
            loans: Escopo necessário para acesso à API Loans. O controle dos endpoints específicos é feito via permissions.
            openId: Indica que a autorização está sendo realizada utilizando o protocolo definido pela openid.
            'consent:consentId': Fluxo OAuth necessário para que a instituição proponente tenha acesso aos dados na instituição credora. Requer o processo de redirecionamento e autenticação do usuário a que se referem os dados.
  responses:
    OKResponseAccountData:
      description: Dados para realização do pagamento da operação via TED.
      headers:
        x-fapi-interaction-id:
          description: |
            Um UUID [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 IF Proponente (client) e o seu valor deve ser “espelhado” pela IF Credora (server) no cabeçalho de resposta. Caso não seja recebido ou se for recebido um valor inválido, a IF Credora deve gerar um x-fapi-interaction-id e retorná-lo na resposta com o HTTP Status Code 400. A IF Proponente deve acatar o valor recebido da IF Credora.
          schema:
            $ref: '#/components/schemas/XFapiInteractionId'
        x-v:
          description: |
            Cabeçalho de envio obrigatório que indica a versão implementada da API pela instituição financeira. Deve ser preenchido de forma completa, por exemplo: x-v : 1.0.2
          schema:
            $ref: '#/components/schemas/X-V'
      content:
        application/jwt:
          schema:
            $ref: '#/components/schemas/ResponseAccountData'
    OKResponsePortabilityEligibility:
      description: Dados dos contratos de empréstimo obtidos com sucesso.
      headers:
        x-fapi-interaction-id:
          description: |
            Um UUID [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 IF Proponente (client) e o seu valor deve ser “espelhado” pela IF Credora (server) no cabeçalho de resposta. Caso não seja recebido ou se for recebido um valor inválido, a IF Credora deve gerar um x-fapi-interaction-id e retorná-lo na resposta com o HTTP Status Code 400. A IF Proponente deve acatar o valor recebido da IF Credora.
          schema:
            $ref: '#/components/schemas/XFapiInteractionId'
        x-v:
          description: |
            Cabeçalho de envio obrigatório que indica a versão implementada da API pela instituição financeira. Deve ser preenchido de forma completa, por exemplo: x-v : 1.0.2
          schema:
            $ref: '#/components/schemas/X-V'
      content:
        application/jwt:
          schema:
            $ref: '#/components/schemas/ResponsePortabilityEligibility'
    POSTResponseCreditPortability:
      description: Dados da solicitação de portabilidade de crédito.
      headers:
        x-fapi-interaction-id:
          description: |
            Um UUID [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 IF Proponente (client) e o seu valor deve ser “espelhado” pela IF Credora (server) no cabeçalho de resposta. Caso não seja recebido ou se for recebido um valor inválido, a IF Credora deve gerar um x-fapi-interaction-id e retorná-lo na resposta com o HTTP Status Code 400. A IF Proponente deve acatar o valor recebido da IF Credora.
          schema:
            $ref: '#/components/schemas/XFapiInteractionId'
        x-v:
          description: |
            Cabeçalho de envio obrigatório que indica a versão implementada da API pela instituição financeira. Deve ser preenchido de forma completa, por exemplo: x-v : 1.0.2
          schema:
            $ref: '#/components/schemas/X-V'
      content:
        application/jwt:
          schema:
            $ref: '#/components/schemas/POSTResponseCreditPortability'
    OKResponsePortabilitiesByPortabilityId:
      description: Dados dos contratos de empréstimo obtidos com sucesso.
      headers:
        x-fapi-interaction-id:
          description: |
            Um UUID [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 IF Proponente (client) e o seu valor deve ser “espelhado” pela IF Credora (server) no cabeçalho de resposta. Caso não seja recebido ou se for recebido um valor inválido, a IF Credora deve gerar um x-fapi-interaction-id e retorná-lo na resposta com o HTTP Status Code 400. A IF Proponente deve acatar o valor recebido da IF Credora.
          schema:
            $ref: '#/components/schemas/XFapiInteractionId'
        x-v:
          description: |
            Cabeçalho de envio obrigatório que indica a versão implementada da API pela instituição financeira. Deve ser preenchido de forma completa, por exemplo: x-v : 1.0.2
          schema:
            $ref: '#/components/schemas/X-V'
      content:
        application/jwt:
          schema:
            $ref: '#/components/schemas/ResponsePortabilitiesByPortabilityId'
    PatchResponseCreditPortabilityCancel:
      description: Dados da confirmação do cancelamento da portabilidade de crédito.
      headers:
        x-fapi-interaction-id:
          description: |
            Um UUID [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 IF Proponente (client) e o seu valor deve ser “espelhado” pela IF Credora (server) no cabeçalho de resposta. Caso não seja recebido ou se for recebido um valor inválido, a IF Credora deve gerar um x-fapi-interaction-id e retorná-lo na resposta com o HTTP Status Code 400. A IF Proponente deve acatar o valor recebido da IF Credora.
          schema:
            $ref: '#/components/schemas/XFapiInteractionId'
        x-v:
          description: |
            Cabeçalho de envio obrigatório que indica a versão implementada da API pela instituição financeira. Deve ser preenchido de forma completa, por exemplo: x-v : 1.0.2
          schema:
            $ref: '#/components/schemas/X-V'
      content:
        application/jwt:
          schema:
            $ref: '#/components/schemas/PatchResponseCreditPortabilityCancel'
    OKResponseRegisteringEntity:
      description: Dados para auxiliar a identificação do contrato a ser portado junto a averbadora.
      headers:
        x-fapi-interaction-id:
          description: |
            Um UUID [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 IF Proponente (client) e o seu valor deve ser “espelhado” pela IF Credora (server) no cabeçalho de resposta. Caso não seja recebido ou se for recebido um valor inválido, a IF Credora deve gerar um x-fapi-interaction-id e retorná-lo na resposta com o HTTP Status Code 400. A IF Proponente deve acatar o valor recebido da IF Credora.
          schema:
            $ref: '#/components/schemas/XFapiInteractionId'
        x-v:
          description: |
            Cabeçalho de envio obrigatório que indica a versão implementada da API pela instituição financeira. Deve ser preenchido de forma completa, por exemplo: x-v : 1.0.2
          schema:
            $ref: '#/components/schemas/X-V'
      content:
        application/jwt:
          schema:
            $ref: '#/components/schemas/ResponseRegisteringEntity'
    POSTResponseCreditPortabilityPayment:
      description: Dados dos contratos de empréstimo obtidos com sucesso.
      headers:
        x-fapi-interaction-id:
          description: |
            Um UUID [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 IF Proponente (client) e o seu valor deve ser “espelhado” pela IF Credora (server) no cabeçalho de resposta. Caso não seja recebido ou se for recebido um valor inválido, a IF Credora deve gerar um x-fapi-interaction-id e retorná-lo na resposta com o HTTP Status Code 400. A IF Proponente deve acatar o valor recebido da IF Credora.
          schema:
            $ref: '#/components/schemas/XFapiInteractionId'
        x-v:
          description: |
            Cabeçalho de envio obrigatório que indica a versão implementada da API pela instituição financeira. Deve ser preenchido de forma completa, por exemplo: x-v : 1.0.2
          schema:
            $ref: '#/components/schemas/X-V'
      content:
        application/jwt:
          schema:
            $ref: '#/components/schemas/POSTResponseCreditPortabilityPayment'
    POSTResponseCreditPortabilityPaymentReversal:
      description: Dados da solicita o estorno da STR efetuada para liquidar o contrato consignado.
      headers:
        x-fapi-interaction-id:
          description: |
            Um UUID [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 IF Proponente (client) e o seu valor deve ser “espelhado” pela IF Credora (server) no cabeçalho de resposta. Caso não seja recebido ou se for recebido um valor inválido, a IF Credora deve gerar um x-fapi-interaction-id e retorná-lo na resposta com o HTTP Status Code 400. A IF Proponente deve acatar o valor recebido da IF Credora.
          schema:
            $ref: '#/components/schemas/XFapiInteractionId'
        x-v:
          description: |
            Cabeçalho de envio obrigatório que indica a versão implementada da API pela instituição financeira. Deve ser preenchido de forma completa, por exemplo: x-v : 1.0.2
          schema:
            $ref: '#/components/schemas/X-V'
      content:
        application/jwt:
          schema:
            $ref: '#/components/schemas/POSTResponseCreditPortabilityPaymentReversal'
    BadRequest:
      description: A requisição foi malformada, omitindo atributos obrigatórios, seja no payload ou através de atributos na URL.
      headers:
        x-fapi-interaction-id:
          description: |
            Um UUID [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 IF Proponente (client) e o seu valor deve ser “espelhado” pela IF Credora (server) no cabeçalho de resposta. Caso não seja recebido ou se for recebido um valor inválido, a IF Credora deve gerar um x-fapi-interaction-id e retorná-lo na resposta com o HTTP Status Code 400. A IF Proponente deve acatar o valor recebido da IF Credora.
          schema:
            $ref: '#/components/schemas/XFapiInteractionId'
        x-v:
          description: |
            Cabeçalho de envio obrigatório que indica a versão implementada da API pela instituição financeira. Deve ser preenchido de forma completa, por exemplo: x-v : 1.0.2
          schema:
            $ref: '#/components/schemas/X-V'
      content:
        application/json; charset=utf-8:
          schema:
            $ref: '#/components/schemas/ResponseErrorWithAbleAdditionalProperties'
    Forbidden:
      description: O token tem escopo incorreto ou uma política de segurança foi violada.
      headers:
        x-fapi-interaction-id:
          description: |
            Um UUID [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 IF Proponente (client) e o seu valor deve ser “espelhado” pela IF Credora (server) no cabeçalho de resposta. Caso não seja recebido ou se for recebido um valor inválido, a IF Credora deve gerar um x-fapi-interaction-id e retorná-lo na resposta com o HTTP Status Code 400. A IF Proponente deve acatar o valor recebido da IF Credora.
          schema:
            $ref: '#/components/schemas/XFapiInteractionId'
        x-v:
          description: |
            Cabeçalho de envio obrigatório que indica a versão implementada da API pela instituição financeira. Deve ser preenchido de forma completa, por exemplo: x-v : 1.0.2
          schema:
            $ref: '#/components/schemas/X-V'
      content:
        application/json; charset=utf-8:
          schema:
            $ref: '#/components/schemas/ResponseErrorWithAbleAdditionalProperties'
    InternalServerError:
      description: Ocorreu um erro no gateway da API ou no microsserviço.
      headers:
        x-fapi-interaction-id:
          description: |
            Um UUID [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 IF Proponente (client) e o seu valor deve ser “espelhado” pela IF Credora (server) no cabeçalho de resposta. Caso não seja recebido ou se for recebido um valor inválido, a IF Credora deve gerar um x-fapi-interaction-id e retorná-lo na resposta com o HTTP Status Code 400. A IF Proponente deve acatar o valor recebido da IF Credora.
          schema:
            $ref: '#/components/schemas/XFapiInteractionId'
        x-v:
          description: |
            Cabeçalho de envio obrigatório que indica a versão implementada da API pela instituição financeira. Deve ser preenchido de forma completa, por exemplo: x-v : 1.0.2
          schema:
            $ref: '#/components/schemas/X-V'
      content:
        application/json; charset=utf-8:
          schema:
            $ref: '#/components/schemas/ResponseErrorWithAbleAdditionalProperties'
    GatewayTimeout:
      description: GATEWAY TIMEOUT - A requisição não foi atendida dentro do tempo limite estabelecido.
      headers:
        x-fapi-interaction-id:
          description: |
            Um UUID [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 IF Proponente (client) e o seu valor deve ser “espelhado” pela IF Credora (server) no cabeçalho de resposta. Caso não seja recebido ou se for recebido um valor inválido, a IF Credora deve gerar um x-fapi-interaction-id e retorná-lo na resposta com o HTTP Status Code 400. A IF Proponente deve acatar o valor recebido da IF Credora.
          schema:
            $ref: '#/components/schemas/XFapiInteractionId'
        x-v:
          description: |
            Cabeçalho de envio obrigatório que indica a versão implementada da API pela instituição financeira. Deve ser preenchido de forma completa, por exemplo: x-v : 1.0.2
          schema:
            $ref: '#/components/schemas/X-V'
      content:
        application/json; charset=utf-8:
          schema:
            $ref: '#/components/schemas/ResponseErrorWithAbleAdditionalProperties'
    MethodNotAllowed:
      description: O consumidor tentou acessar o recurso com um método não suportado.
      headers:
        x-fapi-interaction-id:
          description: |
            Um UUID [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 IF Proponente (client) e o seu valor deve ser “espelhado” pela IF Credora (server) no cabeçalho de resposta. Caso não seja recebido ou se for recebido um valor inválido, a IF Credora deve gerar um x-fapi-interaction-id e retorná-lo na resposta com o HTTP Status Code 400. A IF Proponente deve acatar o valor recebido da IF Credora.
          schema:
            $ref: '#/components/schemas/XFapiInteractionId'
        x-v:
          description: |
            Cabeçalho de envio obrigatório que indica a versão implementada da API pela instituição financeira. Deve ser preenchido de forma completa, por exemplo: x-v : 1.0.2
          schema:
            $ref: '#/components/schemas/X-V'
      content:
        application/json; charset=utf-8:
          schema:
            $ref: '#/components/schemas/ResponseErrorWithAbleAdditionalProperties'
    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.
      headers:
        x-fapi-interaction-id:
          description: |
            Um UUID [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 IF Proponente (client) e o seu valor deve ser “espelhado” pela IF Credora (server) no cabeçalho de resposta. Caso não seja recebido ou se for recebido um valor inválido, a IF Credora deve gerar um x-fapi-interaction-id e retorná-lo na resposta com o HTTP Status Code 400. A IF Proponente deve acatar o valor recebido da IF Credora.
          schema:
            $ref: '#/components/schemas/XFapiInteractionId'
        x-v:
          description: |
            Cabeçalho de envio obrigatório que indica a versão implementada da API pela instituição financeira. Deve ser preenchido de forma completa, por exemplo: x-v : 1.0.2
          schema:
            $ref: '#/components/schemas/X-V'
      content:
        application/json; charset=utf-8:
          schema:
            $ref: '#/components/schemas/ResponseErrorWithAbleAdditionalProperties'
    NotFound:
      description: O recurso solicitado não existe ou não foi implementado.
      headers:
        x-fapi-interaction-id:
          description: |
            Um UUID [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 IF Proponente (client) e o seu valor deve ser “espelhado” pela IF Credora (server) no cabeçalho de resposta. Caso não seja recebido ou se for recebido um valor inválido, a IF Credora deve gerar um x-fapi-interaction-id e retorná-lo na resposta com o HTTP Status Code 400. A IF Proponente deve acatar o valor recebido da IF Credora.
          schema:
            $ref: '#/components/schemas/XFapiInteractionId'
        x-v:
          description: |
            Cabeçalho de envio obrigatório que indica a versão implementada da API pela instituição financeira. Deve ser preenchido de forma completa, por exemplo: x-v : 1.0.2
          schema:
            $ref: '#/components/schemas/X-V'
      content:
        application/json; charset=utf-8:
          schema:
            $ref: '#/components/schemas/ResponseErrorWithAbleAdditionalProperties'
    Unauthorized:
      description: Cabeçalho de autenticação ausente/inválido ou token inválido.
      headers:
        x-fapi-interaction-id:
          description: |
            Um UUID [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 IF Proponente (client) e o seu valor deve ser “espelhado” pela IF Credora (server) no cabeçalho de resposta. Caso não seja recebido ou se for recebido um valor inválido, a IF Credora deve gerar um x-fapi-interaction-id e retorná-lo na resposta com o HTTP Status Code 400. A IF Proponente deve acatar o valor recebido da IF Credora.
          schema:
            $ref: '#/components/schemas/XFapiInteractionId'
        x-v:
          description: |
            Cabeçalho de envio obrigatório que indica a versão implementada da API pela instituição financeira. Deve ser preenchido de forma completa, por exemplo: x-v : 1.0.2
          schema:
            $ref: '#/components/schemas/X-V'
      content:
        application/json; charset=utf-8:
          schema:
            $ref: '#/components/schemas/ResponseErrorWithAbleAdditionalProperties'
    UnprocessableEntity:
      description: A sintaxe da requisição está correta, mas não foi possível processar as instruções presentes.
      headers:
        x-fapi-interaction-id:
          description: |
            Um UUID [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 IF Proponente (client) e o seu valor deve ser “espelhado” pela IF Credora (server) no cabeçalho de resposta. Caso não seja recebido ou se for recebido um valor inválido, a IF Credora deve gerar um x-fapi-interaction-id e retorná-lo na resposta com o HTTP Status Code 400. A IF Proponente deve acatar o valor recebido da IF Credora.
          schema:
            $ref: '#/components/schemas/XFapiInteractionId'
        x-v:
          description: |
            Cabeçalho de envio obrigatório que indica a versão implementada da API pela instituição financeira. Deve ser preenchido de forma completa, por exemplo: x-v : 1.0.2
          schema:
            $ref: '#/components/schemas/X-V'
      content:
        application/jwt:
          schema:
            $ref: '#/components/schemas/ResponseErrorWithAbleAdditionalProperties'
    UnprocessableEntityPostPortabilities:
      description: A sintaxe da requisição está correta, mas não foi possível processar as instruções presentes.
      headers:
        x-fapi-interaction-id:
          description: |
            Um UUID [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 IF Proponente (client) e o seu valor deve ser “espelhado” pela IF Credora (server) no cabeçalho de resposta. Caso não seja recebido ou se for recebido um valor inválido, a IF Credora deve gerar um x-fapi-interaction-id e retorná-lo na resposta com o HTTP Status Code 400. A IF Proponente deve acatar o valor recebido da IF Credora.
          schema:
            $ref: '#/components/schemas/XFapiInteractionId'
        x-v:
          description: |
            Cabeçalho de envio obrigatório que indica a versão implementada da API pela instituição financeira. Deve ser preenchido de forma completa, por exemplo: x-v : 1.0.2
          schema:
            $ref: '#/components/schemas/X-V'
      content:
        application/jwt:
          schema:
            $ref: '#/components/schemas/422ResponseErrorPostPortabilities'
          examples:
            Saldo insuficiente:
              summary: Em Andamento
              value:
                errors:
                  - code: EM_ANDAMENTO
                    title: já existe um pedido de portabilidade de crédito para o contrato solicitado
                    detail: já existe um pedido de portabilidade de crédito para o contrato solicitado
                meta:
                  requestDateTime: '2021-05-21T08:30:00Z'
    UnprocessableEntityPatchCancel:
      description: A sintaxe da requisição está correta, mas não foi possível processar as instruções presentes.
      headers:
        x-fapi-interaction-id:
          description: |
            Um UUID [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 IF Proponente (client) e o seu valor deve ser “espelhado” pela IF Credora (server) no cabeçalho de resposta. Caso não seja recebido ou se for recebido um valor inválido, a IF Credora deve gerar um x-fapi-interaction-id e retorná-lo na resposta com o HTTP Status Code 400. A IF Proponente deve acatar o valor recebido da IF Credora.
          schema:
            $ref: '#/components/schemas/XFapiInteractionId'
        x-v:
          description: |
            Cabeçalho de envio obrigatório que indica a versão implementada da API pela instituição financeira. Deve ser preenchido de forma completa, por exemplo: x-v : 1.0.2
          schema:
            $ref: '#/components/schemas/X-V'
      content:
        application/jwt:
          schema:
            $ref: '#/components/schemas/422ResponseErrorPatchCancel'
          examples:
            Saldo insuficiente:
              summary: Cancelamento não efetuado
              value:
                errors:
                  - code: CANCELAMENTO_NÃO_EFETUADO
                    title: Estado da portabilidade diferente de RECEIVED, PENDING ou ACCEPTED_SETTLEMENT_IN_PROGRESS
                    detail: Estado da portabilidade diferente de RECEIVED, PENDING ou ACCEPTED_SETTLEMENT_IN_PROGRESS
                meta:
                  requestDateTime: '2021-05-21T08:30:00Z'
    UnprocessableEntityPostPayments:
      description: A sintaxe da requisição está correta, mas não foi possível processar as instruções presentes.
      headers:
        x-fapi-interaction-id:
          description: |
            Um UUID [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 IF Proponente (client) e o seu valor deve ser “espelhado” pela IF Credora (server) no cabeçalho de resposta. Caso não seja recebido ou se for recebido um valor inválido, a IF Credora deve gerar um x-fapi-interaction-id e retorná-lo na resposta com o HTTP Status Code 400. A IF Proponente deve acatar o valor recebido da IF Credora.
          schema:
            $ref: '#/components/schemas/XFapiInteractionId'
        x-v:
          description: |
            Cabeçalho de envio obrigatório que indica a versão implementada da API pela instituição financeira. Deve ser preenchido de forma completa, por exemplo: x-v : 1.0.2
          schema:
            $ref: '#/components/schemas/X-V'
      content:
        application/jwt:
          schema:
            $ref: '#/components/schemas/422ResponseErrorPostPayments'
          examples:
            Saldo insuficiente:
              summary: Pagamento efetuado fora do prazo
              value:
                errors:
                  - code: PAGAMENTO_EFETUADO_FORA_PRAZO
                    title: Estado da portabilidade diferente de ACCEPTED_SETTLEMENT_IN_PROGRESS ou PAYMENT_ISSUE
                    detail: Estado da portabilidade diferente de ACCEPTED_SETTLEMENT_IN_PROGRESS ou PAYMENT_ISSUE
                meta:
                  requestDateTime: '2021-05-21T08:30:00Z'
    UnprocessableEntityPostPaymentReversal:
      description: A sintaxe da requisição está correta, mas não foi possível processar as instruções presentes.
      headers:
        x-fapi-interaction-id:
          description: |
            Um UUID [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 IF Proponente (client) e o seu valor deve ser “espelhado” pela IF Credora (server) no cabeçalho de resposta. Caso não seja recebido ou se for recebido um valor inválido, a IF Credora deve gerar um x-fapi-interaction-id e retorná-lo na resposta com o HTTP Status Code 400. A IF Proponente deve acatar o valor recebido da IF Credora.
          schema:
            $ref: '#/components/schemas/XFapiInteractionId'
        x-v:
          description: |
            Cabeçalho de envio obrigatório que indica a versão implementada da API pela instituição financeira. Deve ser preenchido de forma completa, por exemplo: x-v : 1.0.2
          schema:
            $ref: '#/components/schemas/X-V'
      content:
        application/jwt:
          schema:
            $ref: '#/components/schemas/422ResponseErrorPostPaymentReversal'
          examples:
            Saldo insuficiente:
              summary: DESAVERBACAO_POSSIVEL
              value:
                errors:
                  - code: DESAVERBACAO_POSSIVEL
                    title: Desaverbação ainda no prazo do SLA de 10 dias.
                    detail: Desaverbação ainda no prazo do SLA de 10 dias.
                meta:
                  requestDateTime: '2021-05-21T08:30:00Z'
    SiteIsOverloaded:
      description: O site está sobrecarregado e a operação foi recusada, pois foi atingido o limite máximo de TPS global, neste momento.
      headers:
        x-fapi-interaction-id:
          description: |
            Um UUID [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 IF Proponente (client) e o seu valor deve ser “espelhado” pela IF Credora (server) no cabeçalho de resposta. Caso não seja recebido ou se for recebido um valor inválido, a IF Credora deve gerar um x-fapi-interaction-id e retorná-lo na resposta com o HTTP Status Code 400. A IF Proponente deve acatar o valor recebido da IF Credora.
          schema:
            $ref: '#/components/schemas/XFapiInteractionId'
        x-v:
          description: |
            Cabeçalho de envio obrigatório que indica a versão implementada da API pela instituição financeira. Deve ser preenchido de forma completa, por exemplo: x-v : 1.0.2
          schema:
            $ref: '#/components/schemas/X-V'
      content:
        application/json; charset=utf-8:
          schema:
            $ref: '#/components/schemas/ResponseErrorWithAbleAdditionalProperties'
    Default:
      description: Erro inesperado.
      headers:
        x-fapi-interaction-id:
          description: |
            Um UUID [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 IF Proponente (client) e o seu valor deve ser “espelhado” pela IF Credora (server) no cabeçalho de resposta. Caso não seja recebido ou se for recebido um valor inválido, a IF Credora deve gerar um x-fapi-interaction-id e retorná-lo na resposta com o HTTP Status Code 400. A IF Proponente deve acatar o valor recebido da IF Credora.
          schema:
            $ref: '#/components/schemas/XFapiInteractionId'
        x-v:
          description: |
            Cabeçalho de envio obrigatório que indica a versão implementada da API pela instituição financeira. Deve ser preenchido de forma completa, por exemplo: x-v : 1.0.2
          schema:
            $ref: '#/components/schemas/X-V'
      content:
        application/json; charset=utf-8:
          schema:
            $ref: '#/components/schemas/ResponseErrorWithAbleAdditionalProperties'