openapi: 3.0.0
info:
  title: API Pix
  version: "2.9.0"
  license:
    name: Apache 2.0
    url: http://www.apache.org/licenses/LICENSE-2.0
  contact:
    name: Suporte PIX BCB
    email: suporte.pix@bcb.gov.br
    url: https://www.bcb.gov.br/estabilidadefinanceira/pix
  description: |-
    A API Pix padroniza serviços oferecidos pelo PSP recebedor no contexto do arranjo Pix, direcionando:
    - o gerenciamentos de cobranças, com e sem recorrências, em lotes ou não;
    - o acompanhamento dos Pix e suas devoluções;
    - as consultas.

    Os serviços expostos pelo PSP recebedor permitem ao usuário recebedor estabelecer integração
    de sua automação com os serviços Pix do PSP.

    # Evolução da API Pix

    A API Pix busca respeitar __[SemVer](https://semver.org/lang/pt-BR/)__. Nesse sentido,
    mudanças compatíveis não devem gerar nova versão _major_.

    A versão da API é composta por 4 elementos: _major_, _minor_, _patch_ e _release candidate_.
    A versão `v[x]`que consta no path da URL é o elemento _major_ da versão da API.
    A evolução da versão se dá seguinte forma:

      - Major: alterações incompatíveis, com quebra de contrato (v1.0.0 → v2.0.0) 
      - Minor: alterações compatíveis, sem quebra de contrato (v1.1.0 → v1.2.0)
      - Patch: bugfixes, esclarecimentos às especificações, sem alterações funcionais (v1.1.1 → v1.1.2)
      - Release candidate: versões de pré-lançamento de qualquer patch futuro, minor ou major (v1.0.0-rc.1 → v1.0.0-rc.22)

    Alterações sem quebra de contrato e esclarecimentos às especificações podem ocorrer a qualquer momento.
    Clientes devem estar preparados para lidar com essas mudanças sem quebrar.

    As seguintes mudanças são esperadas e consideradas retrocompatíveis:

    - Adição de novos recursos na API Pix;
    - Adição de novos parâmetros opcionais;
    - Adição de novos campos em respostas da API Pix;
    - Alteração da ordem de campos;
    - Adição de novos elementos em enumerações.


    # Tratamento de erros

    A API Pix retorna códigos de status HTTP para indicar sucesso ou falhas das
    requisições, são eles:
    - Códigos `2xx` indicam sucesso; 
    - Códigos `4xx` indicam falhas causadas pelas
    informações enviadas pelo cliente ou pelo estado atual das entidades e;
    - Códigos `5xx` indicam problemas no serviço no lado da API Pix.

    As respostas de erro incluem no corpo detalhes do erro seguindo o
    _schema_ da [RFC 7807](https://tools.ietf.org/html/rfc7807).

    O campo `type` identifica o tipo de erro e na API Pix segue o padrão:

    `https://pix.bcb.gov.br/api/v2/error/<TipoErro>`

    O padrão acima listado, referente ao campo `type`, não consiste, necessariamente, em uma
    URL que apresentará uma página web válida, ou um endpoint válido, embora possa, futuramente,
    ser exatamente o caso. O objetivo primário é apenas e tão somente identificar o tipo de erro.

    Convém reforçar que a API Pix contempla uma lista de produtos e respectivas funcionalidades ofertadas pelo PSP recebedor. 
    Cabe à relação contratual com cada usuário recebedor a concessão da totalidade ou de um subconjunto de acessos
    relacionados aos produtos ofertados. Por exemplo, o usuário recebedor, ao acessar uma funcionalidade não contemplada 
    no seu escopo contratual, receberá o erro geral `AcessoNegado` descrito na próxima seção.

    Abaixo estão listados os tipos de erro e possíveis violações da API Pix.

    ## Gerais

    Esta seção reúne erros que poderiam ser retornados por quaisquer endpoints listados na API Pix.

    ### `RequisicaoInvalida`

      * __Significado__: Requisição inválida.
      * __HTTP Status Code__: [400 Bad Request](https://tools.ietf.org/html/rfc7231#section-6.5.1).

    ### `AcessoNegado`

      * __Significado__: Requisição de participante autenticado que viola alguma regra de autorização.
      * __HTTP Status Code__: [403 Forbidden](https://tools.ietf.org/html/rfc7231#section-6.5.3).

    ### `NaoEncontrado`

      * __Significado__: Entidade não encontrada.
      * __HTTP Status Code__: [404 Not Found](https://tools.ietf.org/html/rfc7231#section-6.5.4).

    ### `PermanentementeRemovido`

      * __Significado__: Indica que a entidade existia, mas foi permanentemente removida.
      * __HTTP Status Code__: [410 Gone](https://tools.ietf.org/html/rfc7231#section-6.5.9).

    ### `ErroInternoDoServidor`

      * __Significado__: Condição inesperada ao processar requisição.
      * __HTTP Status Code__: [500 Internal Server Error](https://tools.ietf.org/html/rfc7231#section-6.6.1).

    ### `ServicoIndisponivel`

      * __Significado__: Serviço não está disponível no momento. Serviço solicitado pode estar em manutenção ou fora da janela de funcionamento.
      * __HTTP Status Code__: [503 Service Unavailable](https://tools.ietf.org/html/rfc7231#section-6.6.4).

    ### `IndisponibilidadePorTempoEsgotado`

      * __Significado__: Indica que o serviço demorou além do esperado para retornar.
      * __HTTP Status Code__: [504 Gateway Timeout](https://tools.ietf.org/html/rfc7231#section-6.6.5).

    ## Tag CobPayload 

    Esta seção reúne erros retornados pelos endpoints organizados sob a tag `CobPayload`.
    Estes erros indicam problemas na tentativa de recuperação, via _location_, do Payload JSON que representa a cobrança.

    ### `CobPayloadNaoEncontrado`

    * __Significado__: a cobrança em questão não foi encontrada para a location requisitada.
    * __HTTP Status Code__: [404](https://tools.ietf.org/html/rfc7231#section-6.5.4) ou [410](https://tools.ietf.org/html/rfc7231#section-6.5.9).
    * __endpoints__: `GET /{pixUrlAccessToken}`, `GET /cobv/{pixUrlAccessToken}`.

    Se a presente location exibia uma cobrança, mas não a exibirá mais de maneira permanentemente,
    pode-se aplicar o HTTP status code [410](https://tools.ietf.org/html/rfc7231#section-6.5.9). Se a presente location não
    está exibindo nenhuma cobrança, pode-se utilizar o HTTP status code [404](https://tools.ietf.org/html/rfc7231#section-6.5.4).

    Uma cobrança pode estar "expirada" (`calendario.expiracao`), "vencida", "Concluida",
    entre outros estados em que não poderia ser efetivamente paga. Nesses casos, é uma liberalidade
    do PSP recebedor retornar o presente código de erro ou optar por servir o payload de qualquer maneira,
    objetivando fornecer uma informação adicional ao usuário pagador final a respeito da cobrança.

    ### `CobPayloadOperacaoInvalida`

    * __Significado__: a cobrança existe, mas a requisição é inválida.
    * __HTTP Status Code__: [400](https://tools.ietf.org/html/rfc7231#section-6.5.1).
    * __endpoints__: `GET /cobv/{pixUrlAccessToken}`.

    __Violações__:
      - `codMun` não respeita o _schema_.
      - `codMun` não é um código válido segundo a __[tabela de municípios do IBGE](https://www.ibge.gov.br/explica/codigos-dos-municipios.php)__.
      - `DPP` não respeita o _schema_.
      - `DPP` anterior ao momento presente.
      - `DPP` superior à validade da cobrança em função dos parâmetros `calendario.dataDeVencimento`
      e `calendario.validadeAposVencimento`. Exemplo: `dataDeVencimento` => 2020-12-25,
      `validadeAposVencimento` => 10, `DPP` => 2021-01-05. Neste exemplo, o parâmetro `DPP` é
      inválido considerando o contexto apresentado porque é uma data em que a cobrança
      não poderá ser paga. A cobrança, neste exemplo, não será considerada válida
      a partir da data 2021-01-05.

    ## Tag RecPayload 

    Esta seção reúne erros retornados pelos endpoints organizados sob a tag `RecPayload`.
    Estes erros indicam problemas na tentativa de recuperação, via _location_, do Payload JSON que representa a recorrência.

    ### `RecPayloadNaoEncontrado`

    * __Significado__: a recorrência em questão não foi encontrada para a location requisitada.
    * __HTTP Status Code__: [404](https://tools.ietf.org/html/rfc7231#section-6.5.4) ou [410](https://tools.ietf.org/html/rfc7231#section-6.5.9).
    * __endpoint__: `GET /rec/{recUrlAccessToken}`.

    Se a presente location exibia uma recorrência, mas não a exibirá mais de maneira permanentemente,
    pode-se aplicar o HTTP status code [410](https://tools.ietf.org/html/rfc7231#section-6.5.9). Se a presente location não
    está exibindo nenhuma recorrência, pode-se utilizar o HTTP status code [404](https://tools.ietf.org/html/rfc7231#section-6.5.4).

    Uma recorrência pode estar expirada, cancelada ou rejeitada, nesses casos, é uma liberalidade
    do PSP recebedor retornar o presente código de erro ou optar por servir o payload de qualquer maneira,
    objetivando fornecer uma informação adicional ao usuário pagador final a respeito da recorrência.

    ### `RecPayloadOperacaoInvalida`

    * __Significado__: a recorrência em questão encontra-se em expirada, rejeitada ou cancelada para a location requisitada.
    * __HTTP Status Code__: [400](https://tools.ietf.org/html/rfc7231#section-6.5.1).
    * __endpoint__: `GET /rec/{recUrlAccessToken}`.

    __Violações__ para o endpoint `GET /rec/{recUrlAccessToken}`:
    - O campo `recUrlAccessToken` referencia uma recorrência expirada, rejeitada ou cancelada.

    ## Tag Rec

    Esta seção reúne erros retornados pelos endpoints organizados sob a tag `Rec`.
    Esses erros indicam problemas no gerenciamento de uma recorrência.

    ### `RecNaoEncontrada`

    * __Significado__: Recorrência não encontrada para o idRec informado.
    * __HTTP Status Code__: [404](https://tools.ietf.org/html/rfc7231#section-6.5.4).
    * __endpoints__: `[GET|PATCH] /rec/{idRec}`. 

    ### `RecOperacaoInvalida`

    * __Significado__: a requisição que busca alterar ou criar uma recorrência não respeita o _schema_ ou está semanticamente errada.
    * __HTTP Status Code__: [400](https://tools.ietf.org/html/rfc7231#section-6.5.1).
    * __endpoints__: `POST /rec` e `PATCH /rec/{idRec}`.

    __Violações__ para o endpoint `POST /rec`:
      - O objeto `rec.vinculo` não respeita o _schema_.
      - O campo `rec.calendario.dataInicial` é anterior à data de criação da recorrência.
      - O campo `rec.calendario.dataFinal` é anterior ao campo `rec.calendario.dataInicial`.
      - O campo `rec.calendario.periodicidade` não respeita o _schema_.
      - O objeto `rec.valor` não respeita o _schema_.
      - O campo `rec.valor.valorRec` não respeita o _schema_.
      - O campo `rec.valor.valorMinimoRecebedor` não respeita o _schema_.
      - Ambos os campos `rec.valor.valorRec` e `rec.valor.valorMinimoRecebedor` estão preenchidos.
      - O objeto `rec.recebedor` não respeita o _schema_.
      - O campo `rec.politicaRetentativa` não respeita o _schema_.
      - O location referenciado por `rec.loc` inexiste.
      - O location referenciado por `rec.loc` já está sendo utilizado por outra recorrência.
      - O valor do campo `rec.recebedor.convenio` não é aceito pelo PSP Recebedor.

    __Violações__ para o endpoint `PATCH /rec/{idRec}`:

      - O campo `rec.calendario.dataInicial` é anterior à data de criação da recorrência.
      - O location referenciado por `rec.loc` inexiste.
      - O location referenciado por `rec.loc` já está sendo utilizado por outra recorrência.
      - O campo `rec.status` não respeita o _schema_.
      - A recorrência encontra-se expirada, cancelada ou rejeitada.
      - O campo `rec.loc` somente pode ser alterado quando a recorrência apresentar-se com o status CRIADA.
      - O campo `rec.calendario.dataInicial` somente pode ser alterado quando a recorrência apresentar-se com o status CRIADA.
      - O campo `rec.dadosJornada.txid` não pode ser alterado quando a recorrência apresentar-se com o status REJEITADA ou CANCELADA.

    ### `RecConsultaInvalida`

    * __Significado__: os parâmetros de consulta à lista de recorrências que não respeitam o schema
    ou não fazem sentido semanticamente.
    * __HTTP Status Code__: [400](https://tools.ietf.org/html/rfc7231#section-6.5.1).
    * __endpoints__: `GET /rec` e `GET /rec/{idRec}`.

    __Violações__ específicas para o endpoint `GET /rec`:
      - algum dos parâmetros informados para a consulta não respeita o _schema_.
      - o _timestamp_ representado pelo parâmetro `fim` é anterior ao timestamp
      representado pelo parâmetro `inicio`.
      - ambos os parâmetros `cpf` e `cnpj` estão preenchidos.
      - o parâmetro `paginacao.paginaAtual` é negativo.
      - o parâmetro `paginacao.itensPorPagina` é negativo.
    
    __Violações__ específicas para o endpoint `GET /rec/{idRec}`:

      - o parâmetro `txid` não corresponde a uma cobrança compatível com o campo `ativacao.tipoJornada`. (_Exemplo: `txid` correspondente a uma CobV e `ativação.tipoJornada` igual a JORNADA_3._)
      - o parâmetro `txid` corresponde a uma cobrança imediata diferente da informada no campo `ativação.dadosJornada.txid`. Esta violação não ocorre caso o parâmetro txid corresponda a uma cobrança com vencimento.

    ## Tag SolicRec

    Esta seção reúne erros retornados pelos endpoints organizados sob a tag `SolicRec`.
    Esses erros indicam problemas no gerenciamento de uma solicitação de confirmação de recorrência.

    ### `SolicRecNaoEncontrada`

    * __Significado__: Solicitação de recorrência não encontrada para o idSolicRec informado.
    * __HTTP Status Code__: [404](https://tools.ietf.org/html/rfc7231#section-6.5.4).
    * __endpoints__: `[GET] /solicrec/{idSolicRec}`.

    ### `SolicRecOperacaoInvalida`

    * __Significado__: a requisição que busca criar ou alterar uma solicitação de confirmação de recorrência não respeita o _schema_ ou está semanticamente errada.
    * __HTTP Status Code__: [400](https://tools.ietf.org/html/rfc7231#section-6.5.1).
    * __endpoints__: `[POST] /solicrec` e `PATCH /solicrec/{idSolicRec}`.

    __Violações__ para o endpoint `POST /solicrec`:
      - O objeto `solicrec.calendario` não respeita o _schema_.
      - O campo `solicrec.calendario.dataExpiracaoSolicitacao` é anterior à data de criação da solicitação da recorrência.
      - O objeto `solicrec.destinatario` não respeita o _schema_.
      - Existe uma solicitação ativa referente ao mesmo `solicrec.idRec`.
    
    __Violações__ para o endpoint `PATCH /solicrec/{idSolicRec}`:

      - Não é possível cancelar uma solicitação de recorrência com o status diferente de CRIADA, ENVIADA ou RECEBIDA.

    ## Tag CobR

    Esta seção reúne erros retornados pelos endpoints organizados sob a tag `CobR`.
    Esses erros indicam problemas no gerenciamento de uma cobrança recorrente.

    ### `CobRNaoEncontrado`

    * __Significado__: Cobrança não encontrada para o txid informado.
    * __HTTP Status Code__: [404](https://tools.ietf.org/html/rfc7231#section-6.5.4).
    * __endpoints__: `[GET|PATCH] /cobr/{txid}` e  `[POST] /cobr/{txid}/retentativa/{data}`.

    ### `CobROperacaoInvalida`

    * __Significado__: a requisição que busca alterar ou criar uma cobrança recorrente não respeita o _schema_ ou está semanticamente errada.
    * __HTTP Status Code__: [400](https://tools.ietf.org/html/rfc7231#section-6.5.1).
    * __endpoints__: `[POST|PUT|PATCH] /cobr/{txid}` e  `[POST] /cobr/{txid}/retentativa/{data}`.

    __Violações__ para o endpoint `POST|PUT /cobr/{txid}`:
      - O campo `cobr.infoAdicional` não respeita o _schema_.
      - O campo `cobr.status` não respeita o _schema_.
      - O objeto `cobr.calendario` não respeita o _schema_.
      - O campo `cobr.calendario.dataDeVencimento` é anterior à data de criação da cobrança.
      - O campo `cobr.valor` não respeita o _schema_.
      - O objeto `cobr.recebedor` não respeita o _schema_.
      - Os campos `cobr.recebedor.conta` e `cobr.recebedor.agencia` correspondem a uma conta que não pertence a este usuário recebedor.
      - O objeto `cobr.devedor` não respeita o _schema_.
      - O campo `cobr.txid` encontra-se em uso.
      - Existe uma CobR com status diferente de REJEITADA e CANCELADA referente ao mesmo `cobr.idRec` com `calendario.dataDeVencimento` no mesmo ciclo.

    __Violações__ para o endpoint `PATCH /cobr/{txid}`:

      - Não é possível cancelar uma cobrança em uma data igual ou maior que a data prevista da primeira tentativa de liquidação.

    __Violações__ para o endpoint `POST /cobr/{txid}/retentativa/{data}`:

      - Existe uma tentativa com status `SOLICITADA` ou `AGENDADA`.
      - Existe uma tentativa em andamento.
      - Existe uma tentativa ativa.
      - Existe uma tentativa não finalizada.
      - Existe uma tentativa vigente para a `data` informada.
      - O parâmetro `data` não corresponde a uma data futura.
      - A política configurada na recorrência não permite retentativa de cobrança.

    ### `CobRConsultaInvalida`

    * __Significado__: os parâmetros de consulta à lista de cobranças que não respeitam o schema
    ou não fazem sentido semanticamente.
    * __HTTP Status Code__: [400](https://tools.ietf.org/html/rfc7231#section-6.5.1).
    * __endpoints__: `GET /cobr` e `GET /cobr/{txid}`.

    __Violações__ específicas para o endpoint `GET /cobr`:
      - algum dos parâmetros informados para a consulta não respeita o _schema_.
      - o _timestamp_ representado pelo parâmetro `fim` é anterior ao timestamp
      representado pelo parâmetro `inicio`.
      - ambos os parâmetros `cpf` e `cnpj` estão preenchidos.
      - o parâmetro `paginacao.paginaAtual` é negativo.
      - o parâmetro `paginacao.itensPorPagina` é negativo.

    ## Tag Cob

    Esta seção reúne erros retornados pelos endpoints organizados sob a tag `Cob`.
    Esses erros indicam problemas no gerenciamento de uma cobrança para pagamento imediato.

    ### `CobNaoEncontrado`

    * __Significado__: Cobrança não encontrada para o txid informado.
    * __HTTP Status Code__: [404](https://tools.ietf.org/html/rfc7231#section-6.5.4).
    * __endpoints__: `[GET|PATCH] /cob/{txid}`.

    ### `CobOperacaoInvalida`

    * __Significado__: a requisição que busca alterar ou criar uma cobrança para pagamento imediato
    não respeita o _schema_ ou está semanticamente errada.
    * __HTTP Status Code__: [400](https://tools.ietf.org/html/rfc7231#section-6.5.1).
    * __endpoints__: `[POST|PUT|PATCH] /cob/{txid}`.

    __Violações__ para os endpoints `PUT|PATCH /cob/{txid}`:
      - O campo `cob.calendario.expiracao` é igual ou menor que `zero`.
      - O campo `cob.valor.original` não respeita o _schema_.
      - O campo `cob.valor.original` é `zero`.
      - O objeto `cob.devedor` não respeita o _schema_.
      - O campo `cob.chave` não respeita o _schema_.
      - O campo `cob.chave` corresponde a uma conta que não pertence a este usuário recebedor.
      - O campo `solicitacaoPagador` não respeita o _schema_.
      - O objeto `infoAdicionais` não respeita o _schema_.
      - O `location` referenciado por `loc.id` inexiste.
      - O `location` referenciado por `loc.id` já está sendo utilizado por outra cobrança.
      - O `location` referenciado por `cob.loc.id` apresenta tipo "cobv" (deveria ser "cob").

    __Violações__ específicas para o endpoint `PUT /cob/{txid}`:
      - A cobrança já existe, não está no status ATIVA, e a presente requisição busca alterá-la.

    __Violações__ específicas para o endpoint `PATCH /cob/{txid}`:
      - A cobrança não está ATIVA, e a presente requisição busca alterá-la.
      - A cobrança está ATIVA, e a presente requisição propõe alterar
      seu status para _REMOVIDA_PELO_USUARIO_RECEBEDOR_ juntamente com outras alterações
      (não faz sentido remover uma cobrança ao mesmo tempo em que se realizam
      alterações que não serão aproveitadas).
      - o campo `cob.status` não respeita o _schema_.

    ### `CobConsultaInvalida`

    * __Significado__: os parâmetros de consulta à lista de cobranças para pagamento imediato
    não respeitam o _schema_ ou não fazem sentido semanticamente.
    * __HTTP Status Code__: [400](https://tools.ietf.org/html/rfc7231#section-6.5.1).
    * __endpoints__: `GET /cob` e `GET /cob/{txid}`.

    __Violações__ específicas para o endpoint `GET /cob`:
      - algum dos parâmetros informados para a consulta não respeita o _schema_.
      - o _timestamp_ representado pelo parâmetro `fim` é anterior ao timestamp
      representado pelo parâmetro `inicio`.
      - ambos os parâmetros `cpf` e `cnpj` estão preenchidos.
      - o parâmetro `paginacao.paginaAtual` é negativo.
      - o parâmetro `paginacao.itensPorPagina` é negativo.

    __Violações__ específicas para o endpoint `GET /cob/{txid}`:
      - o parâmetro `revisao` corresponde a uma revisão inexistente para a cobrança
      apontada pelo parâmetro `txid`.

    ## Tag CobV

    Esta seção reúne erros retornados pelos endpoints organizados sob a tag `CobV`.
    Esses erros indicam problemas no gerenciamento de uma cobrança com vencimento.

    ### `CobVNaoEncontrada`

    * __Significado__: Cobrança com vencimento não encontrada para o txid informado.
    * __HTTP Status Code__: [404](https://tools.ietf.org/html/rfc7231#section-6.5.4).
    * __endpoints__: `[GET|PATCH] /cobv/{txid}`.

    ### `CobVOperacaoInvalida`

    * __Significado__: a requisição que busca alterar ou criar uma cobrança com vencimento
    não respeita o _schema_ ou está semanticamente errada.
    * __HTTP Status Code__: [400](https://tools.ietf.org/html/rfc7231#section-6.5.1).
    * __endpoints__: `[PUT|PATCH] /cobv/{txid}`.

    __Violações__ para os endpoints `PUT|PATCH /cobv/{txid}`:
      - Este `txid` está associado a um lote e no referido lote, o status desta cobrança está atribuído como
      "EM_PROCESSAMENTO" ou "NEGADA".
      - O campo `cobv.calendario.dataDeVencimento` é anterior à data de criação da cobrança.
      - O campo `cobv.calendario.validadeAposVencimento` é menor do que zero.
      - O objeto `cobv.devedor` não respeita o _schema_.
      - O campo `cobv.chave` não respeita o _schema_.
      - O campo `cobv.chave` corresponde a uma conta que não pertence a este usuário recebedor.
      - O campo `solicitacaoPagador` não respeita o _schema_.
      - O objeto `infoAdicionais` não respeita o _schema_.
      - O location referenciado por `cobv.loc.id` inexiste.
      - O location referenciado por `cobv.loc.id` já está sendo utilizado por outra cobrança.
      - O location referenciado por `cobv.loc.id` apresenta tipo "cob" (deveria ser "cobv").
      - O campo `cobv.valor.original` não respeita o _schema_.
      - O campo `cobv.valor.original` apresenta o valor `zero`.
      - O objeto `cobv.valor.multa` não respeita o _schema_.
      - O objeto `cobv.valor.juros` não respeita o _schema_.
      - O objeto `cobv.valor.abatimento` não respeita o _schema_.
      - O objeto `cobv.valor.desconto` não respeita o _schema_.
      - O objeto `cobv.valor.abatimento` representa um valor maior ou igual ao valor da
      cobrança original ou maior ou igual a 100%.
      - O objeto `cobv.valor.desconto` apresenta algum elemento de desconto que representa um valor maior ou
      igual ao valor da cobrança original ou maior ou igual a 100%.
      - O objeto `cobv.valor.desconto` apresenta algum elemento cuja data seja posterior à data de vencimento
      representada por `calendario.dataDeVencimento`.
      - O objeto `cobv.valor.desconto` apresenta modalidade no valor `1` ou `2`,
      porém `cobv.valor.desconto.valorPerc` encontra-se preenchido
      - O objeto `cobv.valor.desconto` apresenta modalidade no valor `1` ou `2`, porém
      o array `cobv.valor.desconto.descontoDataFixa` está vazio ou nulo.
      - O objeto `cobv.valor.desconto` apresenta modalidade nos valores de `3` a `6`, porém
      o elemento `cobv.valor.desconto.valorPerc` não está preenchido.
      - O objeto `cobv.valor.desconto` apresenta modalidade nos valores de `3` a `6`, porém
      o elemento `cobv.valor.desconto.descontoDataFixa` está preenchido ou não nulo.



    __Violações__ específicas para o endpoint `PUT /cobv/{txid}`:
      - A cobrança já existe, não está ATIVA, e a presente requisição busca alterá-la

    __Violações__ específicas para o endpoint `PATCH /cobv/{txid}`:
      - A cobrança não está ATIVA, e a presente requisição busca alterá-la
      - A cobrança está ATIVA, e a presente requisição propõe alterar
      seu status para _REMOVIDA_PELO_USUARIO_RECEBEDOR_ juntamente com outras alterações
      (não faz sentido remover uma cobrança ao mesmo tempo em que se realizam
      alterações que não serão aproveitadas).
      - o campo `cob.status` não respeita o _schema_.

    ### `CobVConsultaInvalida`

    * __Significado__: os parâmetros de consulta à lista de cobranças com vencimento não respeitam o schema
    ou não fazem sentido semanticamente.
    * __HTTP Status Code__: [400](https://tools.ietf.org/html/rfc7231#section-6.5.1).
    * __endpoints__: `GET /cobv` e `GET /cobv/{txid}`.

    __Violações__ específicas para o endpoint `GET /cobv`:
      - algum dos parâmetros informados para a consulta não respeita o _schema_.
      - o _timestamp_ representado pelo parâmetro `fim` é anterior ao timestamp
      representado pelo parâmetro `inicio`.
      - ambos os parâmetros `cpf` e `cnpj` estão preenchidos.
      - o parâmetro `paginacao.paginaAtual` é negativo.
      - o parâmetro `paginacao.itensPorPagina` é negativo.

    __Violações__ específicas para o endpoint `GET /cobv/{txid}`:
      - o parâmetro `revisao` corresponde a uma revisão inexistente para a cobrança
      apontada pelo parâmetro `txid`.

    ## Tag LoteCobV
    Esta seção reúne erros referentes a endpoints que tratam do gerenciamento de lotes de cobrança.

    ### `LoteCobVNaoEncontrado`
    * __Significado__: Lote não encontrado para o `id` informado.
    * __HTTP Status Code__: [404](https://tools.ietf.org/html/rfc7231#section-6.5.4).
    * __endpoints__: `[GET|PATCH] /lotecobv/{id}`.

    ### `LoteCobVOperacaoInvalida`
    * __Significado__: a requisição que busca alterar ou criar um lote de cobranças com vencimento
    não respeita o _schema_ ou está semanticamente errada.
    * __HTTP Status Code__: [400](https://tools.ietf.org/html/rfc7231#section-6.5.1).
    * __endpoints__: `[PUT|PATCH] /lotecobv/{id}`.

    __Violações__ para os endpoints `PUT|PATCH /lotecobv/{id}`:
      - O campo `loteCobV.descricao` não respeita o _schema_.
      - O objeto `loteCobV.cobsV` não respeita o _schema_.

    __Violações__ para o endpoint `PUT /lotecobv/{id}`:
      - a presente requisição tenta criar um conjunto de cobranças dentre as quais pelo menos
      uma cobrança já encontra-se criada.
      - a presente requisição busca alterar um lote já existente, entretanto contém um array de
      solicitações de alteração de cobranças que não referencia exatamente as mesmas cobranças
      referenciadas pela requisição original que criou o lote.
      Uma vez criado um lote, não se pode remover ou adicionar solicitações de
      criação ou alteração de cobranças a este lote.

    __Violações__ para o endpoint `PATCH /lotecobv/{id}`:
      - a presente requisição busca alterar um lote já existente e contém, no `array`
      de cobranças representado por `cobsv`, uma cobrança não existente no array de cobranças
      atribuído pela requisição original que criou o lote.
      Uma vez criado um lote, não se pode remover ou adicionar cobranças a este lote.

    __Violações__ para os endpoints `GET /lotecobv/{id}`:
      - __observação__: para cada elemento do array `cobsv`, retornado por este endpoint, caso a requisição de criação de cobrança esteja em
      status "NEGADA", o atributo `problema` deste elemento deve ser preenchido respeitando
      o [schema](https://tools.ietf.org/html/rfc7807) referenciado pela API Pix.
      - o preenchimento do atributo `problema`, conforme descrito acima, segue o mesmo regramento dos
      erros especificados para os endpoints `[PUT/PATCH /cobv/{txid}]`, de maneira a possibilitar, ao
      usuário recebedor, entender qual foi a violação cometida ao se tentar criar
      a cobrança referenciada por este elemento do array `cobsv`.

    ### `LoteCobVConsultaInvalida`

    * __Significado__: os parâmetros de consulta à lista de lotes de cobrança com vencimento
    não respeitam o _schema_ ou não fazem sentido semanticamente.
    * __HTTP Status Code__: [400](https://tools.ietf.org/html/rfc7231#section-6.5.1).
    * __endpoints__: `GET /lotecobv` e `GET /lotecobv/{id}`.

    __Violações__ específicas para o endpoint `GET /lotecobv`:
      - algum dos parâmetros informados para a consulta não respeitam o _schema_.
      - o _timestamp_ representado pelo parâmetro `fim` é anterior ao timestamp
      representado pelo parâmetro `inicio`.
      - o parâmetro `paginacao.paginaAtual` é negativo.
      - o parâmetro `paginacao.itensPorPagina` é negativo.

    ## Tag PayloadLocation
    Esta seção reúne erros referentes a endpoints que tratam do gerenciamento de _locations_.

    ### `PayloadLocationNaoEncontrado`
    * __Significado__: _Location_ não encontrada para o `id` informado.
    * __HTTP Status Code__: [404](https://tools.ietf.org/html/rfc7231#section-6.5.4).
    * __endpoints__: `[GET|PATCH] /loc/{id}`, `DELETE /loc/{id}/txid`.

    ### `PayloadLocationOperacaoInvalida`

    * __Significado__: a presente requisição busca criar uma location sem respeitar o _schema_ estabelecido.
    * __HTTP Status Code__: [400](https://tools.ietf.org/html/rfc7231#section-6.5.1).
    * __endpoints__: `POST /loc`.

    __Violações__ para o endpoint `POST /loc`:
      - o campo `tipoCob` não respeita o _schema_.

    ### `PayloadLocationConsultaInvalida`

    * __Significado__: os parâmetros de consulta à lista de _locations_ não respeitam
    o _schema_ ou não fazem sentido semanticamente.
    * __HTTP Status Code__: [400](https://tools.ietf.org/html/rfc7231#section-6.5.1).
    * __endpoints__: `GET /loc` e `GET /loc/{id}`.

    __Violações__ específicas para o endpoint `GET /loc`:
      - algum dos parâmetros informados para a consulta não respeitam o _schema_.
      - o _timestamp_ representado pelo parâmetro `fim` é anterior ao timestamp
      representado pelo parâmetro `inicio`.
      - o parâmetro `paginacao.paginaAtual` é negativo.
      - o parâmetro `paginacao.itensPorPagina` é negativo.

    ## Tag PayloadLocationRec
    Esta seção reúne erros referentes a endpoints que tratam do gerenciamento de _locations_ de uma recorrência.

    ### `PayloadLocationRecNaoEncontrado`
    * __Significado__: _Location_ não encontrada para o `id` informado.
    * __HTTP Status Code__: [404](https://tools.ietf.org/html/rfc7231#section-6.5.4).
    * __endpoints__: `[GET] /locrec/{id}`, `DELETE /locrec/{id}/idRec`.

    ### `PayloadLocationRecConsultaInvalida`

    * __Significado__: os parâmetros de consulta à lista de _locations_ não respeitam
    o _schema_ ou não fazem sentido semanticamente.
    * __HTTP Status Code__: [400](https://tools.ietf.org/html/rfc7231#section-6.5.1).
    * __endpoints__: `GET /locrec` e `GET /locrec/{id}`.

    __Violações__ específicas para o endpoint `GET /locrec`:
      - algum dos parâmetros informados para a consulta não respeitam o _schema_.
      - o _timestamp_ representado pelo parâmetro `fim` é anterior ao timestamp
      representado pelo parâmetro `inicio`.
      - o parâmetro `paginacao.paginaAtual` é negativo.
      - o parâmetro `paginacao.itensPorPagina` é negativo.

    ## Tag Pix

    Reúne erros em endpoints de gestão de Pix recebidos e solicitação de devoluções.

    ### `PixNaoEncontrado`

    * __Significado__: pix não encontrada para o `e2eid` informado.
    * __HTTP Status Code__: [404](https://tools.ietf.org/html/rfc7231#section-6.5.4).
    * __endpoints__: `GET /pix/{e2eid}`

    ### `PixDevolucaoNaoEncontrada`

    * __Significado__: devolução representada por {id} não encontrada para o `e2eid` informado.
    * __HTTP Status Code__: [404](https://tools.ietf.org/html/rfc7231#section-6.5.4).
    * __endpoints__: `GET /pix/{e2eid}/devolucao/{id}`

    ### `PixConsultaInvalida`

    * __Significado__: os parâmetros de consulta à lista de pix recebidos não respeitam o schema
    ou não fazem sentido semanticamente.
    * __HTTP Status Code__: [400](https://tools.ietf.org/html/rfc7231#section-6.5.1).
    * __endpoints__: `GET /pix`.

    __Violações__ específicas para o endpoint `GET /pix`:
      - algum dos parâmetros informados para a consulta não respeita o _schema_.
      - o _timestamp_ representado pelo parâmetro `fim` é anterior ao timestamp
      representado pelo parâmetro `inicio`.
      - ambos os parâmetros `cpf` e `cnpj` estão preenchidos.
      - o parâmetro `paginacao.paginaAtual` é negativo.
      - o parâmetro `paginacao.itensPorPagina` é negativo.

    ### `PixDevolucaoInvalida`

    * __Significado__: a presente requisição de devolução não respeita o _schema_ ou não faz sentido semanticamente.
    * __HTTP Status Code__: [400](https://tools.ietf.org/html/rfc7231#section-6.5.1).
    * __endpoints__: `PUT /pix/{e2eid}/devolucao/{id}`.

    __Violações__ específicas para o endpoint `PUT /pix/{e2eid}/devolucao/{id}`:
      - O campo `devolucao.valor` não respeita o _schema_.
      - A presente requisição de devolução, em conjunto com as demais prévias devoluções,
      se aplicável, excederia o valor do pix originário.
      - A presente requisição de devolução apresenta um `{id}` já utilizado por outra requisição de
      devolução para o `{e2eid}` em questão.
      - A presente requisição de devolução viola a janela de tempo permitida para solicitações de devoluções
      de um pix (hoje estabelecida como 90 dias desde a data de liquidação original do pix).

    ## Tag Webhook
    Reúne erros dos endpoints que tratam do gerenciamento dos Webhooks da API Pix.

    ### `WebhookOperacaoInvalida`
    * __Significado__: a presente requisição busca criar um webhook sem respeitar o _schema_ ou,
    ainda, apresenta semântica inválida.
    * __HTTP Status Code__: [400](https://tools.ietf.org/html/rfc7231#section-6.5.1).
    * __endpoints__: `PUT /webhook/{chave}`.

    __Violações__ para o endpoint `PUT /webhook/{chave}`:
      - o parâmetro {chave} não corresponde a uma chave DICT válida.
      - o parâmetro {chave} não corresponde a uma chave DICT pertencente a este usuário recebedor.
      - Campo webhook.webhookUrl não respeita o _schema_.

    ### `WebhookNaoEncontrado`

    * __Significado__: o webhook denotado por {chave} não encontra-se estabelecido.
    * __HTTP Status Code__: [404](https://tools.ietf.org/html/rfc7231#section-6.5.4).
    * __endpoints__: `GET /webhook/{chave}`,  `DELETE /webhook/{chave}`

    ### `WebhookConsultaInvalida`

    * __Significado__: os parâmetros de consulta à lista de webhooks ativados não respeitam o schema
    ou não fazem sentido semanticamente.
    * __HTTP Status Code__: [400](https://tools.ietf.org/html/rfc7231#section-6.5.1).
    * __endpoints__: `GET /webhook`.

    __Violações__ específicas para o endpoint `GET /webhook`:
      - algum dos parâmetros informados para a consulta não respeita o _schema_.
      - o _timestamp_ representado pelo parâmetro `fim` é anterior ao timestamp
      representado pelo parâmetro `inicio`.
      - o parâmetro `paginacao.paginaAtual` é negativo.
      - o parâmetro `paginacao.itensPorPagina` é negativo.

    ## Tag WebhookRec
    Reúne erros dos endpoints que tratam do gerenciamento dos Webhooks de recorrências da API Pix.

    ### `WebhookRecOperacaoInvalida`
    * __Significado__: a presente requisição busca criar um webhook sem respeitar o _schema_ ou,
    ainda, apresenta semântica inválida.
    * __HTTP Status Code__: [400](https://tools.ietf.org/html/rfc7231#section-6.5.1).
    * __endpoints__: `PUT /webhookrec`.

    __Violações__ para o endpoint `PUT /webhookrec`:
      - o campo `webhookUrl` não respeita o _schema_.

    ### `WebhookRecConsultaInvalida`

    * __Significado__: os parâmetros de consulta à lista de webhooks ativados não respeitam o schema
    ou não fazem sentido semanticamente.
    * __HTTP Status Code__: [400](https://tools.ietf.org/html/rfc7231#section-6.5.1).
    * __endpoints__: `GET /webhookrec`.

    __Violações__ específicas para o endpoint `GET /webhookrec`:
      - algum dos parâmetros informados para a consulta não respeita o _schema_.
      - o _timestamp_ representado pelo parâmetro `fim` é anterior ao timestamp
      representado pelo parâmetro `inicio`.
      - o parâmetro `paginacao.paginaAtual` é negativo.
      - o parâmetro `paginacao.itensPorPagina` é negativo.

    ## Tag WebhookCobR
    Reúne erros dos endpoints que tratam do gerenciamento dos Webhooks de cobranças recorrentes da API Pix.

    ### `WebhookCobROperacaoInvalida`
    * __Significado__: a presente requisição busca criar um webhook sem respeitar o _schema_ ou,
    ainda, apresenta semântica inválida.
    * __HTTP Status Code__: [400](https://tools.ietf.org/html/rfc7231#section-6.5.1).
    * __endpoints__: `PUT /webhookcobr`.

    __Violações__ para o endpoint `PUT /webhookcobr`:
      - o campo `webhookUrl` não respeita o _schema_.

    ### `WebhookCobRConsultaInvalida`

    * __Significado__: os parâmetros de consulta à lista de webhooks ativados não respeitam o schema
    ou não fazem sentido semanticamente.
    * __HTTP Status Code__: [400](https://tools.ietf.org/html/rfc7231#section-6.5.1).
    * __endpoints__: `GET /webhookcobr`.

    __Violações__ específicas para o endpoint `GET /webhookcobr`:
      - algum dos parâmetros informados para a consulta não respeita o _schema_.
      - o _timestamp_ representado pelo parâmetro `fim` é anterior ao timestamp
      representado pelo parâmetro `inicio`.
      - o parâmetro `paginacao.paginaAtual` é negativo.
      - o parâmetro `paginacao.itensPorPagina` é negativo.

servers:
  - url: https://pix.example.com/api/
    description: Servidor de Produção
  - url: https://pix-h.example.com/api/
    description: Servidor de Homologação

tags:
  - name: CobPayload
    x-displayName: Reúne endpoints (locations) que retornam o  Payload JSON que representa uma Cobrança
    description: |-
      Reúne endpoints (locations) utilizados pelo software do PSP pagador para recuperar o payload JSON que representa uma cobrança.

      Os endpoints listados nesta Tag apresentam requisitos de autenticação e autorização diferenciados em relação aos outros endpoints listados na presente API.

      São endpoints __abertos__ para que qualquer cliente da internet possa se conectar. Cada _location_ é uma _[url de capacidade](https://www.w3.org/TR/capability-urls/)_, funcionalidade implementada via o fragmento `{pixUrlAccessToken}`.
      Para mais informações, consultar o [Manual de Padrões para iniciação do Pix](https://www.bcb.gov.br/estabilidadefinanceira/pix).
  - name: RecPayload
    x-displayName: Reúne endpoints (locations) que retornam o  Payload JSON que representa uma Recorrência
    description: |-
      Reúne endpoints (locations) utilizados pelo software do PSP pagador para recuperar o payload JSON que representa uma recorrência.

      Os endpoints listados nesta Tag apresentam requisitos de autenticação e autorização diferenciados em relação aos outros endpoints listados na presente API.

      São endpoints __abertos__ para que qualquer cliente da internet possa se conectar. Cada _location_ é uma _[url de capacidade](https://www.w3.org/TR/capability-urls/)_, funcionalidade implementada via o fragmento `{recUrlAccessToken}`.
      Para mais informações, consultar o [Manual de Padrões para iniciação do Pix](https://www.bcb.gov.br/estabilidadefinanceira/pix).
  - name: Rec
    x-displayName: Gerenciamento de recorrências
    description: |-
      Reúne endpoints destinados a lidar com gerenciamento de recorrências.
  - name: SolicRec
    x-displayName: Gerenciamento de solicitações de recorrências
    description: |-
      Reúne endpoints destinados a lidar com gerenciamento de solicitações de recorrências.
  - name: CobR
    x-displayName: Gerenciamento de cobranças associadas a uma recorrência
    description: |-
      Reúne endpoints destinados a lidar com gerenciamento de cobranças associadas a uma recorrência.
  - name: Cob
    x-displayName: Gerenciamento de cobranças para pagamento imediato
    description: |-
      Reúne endpoints destinados a lidar com gerenciamento de cobranças imediatas.
  - name: CobV
    x-displayName: Gerenciamento de cobranças com vencimento
    description: |-
      Reúne endpoints destinados a lidar com gerenciamento de cobranças com vencimento.
  - name: LoteCobV
    x-displayName: Gerenciamento de cobranças com vencimento em lote
    description: |-
      Reúne endpoints destinados a lidar com gerenciamento de cobranças com vencimento em lote.
  - name: PayloadLocation
    x-displayName: Configuração de locations para payloads
    description: |-
      Reúne endpoints destinados a lidar com configuração e remoção de locations para uso dos payloads
  - name: PayloadLocationRec
    x-displayName: Configuração de locations para payloads de recorrências
    description: |-
      Reúne endpoints destinados a lidar com configuração e remoção de locations para uso dos payloads de recorrências
  - name: Pix
    x-displayName: Gerenciamento de Pix recebidos
    description: |-
      reúne endpoints destinados a lidar com  gerenciamento de Pix recebidos.
  - name: Webhook
    x-displayName: Gerenciamento de notificações
    description: |-
      Reúne endpoints para gerenciamento de notificações por parte do PSP recebedor ao usuário recebedor.
  - name: WebhookRec
    x-displayName: Gerenciamento de notificações de recorrências
    description: |-
      Reúne endpoints para gerenciamento de notificações de recorrências por parte do PSP recebedor ao usuário recebedor.
  - name: WebhookCobR
    x-displayName: Gerenciamento de notificações de cobranças recorrentes
    description: |-
      Reúne endpoints para gerenciamento de notificações de cobranças recorrentes por parte do PSP recebedor ao usuário recebedor.
paths:
  /cob/{txid}:
    parameters:
      - name: txid
        in: path
        required: true
        schema:
          $ref: "#/components/schemas/TxId"
    put:
      tags:
        - "Cob"
      summary: "Criar cobrança imediata."
      security:
        - OAuth2: [cob.write]
      description: |-
        Endpoint para criar uma cobrança imediata.
      requestBody:
        $ref: "#/components/requestBodies/CobBody"
      responses:
        "201":
          description: "Cobrança imediata criada"
          content:
            "application/json":
              schema:
                $ref: "#/components/schemas/CobGerada"
              examples:
                retorno1:
                  $ref: "#/components/examples/cobResponse1"
                retorno2:
                  $ref: "#/components/examples/cobResponse5"
                retorno3:
                  $ref: "#/components/examples/cobResponse6"
                retorno4:
                  $ref: "#/components/examples/cobResponse7"
        "400":
          description: "Requisição com formato inválido."
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Problema"
              examples:
                exemplo1:
                  $ref: "#/components/examples/RequisicaoInvalidaCobExample1"
        "403":
          $ref: "#/components/responses/AcessoNegado"
        "404":
          $ref: "#/components/responses/NaoEncontrado"
        "503":
          $ref: "#/components/responses/ServicoIndisponivel"
    patch:
      tags:
        - "Cob"
      summary: "Revisar cobrança imediata."
      security:
        - OAuth2: [cob.write]
      requestBody:
        $ref: "#/components/requestBodies/CobBodyRevisada"
      responses:
        "200":
          description: "Cobrança imediata revisada. A revisão deve ser incrementada em 1."
          content:
            "application/json":
              schema:
                $ref: "#/components/schemas/CobGerada"
              examples:
                retorno1:
                  $ref: "#/components/examples/cobResponse3"
        "400":
          description: "Requisição com formato inválido."
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Problema"
              examples:
                exemplo1:
                  $ref: "#/components/examples/OperacaoInvalidaCobExample1"
        "403":
          $ref: "#/components/responses/AcessoNegado"
        "404":
          $ref: "#/components/responses/NaoEncontrado"
        "503":
          $ref: "#/components/responses/ServicoIndisponivel"
    get:
      parameters:
        - name: "revisao"
          in: "query"
          required: false
          schema:
            $ref: "#/components/schemas/Revisao"
      tags:
        - "Cob"
      summary: "Consultar cobrança imediata."
      security:
        - OAuth2: [cob.read]
      description: |-
        Endpoint para consultar uma cobrança através de um determinado txid.
      responses:
        "200":
          description: "Dados da cobrança imediata."
          content:
            "application/json":
              schema:
                $ref: "#/components/schemas/CobCompleta"
              examples:
                retorno1:
                  $ref: "#/components/examples/cobResponse1"
                retorno2:
                  $ref: "#/components/examples/cobResponse2"
                retorno3:
                  $ref: "#/components/examples/cobResponse5"
                retorno4:
                  $ref: "#/components/examples/cobResponse6"
                retorno5:
                  $ref: "#/components/examples/cobResponse7"
        "403":
          $ref: "#/components/responses/AcessoNegado"
        "404":
          $ref: "#/components/responses/NaoEncontrado"
        "503":
          $ref: "#/components/responses/ServicoIndisponivel"
  "/cob":
    post:
      tags:
        - "Cob"
      summary: "Criar cobrança imediata."
      security:
        - OAuth2: [cob.write]
      description: |-
        Endpoint para criar uma cobrança imediata, neste caso, o txid deve ser definido pelo PSP.
      requestBody:
        $ref: "#/components/requestBodies/CobBody"
      responses:
        "201":
          description: "Cobrança imediata criada"
          content:
            "application/json":
              schema:
                $ref: "#/components/schemas/CobGerada"
              examples:
                retorno1:
                  $ref: "#/components/examples/cobResponse1"
                retorno2:
                  $ref: "#/components/examples/cobResponse5"
                retorno3:
                  $ref: "#/components/examples/cobResponse6"
                retorno4:
                  $ref: "#/components/examples/cobResponse7"
        "400":
          description: "Requisição com formato inválido."
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Problema"
              examples:
                exemplo1:
                  $ref: "#/components/examples/RequisicaoInvalidaCobExample1"
        "403":
          $ref: "#/components/responses/AcessoNegado"
        "503":
          $ref: "#/components/responses/ServicoIndisponivel"
    get:
      parameters:
        - in: "query"
          name: "inicio"
          required: true
          schema:
            $ref: "#/components/schemas/Inicio"
        - in: "query"
          name: "fim"
          required: true
          schema:
            $ref: "#/components/schemas/Fim"
        - name: "cpf"
          in: "query"
          schema:
            type: "string"
            title: "CPF"
            pattern: "/^\\d{11}$/"
            description: "Filtro pelo CPF do devedor. Não pode ser utilizado ao mesmo tempo que o CNPJ."
        - name: "cnpj"
          in: "query"
          schema:
            type: "string"
            title: "CNPJ"
            pattern: "^[0-9A-Z]{14}$"
            description: "Filtro pelo CNPJ do devedor. Não pode ser utilizado ao mesmo tempo que o CPF."
        - name: "locationPresente"
          in: "query"
          schema:
            type: "boolean"
        - name: "status"
          in: "query"
          schema:
            type: "string"
            title: "Status do registro da cobrança"
            description: "Filtro pelo status da cobrança."
        - $ref: "#/components/parameters/paginaAtual"
        - $ref: "#/components/parameters/itensPorPagina"
      tags:
        - "Cob"
      summary: "Consultar lista de cobranças imediatas."
      security:
        - OAuth2: [cob.read]
      description: |-
        Endpoint para consultar cobranças imediatas através de parâmetros como início, fim, cpf, cnpj e status.
      responses:
        "200":
          description: "Lista de cobranças imediatas."
          content:
            "application/json":
              schema:
                $ref: "#/components/schemas/CobsConsultadas"
              examples:
                getCobs1:
                  $ref: "#/components/examples/getCobs1"
                getCobs2:
                  $ref: "#/components/examples/getCobs2"
        "403":
          $ref: "#/components/responses/AcessoNegado"
        "503":
          $ref: "#/components/responses/ServicoIndisponivel"
  "/cobv/{txid}":
    parameters:
      - name: "txid"
        in: "path"
        required: true
        schema:
          $ref: "#/components/schemas/TxId"
    put:
      tags:
        - "CobV"
      summary: "Criar cobrança com vencimento."
      security:
        - OAuth2: [cobv.write]
      description: |-
        Endpoint para criar uma cobrança com vencimento.
      requestBody:
        $ref: "#/components/requestBodies/CobVBody"
      responses:
        "201":
          description: "Cobrança com vencimento criada"
          content:
            "application/json":
              schema:
                $ref: "#/components/schemas/CobVGerada"
              examples:
                retorno1:
                  $ref: "#/components/examples/cobResponse4"
        "400":
          description: "Requisição com formato inválido."
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Problema"
              examples:
                exemplo1:
                  $ref: "#/components/examples/RequisicaoInvalidaCobVExample1"
        "403":
          $ref: "#/components/responses/AcessoNegado"
        "404":
          $ref: "#/components/responses/NaoEncontrado"
        "503":
          $ref: "#/components/responses/ServicoIndisponivel"
    patch:
      tags:
        - "CobV"
      summary: "Revisar cobrança com vencimento."
      security:
        - OAuth2: [cobv.write]
      requestBody:
        $ref: "#/components/requestBodies/CobVBodyRevisada"
      responses:
        "200":
          description: "Cobrança com vencimento revisada. A revisão deve ser incrementada em 1."
          content:
            "application/json":
              schema:
                $ref: "#/components/schemas/CobVGerada"
              examples:
                retorno1:
                  $ref: "#/components/examples/cobResponse4"
        "400":
          description: "Requisição com formato inválido."
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Problema"
              examples:
                exemplo1:
                  $ref: "#/components/examples/OperacaoInvalidaCobVExample1"
        "403":
          $ref: "#/components/responses/AcessoNegado"
        "404":
          $ref: "#/components/responses/NaoEncontrado"
        "503":
          $ref: "#/components/responses/ServicoIndisponivel"
    get:
      parameters:
        - name: "revisao"
          in: "query"
          required: false
          schema:
            $ref: "#/components/schemas/Revisao"
      tags:
        - "CobV"
      summary: "Consultar cobrança com vencimento."
      security:
        - OAuth2: [cobv.read]
      description: |-
        Endpoint para consultar uma cobrança com vencimento através de um determinado txid.
      responses:
        "200":
          description: "Dados da cobrança com vencimento."
          content:
            "application/json":
              schema:
                $ref: "#/components/schemas/CobVCompleta"
              examples:
                retorno1:
                  $ref: "#/components/examples/cobResponse4"
        "403":
          $ref: "#/components/responses/AcessoNegado"
        "404":
          $ref: "#/components/responses/NaoEncontrado"
        "503":
          $ref: "#/components/responses/ServicoIndisponivel"
  "/cobv":
    get:
      parameters:
        - in: "query"
          name: "inicio"
          required: true
          schema:
            $ref: "#/components/schemas/Inicio"
        - in: "query"
          name: "fim"
          required: true
          schema:
            $ref: "#/components/schemas/Fim"
        - name: "cpf"
          in: "query"
          schema:
            type: "string"
            title: "CPF"
            pattern: "/^\\d{11}$/"
            description: "Filtro pelo CPF do devedor. Não pode ser utilizado ao mesmo tempo que o CNPJ."
        - name: "cnpj"
          in: "query"
          schema:
            type: "string"
            title: "CNPJ"
            pattern: "^[0-9A-Z]{14}$"
            description: "Filtro pelo CNPJ do devedor. Não pode ser utilizado ao mesmo tempo que o CPF."
        - name: "locationPresente"
          in: "query"
          schema:
            type: "boolean"
        - name: "status"
          in: "query"
          schema:
            type: "string"
            title: "Status do registro da cobrança"
            description: "Filtro pelo status da cobrança."
        - name: "loteCobVId"
          in: "query"
          schema:
            type: "integer"
            format: "int32"
            title: "Id do lote de cobrança com vencimento"
            description: "Id do lote de cobrança com vencimento."
        - $ref: "#/components/parameters/paginaAtual"
        - $ref: "#/components/parameters/itensPorPagina"
      tags:
        - "CobV"
      summary: "Consultar lista de cobranças com vencimento."
      security:
        - OAuth2: [cobv.read]
      description: |-
        Endpoint para consultar cobranças com vencimento através de parâmetros como início, fim, cpf, cnpj e status.
      responses:
        "200":
          description: "Lista de cobranças com vencimento."
          content:
            "application/json":
              schema:
                $ref: "#/components/schemas/CobsVConsultadas"
              examples:
                getCobs1:
                  $ref: "#/components/examples/getCobsV1"
        "403":
          $ref: "#/components/responses/AcessoNegado"
        "503":
          $ref: "#/components/responses/ServicoIndisponivel"
  "/lotecobv/{id}":
    parameters:
      - name: "id"
        in: "path"
        required: true
        schema:
          type: "string"
          title: "Identificador do lote de cobranças com vencimento, em formato de texto."
    put:
      tags:
        - "LoteCobV"
      summary: "Criar/Alterar lote de cobranças com vencimento."
      security:
        - OAuth2: [lotecobv.write]
      description: |-
        Endpoint utilizado para criar ou alterar um lote de cobranças com vencimento.

        Para o caso de uso de alteração de cobranças, o array a ser atribuído na requisicão
        deve ser composto pelas exatas requisições de criação de cobranças que
        constaram no array atribuído na requisição originária.

        Não se pode utilizar este endpoint para _alterar_ um lote de cobranças com vencimento
        agregando ou removendo cobranças já existentes dentro do conjunto de cobranças
        criadas na requisição originária do lote.

        Em outras palavras, se originalmente criou-se um lote, por exemplo, com as cobranças
        [`a`, `b` e `c`], não se pode _alterar_ esse conjunto de cobranças original que o
        lote representa para [`a`, `b`, `c`, `d`], ou para [`a`, `b`].
        Por outro lado, pode-se alterar, _em lote_ as cobranças [`a`, `b`, `c`],
        conforme originalmente constam na requisição originária do lote.

        Uma solicitação de __criação__ de cobrança com status "EM_PROCESSAMENTO" ou "NEGADA"
        está associada a uma cobrança não _existe_ de fato, portanto não será
        listada em `GET /cobv` ou `GET /cobv/{txid}`.

        Uma cobrança, uma vez criada via `PUT /cobv/{txid}`,
        não pode ser associada a um lote posteriormente.

        Uma cobrança, uma vez criada via `PUT /lotecobv/{id}`,
        não pode ser associada a um novo lote posteriormente.

      requestBody:
        $ref: "#/components/requestBodies/LoteCobVBody"
      responses:
        "202":
          description: "Lote de cobranças com vencimento solicitado para criação."
        "400":
          description: "Requisição com formato inválido."
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Problema"
              examples:
                exemplo1:
                  $ref: "#/components/examples/RequisicaoInvalidaLoteCobVExample1"
        "403":
          $ref: "#/components/responses/AcessoNegado"
        "404":
          $ref: "#/components/responses/NaoEncontrado"
        "503":
          $ref: "#/components/responses/ServicoIndisponivel"
    patch:
      tags:
        - "LoteCobV"
      summary: "Utilizado para revisar cobranças específicas dentro de um lote de cobranças com vencimento."
      security:
        - OAuth2: [lotecobv.write]
      description: |-
        Endpoint utilizado para revisar cobranças específicas dentro de um lote de cobranças com vencimento. 

        A diferença deste endpoint para o endpoint PUT correlato é que este endpoint admite um array
        `cobsv` com menos solicitações de criação ou alteração de cobranças do que o array atribuído na requisição originária do lote.

        Não se pode, entretanto, utilizar esse endpoint para agregar ou remover solicitações de
        alteração ou criação de cobranças conforme constam na requisição originária do lote.
      requestBody:
        $ref: "#/components/requestBodies/LoteCobVBodyRevisado"
      responses:
        "202":
          description: "Solicitação de revisão do Lote de cobranças encaminhada para processamento."
        "400":
          description: "Requisição com formato inválido."
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Problema"
              examples:
                exemplo1:
                  $ref: "#/components/examples/OperacaoInvalidaCobVExample1"
        "403":
          $ref: "#/components/responses/AcessoNegado"
        "404":
          $ref: "#/components/responses/NaoEncontrado"
        "503":
          $ref: "#/components/responses/ServicoIndisponivel"
    get:
      tags:
        - "LoteCobV"
      summary: "Consultar um lote específico de cobranças com vencimento."
      security:
        - OAuth2: [lotecobv.read]
      description: |-
        Endpoint para consultar um lote de cobranças com vencimento.
      responses:
        "200":
          description: "Lote de cobranças com vencimento."
          content:
            "application/json":
              schema:
                $ref: "#/components/schemas/LoteCobVConsultado"
              examples:
                exemplo1:
                  $ref: "#/components/examples/loteCobVResponse1"
        "403":
          $ref: "#/components/responses/AcessoNegado"
        "404":
          $ref: "#/components/responses/NaoEncontrado"
        "503":
          $ref: "#/components/responses/ServicoIndisponivel"
  "/lotecobv":
    get:
      parameters:
        - in: "query"
          name: "inicio"
          required: true
          schema:
            $ref: "#/components/schemas/Inicio"
        - in: "query"
          name: "fim"
          required: true
          schema:
            $ref: "#/components/schemas/Fim"
        - $ref: "#/components/parameters/paginaAtual"
        - $ref: "#/components/parameters/itensPorPagina"
      tags:
        - "LoteCobV"
      summary: "Consultar lotes de cobranças com vencimento."
      security:
        - OAuth2: [lotecobv.read]
      description: |-
        Endpoint para consultar lista de lotes de cobranças com vencimento.
      responses:
        "200":
          description: "Lotes de cobranças com vencimento."
          content:
            "application/json":
              schema:
                $ref: "#/components/schemas/LotesCobVConsultados"
              examples:
                exemplo1:
                  $ref: "#/components/examples/getLotesCobsV"
        "403":
          $ref: "#/components/responses/AcessoNegado"
        "503":
          $ref: "#/components/responses/ServicoIndisponivel"
  "/locrec":
    post:
      tags:
        - "PayloadLocationRec"
      summary: "Criar location do payload."
      security:
        - OAuth2: [payloadlocationrec.write]
      description: |-
        Criar location do payload
      responses:
        "201":
          description: "Dados da location do Payload."
          headers:
            location:
              schema:
                type: "string"
                format: "uri"
                title: "Identificador da location criada."
                description: "Identificador da location criada."
                example: "pix.example.com/api/loc/1234567"
          content:
            "application/json":
              schema:
                $ref: "#/components/schemas/PayloadLocationRecGerada"
              examples:
                response1:
                  $ref: "#/components/examples/payloadLocationRecResponse2"
        "403":
          $ref: "#/components/responses/AcessoNegado"
        "503":
          $ref: "#/components/responses/ServicoIndisponivel"
    get:
      parameters:
        - in: "query"
          name: "inicio"
          required: true
          schema:
            $ref: "#/components/schemas/Inicio"
        - in: "query"
          name: "fim"
          required: true
          schema:
            $ref: "#/components/schemas/Fim"
        - name: "idRecPresente"
          in: "query"
          schema:
            type: "boolean"
        - name: "convenio"
          in: "query"
          schema:
            type: "string"
            title: "Convênio"
            maxLength: 60
            description: "Filtro pelo convênio associado."
        - $ref: "#/components/parameters/paginaAtual"
        - $ref: "#/components/parameters/itensPorPagina"
      tags:
        - "PayloadLocationRec"
      summary: "Consultar locations cadastradas."
      security:
        - OAuth2: [payloadlocationrec.read]
      description: "Endpoint para consultar locations cadastradas"
      responses:
        "200":
          description: "lista dos locations cadastrados de acordo com o critério de busca."
          content:
            "application/json":
              schema:
                $ref: "#/components/schemas/PayloadLocationRecConsultadas"
              examples:
                getPayloadLocationsRec:
                  $ref: "#/components/examples/getPayloadLocationRec1"
        "403":
          $ref: "#/components/responses/AcessoNegado"
        "503":
          $ref: "#/components/responses/ServicoIndisponivel"
  "/locrec/{id}":
    parameters:
      - name: "id"
        in: "path"
        required: true
        schema:
          type: "string"
          title: "Id da location cadastrada para servir um payload"
    get:
      tags:
        - "PayloadLocationRec"
      summary: "Recuperar location do payload."
      security:
        - OAuth2: [payloadlocationrec.read]
      description: |-
        Recupera a location do payload
      responses:
        "200":
          description: "Dados da location do Payload."
          content:
            "application/json":
              schema:
                $ref: "#/components/schemas/PayloadLocationRecCompleta"
              examples:
                response1:
                  $ref: "#/components/examples/payloadLocationRecResponse1"
        "403":
          $ref: "#/components/responses/AcessoNegado"
        "404":
          $ref: "#/components/responses/NaoEncontrado"
        "503":
          $ref: "#/components/responses/ServicoIndisponivel"
  "/locrec/{id}/idRec":
    parameters:
      - name: "id"
        in: "path"
        required: true
        schema:
          type: "string"
          title: "Id da location cadastrada para servir um payload"
    delete:
      tags:
        - PayloadLocationRec
      summary: "Desvincular uma recorrência de uma location."
      description: |
        Endpoint utilizado para desvincular uma recorrência de uma location.

        Se executado com sucesso, a entidade `loc` não apresentará mais uma recorrência,
        se apresentava anteriormente à chamada. Adicionalmente, a entidade associada ao
        recurso desvinculado também passará a não mais apresentar um _location_. Esta operação
        não altera o `status` do recurso em questão.
      security:
        - OAuth2: [payloadlocationrec.write]
      responses:
        "200":
          description: "Entidade representada pelo recurso informado desvinculada com sucesso."
          content:
            "application/json":
              schema:
                $ref: "#/components/schemas/PayloadLocationRecCompleta"
              examples:
                response1:
                  $ref: "#/components/examples/payloadLocationRecResponse2"
        "403":
          $ref: "#/components/responses/AcessoNegado"
        "404":
          $ref: "#/components/responses/NaoEncontrado"
        "503":
          $ref: "#/components/responses/ServicoIndisponivel"
  "/loc":
    post:
      tags:
        - "PayloadLocation"
      summary: "Criar location do payload."
      security:
        - OAuth2: [payloadlocation.write]
      description: |-
        Criar location do payload
      requestBody:
        $ref: "#/components/requestBodies/PayloadLocationBody"
      responses:
        "201":
          description: "Dados da location do Payload."
          headers:
            location:
              schema:
                type: "string"
                format: "uri"
                title: "Identificador da location criada."
                description: "Identificador da location criada."
                example: "pix.example.com/api/loc/1234567"
          content:
            "application/json":
              schema:
                $ref: "#/components/schemas/PayloadLocation"
              examples:
                getPayloadLocation1:
                  $ref: "#/components/examples/payloadLocationResponse5"
                getPayloadLocation2:
                  $ref: "#/components/examples/payloadLocationResponse6"
        "400":
          description: "Requisição com formato inválido."
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Problema"
              examples:
                exemplo1:
                  $ref: "#/components/examples/RequisicaoInvalidaLocationExample1"
        "403":
          $ref: "#/components/responses/AcessoNegado"
        "503":
          $ref: "#/components/responses/ServicoIndisponivel"
    get:
      parameters:
        - in: "query"
          name: "inicio"
          required: true
          schema:
            $ref: "#/components/schemas/Inicio"
        - in: "query"
          name: "fim"
          required: true
          schema:
            $ref: "#/components/schemas/Fim"
        - name: "txIdPresente"
          in: "query"
          schema:
            type: "boolean"
        - name: "tipoCob"
          in: "query"
          schema:
            type: "string"
            enum:
              - "cob"
              - "cobv"
        - $ref: "#/components/parameters/paginaAtual"
        - $ref: "#/components/parameters/itensPorPagina"
      tags:
        - "PayloadLocation"
      summary: "Consultar locations cadastradas."
      security:
        - OAuth2: [payloadlocation.read]
      description: "Endpoint para consultar locations cadastradas"
      responses:
        "200":
          description: "lista dos locations cadastrados de acordo com o critério de busca."
          content:
            "application/json":
              schema:
                $ref: "#/components/schemas/PayloadLocationConsultadas"
              examples:
                getPayloadLocations:
                  $ref: "#/components/examples/getPayloadLocation1"
        "403":
          $ref: "#/components/responses/AcessoNegado"
        "503":
          $ref: "#/components/responses/ServicoIndisponivel"
  "/loc/{id}":
    parameters:
      - name: "id"
        in: "path"
        required: true
        schema:
          type: "string"
          title: "Id da location cadastrada para servir um payload"
    get:
      tags:
        - "PayloadLocation"
      summary: "Recuperar location do payload."
      security:
        - OAuth2: [payloadlocation.read]
      description: |-
        Recupera a location do payload
      responses:
        "200":
          description: "Dados da location do Payload."
          content:
            "application/json":
              schema:
                $ref: "#/components/schemas/PayloadLocationCompleta"
              examples:
                getPayloadLocation1:
                  $ref: "#/components/examples/payloadLocationResponse1"
                getPayloadLocation2:
                  $ref: "#/components/examples/payloadLocationResponse2"
                getPayloadLocation3:
                  $ref: "#/components/examples/payloadLocationResponse3"
        "403":
          $ref: "#/components/responses/AcessoNegado"
        "404":
          $ref: "#/components/responses/NaoEncontrado"
        "503":
          $ref: "#/components/responses/ServicoIndisponivel"
  "/loc/{id}/txid":
    parameters:
      - name: "id"
        in: "path"
        required: true
        schema:
          type: "string"
          title: "Id da location cadastrada para servir um payload"
    delete:
      tags:
        - PayloadLocation
      summary: "Desvincular uma cobrança de uma location."
      description: |
        Endpoint utilizado para desvincular uma cobrança de uma location.

        Se executado com sucesso, a entidade `loc` não apresentará mais um txid,
        se apresentava anteriormente à chamada. Adicionalmente, a entidade `cob` ou `cobv` associada ao
        txid desvinculado também passará a não mais apresentar um _location_. Esta operação
        não altera o `status` da `cob` ou `cobv` em questão.
      security:
        - OAuth2: [payloadlocation.write]
      responses:
        "200":
          description: "cobrança representada pelo txid informado desvinculada com sucesso."
          content:
            "application/json":
              schema:
                $ref: "#/components/schemas/PayloadLocation"
              examples:
                getPayloadLocation1:
                  $ref: "#/components/examples/payloadLocationResponse4"
        "403":
          $ref: "#/components/responses/AcessoNegado"
        "404":
          $ref: "#/components/responses/NaoEncontrado"
        "503":
          $ref: "#/components/responses/ServicoIndisponivel"
  "/pix/{e2eid}":
    parameters:
      - name: "e2eid"
        in: "path"
        required: true
        schema:
          $ref: "#/components/schemas/EndToEndId"
    get:
      tags:
        - "Pix"
      summary: "Consultar Pix."
      security:
        - OAuth2: [pix.read]
      description: "Endpoint para consultar um Pix através de um e2eid."
      responses:
        "200":
          description: "Dados do Pix efetuado."
          content:
            "application/json":
              schema:
                $ref: "#/components/schemas/Pix"
              examples:
                retorno1:
                  $ref: "#/components/examples/pixResponse1"
                retorno2:
                  $ref: "#/components/examples/pixResponse2"
                retorno3:
                  $ref: "#/components/examples/pixResponse3"
        "403":
          $ref: "#/components/responses/AcessoNegado"
        "404":
          $ref: "#/components/responses/NaoEncontrado"
        "503":
          $ref: "#/components/responses/ServicoIndisponivel"
  "/pix":
    get:
      parameters:
        - in: "query"
          name: "inicio"
          required: true
          schema:
            $ref: "#/components/schemas/Inicio"
        - in: "query"
          name: "fim"
          required: true
          schema:
            $ref: "#/components/schemas/Fim"
        - name: "txid"
          in: "query"
          schema:
            allOf:
              - $ref: "#/components/schemas/TxId"
              - pattern: "[a-zA-Z0-9]{1,35}"
        - name: "txIdPresente"
          in: "query"
          schema:
            type: "boolean"
        - name: "devolucaoPresente"
          in: "query"
          schema:
            type: "boolean"
        - name: "cpf"
          in: "query"
          schema:
            type: "string"
            title: "CPF"
            pattern: "/^\\d{11}$/"
            description: "Filtro pelo CPF do pagador. Não pode ser utilizado ao mesmo tempo que o CNPJ."
        - name: "cnpj"
          in: "query"
          schema:
            type: "string"
            title: "CNPJ"
            pattern: "^[0-9A-Z]{14}$"
            description: "Filtro pelo CNPJ do pagador. Não pode ser utilizado ao mesmo tempo que o CPF."
        - $ref: "#/components/parameters/paginaAtual"
        - $ref: "#/components/parameters/itensPorPagina"
      tags:
        - "Pix"
      summary: "Consultar Pix recebidos."
      security:
        - OAuth2: [pix.read]
      description: "Endpoint para consultar Pix recebidos"
      responses:
        "200":
          description: "lista dos Pix recebidos de acordo com o critério de busca."
          content:
            "application/json":
              schema:
                $ref: "#/components/schemas/PixConsultados"
              examples:
                getCobs1:
                  $ref: "#/components/examples/getPix1"
        "403":
          $ref: "#/components/responses/AcessoNegado"
        "503":
          $ref: "#/components/responses/ServicoIndisponivel"
  "/pix/{e2eid}/devolucao/{id}":
    parameters:
      - name: "e2eid"
        in: "path"
        required: true
        schema:
          $ref: "#/components/schemas/EndToEndId"
      - name: "id"
        in: "path"
        required: true
        schema:
          $ref: "#/components/schemas/DevolucaoId"
    put:
      tags:
        - "Pix"
      summary: "Solicitar devolução."
      security:
        - OAuth2: [pix.write]
      description: |
        Endpoint para solicitar uma devolução através de um e2eid do Pix e do ID da devolução. O motivo que será atribuído à PACS.004 será "MD06" ou "SL02" de acordo com a aba RTReason da PACS.004 que consta no Catálogo de Mensagens do Pix a depender da `natureza` da devolução (Vide a descrição deste campo).
      requestBody:
        $ref: "#/components/requestBodies/DevolucaoBody"
      responses:
        "201":
          description: "Dados da devolução."
          content:
            "application/json":
              schema:
                $ref: "#/components/schemas/Devolucao"
              examples:
                retorno1:
                  $ref: "#/components/examples/devolucaoResponse1"
        "400":
          description: "Requisição com formato inválido."
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Problema"
              examples:
                exemplo1:
                  $ref: "#/components/examples/RequisicaoInvalidaDevolucaoExample1"
        "403":
          $ref: "#/components/responses/AcessoNegado"
        "404":
          $ref: "#/components/responses/NaoEncontrado"
        "503":
          $ref: "#/components/responses/ServicoIndisponivel"
    get:
      tags:
        - "Pix"
      summary: "Consultar devolução."
      security:
        - OAuth2: [pix.read]
      description: "Endpoint para consultar uma devolução através de um End To End ID do Pix e do ID da devolução"
      responses:
        "200":
          description: "Dados da devolução."
          content:
            "application/json":
              schema:
                $ref: "#/components/schemas/Devolucao"
              examples:
                retorno1:
                  $ref: "#/components/examples/devolucaoResponse1"
                retorno2:
                  $ref: "#/components/examples/devolucaoResponse2"
        "403":
          $ref: "#/components/responses/AcessoNegado"
        "404":
          $ref: "#/components/responses/NaoEncontrado"
        "503":
          $ref: "#/components/responses/ServicoIndisponivel"
  "/{pixUrlAccessToken}":
    parameters:
      - name: "pixUrlAccessToken"
        in: "path"
        required: true
        schema:
          type: "string"
    get:
      tags:
        - "CobPayload"
      servers:
        - url: https://{fdqnPSPRecebedor}/{endpointOpcional}
          variables:
            fdqnPSPRecebedor:
              default: example.com
              description: Endpoint base para que os usuários devedores possam acessar o payload JSON que representa a cobrança imediata.
      summary: "Recuperar o payload JSON que representa a cobrança imediata."
      description: |
        ## Endpoint (location) que serve um payload que representa uma cobrança imediata.

        No momento que o usuário devedor efetua a leitura de um QR Code dinâmico gerado pelo recebedor, esta URL será acessada e seu conteúdo consiste em uma estrutura JWS.
        As informações sobre a segurança no acesso às urls encontram-se no Manual de Segurança do Pix disponível em nesse __[link](https://www.bcb.gov.br/estabilidadefinanceira/comunicacaodados)__.

      security: []
      responses:
        "200":
          description: |
            # Descrição do Retorno
            O retorno desse endpoint é um objeto que apresenta estrutura JWS, conforme especificado no manual de segurança. Segue um exemplo:

            ```jws
            eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXUyIsImtpZCI6IjIwMTEtMDQtMjkiLCJqa3UiOiJodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzUxNyIsIng1dCI6IkFwcGVuZGl4QUV4YW1wbGVBMUpXS1NSc2FLZXkifQ.eyJjYWxlbmRhcmlvIjp7ImNyaWFjYW8iOiIyMDIwLTA5LTE1VDE5OjM5OjU0LjAxM1oiLCJhcHJlc2VudGFjYW8iOiIyMDIwLTA0LTAxVDE4OjAwOjAwWiIsImV4cGlyYWNhbyI6IjM2MDAifSwidHhpZCI6ImZjOWE0MzY2ZmYzZDQ5NjRiNWRiYzZjOTFhODcyMmQzIiwicmV2aXNhbyI6IjMiLCJzdGF0dXMiOiJBVElWQSIsInZhbG9yIjp7Im9yaWdpbmFsIjoiNTAwLjAwIn0sImNoYXZlIjoiNzQwN2M5YzgtZjc4Yi0xMWVhLWFkYzEtMDI0MmFjMTIwMDAyIiwic29saWNpdGFjYW9QYWdhZG9yIjoiSW5mb3JtYXIgY2FydGFvIGZpZGVsaWRhZGUiLCJpbmZvQWRpY2lvbmFpcyI6W3sibm9tZSI6InF1YW50aWRhZGUiLCJ2YWxvciI6IjIifV19.qI7NUrYkwcgXmyoyOjt2YLQyhxH-lPdr3xQ7RId9TDXZ-MlWmPJkUScjuo1Nz_EvlSotbWDGOxErBXHeTLHOQM-9T7lBmG5iw6uEX7L5U72XiganIm80EZCFD1vBPq9j89i4cP2U2Yv21TTt8JLhjA57KHLOSlj-KB5UAKCH-MX3AORFcrXFrYL2rrSQDe-lFNtdyPRwLQHIrhkQ6RR2FPhynzUG0401LScS9mWLLYbYzhzwtP5lk07Ryf4MZq86ihmOLFZXkIiW7pbSd8QfD5Dvj28XebLQi_bam9wInqKB--57_N741BskCN_TXf0EHbQ1qjNTgiT8Y1GIrA4pFA
            ```

            Este objeto JWS assinado deve ser validado pelo devedor. Maiores detalhes técnicos a respeito da especificação
            de segurança encontram-se no __[Manual de Segurança do Pix](https://www.bcb.gov.br/estabilidadefinanceira/pix)__.

            Conforme pode-se verificar no exemplo acima, o objeto JWS apresenta três fragmentos separados pelo caractere `.` (ponto). São eles: `header`, `payload` e `signature`.

            Em termos de funcionalidade, o fragmento que interessa ao devedor é o `payload`, que apresenta estrutura conforme especificada pelo `schema` do presente endpoint, contendo detalhes concernentes à cobrança.

          content:
            "application/jose":
              schema:
                $ref: "#/components/schemas/CobPayload"
              examples:
                retorno1:
                  $ref: "#/components/examples/cobPayload1"
        "400":
          description: "Requisição com formato inválido."
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Problema"
              examples:
                exemplo1:
                  $ref: "#/components/examples/RequisicaoInvalidaCobPayloadExample1"
        "404":
          $ref: "#/components/responses/NaoEncontrado"
        "503":
          $ref: "#/components/responses/ServicoIndisponivel"
  "/cobv/{pixUrlAccessToken}":
    parameters:
      - name: "pixUrlAccessToken"
        in: "path"
        required: true
        schema:
          type: "string"
      - name: "codMun"
        in: "query"
        description: |
          Código baseado na Tabela de Códigos de Municípios do __[IBGE](https://www.ibge.gov.br/explica/codigos-dos-municipios.php)__ que apresenta a lista dos municípios brasileiros associados a um código composto de 7 dígitos, sendo os dois primeiros referentes ao código da Unidade da Federação.
        schema:
          type: "string"
          pattern: "/^\\d{7}$/"
          title: "Código do município"
      - name: "DPP"
        in: "query"
        description: "Data de pagamento pretendida. Trata-se de uma data, no formato `YYYY-MM-DD`, segundo ISO 8601."
        schema:
          type: "string"
          format: "date"
          example: "2021-04-01"
    get:
      tags:
        - "CobPayload"
      servers:
        - url: https://{fdqnPSPRecebedor}/{endpointOpcional}
          variables:
            fdqnPSPRecebedor:
              default: example.com
              description: Endpoint base para que os usuários devedores possam acessar o payload JSON que representa a cobrança com vencimento.
      summary: "Recuperar o payload JSON que representa a cobrança com vencimento."
      description: |
        ## Endpoint (location) que serve um payload que representa uma cobrança com vencimento.

        No momento que o usuário devedor efetua a leitura de um QR Code dinâmico gerado pelo recebedor, esta URL será acessada e seu conteúdo consiste em uma estrutura JWS.
        As informações sobre a segurança no acesso às urls encontram-se no Manual de Segurança do Pix disponível em nesse __[link](https://www.bcb.gov.br/estabilidadefinanceira/comunicacaodados)__.

      security: []
      responses:
        "200":
          description: |
            # Descrição do Retorno
            O retorno desse endpoint é um objeto que apresenta estrutura JWS, conforme especificado no manual de segurança. Segue um exemplo:

            ```jws
            eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXUyIsImtpZCI6IjIwMTEtMDQtMjkiLCJqa3UiOiJodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzUxNyIsIng1dCI6IkFwcGVuZGl4QUV4YW1wbGVBMUpXS1NSc2FLZXkifQ.eyJjYWxlbmRhcmlvIjp7ImNyaWFjYW8iOiIyMDIwLTA5LTE1VDE5OjM5OjU0LjAxM1oiLCJhcHJlc2VudGFjYW8iOiIyMDIwLTA0LTAxVDE4OjAwOjAwWiIsImRhdGFEZVZlbmNpbWVudG8iOiIyMDIwLTEyLTMxIiwidmFsaWRhZGVBcG9zVmVuY2ltZW50byI6MzB9LCJkZXZlZG9yIjp7ImxvZ3JhZG91cm8iOiJBbGFtZWRhIFNhbnRvcywgTnVtZXJvIDEwLCBCYWlycm8gQnJheiIsImNpZGFkZSI6IkRpYWRlbWEiLCJ1ZiI6IlNQIiwiY2VwIjoiNzA4MDAxMDAiLCJjbnBqIjoiNTY5ODkwMDAwMTk1MzMiLCJub21lIjoiRW1wcmVzYSBkZSBBbGltZW50b3MgU0EifSwicmVjZWJlZG9yIjp7ImxvZ3JhZG91cm8iOiJSdWEgMjAgTnVtZXJvIDcwLCBCYWlycm8gTHV6IiwiY2lkYWRlIjoiQmVsbyBIb3Jpem9udGUiLCJ1ZiI6Ik1HIiwiY2VwIjoiNTUxMjA3NTAiLCJjbnBqIjoiNTg5MDA2MzMxMjA3MTEiLCJub21lIjoiRW1wcmVzYSBkZSBBYmFzdGVjaW1lbnRvIFNBIn0sInR4aWQiOiJmYzlhNDM2NmZmM2Q0OTY0YjVkYmM2YzkxYTg3MjJkMyIsInJldmlzYW8iOiIzIiwic3RhdHVzIjoiQVRJVkEiLCJ2YWxvciI6eyJvcmlnaW5hbCI6IjEyMy40NSIsIm11bHRhIjoiMTUuMDAiLCJqdXJvcyI6IjIuMDAiLCJmaW5hbCI6IjE0MCw0NSJ9LCJjaGF2ZSI6Ijc0MDdjOWM4LWY3OGItMTFlYS1hZGMxLTAyNDJhYzEyMDAwMiIsInNvbGljaXRhY2FvUGFnYWRvciI6IkluZm9ybWFyIGNhcnRhbyBmaWRlbGlkYWRlIiwiaW5mb0FkaWNpb25haXMiOlt7Im5vbWUiOiJxdWFudGlkYWRlIiwidmFsb3IiOiIyIn1dfQ.BYibf_oK38IubbnnfThe4gaXuJgfoGQzFIezxHS76jGLQ4re2BwSdsiIzBW1t0JOtL094jLtJMVttdIdF9YJukrdzbknbf1jzfHghgBfNqXfZm7jxWuV8IO0jimoSoo7oMrG3MYytRFpdk2Q_ZhTL5UgZqVbfJkMwcp8o0FYmzrmiGPll-kgBulTgGgvGjzl-mC5dtl56351ix1-If1D7KAohHzcYTHzEFkvYZlNCcxyHJX94-8IqpYaTQ1rJlnPExPIgys-ioZ3U_QzcPz4d3tGvRAfHEU7VoIeZHeXR1jqKuqvz70ayc8mAbL7RXzJat1Ru_glS3krkSdXdZxK-w
            ```

            Este objeto JWS assinado deve ser validado pelo devedor. Maiores detalhes técnicos a respeito da especificação
            de segurança encontram-se no __[Manual de Segurança do Pix](https://www.bcb.gov.br/estabilidadefinanceira/pix)__.

            Conforme pode-se verificar no exemplo acima, o objeto JWS apresenta três fragmentos separados pelo caractere `.` (ponto). São eles: `header`, `payload` e `signature`.

            Em termos de funcionalidade, o fragmento que interessa ao devedor é o `payload`, que apresenta estrutura conforme especificada pelo `schema` do presente endpoint, contendo detalhes concernentes à cobrança.

          content:
            "application/jose":
              schema:
                $ref: "#/components/schemas/CobVPayload"
              examples:
                retorno1:
                  $ref: "#/components/examples/cobPayload2"
        "400":
          description: "Requisição com formato inválido."
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Problema"
              examples:
                exemplo1:
                  $ref: "#/components/examples/RequisicaoInvalidaCobPayloadExample1"
        "404":
          $ref: "#/components/responses/NaoEncontrado"
        "503":
          $ref: "#/components/responses/ServicoIndisponivel"
  "/rec/{recUrlAccessToken}":
    parameters:
      - name: "recUrlAccessToken"
        in: "path"
        required: true
        schema:
          type: "string"
    get:
      tags:
        - "RecPayload"
      servers:
        - url: https://{fdqnPSPRecebedor}/{endpointOpcional}
          variables:
            fdqnPSPRecebedor:
              default: example.com
              description: Endpoint base para que os usuários devedores possam acessar o payload JSON que representa a recorrência.
      summary: "Recuperar o payload JSON que representa a configuração da recorrência."
      description: |
        ## Endpoint (location) que serve um payload que representa uma recorrência.

        No momento em que o usuário pagador efetua a leitura de um QR Code composto gerado pelo recebedor, esta URL será acessada e seu conteúdo consiste em uma estrutura JWS.
        As informações sobre a segurança no acesso às urls encontram-se no Manual de Segurança do Pix disponível nesse __[link](https://www.bcb.gov.br/estabilidadefinanceira/comunicacaodados)__.

      security: []
      responses:
        "200":
          description: |
            # Descrição do Retorno
            O retorno desse endpoint é um objeto que apresenta estrutura JWS, conforme especificado no manual de segurança. Segue um exemplo:

            ```jws
            eyJ4NXQjUzI1NiI6IkJOVkdUamZsRTVBaUplWGhHbTZSaGtGUXkwQ25pejJXSlF5cTZhQ0pnTFkiLCJqa3UiOiJodHRwczpcL1wvcXItaC5zYW5kYm94LnBpeC5iY2IuZ292LmJyXC9yZXN0XC9qd2tzLmpzb24iLCJraWQiOiJOMjROSVg5R3Z3bm4ycGktV09IOG9RQ2JkSGlaSFdpbnJvWllxZGhxMlYwUENJIiwiYWxnIjoiUlMyNTYifQ.eyJpZFJlYyI6IlJOMTIzNDU2NzgyMDI0MDExNTc3ODI1NDQ1NjEyIiwidmluY3VsbyI6eyJjb250cmF0byI6IjU1ODI2MTAiLCJkZXZlZG9yIjp7ImNwZiI6IjQ1MTY0NjMyNDgxIiwibm9tZSI6IkZ1bGFubyBkZSBUYWwifSwib2JqZXRvIjoiU2VydmnDp28gZGUgU3RyZWFtbWluZyBkZSBNw7pzaWNhLiJ9LCJjYWxlbmRhcmlvIjp7ImRhdGFGaW5hbCI6IjIwMjUtMDQtMDEiLCJkYXRhSW5pY2lhbCI6IjIwMjQtMDQtMDEiLCJwZXJpZGlvY2lkYWRlIjoiTUVOU0FMIn0sInBvbGl0aWNhUmV0ZW50YXRpdmEiOiJOQU9fUEVSTUlURSIsInZhbG9yIjp7InZhbG9yUmVjIjoiMzUuMDAifSwicmVjZWJlZG9yIjp7ImNucGoiOiIyODc2NTAwNzgwMjM3MSIsIm5vbWUiOiJTdGFydHVwIE11c2ljYWwiLCJpc3BiUGFydGljaXBhbnRlIjoiMTIzNDU2NzgifSwiYXR1YWxpemFjYW8iOlt7InN0YXR1cyI6IkNSSUFEQSIsImRhdGEiOiIyMDI0LTAzLTIwVDEwOjEyOjA3LjU2N1oifV19.JQ3nwpN75M7ADuFQD1lAYRU_3QIkU34OCGXcqmn0dmmvl_JYQggZDY-2cN9waqZtf0duJkDs9EcRu-pNZQZlNMjI7DCYCNfXOgiiofdQqMikDh-D6Zq82EkiUqS7cuTg1-GWylCTF9gH6-p_D-dhYPvf-s4FinbjZNwhkX8Sn-OhlLMS8roIWSMjo_J1hN4DdL-Q5zgZBb7Hbt4OZ3CnD1GNbnsdUUyPyy2GfmIUWZEnQ2rY7gVuI7chUAksYeZVaJiH34saBw4Ou8RjHbSGmeWFLmjiTSQYisyQEyotStu6GnHLS36ElNDVlZWOUnb87N3H5FAccWaIQhit3C4wmA
            ```

            Este objeto JWS assinado deve ser validado pelo pagador. Maiores detalhes técnicos a respeito da especificação
            de segurança encontram-se no __[Manual de Segurança do Pix](https://www.bcb.gov.br/estabilidadefinanceira/pix)__.

            Conforme pode-se verificar no exemplo acima, o objeto JWS apresenta três fragmentos separados pelo caractere `.` (ponto). São eles: `header`, `payload` e `signature`.

            Em termos de funcionalidade, o fragmento que interessa ao pagador é o `payload`, que apresenta estrutura conforme especificada pelo `schema` do presente endpoint, contendo detalhes concernentes à recorrência.

          content:
            "application/jose":
              schema:
                $ref: "#/components/schemas/RecPayload"
              examples:
                response1:
                  $ref: "#/components/examples/recPayload1"
        "400":
          description: "Requisição com formato inválido."
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Problema"
              examples:
                exemplo1:
                  $ref: "#/components/examples/RequisicaoInvalidaRecPayloadExample1"
        "404":
          $ref: "#/components/responses/NaoEncontrado"
        "503":
          $ref: "#/components/responses/ServicoIndisponivel"
  "/webhook/{chave}":
    parameters:
      - name: "chave"
        in: "path"
        required: true
        schema:
          type: "string"
          title: "Chave DICT do recebedor"
          maxLength: 77
    put:
      tags:
        - Webhook
      summary: Configurar o Webhook Pix.
      description: |
        Endpoint para configuração do serviço de notificações acerca de Pix recebidos.
        Somente Pix associados a um txid serão notificados.
      security:
        - OAuth2: [webhook.write]
      requestBody:
        $ref: "#/components/requestBodies/WebhookConfigBody"
      responses:
        "200":
          description: Webhook para notificações acerca de Pix recebidos associados a um txid.
        "400":
          description: "Requisição com formato inválido."
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Problema"
              examples:
                exemplo1:
                  $ref: "#/components/examples/RequisicaoInvalidaWebhookExample1"
        "403":
          $ref: "#/components/responses/AcessoNegado"
        "404":
          $ref: "#/components/responses/NaoEncontrado"
        "503":
          $ref: "#/components/responses/ServicoIndisponivel"
      callbacks:
        listaPix:
          "{$request.body#/webhookUrl}/pix":
            post:
              description: |
                O callback deve ser acionado sempre que um ou mais Pix associados a um txid forem recebidos
                pelo usuário recebedor e desde que a chave associada ao Pix em questão esteja
                associada a um webhook cadastrado.

                O callback também deve ser acionado sempre que uma devolução associada a um Pix
                associado a um txid atinja um status final: `DEVOLVIDO` ou `NAO_REALIZADO`.

                O SLA específico a ser definido no contexto dos acionamento dos callbacks fica a
                cargo de cada PSP recebedor. Orienta-se, no entanto, que o SLA seja definido dentro
                de um limite razoável tendo em vista que a expectativa é que o callback seja um aviso "on-line" da
                ocorrência do pagamento.

                No contexto da estratégia específica de SLA de cada PSP recebedor, é possível agrupar
                Pix associados a uma mesma chave para economizar acionamentos múltiplos.
                Este serviço está protegido por uma camada de autenticação mTLS. Para maiores detalhes,
                verificar o [Manual de padrões para iniciação do Pix](https://www.bcb.gov.br/estabilidadefinanceira/pix).
              security: []
              requestBody:
                $ref: "#/components/requestBodies/WebhookPixBody"
              responses:
                "200":
                  description: "Notificação recebida com sucesso"
    get:
      tags:
        - Webhook
      summary: "Exibir informações acerca do Webhook Pix."
      description: |
        Endpoint para recuperação de informações sobre o Webhook Pix.
      security:
        - OAuth2: [webhook.read]
      responses:
        "200":
          description: "Dados do webhook."
          content:
            "application/json":
              schema:
                $ref: "#/components/schemas/WebhookCompleto"
              examples:
                exemplo1:
                  $ref: "#/components/examples/webhookResponse1"
        "403":
          $ref: "#/components/responses/AcessoNegado"
        "404":
          $ref: "#/components/responses/NaoEncontrado"
        "503":
          $ref: "#/components/responses/ServicoIndisponivel"
    delete:
      tags:
        - Webhook
      summary: "Cancelar o webhook Pix."
      description: |
        Endpoint para cancelamento do webhook. Não é a única forma pela qual um webhook pode ser
        removido.

        O PSP recebedor está livre para remover unilateralmente um webhook que esteja associado
        a uma chave que não pertence mais a este usuário recebedor.
      security:
        - OAuth2: [webhook.write]
      responses:
        "204":
          description: "Webhook para notificações Pix foi cancelado."
        "403":
          $ref: "#/components/responses/AcessoNegado"
        "404":
          $ref: "#/components/responses/NaoEncontrado"
        "503":
          $ref: "#/components/responses/ServicoIndisponivel"
  "/webhook":
    get:
      parameters:
        - in: "query"
          name: "inicio"
          required: false
          schema:
            $ref: "#/components/schemas/Inicio"
        - in: "query"
          name: "fim"
          required: false
          schema:
            $ref: "#/components/schemas/Fim"
        - $ref: "#/components/parameters/paginaAtual"
        - $ref: "#/components/parameters/itensPorPagina"
      tags:
        - "Webhook"
      summary: "Consultar webhooks cadastrados."
      security:
        - OAuth2: [webhook.read]
      description: "Endpoint para consultar Webhooks cadastrados"
      responses:
        "200":
          description: "lista dos locations cadastrados de acordo com o critério de busca."
          content:
            "application/json":
              schema:
                $ref: "#/components/schemas/WebhooksConsultados"
              examples:
                getCobs1:
                  $ref: "#/components/examples/getWebhook1"
        "403":
          $ref: "#/components/responses/AcessoNegado"
        "503":
          $ref: "#/components/responses/ServicoIndisponivel"
  "/webhookrec":
    put:
      tags:
        - WebhookRec
      summary: Configurar Webhook.
      description: |
        Endpoint para configuração do serviço de notificações acerca de recorrências. Somente recorrências associadas ao usuário recebedor serão notificadas.
      security:
        - OAuth2: [webhookrec.write]
      requestBody:
        $ref: "#/components/requestBodies/WebhookRecConfigBody"
      responses:
        "200":
          description: Webhook para notificações.
        "400":
          description: "Requisição com formato inválido."
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Problema"
              examples:
                exemplo1:
                  $ref: "#/components/examples/RequisicaoInvalidaWebhookExample1"
        "403":
          $ref: "#/components/responses/AcessoNegado"
        "404":
          $ref: "#/components/responses/NaoEncontrado"
        "503":
          $ref: "#/components/responses/ServicoIndisponivel"
      callbacks:
        rec:
          "{$request.body#/webhookUrl}/rec":
            post:
              description: ""
              security: []
              requestBody:
                $ref: "#/components/requestBodies/WebhookRecBody"
              responses:
                "200":
                  description: "Notificação recebida com sucesso"
    get:
      tags:
        - WebhookRec
      summary: "Exibir informações acerca do Webhook."
      description: |
        Endpoint para recuperação de informações sobre o Webhook.
      security:
        - OAuth2: [webhookrec.read]
      responses:
        "200":
          description: "Dados do webhook."
          content:
            "application/json":
              schema:
                $ref: "#/components/schemas/WebhookRecCompleto"
              examples:
                response1:
                  $ref: "#/components/examples/recWebhookResponse1"
        "403":
          $ref: "#/components/responses/AcessoNegado"
        "404":
          $ref: "#/components/responses/NaoEncontrado"
        "503":
          $ref: "#/components/responses/ServicoIndisponivel"
    delete:
      tags:
        - WebhookRec
      summary: "Cancelar o Webhook."
      description: |
        Endpoint para cancelamento do webhook. Não é a única forma pela qual um webhook pode ser
        removido.
      security:
        - OAuth2: [webhookrec.write]
      responses:
        "204":
          description: "Webhook para notificações foi cancelado."
        "403":
          $ref: "#/components/responses/AcessoNegado"
        "404":
          $ref: "#/components/responses/NaoEncontrado"
        "503":
          $ref: "#/components/responses/ServicoIndisponivel"
  "/webhookcobr":
    put:
      tags:
        - WebhookCobR
      summary: Configurar Webhook.
      description: |
        Endpoint para configuração do serviço de notificações acerca de cobranças recorrentes. Somente cobranças recorrentes associadas ao usuário recebedor serão notificadas.
      security:
        - OAuth2: [webhookcobr.write]
      requestBody:
        $ref: "#/components/requestBodies/WebhookCobRConfigBody"
      responses:
        "200":
          description: Webhook para notificações.
        "400":
          description: "Requisição com formato inválido."
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Problema"
              examples:
                exemplo1:
                  $ref: "#/components/examples/RequisicaoInvalidaWebhookExample1"
        "403":
          $ref: "#/components/responses/AcessoNegado"
        "404":
          $ref: "#/components/responses/NaoEncontrado"
        "503":
          $ref: "#/components/responses/ServicoIndisponivel"
      callbacks:
        cobr:
          "{$request.body#/webhookUrl}/cobr":
            post:
              description: ""
              security: []
              requestBody:
                $ref: "#/components/requestBodies/WebhookCobRBody"
              responses:
                "200":
                  description: "Notificação recebida com sucesso"
    get:
      tags:
        - WebhookCobR
      summary: "Exibir informações acerca do Webhook."
      description: |
        Endpoint para recuperação de informações sobre o Webhook.
      security:
        - OAuth2: [webhookcobr.read]
      responses:
        "200":
          description: "Dados do webhook."
          content:
            "application/json":
              schema:
                $ref: "#/components/schemas/WebhookCobRCompleto"
              examples:
                response1:
                  $ref: "#/components/examples/cobRWebhookResponse1"
        "403":
          $ref: "#/components/responses/AcessoNegado"
        "404":
          $ref: "#/components/responses/NaoEncontrado"
        "503":
          $ref: "#/components/responses/ServicoIndisponivel"
    delete:
      tags:
        - WebhookCobR
      summary: "Cancelar o Webhook."
      description: |
        Endpoint para cancelamento do webhook. Não é a única forma pela qual um webhook pode ser
        removido.
      security:
        - OAuth2: [webhookcobr.write]
      responses:
        "204":
          description: "Webhook para notificações foi cancelado."
        "403":
          $ref: "#/components/responses/AcessoNegado"
        "404":
          $ref: "#/components/responses/NaoEncontrado"
        "503":
          $ref: "#/components/responses/ServicoIndisponivel"
  "/rec/{idRec}":
    parameters:
      - name: "idRec"
        in: "path"
        required: true
        schema:
          type: "string"
          title: "Id da location cadastrada para servir um payload"
    get:
      tags:
        - "Rec"
      parameters:
        - name: "txid"
          in: "query"
          required: false
          schema:
            type: "string"
            title: "TxId da cobrança associada a recorrência."
      summary: "Consultar recorrência."
      security:
        - OAuth2: [rec.read]
      description: "Consultar recorrência."
      responses:
        "200":
          description: "Dados da recorrência."
          content:
            "application/json":
              schema:
                $ref: "#/components/schemas/RecCompleta"
              examples:
                response1:
                  $ref: "#/components/examples/recResponse3"
                response2:
                  $ref: "#/components/examples/recResponse4"
                response3:
                  $ref: "#/components/examples/recResponse5"
                response4:
                  $ref: "#/components/examples/recResponse6"
                response5:
                  $ref: "#/components/examples/recResponse7"
                response6:
                  $ref: "#/components/examples/recResponse8"
        "403":
          $ref: "#/components/responses/AcessoNegado"
        "404":
          $ref: "#/components/responses/NaoEncontrado"
        "503":
          $ref: "#/components/responses/ServicoIndisponivel"
    patch:
      tags:
        - "Rec"
      summary: "Revisar recorrência."
      security:
        - OAuth2: [rec.write]
      description: "Revisar recorrência."
      requestBody:
        $ref: "#/components/requestBodies/RecBodyRevisada"
      responses:
        "200":
          description: "Recorrência revisada."
          content:
            "application/json":
              schema:
                $ref: "#/components/schemas/RecGerada"
              examples:
                retorno1:
                  $ref: "#/components/examples/recResponse1"
        "400":
          description: "Requisição com formato inválido."
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Problema"
              examples:
                requisicao1:
                  $ref: "#/components/examples/OperacaoInvalidaRecExample1"
        "403":
          $ref: "#/components/responses/AcessoNegado"
        "404":
          $ref: "#/components/responses/NaoEncontrado"
        "503":
          $ref: "#/components/responses/ServicoIndisponivel"
  "/rec":
    get:
      parameters:
        - in: "query"
          name: "inicio"
          required: true
          schema:
            $ref: "#/components/schemas/Inicio"
        - in: "query"
          name: "fim"
          required: true
          schema:
            $ref: "#/components/schemas/Fim"
        - name: "cpf"
          in: "query"
          schema:
            type: "string"
            title: "CPF"
            pattern: "/^\\d{11}$/"
            description: "Filtro pelo CPF do devedor. Não pode ser utilizado ao mesmo tempo que o CNPJ."
        - name: "cnpj"
          in: "query"
          schema:
            type: "string"
            title: "CNPJ"
            pattern: "^[0-9A-Z]{14}$"
            description: "Filtro pelo CNPJ do devedor. Não pode ser utilizado ao mesmo tempo que o CPF."
        - name: "locationPresente"
          in: "query"
          schema:
            type: "boolean"
        - name: "status"
          in: "query"
          schema:
            type: "string"
            title: "Status do registro da recorrência"
            description: "Filtro pelo status da recorrência."
        - name: "convenio"
          in: "query"
          schema:
            type: "string"
            title: "Convênio"
            maxLength: 60
            description: "Filtro pelo convênio associado."
        - $ref: "#/components/parameters/paginaAtual"
        - $ref: "#/components/parameters/itensPorPagina"
      tags:
        - "Rec"
      summary: "Consultar lista de recorrências."
      security:
        - OAuth2: [rec.read]
      description: "Consultar lista de recorrências."
      responses:
        "200":
          description: "OK"
          content:
            "application/json":
              schema:
                $ref: "#/components/schemas/RecsConsultadas"
              examples:
                retorno1:
                  $ref: "#/components/examples/getRec1"
        "403":
          $ref: "#/components/responses/AcessoNegado"
        "503":
          $ref: "#/components/responses/ServicoIndisponivel"
    post:
      tags:
        - "Rec"
      summary: "Criar recorrência."
      security:
        - OAuth2: [rec.write]
      description: "Criar recorrência"
      requestBody:
        $ref: "#/components/requestBodies/RecBody"
      responses:
        "201":
          description: "Recorrência criada"
          content:
            "application/json":
              schema:
                $ref: "#/components/schemas/RecGerada"
              examples:
                retorno1:
                  $ref: "#/components/examples/recResponse1"
                retorno2:
                  $ref: "#/components/examples/recResponse2"
        "400":
          description: "Requisição com formato inválido."
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Problema"
              examples:
                requisicao1:
                  $ref: "#/components/examples/OperacaoInvalidaRecExample1"
        "403":
          $ref: "#/components/responses/AcessoNegado"
        "503":
          $ref: "#/components/responses/ServicoIndisponivel"
  "/solicrec":
    post:
      tags:
        - "SolicRec"
      summary: "Criar solicitação de confirmação de recorrência."
      security:
        - OAuth2: [solicrec.write]
      description: "Criar solicitação de confirmação de recorrência."
      requestBody:
        $ref: "#/components/requestBodies/SolicRecBody"
      responses:
        "201":
          description: "Solicitação de recorrência criada"
          content:
            "application/json":
              schema:
                $ref: "#/components/schemas/SolicRecCompleta"
              examples:
                response1:
                  $ref: "#/components/examples/solicRecResponse1"
        "400":
          description: "Requisição com formato inválido."
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Problema"
              examples:
                requisicao1:
                  $ref: "#/components/examples/OperacaoInvalidaSolicRecExample1"
        "403":
          $ref: "#/components/responses/AcessoNegado"
        "404":
          $ref: "#/components/responses/NaoEncontrado"
        "503":
          $ref: "#/components/responses/ServicoIndisponivel"
  "/solicrec/{idSolicRec}":
    parameters:
      - name: "idSolicRec"
        in: "path"
        required: true
        schema:
          type: "string"
          title: "Id da solicitação da recorrência"
    get:
      tags:
        - "SolicRec"
      summary: "Consultar solicitação de confirmação de recorrência."
      security:
        - OAuth2: [solicrec.read]
      description: "Consultar solicitação."
      responses:
        "200":
          description: "Dados da solicitação da recorrência."
          content:
            "application/json":
              schema:
                $ref: "#/components/schemas/SolicRecCompleta"
              examples:
                response1:
                  $ref: "#/components/examples/solicRecResponse1"
                response2:
                  $ref: "#/components/examples/solicRecResponse2"
        "403":
          $ref: "#/components/responses/AcessoNegado"
        "404":
          $ref: "#/components/responses/NaoEncontrado"
        "503":
          $ref: "#/components/responses/ServicoIndisponivel"
    patch:
      tags:
        - "SolicRec"
      summary: "Revisar solicitação de confirmação de recorrência."
      security:
        - OAuth2: [solicrec.write]
      description: "Revisar solicitação de confirmação de recorrência."
      requestBody:
        $ref: "#/components/requestBodies/SolicRecBodyRevisada"
      responses:
        "201":
          description: "Solicitação de recorrência atualizada"
          content:
            "application/json":
              schema:
                $ref: "#/components/schemas/SolicRecCompleta"
              examples:
                response1:
                  $ref: "#/components/examples/solicRecResponse3"
        "400":
          description: "Requisição com formato inválido."
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Problema"
              examples:
                requisicao1:
                  $ref: "#/components/examples/OperacaoInvalidaSolicRecExample2"
        "403":
          $ref: "#/components/responses/AcessoNegado"
        "404":
          $ref: "#/components/responses/NaoEncontrado"
        "503":
          $ref: "#/components/responses/ServicoIndisponivel"

  "/cobr/{txid}":
    parameters:
      - name: txid
        in: path
        required: true
        schema:
          $ref: "#/components/schemas/TxId"
    put:
      tags:
        - "CobR"
      summary: "Criar cobrança recorrente."
      security:
        - OAuth2: [cobr.write]
      description: |-
        Endpoint para criar uma cobrança recorrente.
      requestBody:
        $ref: "#/components/requestBodies/CobRBody"
      responses:
        "201":
          description: "Cobrança imediata recorrente."
          content:
            "application/json":
              schema:
                $ref: "#/components/schemas/CobRGerada"
              examples:
                response1:
                  $ref: "#/components/examples/cobRResponse2"
        "400":
          description: "Requisição com formato inválido."
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Problema"
              examples:
                requisicao1:
                  $ref: "#/components/examples/OperacaoInvalidaCobRExample1"
        "403":
          $ref: "#/components/responses/AcessoNegado"
        "404":
          $ref: "#/components/responses/NaoEncontrado"
        "503":
          $ref: "#/components/responses/ServicoIndisponivel"
    patch:
      tags:
        - "CobR"
      summary: "Revisar cobrança recorrente."
      security:
        - OAuth2: [cobr.write]
      requestBody:
        $ref: "#/components/requestBodies/CobRBodyRevisada"
      responses:
        "200":
          description: "Cobrança recorrente revisada."
          content:
            "application/json":
              schema:
                $ref: "#/components/schemas/CobRGerada"
              examples:
                response1:
                  $ref: "#/components/examples/cobRResponse4"
        "400":
          description: "Requisição com formato inválido."
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Problema"
              examples:
                exemplo1:
                  $ref: "#/components/examples/OperacaoInvalidaCobRExample2"
        "403":
          $ref: "#/components/responses/AcessoNegado"
        "404":
          $ref: "#/components/responses/NaoEncontrado"
        "503":
          $ref: "#/components/responses/ServicoIndisponivel"
    get:
      tags:
        - "CobR"
      summary: "Consultar cobrança recorrente."
      security:
        - OAuth2: [cobr.read]
      description: |-
        Endpoint para consultar uma cobrança recorrente através de um determinado txid.
      responses:
        "200":
          description: "Dados da cobrança recorrente."
          content:
            "application/json":
              schema:
                $ref: "#/components/schemas/CobRCompleta"
              examples:
                response1:
                  $ref: "#/components/examples/cobRResponse2"
                response2:
                  $ref: "#/components/examples/cobRResponse3"
                response3:
                  $ref: "#/components/examples/cobRResponse4"
        "403":
          $ref: "#/components/responses/AcessoNegado"
        "404":
          $ref: "#/components/responses/NaoEncontrado"
        "503":
          $ref: "#/components/responses/ServicoIndisponivel"
  "/cobr":
    post:
      tags:
        - "CobR"
      summary: "Criar cobrança recorrente."
      security:
        - OAuth2: [cobr.write]
      description: |-
        Endpoint para criar uma cobrança recorrente, neste caso, o txid deve ser definido pelo PSP.
      requestBody:
        $ref: "#/components/requestBodies/CobRBody"
      responses:
        "201":
          description: "Cobrança recorrente criada."
          content:
            "application/json":
              schema:
                $ref: "#/components/schemas/CobRGerada"
              examples:
                response1:
                  $ref: "#/components/examples/cobRResponse1"
        "400":
          description: "Requisição com formato inválido."
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Problema"
              examples:
                requisicao1:
                  $ref: "#/components/examples/OperacaoInvalidaCobRExample1"
        "403":
          $ref: "#/components/responses/AcessoNegado"
        "503":
          $ref: "#/components/responses/ServicoIndisponivel"
    get:
      parameters:
        - in: "query"
          name: "inicio"
          required: true
          schema:
            $ref: "#/components/schemas/Inicio"
        - in: "query"
          name: "fim"
          required: true
          schema:
            $ref: "#/components/schemas/Fim"
        - name: "idRec"
          in: "query"
          schema:
            type: "string"
            title: "ID Recorrência"
            pattern: "[a-zA-Z0-9]{29}"
            minLength: 29
            maxLength: 29
            description: "Filtro pelo Identificador da Recorrência."
        - name: "cpf"
          in: "query"
          schema:
            type: "string"
            title: "CPF"
            pattern: "/^\\d{11}$/"
            description: "Filtro pelo CPF do devedor. Não pode ser utilizado ao mesmo tempo que o CNPJ."
        - name: "cnpj"
          in: "query"
          schema:
            type: "string"
            title: "CNPJ"
            pattern: "^[0-9A-Z]{14}$"
            description: "Filtro pelo CNPJ do devedor. Não pode ser utilizado ao mesmo tempo que o CPF."
        - name: "status"
          in: "query"
          schema:
            type: "string"
            title: "Status do registro da cobrança recorrente."
            description: "Filtro pelo status da cobrança recorrente."
        - name: "convenio"
          in: "query"
          schema:
            type: "string"
            title: "Convênio"
            maxLength: 60
            description: "Filtro pelo convênio associado."
        - $ref: "#/components/parameters/paginaAtual"
        - $ref: "#/components/parameters/itensPorPagina"
      tags:
        - "CobR"
      summary: "Consultar lista de cobranças recorrentes."
      security:
        - OAuth2: [cobr.read]
      description: |-
        Endpoint para consultar cobranças recorrentes através de parâmetros como início, fim, idRec, cpf, cnpj, status e convênio.
      responses:
        "200":
          description: "Lista de cobranças recorrentes."
          content:
            "application/json":
              schema:
                $ref: "#/components/schemas/CobsRConsultadas"
              examples:
                retorno1:
                  $ref: "#/components/examples/getCobR1"
        "403":
          $ref: "#/components/responses/AcessoNegado"
        "503":
          $ref: "#/components/responses/ServicoIndisponivel"
  "/cobr/{txid}/retentativa/{data}":
    parameters:
      - name: txid
        in: path
        required: true
        schema:
          $ref: "#/components/schemas/TxId"
      - name: data
        in: path
        required: true
        description: "Data prevista para liquidação da ordem de pagamento correspondente. Trata-se de uma data, no formato `YYYY-MM-DD`, segundo ISO 8601."
        schema:
          type: "string"
          format: "date"
          example: "2023-04-01"
    post:
      tags:
        - "CobR"
      summary: "Solicitar retentativa de cobrança."
      security:
        - OAuth2: [cobr.write]
      description: |-
        Endpoint para solicitar retentativa de uma cobrança recorrente.
      responses:
        "201":
          description: "Cobrança recorrente."
          content:
            "application/json":
              schema:
                allOf:
                  - required: ["tentativas"]
                  - $ref: "#/components/schemas/CobRCompleta"
              examples:
                response1:
                  $ref: "#/components/examples/cobRResponse3"
        "400":
          description: "Requisição com formato inválido."
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Problema"
              examples:
                exemplo1:
                  $ref: "#/components/examples/RequisicaoInvalidaCobRTentativaExample1"
        "403":
          $ref: "#/components/responses/AcessoNegado"
        "404":
          $ref: "#/components/responses/NaoEncontrado"
        "503":
          $ref: "#/components/responses/ServicoIndisponivel"
components:
  securitySchemes:
    OAuth2:
      type: oauth2
      flows:
        clientCredentials:
          tokenUrl: https://pix.example.com/oauth/token
          scopes:
            cob.write: Permissão para alteração de cobranças imediatas
            cob.read: Permissão para consulta de cobranças imediatas
            cobr.write: Permissão para alteração de cobranças recorrentes
            cobr.read: Permissão para consulta de cobranças recorrentes
            rec.write: Permissão para alteração de recorrências
            rec.read: Permissão para consulta de recorrências
            solicrec.write: Permissão para alteração de solicitações de recorrências
            solicrec.read: Permissão para consulta de solicitações de recorrências
            cobv.write: Permissão para alteração de cobranças com vencimento
            cobv.read: Permissão para consulta de cobranças com vencimento
            lotecobv.write: Permissão para alteração de lotes de cobranças com vencimento
            lotecobv.read: Permissão para consulta de lotes de cobranças com vencimento
            pix.write: Permissão para alteração de Pix
            pix.read: Permissão para consulta de Pix
            webhook.read: Permissão para consulta do webhook
            webhook.write: Permissão para alteração do webhook
            webhookrec.read: Permissão para consulta do webhook
            webhookrec.write: Permissão para alteração do webhook
            webhookcobr.read: Permissão para consulta do webhook
            webhookcobr.write: Permissão para alteração do webhook
            payloadlocation.write: Permissão para alteração de payloads
            payloadlocation.read: Permissão para consulta de payloads
            payloadlocationrec.write: Permissão para alteração de payloads
            payloadlocationrec.read: Permissão para consulta de payloads
  examples:
    cobBody1:
      summary: "Exemplo de criação de cobrança com vencimento 1"
      value:
        calendario:
          dataDeVencimento: "2020-12-31"
          validadeAposVencimento: 30
        loc:
          id: 789
        devedor:
          logradouro: "Alameda Souza, Numero 80, Bairro Braz"
          cidade: "Recife"
          uf: "PE"
          cep: "70011750"
          cpf: "12345678909"
          nome: "Francisco da Silva"
        valor:
          original: "123.45"
          multa:
            modalidade: "2"
            valorPerc: "15.00"
          juros:
            modalidade: "2"
            valorPerc: "2.00"
          desconto:
            modalidade: "1"
            descontoDataFixa:
              - data: "2020-11-30"
                valorPerc: "30.00"
        chave: "5f84a4c5-c5cb-4599-9f13-7eb4d419dacc"
        solicitacaoPagador: "Cobrança dos serviços prestados."
    cobBody2:
      summary: "Exemplo de criação de cobrança imediata 1"
      value:
        calendario:
          expiracao: 3600
        devedor:
          cnpj: "12345678000195"
          nome: "Empresa de Serviços SA"
        valor:
          original: "37.00"
          modalidadeAlteracao: 1
        chave: "7d9f0335-8dcc-4054-9bf9-0dbd61d36906"
        solicitacaoPagador: "Serviço realizado."
        infoAdicionais:
          - nome: "Campo 1"
            valor: "Informação Adicional1 do PSP-Recebedor"
          - nome: "Campo 2"
            valor: "Informação Adicional2 do PSP-Recebedor"
    cobBody3:
      summary: "Exemplo de revisão de cobrança 1"
      value:
        loc:
          id: 7768
        devedor:
          cpf: "12345678909"
          nome: "Francisco da Silva"
        valor:
          original: "123.45"
        solicitacaoPagador: "Cobrança dos serviços prestados."
    cobBody4:
      summary: "Exemplo de revisão de cobrança 2"
      value:
        valor:
          original: "567.89"
        solicitacaoPagador: "Informar cartão fidelidade"
    cobBody5:
      summary: "Exemplo de revisão de cobrança 3"
      value:
        status: REMOVIDA_PELO_USUARIO_RECEBEDOR
    cobBody6:
      summary: "Exemplo de criação de cobrança imediata com Saque Pix"
      value:
        devedor:
          cnpj: "12345678000195"
          nome: "Empresa de Serviços SA"
        valor:
          original: "0.00"
          modalidadeAlteracao: 0
          retirada:
            saque:
              valor: "5.00"
              modalidadeAlteracao: 0
              modalidadeAgente: "AGPSS"
              prestadorDoServicoDeSaque: "12345678"
        chave: "7d9f0335-8dcc-4054-9bf9-0dbd61d36906"
    cobBody7:
      summary: "Exemplo de revisão de cobrança com vencimento 1"
      value:
        loc:
          id: 789
        devedor:
          logradouro: "Alameda Souza, Numero 80, Bairro Braz"
          cidade: "Recife"
          uf: "PE"
          cep: "70011750"
          cpf: "12345678909"
          nome: "Francisco da Silva"
        valor:
          original: "123.45"
        solicitacaoPagador: "Cobrança dos serviços prestados."
    cobBody8:
      summary: "Exemplo de criação de cobrança imediata com Saque Pix 2"
      value:
        devedor:
          cnpj: "12345678000195"
          nome: "Empresa de Serviços SA"
        valor:
          original: "0.00"
          modalidadeAlteracao: 0
          retirada:
            saque:
              valor: "20.00"
              modalidadeAlteracao: 1
              modalidadeAgente: "AGPSS"
              prestadorDoServicoDeSaque: "12345678"
        chave: "7d9f0335-8dcc-4054-9bf9-0dbd61d36906"
    cobBody9:
      summary: "Exemplo de criação de cobrança imediata com Saque Pix 3"
      value:
        devedor:
          cnpj: "12345678000195"
          nome: "Empresa de Serviços SA"
        valor:
          original: "10.00"
          modalidadeAlteracao: 0
          retirada:
            troco:
              valor: "0.00"
              modalidadeAlteracao: 1
              modalidadeAgente: "AGTEC"
              prestadorDoServicoDeSaque: "12345678"
        chave: "7d9f0335-8dcc-4054-9bf9-0dbd61d36906"
    cobRBody1:
      summary: "Exemplo de criação de cobrança recorrente 1"
      value:
        idRec: RR1234567820240115abcdefghijk
        infoAdicional: "Serviços de Streamming de Música e Filmes."
        calendario:
          dataDeVencimento: "2024-04-15"
        valor: 
          original: "106.07"
        ajusteDiaUtil: true
        devedor:
          cep: "89256-140"
          cidade: "Uberlândia"
          email: "sebastiao.tavares@mail.com"
          logradouro: "Alameda Franco 1056"
          uf: "MG"
        recebedor:
          agencia: "9708"
          conta: "012682"
          tipoConta: CORRENTE
    cobRBody2:
      summary: "Exemplo de revisão de cobrança recorrente 1"
      value:
        status: CANCELADA
    cobRResponse1:
      summary: "Exemplo de cobrança recorrente 1"
      value:
        idRec: RR1234567820240115abcdefghijk
        txid: 3136957d93134f2184b369e8f1c0729d
        infoAdicional: "Serviços de Streamming de Música e Filmes."
        calendario:
          criacao: "2024-04-01"
          dataDeVencimento: "2024-04-15"
        status: CRIADA
        valor:
          original: "106.07"
        politicaRetentativa: PERMITE_3R_7D
        ajusteDiaUtil: true
        devedor:
          cep: "89256-140"
          cidade: "Uberlândia"
          email: "sebastiao.tavares@mail.com"
          logradouro: "Alameda Franco 1056"
          uf: "MG"
        recebedor:
          agencia: "9708"
          conta: "012682"
          tipoConta: CORRENTE
        atualizacao:
          - data: "2024-04-01T14:47:29.470Z"
            status: CRIADA
    cobRResponse2:
      summary: "Exemplo de cobrança recorrente 1"
      value:
        idRec: RR1234567820240115abcdefghijk
        txid: 3136957d93134f2184b369e8f1c0729d
        infoAdicional: "Serviços de Streamming de Música e Filmes."
        calendario:
          criacao: "2024-04-01"
          dataDeVencimento: "2024-04-15"
        valor: 
          original: "106.07"
        status: CRIADA
        politicaRetentativa: PERMITE_3R_7D
        ajusteDiaUtil: true
        devedor:
          cep: "89256-140"
          cidade: "Uberlândia"
          email: "sebastiao.tavares@mail.com"
          logradouro: "Alameda Franco 1056"
          uf: "MG"
        recebedor:
          agencia: "9708"
          conta: "012682"
          tipoConta: CORRENTE
        atualizacao:
          - data: "2024-04-01T14:47:29.470Z"
            status: CRIADA
    cobRResponse3:
      summary: "Exemplo de cobrança recorrente 2"
      value:
        idRec: RR123456782024061999000566354
        txid: 7f733863543b4a16b516d839bd4bc34e
        calendario:
          criacao: "2024-05-20"
          dataDeVencimento: "2024-06-20"
        valor: 
          original: "50.33"
        status: ATIVA
        politicaRetentativa: PERMITE_3R_7D
        ajusteDiaUtil: true
        devedor:
          cep: "63259-740"
          cidade: "Campinas"
          email: "beltrano.silva@mail.com"
          logradouro: "Rua Gonçalves Dias 605"
          uf: "SP"
        recebedor:
          cnpj: "58966551101210"
          conta: "997182"
          tipoConta: CORRENTE
        tentativas:
          - dataLiquidacao: "2024-06-22"
            tipo: AGND
            endToEndId: E12345678202406201221abcdef12345
            status: EXPIRADA 
          - dataLiquidacao: "2024-06-24"
            tipo: NTAG
            endToEndId: E12345678202406201221abcdef12345
            status: AGENDADA
        atualizacao:
          - data: "2024-05-20T14:47:29.470Z"
            status: CRIADA
          - data: "2024-05-21T10:18:20.120Z"
            status: ATIVA
    cobRResponse4:
      summary: "Exemplo de cobrança recorrente 3"
      value:
        idRec: RN985156112024071999000566354
        txid: 517bd858b59d458a841280b0f0a60bfa
        calendario:
          criacao: "2024-05-20"
          dataDeVencimento: "2024-06-20"
        valor: 
          original: "210.00"
        status: CANCELADA
        politicaRetentativa: NAO_PERMITE
        ajusteDiaUtil: true
        devedor:
          cep: "26901-340"
          cidade: "São Luís"
          email: "fulano.tal@mail.com"
          logradouro: "Alameda Cardoso 1007"
          uf: "MA"
        recebedor:
          cnpj: "31166575201770"
          conta: "107262"
          nome: "Empresa de Telecomunicações SA"
          tipoConta: POUPANÇA
        tentativas:
          - dataLiquidacao: "2024-06-20"
            tipo: AGND
            endToEndId: E12345678202406201221abcdef12345
            status: CANCELADA 
        encerramento:
          cancelamento:
            solicitante: "USUARIO_RECEBEDOR"
            codigo: "SLCR"
            descricao: "Cancelamento de agendamento solicitado pelo usuário recebedor"
        atualizacao:
          - data: "2024-05-20T14:47:29.470Z"
            status: CRIADA
          - data: "2024-05-21T10:18:20.120Z"
            status: ATIVA
          - data: "2024-05-26T10:18:20.120Z"
            status: CANCELADA
    loteCobVBody1:
      summary: "Exemplo de criação de lote de cobranças com vencimento 1"
      value:
        descricao: "Cobranças dos alunos do turno vespertino"
        cobsv:
          - calendario:
              dataDeVencimento: "2020-12-31"
              validadeAposVencimento: 30
            txid: "fb2761260e554ad593c7226beb5cb650"
            loc:
              id: 789
            devedor:
              logradouro: "Alameda Souza, Numero 80, Bairro Braz"
              cidade: "Recife"
              uf: "PE"
              cep: "70011750"
              cpf: "08577095428"
              nome: "João Souza"
            valor:
              original: "100.00"
            chave: "7c084cd4-54af-4172-a516-a7d1a12b75cc"
            solicitacaoPagador: "Informar matrícula"
          - calendario:
              dataDeVencimento: "2020-12-31"
              validadeAposVencimento: 30
            txid: "7978c0c97ea847e78e8849634473c1f1"
            loc:
              id: 57221
            devedor:
              logradouro: "Rua 15, Numero 1, Bairro Campo Grande"
              cidade: "Recife"
              uf: "PE"
              cep: "70055751"
              cpf: "15311295449"
              nome: "Manoel Silva"
            valor:
              original: "100.00"
            chave: "7c084cd4-54af-4172-a516-a7d1a12b75cc"
            solicitacaoPagador: "Informar matrícula"
    loteCobVBodyRevisado1:
      summary: "Exemplo de revisão de lote de cobranças com vencimento 1"
      value:
        cobsv:
          - calendario:
              dataDeVencimento: "2020-01-10"
            txid: "fb2761260e554ad593c7226beb5cb650"
            valor:
              original: "110.00"
          - calendario:
              dataDeVencimento: "2020-01-10"
            txid: "7978c0c97ea847e78e8849634473c1f1"
            valor:
              original: "110.00"
    cobResponse1:
      summary: "Exemplo de cobrança imediata 1"
      value:
        calendario:
          criacao: "2020-09-09T20:15:00.358Z"
          expiracao: 3600
        txid: "7978c0c97ea847e78e8849634473c1f1"
        revisao: 0
        loc:
          id: 789
          location: "pix.example.com/qr/9d36b84fc70b478fb95c12729b90ca25"
          tipoCob: "cob"
        location: "pix.example.com/qr/9d36b84fc70b478fb95c12729b90ca25"
        status: "ATIVA"
        devedor:
          cnpj: "12345678000195"
          nome: "Empresa de Serviços SA"
        valor:
          original: "37.00"
          modalidadeAlteracao: 1
        chave: "7d9f0335-8dcc-4054-9bf9-0dbd61d36906"
        solicitacaoPagador: "Serviço realizado."
        infoAdicionais:
          - nome: "Campo 1"
            valor: "Informação Adicional1 do PSP-Recebedor"
          - nome: "Campo 2"
            valor: "Informação Adicional2 do PSP-Recebedor"
    cobResponse2:
      summary: "Exemplo de cobrança imediata 2"
      value:
        calendario:
          criacao: "2020-09-09T20:15:00.358Z"
          expiracao: 3600
        txid: "655dfdb1a4514b8fbb58254b958913fb"
        revisao: 1
        loc:
          id: 567
          location: "pix.example.com/qr/1dd7f893a58e417287028dc33e21a403"
        location: "pix.example.com/qr/1dd7f893a58e417287028dc33e21a403"
        status: "CONCLUIDA"
        devedor:
          cnpj: "12345678000195"
          nome: "Empresa de Serviços SA"
        valor:
          original: "100.00"
          modalidadeAlteracao: 0
        chave: "40a0932d-1918-4eee-845d-35a2da1690dc"
        solicitacaoPagador: "Informar cartão fidelidade"
        pix:
          - endToEndId: "E1234567820200909122120200808008"
            txid: "655dfdb1a4514b8fbb58254b958913fb"
            valor: "110.00"
            horario: "2020-09-09T20:15:00.358Z"
            infoPagador: "0123456789"
            devolucoes:
              - id: "123ABC"
                rtrId: "D1234567820200909122120200808006"
                valor: "10.00"
                horario:
                  solicitacao: "2020-09-09T20:15:00.358Z"
                status: "EM_PROCESSAMENTO"
    cobResponse3:
      summary: "Exemplo de cobrança revisada 1"
      value:
        calendario:
          criacao: "2020-09-09T20:15:00.358Z"
          expiracao: 3600
        txid: "7978c0c97ea847e78e8849634473c1f1"
        revisao: 1
        loc:
          id: 7768
          location: "pix.example.com/qr/b1/9d36b84fc70b478fb95c12729b90ca25"
          tipoCob: "cob"
        location: "pix.example.com/qr/v1/9d36b84fc70b478fb95c12729b90ca25"
        status: "ATIVA"
        devedor:
          cpf: "12345678909"
          nome: "Francisco da Silva"
        valor:
          original: "123.45"
          modalidadeAlteracao: 0
        chave: "a1f4102e-a446-4a57-bcce-6fa48899c1d1"
        solicitacaoPagador: "Cobrança dos serviços prestados."
    cobResponse4:
      summary: "Exemplo de cobrança com vencimento 1"
      value:
        calendario:
          criacao: "2020-09-09T20:15:00.358Z"
          dataDeVencimento: "2020-12-31"
          validadeAposVencimento: 30
        txid: "7978c0c97ea847e78e8849634473c1f1"
        revisao: 0
        loc:
          id: 789
          location: "pix.example.com/qr/c2/cobv/9d36b84fc70b478fb95c12729b90ca25"
          tipoCob: "cobv"
        status: "ATIVA"
        devedor:
          logradouro: "Alameda Souza, Numero 80, Bairro Braz"
          cidade: "Recife"
          uf: "PE"
          cep: "70011750"
          cpf: "12345678909"
          nome: "Francisco da Silva"
        recebedor:
          logradouro: "Rua 15 Numero 1200, Bairro São Luiz"
          cidade: "São Paulo"
          uf: "SP"
          cep: "70800100"
          cnpj: "56989000019533"
          nome: "Empresa de Logística SA"
        valor:
          original: "123.45"
        chave: "5f84a4c5-c5cb-4599-9f13-7eb4d419dacc"
        solicitacaoPagador: "Cobrança dos serviços prestados."
    cobResponse5:
      summary: "Exemplo de cobrança imediata com Saque Pix"
      value:
        calendario:
          criacao: "2020-09-09T20:15:00.358Z"
          expiracao: 3600
        txid: "33beb661beda44a8928fef47dbeb2dc5"
        revisao: 0
        loc:
          id: 1004
          location: "pix.example.com/qr/7faa6893c4e64893a503baf0d40af213"
          tipoCob: "cob"
        location: "pix.example.com/qr/7faa6893c4e64893a503baf0d40af213"
        status: "ATIVA"
        devedor:
          cnpj: "12345678000195"
          nome: "Empresa de Serviços SA"
        valor:
          original: "0.00"
          modalidadeAlteracao: 0
          retirada:
            saque:
              valor: "5.00"
              modalidadeAlteracao: 0
              modalidadeAgente: "AGPSS"
              prestadorDoServicoDeSaque: "12345678"
        chave: "7d9f0335-8dcc-4054-9bf9-0dbd61d36906"
    cobResponse6:
      summary: "Exemplo de cobrança imediata com Saque Pix 2"
      value:
        calendario:
          criacao: "2020-09-09T20:15:00.358Z"
          expiracao: 3600
        txid: "33beb661beda44a8928fef47dbeb2dc5"
        revisao: 0
        loc:
          id: 1004
          location: "pix.example.com/qr/7faa6893c4e64893a503baf0d40af213"
          tipoCob: "cob"
        location: "pix.example.com/qr/7faa6893c4e64893a503baf0d40af213"
        status: "ATIVA"
        devedor:
          cnpj: "12345678000195"
          nome: "Empresa de Serviços SA"
        valor:
          original: "0.00"
          modalidadeAlteracao: 0
          retirada:
            saque:
              valor: "20.00"
              modalidadeAlteracao: 1
              modalidadeAgente: "AGPSS"
              prestadorDoServicoDeSaque: "12345678"
        chave: "7d9f0335-8dcc-4054-9bf9-0dbd61d36906"
    cobResponse7:
      summary: "Exemplo de cobrança imediata com Saque Pix 3"
      value:
        calendario:
          criacao: "2020-09-09T20:15:00.358Z"
          expiracao: 3600
        txid: "33beb661beda44a8928fef47dbeb2dc5"
        revisao: 0
        loc:
          id: 1004
          location: "pix.example.com/qr/7faa6893c4e64893a503baf0d40af213"
          tipoCob: "cob"
        location: "pix.example.com/qr/7faa6893c4e64893a503baf0d40af213"
        status: "ATIVA"
        devedor:
          cnpj: "12345678000195"
          nome: "Empresa de Serviços SA"
        valor:
          original: "10.00"
          modalidadeAlteracao: 0
          retirada:
            troco:
              valor: "0.00"
              modalidadeAlteracao: 1
              modalidadeAgente: "AGTEC"
              prestadorDoServicoDeSaque: "12345678"
        chave: "7d9f0335-8dcc-4054-9bf9-0dbd61d36906"
    recBody1:
      summary: "Exemplo de Recorrência 1"
      value:
        vinculo:
          contrato: "63100862"
          devedor:
            cpf: "45164632481"
            nome: "Fulano de Tal"
          objeto: "Serviço de Streamming de Música."
        calendario:
          dataFinal: "2025-04-01"
          dataInicial: "2024-04-01"
          periodicidade: MENSAL
        valor:
          valorRec: "35.00"
        politicaRetentativa: NAO_PERMITE
        loc: 108
        ativacao:
          dadosJornada:
            txid: "33beb661beda44a8928fef47dbeb2dc5"
    recBody2:
      summary: "Exemplo de Recorrência 2"
      value:
        vinculo:
          contrato: "998782003"
          devedor:
            cpf: "02989131415"
            nome: "Beltrano da Silva"
          objeto: "Serviço de Plano de Saúde."
        calendario:
          dataInicial: "2024-10-10"
          periodicidade: ANUAL
        valor:
          valorMinimoRecebedor: "5000.00"
        politicaRetentativa: PERMITE_3R_7D
    recBody3:
      summary: "Exemplo de Revisão de Recorrência 1"
      value:
        loc: 108
        vinculo:
          devedor:
            nome: "Fulano de Tal"
        calendario:
          dataInicial: "2024-04-01"
        ativacao:
          dadosJornada:
            txid: "33beb661beda44a8928fef47dbeb2dc5"
    recResponse1:
      summary: "Exemplo de Recorrência 1"
      value:
        idRec: RN1234567820240115abcdefghijk
        vinculo:
          contrato: "63100862"
          devedor:
            cpf: "45164632481"
            nome: "Fulano de Tal"
          objeto: "Serviço de Streamming de Música."
        calendario:
          dataFinal: "2025-04-01"
          dataInicial: "2024-04-01"
          periodicidade: MENSAL
        politicaRetentativa: NAO_PERMITE
        recebedor:
          cnpj: "01602606113708"
          nome: "Empresa de Serviços SA"
        valor:
          valorRec: "35.00"
        status: CRIADA
        loc:
          criacao: "2023-12-10T07:10:05.115Z"
          id: 108
          location: pix.example.com/qr/v2/rec/2353c790eefb11eaadc10242ac120002
          idRec: RN1234567820240115abcdefghijk
        ativacao:
          dadosJornada:
            tipoJornada: JORNADA_3
            txid: "33beb661beda44a8928fef47dbeb2dc5"
        atualizacao:
          - data: "2023-12-19T12:28:05.230Z"
            nome: CRIADA
    recResponse2:
      summary: "Exemplo de Recorrência 2"
      value:
        idRec: RR1234567820240115abcdefghijk
        vinculo:
          contrato: "998782003"
          devedor:
            cpf: "02989131415"
            nome: "Beltrano da Silva"
          objeto: "Serviço de Plano de Saúde."
        calendario:
          dataInicial: "2024-10-10"
          periodicidade: ANUAL
        politicaRetentativa: PERMITE_3R_7D
        recebedor:
          cnpj: "09172302153900"
          nome: "Empresa de Serviços de Saúde SA"
        valor:
          valorMinimoRecebedor: "5000.00"
        status: CRIADA
        atualizacao:
          - data: "2024-01-11T10:27:01.280Z"
            nome: CRIADA
    recResponse3:
      summary: "Exemplo de Recorrência Completa com Dados QR Jornada 2"
      value:
        idRec: RN1234567820240115abcdefghijk
        status: APROVADA
        valor:
          valorRec: "300.00"
        vinculo:
          contrato: "98625023"
          devedor:
            cpf: "87734514122"
            nome: "Fulano de Tal"
          objeto: "Serviços de Gestão de Imóveis"
        calendario:
          dataFinal: "2028-09-01"
          dataInicial: "2024-02-01"
          periodicidade: MENSAL
        politicaRetentativa: NAO_PERMITE
        loc:
          criacao: "2023-12-19T12:28:05.230Z"
          id: 5100
          location: pix.example.com/qr/v2/rec/2353c790eefb11eaadc10242ac120002
          idRec: RN1234567820240115abcdefghijk
        pagador:
          codMun: "2673833"
          cpf: "75633122216"
          ispbParticipante: "81102623"
        recebedor:
          cnpj: "92221288310574"
          nome: "Imobiliária Bom Sucesso"
        atualizacao:
          - data: "2024-01-03T08:30:02.050Z"
            nome: CRIADA
          - data: "2024-01-04T09:40:42.210Z"
            nome: APROVADA
        dadosQR:
          jornada: JORNADA_2
          pixCopiaECola: 00020126180014br.gov.bcb.pix5204000053039865802BR5913Fulano de Tal6008BRASILIA62070503***80800014br.gov.bcb.pix2558pix.example.com/qr/v2/rec/2353c790eefb11eaadc10242ac120002630462C9
    recResponse4:
      summary: "Exemplo de Recorrência Completa Jornada 1"
      value:
        idRec: RR7784567820240528123defgh775
        status: CRIADA
        valor:
          valorRec: "250.00"
        vinculo:
          contrato: "9612389"
          devedor:
            cpf: "45832633800"
            nome: "Alfredo Tavares"
          objeto: "Serviços Esportivos"
        calendario:
          dataFinal: "2028-09-01"
          dataInicial: "2024-02-01"
          periodicidade: MENSAL
        politicaRetentativa: PERMITE_3R_7D
        pagador:
          codMun: "1509873"
          cpf: "45832633800"
          ispbParticipante: "52780028"
        recebedor:
          cnpj: "56958712500811"
          nome: "Academia Saúde"
        atualizacao:
          - data: "2024-01-03T08:30:02.050Z"
            nome: CRIADA
    recResponse5:
      summary: "Exemplo de Recorrência Completa Jornada 1 com Cancelamento"
      value:
        idRec: RR1026652320240821lab77511abf
        status: CANCELADA
        valor:
          valorMinimoRecebedor: "800.00"
        vinculo:
          contrato: "298620560"
          devedor:
            cpf: "12600511100"
            nome: "Sebastião Silva"
          objeto: "Faculdade de Engenharia"
        calendario:
          dataFinal: "2027-09-01"
          dataInicial: "2024-10-01"
          periodicidade: MENSAL
        politicaRetentativa: PERMITE_3R_7D
        pagador:
          codMun: "1509873"
          cpf: "12600511100"
          ispbParticipante: "52780028"
        recebedor:
          cnpj: "61593007802371"
          nome: "Universidade Brasileira"
        encerramento:
          cancelamento:
            solicitante: "USUARIO_RECEBEDOR"
            codigo: "SLCR"
            descricao: "Cancelamento solicitado pelo usuário recebedor"
        atualizacao:
          - data: "2024-08-03T08:30:02.050Z"
            nome: CRIADA
          - data: "2024-09-06T09:11:42.205Z"
            nome: APROVADA
          - data: "2024-10-06T15:05:33.305Z"
            nome: CANCELADA
        ativacao:
          tipoJornada: JORNADA_1
    recResponse6:
      summary: "Exemplo de Recorrência Completa com Dados QR Jornada 3"
      value:
        idRec: RN1234567820241203fghijkabcde
        status: CRIADA
        valor:
          valorRec: "150.00"
        vinculo:
          contrato: "5582610"
          devedor:
            cpf: "45164632481"
            nome: "Fulano de Tal"
          objeto: "Serviços de Gestão de Imóveis"
        calendario:
          dataFinal: "2028-09-01"
          dataInicial: "2025-02-01"
          periodicidade: MENSAL
        politicaRetentativa: NAO_PERMITE
        loc:
          criacao: "2024-10-01T10:15:01.115Z"
          id: 2726
          location: pix.example.com/qr/v2/rec/94ed2badcbc04c15b0bb7fa353194890
          idRec: RN1234567820241203fghijkabcde
        recebedor:
          cnpj: "12345678000195"
          nome: "Empresa de Serviços SA"
        atualizacao:
          - data: "2024-12-03T08:30:02.050Z"
            nome: CRIADA
        dadosQR:
          jornada: JORNADA_3
          pixCopiaECola: 00020101021226760014br.gov.bcb.pix2554pix.example.com/qr/v2/8b3da2f39a4140d1a91abd93113bd4415204000053039865802BR5913Fulano de Tal6008BRASILIA62070503***80800014br.gov.bcb.pix2558pix.example.com/qr/v2/rec/94ed2badcbc04c15b0bb7fa35319489063047741
    recResponse7:
      summary: "Exemplo de Recorrência Completa com Dados QR Jornada 4"
      value:
        idRec: RN1234567820241130lkwdefghijk
        status: CRIADA
        valor:
          valorRec: "210.00"
        vinculo:
          contrato: "11750023"
          devedor:
            cpf: "75633122216"
            nome: "Francisco da Silva"
          objeto: "Assinatura de Serviços de Transporte"
        calendario:
          dataFinal: "2026-12-01"
          dataInicial: "2025-03-01"
          periodicidade: MENSAL
        politicaRetentativa: NAO_PERMITE
        loc:
          criacao: "2024-05-19T10:28:05.230Z"
          id: 6153
          location: pix.example.com/qr/v2/rec/3ffa640fa4f14080adccb949fa2dc0d0
          idRec: RN1234567820241130lkwdefghijk
        recebedor:
          cnpj: "56989000019533"
          nome: "Empresa de Logística SA"
        atualizacao:
          - data: "2024-11-30T08:30:02.050Z"
            nome: CRIADA
        dadosQR:
          jornada: JORNADA_4
          pixCopiaECola: 00020101021226810014br.gov.bcb.pix2559pix.example.com/qr/v2/cobv/1e6c54d3ec9449b7a7fc53b6b0f998e75204000053039865802BR5913Fulano de Tal6008BRASILIA62070503***80800014br.gov.bcb.pix2558pix.example.com/qr/v2/rec/3ffa640fa4f14080adccb949fa2dc0d06304A441
    recResponse8:
      summary: "Exemplo de Recorrência Completa Jornada 1 com Convênio"
      value:
        idRec: RR3781267820250201123deabc339
        status: CRIADA
        valor:
          valorRec: "170.00"
        vinculo:
          contrato: "1793651"
          devedor:
            cpf: "01536985566"
            nome: "Fulano de Tal"
          objeto: "Serviços de Telefonia"
        calendario:
          dataFinal: "2028-03-01"
          dataInicial: "2025-03-01"
          periodicidade: MENSAL
        politicaRetentativa: NAO_PERMITE
        pagador:
          codMun: "1509873"
          cpf: "45832633800"
          ispbParticipante: "52780028"
        recebedor:
          convenio: "Master"
          cnpj: "56958712500811"
          nome: "Academia Saúde"
        atualizacao:
          - data: "2025-02-01T08:30:02.050Z"
            nome: CRIADA
    recWebhookNotification1:
      summary: "Exemplo de Notificação de Recorrência 1"
      value:
        recs:
          - idRec: RR1026652320240821lab77511abf
            status: APROVADA
            atualizacao:
            - status: CRIADA
              data: '2024-08-20T10:12:07.567Z'
            - status: APROVADA
              data: '2024-08-22T12:43:53.337Z'
            ativacao:
              tipoJornada: JORNADA_3
              dadosJornada:
                txid: r9eFIFmwcZ55Nm4RsKZAAtIvvCrlcNN6
    recPayload1:
      summary: "Exemplo de payload de recorrência 1"
      value:
        idRec: RN123456782024011577825445612
        vinculo:
          contrato: "5582610"
          devedor:
            cpf: "45164632481"
            nome: "Fulano de Tal"
          objeto: "Serviço de Streamming de Música."
        calendario:
          dataFinal: "2025-04-01"
          dataInicial: "2024-04-01"
          periodicidade: MENSAL
        politicaRetentativa: NAO_PERMITE
        valor:
          valorRec: "35.00"
        recebedor:
          cnpj: "28765007802371"
          nome: "Startup Musical"
          ispbParticipante: "12345678"
        atualizacao:
          - status: CRIADA
            data: '2024-03-20T10:12:07.567Z'
    solicRecBody1:
      summary: "Exemplo de criação de solicitação de confirmação de recorrência 1"
      value:
        idRec: RN123456782024011577825445612
        calendario:
          dataExpiracaoSolicitacao: "2023-12-20T12:17:11.926Z"
        destinatario:
          agencia: "2569"
          conta: "550689"
          cpf: "15231470190"
          ispbParticipante: "91193552"
    solicRecBody2:
      summary: "Exemplo de revisão de solicitação de confirmação de recorrência 1"
      value:
        status: CANCELADA
    solicRecResponse1:
      summary: "Exemplo de solicitação de confirmação de recorrência 1"
      value:
        idSolicRec: SC876456782024021577825445312
        idRec: RN123456782024011577825445612
        calendario:
          dataExpiracaoSolicitacao: "2023-12-20T12:17:11.926Z"
        status: CRIADA
        destinatario:
          agencia: "2569"
          conta: "550689"
          cpf: "15231470190"
          ispbParticipante: "91193552"
        atualizacao:
          - data: "2023-12-20T12:18:18.618Z"
            status: CRIADA
        recPayload:
          idRec: RN123456782024011577825445612
          vinculo:
            contrato: "561238008"
            devedor:
              cpf: "15231470190"
              nome: "Fulano de Tal"
            objeto: "Serviços de Telecomunicações"
          calendario:
            dataFinal: "2023-12-01"
            dataInicial: "2024-04-01"
            periodicidade: MENSAL
          recebedor:
            cnpj: "94370926517368"
            nome: "Empresa de Serviços SA"
          valor:
            valorRec: "1200.09"
          atualizacao:
            - data: "2023-12-15T08:30:07.115Z"
              status: CRIADA
    solicRecResponse2:
      summary: "Exemplo de solicitação de confirmação de recorrência 2"
      value:
        idSolicRec: SC875116782024021577820565312
        idRec: RR692350012024051502650081069
        calendario:
          dataExpiracaoSolicitacao: "2024-12-15T12:17:11.926Z"
        status: REJEITADA
        destinatario:
          agencia: "1179"
          conta: "73851"
          cpf: "07031470825"
          ispbParticipante: "91193552"
        atualizacao:
          - data: "2024-12-15T12:18:18.618Z"
            status: CRIADA
          - data: "2024-12-15T16:18:18.618Z"
            status: ENVIADA
          - data: "2024-12-16T08:50:18.268Z"
            status: REJEITADA
        recPayload:
          idRec: RR692350012024051502650081069
          vinculo:
            contrato: "Assinatura Individual"
            devedor:
              cpf: "07031470825"
              nome: "Sebastião Silva"
            objeto: "Serviços de Entrega de Alimentos"
          valor:
            valorMinimoRecebedor: "300.00"
          calendario:
            dataFinal: "2025-05-01"
            dataInicial: "2024-12-01"
            periodicidade: MENSAL
          recebedor:
            cnpj: "25603926517008"
            nome: "Empresa de Produtos Alimentícios SA"
          atualizacao:
            - data: "2023-12-08T16:24:35.233Z"
              status: CRIADA
    solicRecResponse3:
      summary: "Exemplo de solicitação de confirmação de recorrência 1"
      value:
        idSolicRec: SC876456782024021577825445312
        idRec: RN123456782024011577825445612
        calendario:
          dataExpiracaoSolicitacao: "2024-06-11T07:17:11.008Z"
        status: CANCELADA
        destinatario:
          agencia: "2569"
          conta: "550689"
          cpf: "15231470190"
          ispbParticipante: "91193552"
        atualizacao:
          - data: "2024-05-16T17:01:06.781Z"
            status: CRIADA
          - data: "2024-05-30T10:18:18.618Z"
            status: CANCELADA
        recPayload:
          idRec: RN123456782024011577825445612
          vinculo:
            contrato: "Banda Larga Fibra Ótica"
            devedor:
              cpf: "15231470190"
              nome: "Fulano de Tal"
            objeto: "Serviços de Telecomunicações"
          valor:
            valorRec: "1200.09"
          calendario:
            dataFinal: "2025-05-01"
            dataInicial: "2024-05-01"
            periodicidade: MENSAL
          recebedor:
            cnpj: "94370926517368"
            nome: "Empresa de Serviços SA"
          atualizacao:
            - data: "2023-12-08T16:24:35.233Z"
              status: CRIADA
    loteCobVResponse1:
      summary: "Exemplo de lote de cobranças com vencimento 1"
      value:
        descricao: "Cobranças dos alunos do turno vespertino"
        criacao: "2020-11-01T20:15:00.358Z"
        cobsv:
          - criacao: "2020-11-01T20:15:00.358Z"
            txid: "fb2761260e554ad593c7226beb5cb650"
            status: "CRIADA"
          - txid: "7978c0c97ea847e78e8849634473c1f1"
            status: "NEGADA"
            problema:
              type: https://pix.bcb.gov.br/api/v2/error/CobVOperacaoInvalida
              title: "Cobrança inválida."
              status: 400
              detail: "A requisição que busca alterar ou criar uma cobrança com vencimento não respeita o _schema_ ou está semanticamente errada."
              violacoes:
                - razao: "O objeto cobv.devedor não respeita o _schema_."
                  propriedade: "cobv.devedor"
    loteCobVResponse2:
      summary: "Exemplo de lote de cobranças com vencimento 2"
      value:
        descricao: "Cobranças dos assinantes anuais"
        criacao: "2020-11-17T20:00:00.358Z"
        cobsv:
          - criacao: "2020-11-17T20:00:00.358Z"
            txid: "06601eaa3822423fbe897f613b983e01"
            status: "CRIADA"
          - criacao: "2020-11-17T20:00:00.358Z"
            txid: "4e07059760d54cf493de6e7f1fbfad9a"
            status: "CRIADA"
    payloadLocationBody1:
      summary: "Exemplo de Payload Location 1"
      value:
        tipoCob: "cob"
    payloadLocationBody2:
      summary: "Exemplo de Payload Location 2"
      value:
        tipoCob: "cobv"
    payloadLocationResponse1:
      summary: "Exemplo de Payload Location 1"
      value:
        id: 7716
        txid: "fda9460fe04e4f129b72863ae57ee22f"
        location: "pix.example.com/qr/v2/cobv/2353c790eefb11eaadc10242ac120002"
        tipoCob: "cobv"
        criacao: "2020-03-11T21:19:51.013Z"
    payloadLocationResponse2:
      summary: "Exemplo de Payload Location 2"
      value:
        id: 856
        txid: "31e08604f9ce459bb59672332af8d672"
        location: "pix.example.com/qr/v2/cobv/39c9f435c6324867aa1dec1260e1127c"
        tipoCob: "cobv"
        criacao: "2020-02-10T19:22:52.013Z"
    payloadLocationResponse3:
      summary: "Exemplo de Payload Location 3"
      value:
        id: 2316
        txid: "eb9d87f36fca4c92b7d5ec48e2ee3853"
        location: "pix.example.com/qr/v2/a8534e273ecb47d3ac30613104544466"
        tipoCob: "cob"
        criacao: "2020-05-31T19:39:54.013Z"
    payloadLocationResponse4:
      summary: "Exemplo de Payload Location 3"
      value:
        id: 2316
        location: "pix.example.com/qr/v2/a8534e273ecb47d3ac30613104544466"
        tipoCob: "cob"
        criacao: "2020-05-31T19:39:54.013Z"
    payloadLocationResponse5:
      summary: "Exemplo de Payload Location 1"
      value:
        id: 7716
        location: "pix.example.com/qr/v2/2353c790eefb11eaadc10242ac120002"
        tipoCob: "cob"
        criacao: "2020-03-11T21:19:51.013Z"
    payloadLocationResponse6:
      summary: "Exemplo de Payload Location 2"
      value:
        id: 856
        location: "pix.example.com/qr/v2/cobv/39c9f435c6324867aa1dec1260e1127c"
        tipoCob: "cobv"
        criacao: "2020-02-10T19:22:52.013Z"
    payloadLocationRecResponse1:
      summary: "Exemplo de Payload Location de Recorrência 1"
      value:
        id: 12069
        location: pix.example.com/qr/v2/rec/2353c790eefb11eaadc10242ac120002
        criacao: "2023-12-20T12:38:28.774Z"
        idRec: RR123456782024011510056892226
    payloadLocationRecResponse2:
      summary: "Exemplo de Payload Location de Recorrência 1"
      value:
        id: 12069
        location: pix.example.com/qr/v2/rec/2353c790eefb11eaadc10242ac120002
        criacao: "2023-12-20T12:38:28.774Z"
    pixResponse1:
      summary: "Exemplo de Pix 1"
      value:
        endToEndId: "E12345678202009091221abcdef12345"
        txid: "cd1fe328c875481285a6f233ae41b662"
        valor: "100.00"
        horario: "2020-09-10T13:03:33.902Z"
        infoPagador: "Reforma da casa"
        devolucoes:
          - id: "000AAA111"
            rtrId: "D12345678202009091000abcde123456"
            valor: "11.00"
            horario:
              solicitacao: "2020-09-10T13:03:33.902Z"
            status: EM_PROCESSAMENTO
    pixResponse2:
      summary: "Exemplo de Pix 2"
      value:
        endToEndId: "E12345678202009091221ghijk78901234"
        txid: "5b933948f3224266b1050ac54319e775"
        valor: "200.00"
        horario: "2020-09-10T13:03:33.902Z"
        infoPagador: "Revisão do carro"
    pixResponse3:
      summary: "Exemplo de Pix com Saque"
      value:
        endToEndId: "E88631478202009091221ghijk78901234"
        txid: "82433415910c47e5adb6ac3527cca160"
        valor: "200.00"
        componentesValor:
          original:
            valor: "180.00"
          saque:
            valor: "20.00"
            modalidadeAgente: "AGPSS"
            prestadorDeServicoDeSaque: "12345678"
        horario: "2020-09-10T13:03:33.902Z"
        infoPagador: "Saque Pix"
    webhookBody1:
      summary: "Exemplo de configuração de Webhook 1"
      value:
        webhookUrl: "https://pix.example.com/api/webhook/"
    webhookResponse1:
      summary: "Exemplo de consulta de Webhook 1"
      value:
        webhookUrl: "https://pix.example.com/api/webhook/"
        chave: "40a0932d-1918-4eee-845d-35a2da1690dc"
        criacao: "2020-11-11T10:15:00.358Z"
    pixWebhook1:
      summary: "Exemplo de Webhook Pix 1"
      value:
        endToEndId: "E12345678202009091221kkkkkkkkkkk"
        txid: "c3e0e7a4e7f1469a9f782d3d4999343c"
        valor: "110.00"
        horario: "2020-09-09T20:15:00.358Z"
        infoPagador: "0123456789"
        devolucoes:
          id: "123ABC"
          rtrId: "D12345678202009091221abcdf098765"
          valor: "10.00"
          horario:
            solicitacao: "2020-09-09T20:15:00.358Z"
          status: "EM_PROCESSAMENTO"
    pixWebhook2:
      summary: "Exemplo de Webhook Pix 2"
      value:
        endToEndId: "E87654321202009091221dfghi123456"
        txid: "971122d8f37211eaadc10242ac120002"
        valor: "110.00"
        horario: "2020-09-09T20:15:00.358Z"
        infoPagador: "0123456789"
    recWebhookBody1:
      summary: "Exemplo de criação de webhook de recorrência"
      value:
        webhookUrl: https://usuario.recebedor.com/api/webhookrec/
    recWebhookResponse1:
      summary: "Exemplo de webhook de recorrência"
      value:
        webhookUrl: https://usuario.recebedor.com/api/webhookrec/
        criacao: "2023-12-20T12:51:16.485Z"
    cobRWebhookBody1:
      summary: "Exemplo de criação de webhook de cobrança recorrente"
      value:
        webhookUrl: https://usuario.recebedor.com/api/webhookcobr/
    cobRWebhookResponse1:
      summary: "Exemplo de webhook de cobrança recorrente"
      value:
        webhookUrl: https://usuario.recebedor.com/api/webhookcobr/
        criacao: "2023-12-20T12:51:16.485Z"
    cobRWebhookNotification1:
      summary: "Exemplo de webhook de cobrança recorrente"
      value:
        cobsr:
          - idRec: RR1234567820240115abcdefghijk
            txid: 3136957d93134f2184b369e8f1c0729d
            status: ATIVA
            atualizacao:
            - status: ATIVA
              data: '2024-08-20T12:34:21.300Z'
            tentativas:
            - dataLiquidacao: '2024-20-08'
              tipo: AGND
              status: SOLICITADA
              endToEndId: E12345678202406201221abcdef12345
    devolucaoResponse1:
      summary: "Exemplo de devolução 1"
      value:
        id: "123456"
        rtrId: D12345678202009091000abcde123456
        valor: "7.89"
        horario:
          solicitacao: "2020-09-11T15:25:59.411Z"
        status: EM_PROCESSAMENTO
    devolucaoResponse2:
      summary: "Exemplo de devolução 2"
      value:
        id: "502"
        rtrId: D12345678202011111000fghij789012
        valor: "20.00"
        horario:
          solicitacao: "2020-09-11T15:25:59.411Z"
        status: NAO_REALIZADO
        motivo: "Negado por timeout"
    devolucaoSolicitada1:
      summary: "Exemplo de solicitação de devolução 1"
      value:
        valor: "7.89"
    cobPayload1:
      summary: "Exemplo de payload de cobrança imediata 1"
      value:
        calendario:
          criacao: "2020-09-15T19:39:54.013Z"
          apresentacao: "2020-04-01T18:00:00Z"
          expiracao: 3600
        txid: "fc9a4366ff3d4964b5dbc6c91a8722d3"
        revisao: 3
        status: "ATIVA"
        valor:
          original: "500.00"
          modalidadeAlteracao: 0
        chave: "7407c9c8-f78b-11ea-adc1-0242ac120002"
        solicitacaoPagador: "Informar cartao fidelidade"
        infoAdicionais:
          - nome: "quantidade"
            valor: "2"
    cobPayload2:
      summary: "Exemplo de payload de cobrança com vencimento 1"
      value:
        calendario:
          criacao: "2020-09-15T19:39:54.013Z"
          apresentacao: "2020-04-01T18:00:00Z"
          dataDeVencimento: "2020-12-31"
          validadeAposVencimento: 30
        devedor:
          cnpj: "56989000019533"
          nome: "Empresa de Alimentos SA"
        recebedor:
          logradouro: "Rua 20 Numero 70, Bairro Luz"
          cidade: "Belo Horizonte"
          uf: "MG"
          cep: "55120750"
          cnpj: "58900633120711"
          nome: "Empresa de Abastecimento SA"
        txid: "fc9a4366ff3d4964b5dbc6c91a8722d3"
        revisao: 3
        status: "ATIVA"
        valor:
          original: "123.45"
          multa: "15.00"
          juros: "2.00"
          final: "140.45"
        chave: "7407c9c8-f78b-11ea-adc1-0242ac120002"
        solicitacaoPagador: "Informar cartao fidelidade"
        infoAdicionais:
          - nome: "quantidade"
            valor: "2"
    getCobs1:
      summary: "Exemplo de retorno da consulta de cobranças 1"
      value:
        parametros:
          inicio: "2020-04-01T00:00:00Z"
          fim: "2020-04-02T10:00:00Z"
          paginacao:
            paginaAtual: 0
            itensPorPagina: 100
            quantidadeDePaginas: 1
            quantidadeTotalDeItens: 2
        cobs:
          - allOf:
              - $ref: "#/components/examples/cobResponse1/value"
          - allOf:
              - $ref: "#/components/examples/cobResponse2/value"
          - allOf:
              - $ref: "#/components/examples/cobResponse5/value"
          - allOf:
              - $ref: "#/components/examples/cobResponse6/value"
          - allOf:
              - $ref: "#/components/examples/cobResponse7/value"
    getCobs2:
      summary: "Exemplo de retorno da consulta de cobranças 2"
      value:
        parametros:
          inicio: "2020-04-01T00:00:00Z"
          fim: "2020-04-01T23:59:59Z"
          paginacao:
            paginaAtual: 0
            itensPorPagina: 100
            quantidadeDePaginas: 1
            quantidadeTotalDeItens: 1
        cobs:
          - allOf:
              - $ref: "#/components/examples/cobResponse1/value"
    getCobsV1:
      summary: "Exemplo de retorno da consulta de cobranças com vencimento 1"
      value:
        parametros:
          inicio: "2020-04-01T00:00:00Z"
          fim: "2020-04-01T23:59:59Z"
          paginacao:
            paginaAtual: 0
            itensPorPagina: 100
            quantidadeDePaginas: 1
            quantidadeTotalDeItens: 1
        cobs:
          - allOf:
              - $ref: "#/components/examples/cobResponse4/value"
    getPix1:
      summary: "Exemplo de retorno da consulta de Pix 1"
      value:
        parametros:
          inicio: "2020-04-01T00:00:00Z"
          fim: "2020-04-01T23:59:59Z"
          paginacao:
            paginaAtual: 0
            itensPorPagina: 100
            quantidadeDePaginas: 1
            quantidadeTotalDeItens: 2
        pix:
          - allOf:
              - $ref: "#/components/examples/pixResponse1/value"
          - allOf:
              - $ref: "#/components/examples/pixResponse2/value"
          - allOf:
              - $ref: "#/components/examples/pixResponse3/value"
    getLotesCobsV:
      summary: "Exemplo de retorno da consulta de Pix 1"
      value:
        parametros:
          inicio: "2020-01-01T00:00:00Z"
          fim: "2020-12-01T23:59:59Z"
          paginacao:
            paginaAtual: 0
            itensPorPagina: 100
            quantidadeDePaginas: 1
            quantidadeTotalDeItens: 2
        lotes:
          - allOf:
              - $ref: "#/components/examples/loteCobVResponse1/value"
          - allOf:
              - $ref: "#/components/examples/loteCobVResponse2/value"
    getPayloadLocation1:
      summary: "Exemplo de retorno da consulta de locations 1"
      value:
        parametros:
          inicio: "2020-04-01T00:00:00Z"
          fim: "2020-04-01T23:59:59Z"
          paginacao:
            paginaAtual: 0
            itensPorPagina: 100
            quantidadeDePaginas: 1
            quantidadeTotalDeItens: 3
        loc:
          - allOf:
              - $ref: "#/components/examples/payloadLocationResponse1/value"
          - allOf:
              - $ref: "#/components/examples/payloadLocationResponse2/value"
          - allOf:
              - $ref: "#/components/examples/payloadLocationResponse3/value"
    getPayloadLocationRec1:
      summary: "Exemplo de retorno da consulta de locations de recorrência 1"
      value:
        parametros:
          inicio: "2023-12-01T00:00:00Z"
          fim: "2024-04-01T23:59:59Z"
          paginacao:
            paginaAtual: 0
            itensPorPagina: 100
            quantidadeDePaginas: 1
            quantidadeTotalDeItens: 1
        loc:
          - id: 12069
            location: pix.example.com/qr/v2/rec/2353c790eefb11eaadc10242ac120002
            criacao: "2023-12-20T12:38:28.774Z"
            idRec: RR123456782024011510056892226
    getWebhook1:
      summary: "Exemplo de retorno da consulta de Webhooks 1"
      value:
        parametros:
          inicio: "2020-04-01T00:00:00Z"
          fim: "2020-04-01T23:59:59Z"
          paginacao:
            paginaAtual: 0
            itensPorPagina: 100
            quantidadeDePaginas: 1
            quantidadeTotalDeItens: 1
        webhooks:
          - allOf:
            - $ref: "#/components/examples/recWebhookResponse1"
    getWebhookRec1:
      summary: "Exemplo de retorno da consulta de Webhooks 1"
      value:
        parametros:
          inicio: "2023-10-01T00:00:00Z"
          fim: "2024-04-01T23:59:59Z"
          paginacao:
            paginaAtual: 0
            itensPorPagina: 100
            quantidadeDePaginas: 1
            quantidadeTotalDeItens: 1
        webhooks:
          - webhookUrl: https://usuario.recebedor.com/api/webhookrec/
            criacao: "2023-12-20T12:51:16.485Z"
    getRec1:
      summary: "Exemplo de retorno da consulta de recorrências 1"
      value:
        parametros:
          inicio: "2024-04-01T00:00:00Z"
          fim: "2024-04-01T23:59:59Z"
          paginacao:
            paginaAtual: 0
            itensPorPagina: 100
            quantidadeDePaginas: 1
            quantidadeTotalDeItens: 1
        recs:
          - idRec: RN1234567820240115abcdefghijk
            status: APROVADA
            valor:
              valorRec: "300.00"
            vinculo:
              contrato: "98625023"
              devedor:
                cpf: "87734514122"
                nome: "Fulano de Tal"
              objeto: "Serviços de Gestão de Imóveis"
            calendario:
              dataFinal: "2028-09-01"
              dataInicial: "2024-02-01"
              periodicidade: MENSAL
            politicaRetentativa: NAO_PERMITE
            loc:
              criacao: "2023-12-19T12:28:05.230Z"
              id: 5100
              location: pix.example.com/qr/v2/rec/2353c790eefb11eaadc10242ac120002
              idRec: RN1234567820240115abcdefghijk
            pagador:
              codMun: "2673833"
              cpf: "75633122216"
              ispbParticipante: "81102623"
            recebedor:
              cnpj: "92221288310574"
              nome: "Imobiliária Bom Sucesso"
            atualizacao:
              - data: "2024-01-03T08:30:02.050Z"
                nome: CRIADA
              - data: "2024-01-04T09:40:42.210Z"
                nome: APROVADA
    getCobR1:
      summary: "Exemplo de retorno da consulta de cobranças recorrentes 1"
      value:
        parametros:
          inicio: "2024-04-01T00:00:00Z"
          fim: "2024-12-01T23:59:59Z"
          paginacao:
            paginaAtual: 0
            itensPorPagina: 100
            quantidadeDePaginas: 1
            quantidadeTotalDeItens: 1
        cobsr:
          - idRec: RR123456782024061999000566354
            txid: 7f733863543b4a16b516d839bd4bc34e
            calendario:
              criacao: "2024-05-20"
              dataDeVencimento: "2024-06-20"
            valor: 
              original: "50.33"
            status: ATIVA
            ajusteDiaUtil: false
            politicaRetentativa: PERMITE_3R_7D
            devedor:
              cep: "63259-740"
              cidade: "Campinas"
              email: "beltrano.silva@mail.com"
              logradouro: "Rua Gonçalves Dias 605"
              uf: "SP"
            recebedor:
              conta: "997182"
              tipoConta: CORRENTE
            tentativas:
              - dataLiquidacao: "2024-06-20"
                tipo: "AGND"
                status: AGENDADA
                endToEndId: E12345678202406201221abcdef12345
                atualizacao:
                  - data: "2024-05-21T10:40:16.730Z"
                    status: SOLICITADA
                  - data: "2024-05-21T17:08:00.520Z"
                    status: AGENDADA
            atualizacao:
              - data: "2024-05-20T14:47:29.470Z"
                status: CRIADA
              - data: "2024-05-21T10:18:20.120Z"
                status: ATIVA
    RequisicaoInvalidaCobExample1:
      summary: "Exemplo de erro da requisição 1"
      value:
        type: https://pix.bcb.gov.br/api/v2/error/CobOperacaoInvalida
        title: "Cobrança inválida."
        status: 400
        detail: "A requisição que busca alterar ou criar uma cobrança para pagamento imediato não respeita o _schema_ ou está semanticamente errada."
        violacoes:
          - razao: "O campo cob.valor.original não respeita o _schema_."
            propriedade: "cob.valor.original"
    OperacaoInvalidaCobExample1:
      summary: "Exemplo de erro da requisição 1"
      value:
        type: https://pix.bcb.gov.br/api/v2/error/CobOperacaoInvalida
        title: "Operação inválida."
        status: 400
        detail: "A requisição que busca alterar ou criar uma cobrança para pagamento imediato não respeita o _schema_ ou está semanticamente errada."
    RequisicaoInvalidaCobVExample1:
      summary: "Exemplo de erro da requisição 1"
      value:
        type: https://pix.bcb.gov.br/api/v2/error/CobVOperacaoInvalida
        title: "Cobrança inválida."
        status: 400
        detail: "A requisição que busca alterar ou criar uma cobrança com vencimento não respeita o _schema_ ou está semanticamente errada."
        violacoes:
          - razao: "O objeto cobv.devedor não respeita o _schema_."
            propriedade: "cobv.devedor"
    OperacaoInvalidaCobVExample1:
      summary: "Exemplo de erro da requisição 1"
      value:
        type: https://pix.bcb.gov.br/api/v2/error/CobVOperacaoInvalida
        title: "Operação inválida."
        status: 400
        detail: "Cobrança não encontra-se mais com o status ATIVA, somente cobranças ativas podem ser revisadas."
    OperacaoInvalidaCobRExample1:
      summary: "Exemplo de erro da requisição 1"
      value:
        type: https://pix.bcb.gov.br/api/v2/error/CobROperacaoInvalida
        title: "Operação inválida."
        status: 400
        detail: "A cobrança não respeita o schema."
        violacoes:
          - razao: "O objeto cobr.calendario não respeita o schema."
            propriedade: "cobr.calendario"
    OperacaoInvalidaCobRExample2:
      summary: "Exemplo de erro da requisição 1"
      value:
        type: https://pix.bcb.gov.br/api/v2/error/CobROperacaoInvalida
        title: "Operação inválida."
        status: 400
        detail: "Não é possível cancelar uma cobrança em uma data igual ou maior que a data prevista da primeira tentativa de liquidação."
    OperacaoInvalidaRecExample1:
      summary: "Exemplo de erro da requisição 1"
      value:
        type: https://pix.bcb.gov.br/api/v2/error/RecOperacaoInvalida
        title: "Operação inválida."
        status: 400
        detail: "A recorrência não respeita o schema."
        violacoes:
          - razao: "O campo rec.calendario.dataInicial não respeita o schema."
            propriedade: "rec.calendario.dataInicial"
    OperacaoInvalidaSolicRecExample1:
      summary: "Exemplo de erro da requisição 1"
      value:
        type: https://pix.bcb.gov.br/api/v2/error/SolicRecOperacaoInvalida
        title: "Operação inválida."
        status: 400
        detail: "A solicitação de confirmação de recorrência não respeita o schema."
        violacoes:
          - razao: "O objeto solicrec.destinatario não respeita o schema."
            propriedade: "solicrec.destinatario"
    OperacaoInvalidaSolicRecExample2:
      summary: "Exemplo de erro da requisição 1"
      value:
        type: https://pix.bcb.gov.br/api/v2/error/SolicRecOperacaoInvalida
        title: "Operação inválida."
        status: 400
        detail: "Não é possível cancelar uma solicitação de recorrência com o status diferente de CRIADA ou RECEBIDA."
    RequisicaoInvalidaCobPayloadExample1:
      summary: "Exemplo de erro da requisição 1"
      value:
        type: https://pix.bcb.gov.br/api/v2/error/CobPayloadNaoEncontrado
        title: "Cobrança não encontrada."
        status: 404
        detail: "A cobrança em questão não foi encontrada para a location requisitada."
    RequisicaoInvalidaRecPayloadExample1:
      summary: "Exemplo de erro da requisição 1"
      value:
        type: https://pix.bcb.gov.br/api/v2/error/RecPayloadOperacaoInvalida
        title: "Recorrência não encontrada."
        status: 400
        detail: "A recorrência em questão encontra-se expirada, cancelada ou rejeitada."
    RequisicaoInvalidaCobRTentativaExample1:
      summary: "Exemplo de erro da requisição 1"
      value:
        type: https://pix.bcb.gov.br/api/v2/error/CobROperacaoInvalida
        title: "Cobrança não encontrada."
        status: 400
        detail: "A política configurada na recorrência não permite retentativa de cobrança."
    RequisicaoInvalidaLoteCobVExample1:
      summary: "Exemplo de erro da requisição 1"
      value:
        type: https://pix.bcb.gov.br/api/v2/error/LoteCobVOperacaoInvalida
        title: "Lote de cobranças inválido."
        status: 400
        detail: "A requisição que busca alterar ou criar um lote de cobranças com vencimento não respeita o _schema_ ou está semanticamente errada."
        violacoes:
          - razao: "O objeto loteCobV.cobsV não respeita o _schema_."
            propriedade: "loteCobV.cobsV"
          - razao: "O campo loteCobV.descricao não respeita o _schema_."
            propriedade: "loteCobV.descricao"
    RequisicaoInvalidaDevolucaoExample1:
      summary: "Exemplo de erro da requisição 1"
      value:
        type: https://pix.bcb.gov.br/api/v2/error/PixDevolucaoInvalida
        title: "Devolução inválida."
        status: 400
        detail: "A presente requisição de devolução não respeita o _schema_ ou não faz sentido semanticamente."
    RequisicaoInvalidaWebhookExample1:
      summary: "Exemplo de erro da requisição 1"
      value:
        type: https://pix.bcb.gov.br/api/v2/error/WebhookOperacaoInvalida
        title: "Webhook inválido."
        status: 400
        detail: "A presente requisição busca criar um webhook sem respeitar o _schema_ ou, ainda, com sentido semanticamente inválido."
    RequisicaoInvalidaLocationExample1:
      summary: "Exemplo de erro da requisição 1"
      value:
        type: https://pix.bcb.gov.br/api/v2/error/PayloadLocationOperacaoInvalida
        title: "PayloadLocation inválido."
        status: 400
        detail: "A presente requisição busca criar uma location sem respeitar o _schema_ estabelecido."
    AcessoNegadoExample1:
      summary: "Exemplo de erro da requisição 1"
      value:
        type: https://pix.bcb.gov.br/api/v2/error/AcessoNegado
        title: "Acesso Negado"
        status: 403
        detail: "Requisição de participante autenticado que viola alguma regra de autorização."
    NaoEncontradoExample1:
      summary: "Exemplo de erro da requisição 1"
      value:
        type: https://pix.bcb.gov.br/api/v2/error/NaoEncontrado
        title: "Não Encontrado"
        status: 404
        detail: "Entidade não encontrada."
    ServicoIndisponivelExample1:
      summary: "Exemplo de erro da requisição 1"
      value:
        type: https://pix.bcb.gov.br/api/v2/error/ServicoIndisponivel
        title: "Serviço Indisponível"
        status: 503
        detail: "Serviço não está disponível no momento. Serviço solicitado pode estar em manutenção ou fora da janela de funcionamento."
  requestBodies:
    CobBody:
      description: "Dados para geração da cobrança imediata."
      required: true
      content:
        "application/json":
          schema:
            $ref: "#/components/schemas/CobSolicitada"
          examples:
            exemplo1:
              $ref: "#/components/examples/cobBody2"
            exemplo2:
              $ref: "#/components/examples/cobBody6"
            exemplo3:
              $ref: "#/components/examples/cobBody8"
            exemplo4:
              $ref: "#/components/examples/cobBody9"
    CobRBody:
      description: "Dados para geração da cobrança recorrente."
      required: true
      content:
        "application/json":
          schema:
            $ref: "#/components/schemas/CobRSolicitada"
          examples:
            exemplo1:
              $ref: "#/components/examples/cobRBody1"
    CobVBody:
      description: "Dados para geração da cobrança com vencimento."
      required: true
      content:
        "application/json":
          schema:
            $ref: "#/components/schemas/CobVSolicitada"
          examples:
            exemplo1:
              $ref: "#/components/examples/cobBody1"
    LoteCobVBody:
      description: "Dados para geração de lote de cobranças com vencimento."
      required: true
      content:
        "application/json":
          schema:
            required: ["descricao", "cobsv"]
            properties:
              descricao:
                type: "string"
                title: "Descrição do lote"
              cobsv:
                type: "array"
                items:
                  allOf:
                    - type: "object"
                      required: ["txid"]
                      properties:
                        txid:
                          $ref: "#/components/schemas/TxId"
                    - $ref: "#/components/schemas/CobVSolicitada"
          examples:
            exemplo1:
              $ref: "#/components/examples/loteCobVBody1"
    LoteCobVBodyRevisado:
      description: "Dados para geração de lote de cobranças com vencimento."
      required: true
      content:
        "application/json":
          schema:
            properties:
              descricao:
                type: "string"
                title: "Descrição do lote"
              cobsv:
                type: "array"
                items:
                  allOf:
                    - type: "object"
                      required: ["txid"]
                      properties:
                        txid:
                          $ref: "#/components/schemas/TxId"
                    - $ref: "#/components/schemas/CobVRevisada"
          examples:
            exemplo1:
              $ref: "#/components/examples/loteCobVBodyRevisado1"
    CobBodyRevisada:
      description: "Dados para geração da cobrança."
      required: true
      content:
        "application/json":
          schema:
            $ref: "#/components/schemas/CobRevisada"
          examples:
            exemplo1:
              $ref: "#/components/examples/cobBody3"
            exemplo2:
              $ref: "#/components/examples/cobBody4"
            exemplo3:
              $ref: "#/components/examples/cobBody5"
    CobRBodyRevisada:
      description: "Dados para geração da cobrança."
      required: true
      content:
        "application/json":
          schema:
            $ref: "#/components/schemas/CobRRevisada"
          examples:
            exemplo1:
              $ref: "#/components/examples/cobRBody2"
    CobVBodyRevisada:
      description: "Dados para geração da cobrança."
      required: true
      content:
        "application/json":
          schema:
            $ref: "#/components/schemas/CobVRevisada"
          examples:
            exemplo1:
              $ref: "#/components/examples/cobBody7"
            exemplo2:
              $ref: "#/components/examples/cobBody4"
            exemplo3:
              $ref: "#/components/examples/cobBody5"
    PayloadLocationBody:
      description: "Dados para geração da location."
      required: true
      content:
        "application/json":
          schema:
            $ref: "#/components/schemas/PayloadLocationSolicitada"
          examples:
            exemplo1:
              $ref: "#/components/examples/payloadLocationBody1"
    PayloadLocationRecBody:
      description: "Dados para geração da location."
      required: true
      content:
        "application/json":
          schema:
            $ref: "#/components/schemas/PayloadLocationRecSolicitada"
    DevolucaoBody:
      description: "Dados para pedido de devolução."
      required: true
      content:
        "application/json":
          schema:
            $ref: "#/components/schemas/DevolucaoSolicitada"
          examples:
            exemplo1:
              $ref: "#/components/examples/devolucaoSolicitada1"
    WebhookConfigBody:
      required: true
      content:
        "application/json":
          schema:
            $ref: "#/components/schemas/WebhookSolicitado"
          examples:
            exemplo1:
              $ref: "#/components/examples/webhookBody1"
    WebhookRecConfigBody:
      required: true
      content:
        "application/json":
          schema:
            $ref: "#/components/schemas/WebhookRecSolicitado"
          examples:
            exemplo1:
              $ref: "#/components/examples/recWebhookBody1"
    WebhookCobRConfigBody:
      required: true
      content:
        "application/json":
          schema:
            $ref: "#/components/schemas/WebhookCobRSolicitado"
          examples:
            exemplo1:
              $ref: "#/components/examples/cobRWebhookBody1"
    SolicRecBody:
      description: "Dados para geração da solicitação da recorrência."
      content:
        "application/json":
          schema:
            $ref: "#/components/schemas/SolicRecSolicitada"
          examples:
            exemplo1:
              $ref: "#/components/examples/solicRecBody1"
    SolicRecBodyRevisada:
      description: "Dados para revisão da solicitação da recorrência."
      content:
        "application/json":
          schema:
            $ref: "#/components/schemas/SolicRecRevisada"
          examples:
            exemplo1:
              $ref: "#/components/examples/solicRecBody2"
    RecBody:
      description: "Dados para geração da recorrência."
      content:
        "application/json":
          schema:
            $ref: "#/components/schemas/RecSolicitada"
          examples:
            exemplo1:
              $ref: "#/components/examples/recBody1"
            exemplo2:
              $ref: "#/components/examples/recBody2"
    RecBodyRevisada:
      description: "Dados para revisão da recorrência."
      content:
        "application/json":
          schema:
            $ref: "#/components/schemas/RecRevisada"
          examples:
            retorno1:
              $ref: "#/components/examples/recBody3"
    WebhookPixBody:
      description: "Dados para notificação dos Pix."
      required: true
      content:
        "application/json":
          schema:
            properties:
              pix:
                type: "array"
                items:
                  $ref: "#/components/schemas/Pix"
                example:
                  - allOf:
                      - $ref: "#/components/examples/pixWebhook1/value"
                  - allOf:
                      - $ref: "#/components/examples/pixWebhook2/value"
    WebhookRecBody:
      description: "Dados para notificação."
      required: true
      content:
        "application/json":
          schema:
            properties:
              recs:
                type: "array"
                items:
                  $ref: "#/components/schemas/RecNotification"
          example:
            $ref: "#/components/examples/recWebhookNotification1/value"
    WebhookCobRBody:
      description: "Dados para notificação."
      required: true
      content:
        "application/json":
          schema:
            properties:
              cobsr:
                type: "array"
                items:
                  $ref: "#/components/schemas/CobRNotification"
          example:
            $ref: "#/components/examples/cobRWebhookNotification1/value"
  schemas:
    TxId:
      type: "string"
      title: "Id da Transação"
      description: |
        # Identificador da transação

        O campo `txid` determina o identificador da transação.
        O objetivo desse campo é ser um elemento que possibilite ao PSP do recebedor apresentar ao usuário recebedor a funcionalidade de conciliação de pagamentos.

        Na pacs.008, é referenciado como `TransactionIdentification <txId>` ou `idConciliacaoRecebedor`.

        Em termos de fluxo de funcionamento, o txid é lido pelo aplicativo do PSP do pagador e, 
        depois de confirmado o pagamento, é enviado para o SPI via pacs.008. 
        Uma pacs.008 também é enviada ao PSP do recebedor, contendo, além de todas as informações usuais 
        do pagamento, o txid.
        Ao perceber um recebimento dotado de txid, o PSP do recebedor está apto a se comunicar com o usuário recebedor, 
        informando que um pagamento específico foi liquidado.

        O txid é criado exclusivamente pelo usuário recebedor e está sob sua responsabilidade.
        O txid, no contexto de representação de uma cobrança, é único por CPF/CNPJ do usuário recebedor. Cabe ao 
        PSP recebedor validar essa regra na API Pix.
      pattern: "[a-zA-Z0-9]{26,35}"
    EndToEndId:
      type: "string"
      title: "Id fim a fim da transação"
      description: "EndToEndIdentification que transita na PACS002, PACS004 e PACS008"
      pattern: "[a-zA-Z0-9]{32}"
      minLength: 32
      maxLength: 32
    DevolucaoId:
      type: "string"
      title: "Id da Devolução"
      description: "Id gerado pelo cliente para representar unicamente uma devolução."
      pattern: "[a-zA-Z0-9]{1,35}"
    DevolucaoSolicitadaNatureza:
      type: "string"
      title: "Natureza da Devolução Solicitada"
      description: |
        Indica qual é a natureza da devolução solicitada. Uma solicitação de devolução pelo usuário recebedor pode ser relacionada a um Pix
         comum (com código: `MD06` da pacs.004), ou a um Pix de Saque ou Troco (com códigos possíveis: `MD06` e `SL02` da pacs.004). Na ausência 
         deste campo a natureza deve ser interpretada como sendo de um Pix comum (`ORIGINAL`).

        As naturezas são assim definidas:
        - `ORIGINAL`: quando a devolução é solicitada pelo usuário recebedor e se refere a um Pix comum ou ao valor da compra em um Pix Troco (`MD06`);
        - `RETIRADA`: quando a devolução é solicitada pelo usuário recebedor e se refere a um Pix Saque ou ao valor do troco em um Pix Troco (`SL02`).

        Os valores de devoluções são sempre limitados aos valores máximos a seguir:
        - Pix comum: o valor da devolução é limitado ao valor do próprio Pix (a natureza nesse caso deve ser: ORIGINAL);
        - Pix Saque: o valor da devolução é limitado ao valor da retirada (a natureza nesse caso deve ser: RETIRADA); e
        - Pix Troco: o valor da devolução é limitado ao valor relativo à compra ou ao troco:
          - Quando a devolução for referente à compra, o valor limita-se ao valor da compra (a natureza nesse caso deve ser ORIGINAL); e
          - Quando a devolução for referente ao troco, o valor limita-se ao valor do troco (a natureza nesse caso deve ser RETIRADA).

      enum:
        - "ORIGINAL"
        - "RETIRADA"
    DevolucaoNatureza:
      type: "string"
      title: "Natureza da Devolução"
      description: |
        Indica qual é a natureza da devolução. Uma devolução pode ser relacionada a um Pix comum (com códigos possíveis: `MD06`, `BE08` e `FR01` da pacs.004 e `REFU` da pacs.008), 
        ou a um Pix de Saque ou Troco (com códigos possíveis:  `MD06` e `SL02` da pacs.004). Na ausência deste campo a natureza deve ser interpretada como 
        sendo de um Pix comum (`ORIGINAL`).

        As naturezas são assim definidas:
          - `ORIGINAL`: quando a devolução é solicitada pelo usuário recebedor e se refere a um Pix comum ou ao valor da compra em um Pix Troco (`MD06`);
          - `RETIRADA`: quando a devolução é solicitada pelo usuário recebedor e se refere a um Pix Saque ou ao valor do troco em um Pix Troco (`SL02`);
          - `MED_OPERACIONAL`: quando a devolução ocorre no âmbito do MED por motivo de falha operacional e se refere a um Pix comum (`BE08`);
          - `MED_FRAUDE`: quando a devolução ocorre no âmbito do MED por fundada suspeita de fraude e se refere a um Pix comum (`FR01`).
          - `MED_PIX_AUTOMATICO`: reembolso total ou parcial ao participante do usuário pagador no âmbito do MED (Mecanismo Especial de Devolução) para o Pix Automático pela utilização de recursos próprios para ressarcimento do usuário pagador.(`REFU`);

        Os valores de devoluções são sempre limitados aos valores máximos a seguir:
        - Pix comum: o valor da devolução é limitado ao valor do próprio Pix (a natureza nesse caso pode ser: ORIGINAL, MED_OPERACIONAL ou MED_FRAUDE);
        - Pix Saque: o valor da devolução é limitado ao valor da retirada (a natureza nesse caso deve ser: RETIRADA); e
        - Pix Troco: o valor da devolução é limitado ao valor relativo à compra ou ao troco:
          - Quando a devolução for referente à compra, o valor limita-se ao valor da compra (a natureza nesse caso deve ser ORIGINAL); e
          - Quando a devolução for referente ao troco, o valor limita-se ao valor do troco (a natureza nesse caso deve ser RETIRADA).

      enum:
        - "ORIGINAL"
        - "RETIRADA"
        - "MED_OPERACIONAL"
        - "MED_FRAUDE"
        - "MED_PIX_AUTOMATICO"
    DevolucaoNaturezaPixAutomatico:
      type: "string"
      title: "Natureza da Devolução"
      description: |
        Indica qual é a natureza da devolução. Uma devolução pode ser relacionada a um Pix comum (com códigos possíveis: `MD06` e `FR01` da pacs.004 e `REFU` da pacs.008). Na ausência deste campo a natureza deve ser interpretada como 
        sendo de um Pix comum (`ORIGINAL`).

        As naturezas são assim definidas:
          - `ORIGINAL`: quando a devolução é solicitada pelo usuário recebedor e se refere a um Pix comum (`MD06`);
          - `MED_FRAUDE`: quando a devolução ocorre no âmbito do MED (Mecanismo Especial de Devolução) por fundada suspeita de fraude e se refere a um Pix comum (`FR01`).
          - `MED_PIX_AUTOMATICO`: reembolso total ou parcial ao participante do usuário pagador no âmbito do MED (Mecanismo Especial de Devolução) para o Pix Automático pela utilização de recursos próprios para ressarcimento do usuário pagador.(`REFU`);

        Os valores de devoluções são sempre limitados aos valores máximos a seguir:
        - Pix comum: o valor da devolução é limitado ao valor do próprio Pix (a natureza nesse caso pode ser: ORIGINAL, MED_PIX_AUTOMATICO ou MED_FRAUDE);

      enum:
        - "ORIGINAL"
        - "MED_PIX_AUTOMATICO"
        - "MED_FRAUDE"        
    PayloadLocationId:
      type: "integer"
      format: "int64"
      title: "Id da location"
      description: "Identificador da location a ser informada na criação da cobrança ."
      readOnly: true
    PayloadLocationRecId:
      type: "integer"
      format: "int64"
      title: "Id da location"
      description: "Identificador da location a ser informada na criação de uma recorrência ."
    Revisao:
      type: "integer"
      format: "int32"
      title: "Revisão"
      description: |
        # O campo `revisao`

        Denota a revisão da cobrança.  Sempre começa em zero. Sempre varia em acréscimos de 1.

        O incremento em uma cobrança deve ocorrer sempre que um objeto da cobrança em questão for alterado.
        O campo `loc` é uma exceção a esta regra.

        Se em uma determinada alteração em uma cobrança, o único campo alterado for o campo `loc`,
        então esta operação não incrementa a revisão da cobrança.

        O campo `loc` não ocasiona uma alteração na cobrança em si.
        Não é necessário armazenar histórico das alterações do campo `loc` para uma determinada cobrança.
        Para os outros campos da cobrança, registra-se histórico.
      readOnly: true
    PessoaFisica:
      type: "object"
      required: ["cpf", "nome"]
      title: "Pessoa Física"
      properties:
        cpf:
          type: "string"
          title: "CPF"
          pattern: "/^\\d{11}$/"
          description: "CPF do usuário."
        nome:
          type: "string"
          title: "Nome"
          description: "Nome do usuário."
          maxLength: 200
    PessoaJuridica:
      type: "object"
      required: ["cnpj", "nome"]
      title: "Pessoa Jurídica"
      properties:
        cnpj:
          type: "string"
          title: "CNPJ"
          pattern: "^[0-9A-Z]{14}$"
          description: "CNPJ do usuário."
        nome:
          type: "string"
          title: "Nome"
          description: "Nome do usuário."
          maxLength: 200
    PessoaFisicaRecorrencia:
      type: "object"
      required: ["cpf", "nome"]
      title: "Pessoa Física"
      properties:
        cpf:
          type: "string"
          title: "CPF"
          pattern: "/^\\d{11}$/"
          description: "CPF do usuário."
        nome:
          type: "string"
          title: "Nome"
          description: "Nome do usuário."
          maxLength: 140
    PessoaJuridicaRecorrencia:
      type: "object"
      required: ["cnpj", "nome"]
      title: "Pessoa Jurídica"
      properties:
        cnpj:
          type: "string"
          title: "CNPJ"
          pattern: "^[0-9A-Z]{14}$"
          description: "CNPJ do usuário."
        nome:
          type: "string"
          title: "Nome"
          description: "Nome do usuário."
          maxLength: 140
    CPF:
      type: "object"
      required: ["cpf"]
      title: "Pessoa Física"
      properties:
        cpf:
          type: "string"
          title: "CPF"
          pattern: "/^\\d{11}$/"
          description: "CPF do usuário."
    CNPJ:
      type: "object"
      required: ["cnpj"]
      title: "Pessoa Jurídica"
      properties:
        cnpj:
          type: "string"
          title: "CNPJ"
          pattern: "^[0-9A-Z]{14}$"
          description: "CNPJ do usuário."
    DadosComplementaresPessoa:
      type: "object"
      properties:
        logradouro:
          type: "string"
          title: "Logradouro"
          description: "Logradouro do usuário."
          maxLength: 200
        cidade:
          type: "string"
          title: "Cidade"
          description: "Cidade do usuário."
          maxLength: 200
        uf:
          type: "string"
          title: "UF"
          description: "UF do usuário."
          maxLength: 2
        cep:
          type: "string"
          title: "CEP"
          description: "CEP do usuário."
          maxLength: 8
    DadosDevedor:
      type: "object"
      properties:
        devedor:
          description: "O objeto devedor organiza as informações sobre o devedor da cobrança."
          oneOf:
            - $ref: "#/components/schemas/PessoaFisica"
            - $ref: "#/components/schemas/PessoaJuridica"
          allOf:
            - type: "object"
              properties:
                email:
                  type: "string"
                  title: "Email"
                  description: "Email do usuário."
            - $ref: "#/components/schemas/DadosComplementaresPessoa"
    DadosDevedorRecorrencia:
      type: "object"
      properties:
        devedor:
          description: "O objeto devedor organiza as informações sobre o devedor da recorrência."
          allOf:
            - type: "object"
              properties:
                email:
                  type: "string"
                  title: "Email"
                  description: "Email do usuário."
            - $ref: "#/components/schemas/DadosComplementaresPessoa"
    DadosRecebedor:
      type: "object"
      required: ["logradouro", "cidade", "uf", "cep"]
      properties:
        recebedor:
          description: "O objeto recebedor organiza as informações sobre o credor da cobrança."
          oneOf:
            - $ref: "#/components/schemas/PessoaFisica"
            - type: "object"
              allOf:
                - $ref: "#/components/schemas/PessoaJuridica"
                - type: "object"
                  properties:
                    nomeFantasia:
                      type: "string"
                      title: "Nome fantasia"
                      description: "Nome fantasia."
                      maxLength: 200
          allOf:
            - required: ["logradouro", "cidade", "uf", "cep"]
            - $ref: "#/components/schemas/DadosComplementaresPessoa"
    DadosBancarios:
      type: "object"
      required: ["conta", "ispbParticipante"]
      properties:
        conta:
          type: "string"
          title: "Conta do Usuário Pagador"
          description: "Número da conta do usuário pagador."
          maxLength: 20
        ispbParticipante:
          type: "string"
          title: "ISPB do usuário pagador."
          description: "ISPB do usuário pagador."
          pattern: "^[0-9A-Z]{8}$"
        agencia:
          type: "string"
          title: "Agência do Usuário Pagador"
          description: "Número da agência do usuário pagador."
          maxLength: 4
    DadosBancariosRecebedor:
      type: "object"
      required: ["conta", "tipoConta"]
      properties:
        conta:
          type: "string"
          description: "Número da conta do usuário recebedor."
          maxLength: 20
        tipoConta:
          type: "string"
          title: "Tipo da conta do usuário recebedor"
          description: "Tipo da conta do usuário recebedor."
          enum:
            - "CORRENTE"
            - "POUPANCA"
            - "PAGAMENTO"
        agencia:
          type: "string"
          description: "Número da agência do usuário recebedor."
          maxLength: 4
    DadosPagadorRec:
      type: "object"
      title: "Dados do Pagador"
      required: ["ispbParticipante"]
      properties:
        pagador:
          allOf:
            - type: "object"
              properties:
                ispbParticipante:
                  type: "string"
                  title: "ISPB do PSP pagador."
                  description: "ISPB do PSP pagador."
                  pattern: "^[0-9A-Z]{8}$"
            - type: "object"
              properties:
                codMun:
                  title: "Código do município"
                  description: |
                    Código baseado na Tabela de Códigos de Municípios do __[IBGE](https://www.ibge.gov.br/explica/codigos-dos-municipios.php)__ que apresenta a lista dos municípios brasileiros associados a um código composto de 7 dígitos, sendo os dois primeiros referentes ao código da Unidade da Federação.
                  type: "string"
                  pattern: "/^\\d{7}$/"
          oneOf:
            - $ref: "#/components/schemas/CPF"
            - $ref: "#/components/schemas/CNPJ"
    WebhookSolicitado:
      type: "object"
      required: ["webhookUrl"]
      title: "Webhook"
      properties:
        webhookUrl:
          type: string
          format: uri
          example: https://pix.example.com/api/webhook/
    WebhookCompleto:
      type: "object"
      required: ["webhookUrl", "cnpj", "criacao"]
      title: "Webhook"
      properties:
        webhookUrl:
          type: string
          format: uri
          example: https://pix.example.com/api/webhook/
        cnpj:
          type: "string"
          title: "CNPJ"
          pattern: "^[0-9A-Z]{14}$"
          description: "Filtro pelo CNPJ do devedor. Não pode ser utilizado ao mesmo tempo que o CPF."
        criacao:
          type: "string"
          format: "date-time"
          title: "Data de Criação"
          description: "Data e hora em que o webhook foi cadastrado. Respeita RFC 3339."
          readOnly: true
    WebhookRecBase:
      type: "object"
      required: ["webhookUrl"]
      title: "Webhook Base"
      properties:
        webhookUrl:
          type: "string"
          title: "URL Webhook"
          format: uri
          example: https://pix.example.com/api/webhookrec/
    WebhookRecCompleto:
      type: "object"
      required: ["webhookUrl"]
      title: "Webhook Base"
      properties:
        webhookUrl:
          type: "string"
          title: "URL Webhook"
          format: uri
          example: https://pix.example.com/api/webhookrec/
        criacao:
          type: "string"
          format: "date-time"
          title: "Data de Criação"
          description: "Data e hora em que o webhook foi cadastrado. Respeita RFC 3339."
          readOnly: true
    WebhookCobRCompleto:
      type: "object"
      required: ["webhookUrl"]
      title: "Webhook Base"
      properties:
        webhookUrl:
          type: "string"
          title: "URL Webhook"
          format: uri
          example: https://pix.example.com/api/webhookrec/
        criacao:
          type: "string"
          format: "date-time"
          title: "Data de Criação"
          description: "Data e hora em que o webhook foi cadastrado. Respeita RFC 3339."
          readOnly: true
    InfoBaseAgenciaConta:
      type: "object"
      required: ["agencia", "conta"]
      title: "Informações de Agência e Conta"
      properties:
        agencia:
          type: "string"
          title: "Agência"
          description: "Número da agência do usuário."
          maxLength: 4
        conta:
          type: "string"
          title: "Conta Corrente"
          description: "Número da conta do usuário."
          maxLength: 20
    InfoBaseChave:
      type: "object"
      required: ["tipo", "chave"]
      title: "Informação de Chave DICT"
      properties:
        tipo:
          type: "string"
          title: "Tipo do Objeto"
          enum:
            - "pix"
        chave:
          type: "string"
          title: "Chave DICT do recebedor"
          description: |
            # Formato do campo chave

            * O campo chave determina a chave Pix registrada no DICT que será utilizada para a cobrança. Essa chave será lida pelo aplicativo do PSP do pagador para consulta ao DICT, que retornará a informação que identificará o recebedor da cobrança.
            * Os tipos de chave podem ser: telefone, e-mail, cpf/cnpj ou EVP.
            * O formato das chaves pode ser encontrado na seção "Formatação das chaves do DICT no BR Code" do [Manual de Padrões para iniciação do Pix](https://www.bcb.gov.br/estabilidadefinanceira/pix).
          maxLength: 77
    WebhookRecSolicitado:
      type: "object"
      title: "Webhook Solicitado"
      allOf:
        - $ref: "#/components/schemas/WebhookRecBase"
    WebhookCobRSolicitado:
      type: "object"
      required: ["webhookUrl"]
      title: "Webhook Base"
      properties:
        webhookUrl:
          type: "string"
          title: "URL Webhook"
          format: uri
          example: https://pix.example.com/api/webhookrec/
    CobExpiracao:
      type: "object"
      title: "Expiração"
      properties:
        expiracao:
          type: "integer"
          format: "int32"
          title: "Tempo de vida da cobrança, especificado em segundos."
          description: |
            Tempo de vida da cobrança, especificado em segundos a partir da data de criação (Calendario.criacao)
          example: "3600"
          default: "86400"
    CobDataDeVencimento:
      type: "object"
      title: "Data de Vencimento"
      required: ["dataDeVencimento"]
      properties:
        dataDeVencimento:
          type: "string"
          format: "date"
          title: "Data de vencimento da cobrança"
          description: "Trata-se de uma data, no formato `YYYY-MM-DD`, segundo ISO 8601. É a data de vencimento da cobrança. A cobrança pode ser honrada até esse dia, inclusive, em qualquer horário do dia."
          example: "2020-04-01"
        validadeAposVencimento:
          type: "integer"
          format: "int32"
          title: "Validade após vencimento"
          description: |
            Trata-se da quantidade de dias corridos após calendario.dataDeVencimento,
            em que a cobrança poderá ser paga.

            Sempre que a data de vencimento cair em um fim de semana ou em um feriado para o usuário pagador,
             ela deve ser automaticamente prorrogada para o primeiro dia útil subsequente. Todos os campos 
             que façam referência a esta data (`validadeAposVencimento`; `desconto`; `juros` e `multa`) devem assumir 
             essa prorrogação, quando for o caso.

            Para ilustrar o funcionamento, seguem alguns exemplos, onde:
            - ``(#)`` representa a data de vencimento;
            - ``(*)`` representa a data ajustada em função de dias não úteis;
            - os ``(<número>)`` correspondem aos dias adicionais de validade para o pagamento.

            Exemplo A:

            ```txt
            dataDeVencimento: 2020-10-20, terça-feira.
            validadeAposVencimento: 4

            Tenta-se pagar no dia 2020-10-20, terça: aceito. (#)(*)
            Tenta-se pagar no dia 2020-10-21, quarta: aceito. (1)
            Tenta-se pagar no dia 2020-10-22, quinta: aceito. (2)
            Tenta-se pagar no dia 2020-10-23, sexta: aceito. (3)
            Tenta-se pagar no dia 2020-10-24, sábado: aceito. 
            Tenta-se pagar no dia 2020-10-25, domingo: aceito. (Feriado)
            Tenta-se pagar no dia 2020-10-26, segunda: aceito. (4)
            Tenta-se pagar no dia 2020-10-27, terça: negado.
            ```

            Exemplo B:

            ```txt
            dataDeVencimento: 2020-12-25, sexta-feira, feriado.
            validadeAposVencimento: 0

            Tenta-se pagar no dia 2020-12-25, sexta: aceito. (#)(Feriado)
            Tenta-se pagar no dia 2020-12-26, sábado: aceito.
            Tenta-se pagar no dia 2020-12-27, domingo: aceito.
            Tenta-se pagar no dia 2020-12-28, segunda: aceito. (*)
            Tenta-se pagar no dia 2020-12-29, terça: negado.
            ```

            Exemplo C:

            ```txt
            dataDeVencimento: 2020-12-25, sexta-feira, feriado.
            validadeAposVencimento: 1

            Tenta-se pagar no dia 2020-12-25, sexta: aceito. (#)(Feriado)
            Tenta-se pagar no dia 2020-12-26, sábado: aceito.
            Tenta-se pagar no dia 2020-12-27, domingo: aceito.
            Tenta-se pagar no dia 2020-12-28, segunda: aceito. (*)
            Tenta-se pagar no dia 2020-12-29, terça: aceito. (1)
            Tenta-se pagar no dia 2020-12-30, quarta: negado.
            ```

            Exemplo D:

            ```txt
            dataDeVencimento: 2020-12-25, sexta-feira, feriado.
            validadeAposVencimento: 3

            Tenta-se pagar no dia 2020-12-25, sexta: aceito. (#)(Feriado)
            Tenta-se pagar no dia 2020-12-26, sábado: aceito.
            Tenta-se pagar no dia 2020-12-27, domingo: aceito.
            Tenta-se pagar no dia 2020-12-28, segunda: aceito. (*)
            Tenta-se pagar no dia 2020-12-29, terça: aceito. (1)
            Tenta-se pagar no dia 2020-12-30, quarta: aceito. (2)
            Tenta-se pagar no dia 2020-12-31, quinta: aceito. (3)
            Tenta-se pagar no dia 2021-01-01, sexta: negado.
            ```

            Exemplo E:

            ```txt
            dataDeVencimento: 2020-12-25, sexta-feira, feriado.
            validadeAposVencimento: 4

            Tenta-se pagar no dia 2020-12-25, sexta: aceito. (#)(Feriado)
            Tenta-se pagar no dia 2020-12-26, sábado: aceito.
            Tenta-se pagar no dia 2020-12-27, domingo: aceito.
            Tenta-se pagar no dia 2020-12-28, segunda: aceito. (*)
            Tenta-se pagar no dia 2020-12-29, terça: aceito. (1)
            Tenta-se pagar no dia 2020-12-30, quarta: aceito. (2)
            Tenta-se pagar no dia 2020-12-31, quinta: aceito. (3)
            Tenta-se pagar no dia 2021-01-01, sexta: aceito. (Feriado)
            Tenta-se pagar no dia 2021-01-02, sábado: aceito.
            Tenta-se pagar no dia 2021-01-03, domingo: aceito.
            Tenta-se pagar no dia 2021-01-04, segunda: aceito. (4)
            Tenta-se pagar no dia 2021-01-05, terça: negado. 
            ```

            Exemplo F:

            ```txt
            dataDeVencimento: 2021-08-27, sexta-feira.
            validadeAposVencimento: 5

            Tenta-se pagar no dia 2021-08-27, sexta: aceito. (#)(*)
            Tenta-se pagar no dia 2021-08-28, sábado: aceito. (1)
            Tenta-se pagar no dia 2021-08-29, domingo: aceito. (2)
            Tenta-se pagar no dia 2021-08-30, segunda: aceito. (3)
            Tenta-se pagar no dia 2021-08-31, terça: aceito. (4)
            Tenta-se pagar no dia 2021-09-01, quarta: aceito. (5)
            Tenta-se pagar no dia 2021-09-02, quinta: negado. 
            ```

            Exemplo G:

            ```txt
            dataDeVencimento: 2021-08-28, sábado.
            validadeAposVencimento: 5

            Tenta-se pagar no dia 2021-08-28, sábado: aceito. (#)
            Tenta-se pagar no dia 2021-08-29, domingo: aceito. 
            Tenta-se pagar no dia 2021-08-30, segunda: aceito. (*)
            Tenta-se pagar no dia 2021-08-31, terça: aceito. (1)
            Tenta-se pagar no dia 2021-09-01, quarta: aceito. (2)
            Tenta-se pagar no dia 2021-09-02, quinta: aceito. (3)
            Tenta-se pagar no dia 2021-09-03, sexta: aceito. (4)
            Tenta-se pagar no dia 2021-09-04, sabado: aceito. 
            Tenta-se pagar no dia 2021-09-05, domingo: aceito. 
            Tenta-se pagar no dia 2021-09-06, segunda: aceito. (5) 
            ```
          default: 30
    CobApresentacao:
      type: "object"
      title: "Apresentação"
      required: ["apresentacao"]
      properties:
        apresentacao:
          type: "string"
          format: "date-time"
          title: "Timestamp de apresentação do QR Code"
          description: "Timestamp que indica o momento em que o payload JSON que representa a cobrança foi recuperado. Ou seja, idealmente, é o momento em que o usuário realizou a captura do QR Code para verificar os dados de pagamento. Respeita o formato definido na RFC 3339."
    CobCriacao:
      type: "object"
      title: "Criação"
      required: ["criacao"]
      properties:
        criacao:
          type: "string"
          format: "date-time"
          title: "Data de Criação"
          description: "Timestamp que indica o momento em que foi criada a cobrança. Respeita o formato definido na RFC 3339."
    CobVValor:
      type: "object"
      title: "Valor da cobrança com vencimento"
      description: "Valores monetários."
      properties:
        original:
          type: "string"
          title: "Valor"
          pattern: "\\d{1,10}\\.\\d{2}"
          description: "Valor original da cobrança."
        multa:
          type: "object"
          required: ["modalidade", "valorPerc"]
          title: "Multa aplicada"
          description: "Multa aplicada à cobrança"
          properties:
            modalidade:
              type: "integer"
              format: "int32"
              title: "Modalidade da multa"
              minimum: 1
              maximum: 2
              description: |
                ##### Modalidade da multa, conforme tabela de domínios.
                <table><tr><th>Descrição</th><th>Domínio</th></tr><tr><td>Valor Fixo</td><td>1</td></tr><tr><td>Percentual</td><td>2</td></tr></table>
            valorPerc:
              type: "string"
              title: "Valor da multa absoluta"
              description: 'Multa do documento em valor absoluto ou percentual, conforme "valor.multa.modalidade".'
              pattern: "\\d{1,10}\\.\\d{2}"
        juros:
          type: "object"
          required: ["modalidade", "valorPerc"]
          title: "Juro aplicado"
          description: "Juro aplicado à cobrança"
          properties:
            modalidade:
              type: "integer"
              format: "int32"
              minimum: 1
              maximum: 8
              title: "Modalidade de juros"
              description: |
                ##### Modalidade de juros, conforme tabela de domínios.
                <table><tr><th>Descrição</th><th>Domínio</th></tr><tr><td>Valor (dias corridos)</td><td>1</td></tr><tr><td>Percentual ao dia (dias corridos)</td><td>2</td></tr><tr><td>Percentual ao mês (dias corridos)</td><td>3</td></tr><tr><td>Percentual ao ano (dias corridos)</td><td>4</td></tr><tr><td>Valor (dias úteis)</td><td>5</td></tr><tr><td>Percentual ao dia (dias úteis)</td><td>6</td></tr><tr><td>Percentual ao mês (dias úteis)</td><td>7</td></tr><tr><td>Percentual ao ano (dias úteis)</td><td>8</td></tr></table>
            valorPerc:
              type: "string"
              title: "Valor"
              pattern: "\\d{1,10}\\.\\d{2}"
        abatimento:
          title: "Abatimento aplicado"
          required: ["modalidade", "valorPerc"]
          description: "Abatimento aplicado à cobrança"
          properties:
            modalidade:
              type: "integer"
              format: "int32"
              minimum: 1
              maximum: 2
              title: "Modalidade de abatimentos"
              description: |
                ##### Modalidade de abatimentos, conforme tabela de domínios.
                <table><tr><th>Descrição</th><th>Domínio</th></tr><tr><td>Valor Fixo</td><td>1</td></tr><tr><td>Percentual</td><td>2</td></tr></table>
            valorPerc:
              type: "string"
              title: "Abatimentos"
              description: "Abatimentos ou outras deduções aplicadas ao documento, em valor absoluto ou percentual do valor original do documento."
              pattern: "\\d{1,10}\\.\\d{2}"
        desconto:
          title: "Descontos aplicados"
          required: ["modalidade"]
          description: "Descontos aplicados à cobrança"
          allOf:
            - type: "object"
              properties:
                modalidade:
                  type: "integer"
                  format: "int32"
                  minimum: 1
                  maximum: 6
                  title: "Modalidade de descontos"
                  description: |
                    ##### Modalidade de desconto, conforme tabela de domínios.
                    <table><tr><th>Descrição</th><th>Domínio</th></tr><tr><td>Valor Fixo até a[s] data[s] informada[s]</td><td>1</td></tr><tr><td>Percentual até a data informada</td><td>2</td></tr><tr><td>Valor por antecipação dia corrido</td><td>3</td></tr><tr><td>Valor por antecipação dia útil</td><td>4</td></tr><tr><td>Percentual por antecipação dia corrido</td><td>5</td></tr><tr><td>Percentual por antecipação dia útil</td><td>6</td></tr></table>

          oneOf:
            - type: "object"
              properties:
                descontoDataFixa:
                  title: "Lista de Descontos"
                  description: "Descontos absolutos aplicados à cobrança."
                  type: "array"
                  minItems: 1
                  maxItems: 3
                  uniqueItems: true
                  items:
                    required: ["data", "valorPerc"]
                    allOf:
                      - properties:
                          data:
                            title: "Data limite para o desconto absoluto da cobrança"
                            description: 'Descontos por pagamento antecipado, com data fixa. Matriz com até três elementos, sendo que cada elemento é composto por um par "data e valorPerc", para estabelecer descontos percentuais ou absolutos, até aquela data de pagamento. Trata-se de uma data, no formato `YYYY-MM-DD`, segundo ISO 8601. A data de desconto obrigatoriamente deverá ser menor ou igual à data de vencimento da cobrança.'
                            type: "string"
                            format: "date"
                            example: "2020-04-01"
                      - properties:
                          valorPerc:
                            type: "string"
                            title: "Valor do desconto absoluto"
                            description: "Desconto em valor absoluto ou percentual por dia, útil ou corrido, conforme valor.desconto.modalidade"
                            pattern: "\\d{1,10}\\.\\d{2}"
            - type: "object"
              required: ["valorPerc"]
              properties:
                valorPerc:
                  type: "string"
                  title: "Abatimentos"
                  description: "Abatimentos ou outras deduções aplicadas ao documento, em valor absoluto ou percentual do valor original do documento."
                  pattern: "\\d{1,10}\\.\\d{2}"

    CobValor:
      type: "object"
      title: "Valor da cobrança imediata"
      description: "valores monetários referentes à cobrança."
      properties:
        original:
          type: "string"
          title: "Valor"
          pattern: "\\d{1,10}\\.\\d{2}"
          description: "Valor original da cobrança."
        modalidadeAlteracao:
          type: "integer"
          format: "int32"
          minimum: 0
          maximum: 1
          title: "Modalidade de alteração"
          description: "Trata-se de um campo que determina se o valor final do documento pode ser alterado pelo pagador. Na ausência desse campo, assume-se que não se pode alterar o valor do documento de cobrança, ou seja, assume-se o valor 0. Se o campo estiver presente e com valor 1, então está determinado que o valor final da cobrança pode ter seu valor alterado pelo pagador."
        retirada:
          description: |
            É uma estrutura opcional relacionada ao conceito de recebimento de numerário. Apenas um agrupamento por vez é permitido, quando há `saque` não há `troco` e vice-versa. 

            Quando uma cobrança imediata tem uma estrutura de `retirada` ela deixa de ser considerada Pix comum e passa à categoria de Pix Saque ou Pix Troco. 

            Para que o preenchimento do objeto `retirada` seja considerado válido as seguintes regras se aplicam:
            - os campos `modalidadeAgente` e `prestadorDoServicoDeSaque` são de **preenchimento obrigatório**;
            - quando o `saque` estiver presente a cobrança deve respeitar as seguintes condições:
              - O campo `valor.original` deve ser preenchido com **valor igual a 0.00 (zero)**;
              - O campo `valor.modalidadeAlteracao` deve possuir o valor 0 (zero) explicitamente, ou implicitamente (pelo não preenchimento).
            - quando o `troco` estiver presente a cobrança deve respeitar as seguintes condições:
              - O campo `valor.original` deve ser preenchido com **valor maior que 0.00 (zero)**;
              - O campo `valor.modalidadeAlteracao` deve possuir o valor 0 (zero) explicitamente, ou implicitamente (pelo não preenchimento).

            **IMPORTANTE**: Quando usados o `saque` ou `troco` não será permitida a alteração do `valor.original` recebido. Na presença de `saque` ou `troco` o recebimento do campo `valor.modalidadeAlteracao` com valor 1 (um) é considerado erro.

            #### Exemplos válidos:
            Considerando os campos da estrutura `valor` e o predicado 'presente' cujo resultado é verdade quando a estrutura apontada é encontrada temos: 
            - **uma cobrança com valor fixo** (condições: valor.original > 0 && valor.modalidadeAlteração = 0 && !presente(valor.retirada))
              ```
              ...
              "valor": {
                "original": "10.00"
              },
              ...
              ```
            - **uma cobrança com valor alterável** (condições: valor.original >= 0.00 && modalidadeAlteração = 1 && !presente(valor.retirada))
              ```
              ...
              "valor": {
                "original": "10.00",
                "modalidadeAlteracao": 1
              },
              ```
            - **saque com valor fixo** (condições: valor.original = 0.00 && valor.modalidadeAlteração = 0 && presente(valor.retirada.saque) && valor.retirada.saque.valor > 0 && valor.retirada.saque.modalidadeAlteracao = 0)
              ```
              ...
              "valor": {
                "original": "0.00",
                "retirada": {
                  "saque": {
                    "valor": "5.00",
                    "modalidadeAgente": "AGPSS",
                    "prestadorDoServicoDeSaque": "12345678"
                  }
                }
              },
              ...
              ```
            - **saque com valor alterável** (condições: valor.original = 0.00 && valor.modalidadeAlteração = 0 && presente(valor.retirada.saque) && valor.retirada.saque.valor >= 0 && valor.retirada.saque.modalidadeAlteracao = 1)
              ```
              ...
              "valor": {
                "original": "0.00",
                "retirada": {
                  "saque": {
                    "valor": "5.00",
                    "modalidadeAlteracao": 1,
                    "modalidadeAgente": "AGPSS",
                    "prestadorDoServicoDeSaque": "12345678"
                  }
                }
              },
              ...
              ```
            - **cobrança com troco fixo** (condições: valor.original > 0.00 && valor.modalidadeAlteração = 0 && presente(valor.retirada.troco) && valor.retirada.troco.valor > 0 && valor.retirada.troco.modalidadeAlteracao = 0)
              ```
              ...
              "valor": {
                "original": "10.00",
                "retirada": {
                  "troco": {
                    "valor": "5.00",
                    "modalidadeAgente": "AGTEC",
                    "prestadorDoServicoDeSaque": "12345678"
                  }
                }
              },
              ...
              ```
            - **cobrança com troco alterável** (condições: valor.original > 0.00 && valor.modalidadeAlteração = 0 && presente(valor.retirada.troco) && valor.retirada.troco.valor >= 0 && valor.retirada.troco.modalidadeAlteracao = 1)
              ```
              ...
                "valor": {
                  "original": "10.00",
                  "retirada": {
                    "troco": {
                      "valor": "0.00",
                      "modalidadeAlteracao": 1,
                      "modalidadeAgente": "AGTEC",
                      "prestadorDoServicoDeSaque": "12345678"
                    }
                  }
                },
              ...
              ```
            #### Exemplos inválidos:
            Abaixo alguns exemplos que **não são válidos**. Convém observar que esta listagem não tem pretensão de ser completa, sendo tão somente uma referência para alguns erros possíveis.
            - **saque sem `modalidadeAgente` e `prestadorDoServicoDeSaque`** 
              ```
              ...
              "valor": {
                "original": "0.00",
                "retirada": {
                  "saque": {
                    "valor": "5.00"
                  }
                }
              },
              ...
              ```
            - **cobrança com saque e troco juntos** (não pode ter os dois ao mesmo tempo)
              ```
              ...
              "valor": {
                "original": "100.00",
                "retirada": {
                  "saque": {
                    "valor": "50.00",
                    "modalidadeAgente": "AGPSS",
                    "prestadorDoServicoDeSaque": "12345678"
                  },
                  "troco": {
                    "valor": "30.00",
                    "modalidadeAgente": "AGTEC",
                    "prestadorDoServicoDeSaque": "12345678"
                  }
                }
              },
              ...
              ```
            - **saque com valor.original maior que 0.00 (zero)** (saque requer valor.original = 0.00)
              ```
              ...
              "valor": {
                "original": "10.00",
                "retirada": {
                  "saque": {
                    "valor": "5.00",
                    "modalidadeAgente": "AGPSS",
                    "prestadorDoServicoDeSaque": "12345678"
                  }
                }
              },
              ...
              ```
            - **troco com valor.original igual a 0.00 (zero)** (para haver troco tem que haver valor.original > 0.00)
              ```
              ...
              "valor": {
                "original": "0.00",
                "retirada": {
                  "troco": {
                    "valor": "5.00",
                    "modalidadeAgente": "AGTEC",
                    "prestadorDoServicoDeSaque": "12345678"
                  }
                }
              },
              ...
              ```
            - **saque com valor.original alterável** (não se pode alterar o valor.original na presença do saque)
              ```
              ...
              "valor": {
                "original": "0.00",
                "modalidadeAlteracao": 1,
                "retirada": {
                  "saque": {
                    "valor": "5.00",
                    "modalidadeAlteracao": 1,
                    "modalidadeAgente": "AGPSS",
                    "prestadorDoServicoDeSaque": "12345678"
                  }
                }
              },
              ...
              ```
            - **troco com valor.original alterável** (não se pode alterar o valor.original na presença do troco)
              ```
              ...
              "valor": {
                "original": "0.01",
                "modalidadeAlteracao": 1,
                "retirada": {
                  "troco": {
                    "valor": "5.00",
                    "modalidadeAlteracao": 1,
                    "modalidadeAgente": "AGTOT",
                    "prestadorDoServicoDeSaque": "12345678"
                  }
                }
              },
              ...
              ```
          title: "Informações de retirada"
          type: "object"
          oneOf:
            - type: "object"
              properties:
                saque:
                  type: "object"
                  title: "Saque"
                  required:
                    ["valor", "modalidadeAgente", "prestadorDoServicoDeSaque"]
                  description: "Informações relacionadas ao saque"
                  properties:
                    valor:
                      type: "string"
                      title: "Valor do saque"
                      pattern: "\\d{1,10}\\.\\d{2}"
                      description: "Valor do saque efetuado"
                    modalidadeAlteracao:
                      type: "integer"
                      format: "int32"
                      minimum: 0
                      maximum: 1
                      default: 0
                      title: "Modalidade de alteração do saque"
                      description: "Modalidade de alteração de valor do saque. Quando não preenchido o valor assumido é o 0 (zero)."
                    modalidadeAgente:
                      type: "string"
                      title: "Modalidade do Agente"
                      description: |
                        ##### Modalidade do Agente
                        <table><tr><th>SIGLA</th><th>Descrição</th></tr><tr><td>AGTEC</td><td>Agente Estabelecimento Comercial</td></tr><tr><td>AGTOT</td><td>Agente Outra Espécie de Pessoa Jurídica ou Correspondente no País</td></tr><tr><td>AGPSS</td><td>Agente Facilitador de Serviço de Saque (<b>ATENÇÃO</b>: no mapeamento para o campo 'modalidadeAgente', da pacs.008, esse valor deve ser substituído por <b>AGFSS</b>)</td></tr></table>
                      enum:
                        - "AGTEC"
                        - "AGTOT"
                        - "AGPSS"
                    prestadorDoServicoDeSaque:
                      type: "string"
                      title: "Facilitador de Serviço de Saque"
                      pattern: "^[0-9A-Z]{8}$"
                      description: "ISPB do Facilitador de Serviço de Saque"
            - type: "object"
              properties:
                troco:
                  type: "object"
                  title: "Troco"
                  required:
                    ["valor", "modalidadeAgente", "prestadorDoServicoDeSaque"]
                  description: "Informações relacionadas ao troco"
                  properties:
                    valor:
                      type: "string"
                      title: "Valor do troco"
                      pattern: "\\d{1,10}\\.\\d{2}"
                      description: "Valor do troco efetuado"
                    modalidadeAlteracao:
                      type: "integer"
                      format: "int32"
                      minimum: 0
                      maximum: 1
                      default: 0
                      title: "Modalidade de alteração do troco"
                      description: "Modalidade de alteração de valor do troco. Quando não preenchido o valor assumido é o 0 (zero)."
                    modalidadeAgente:
                      type: "string"
                      title: "Modalidade do Agente"
                      description: |
                        ##### Modalidade do Agente
                        <table><tr><th>SIGLA</th><th>Descrição</th></tr><tr><td>AGTEC</td><td>Agente Estabelecimento Comercial</td></tr><tr><td>AGTOT</td><td>Agente Outra Espécie de Pessoa Jurídica ou Correspondente no País</td></tr></table>
                      enum:
                        - "AGTEC"
                        - "AGTOT"
                    prestadorDoServicoDeSaque:
                      type: "string"
                      title: "Facilitador de Serviço de Saque"
                      pattern: "^[0-9A-Z]{8}$"
                      description: "ISPB do Facilitador de Serviço de Saque"
    CobPayloadValor:
      type: "object"
      title: "Valor da cobrança imediata retornada pelo payload"
      required: ["original"]
      description: "Todos os campos que indicam valores monetários obedecem ao pattern \\d{1,10}\\.\\d{2}. O separador decimal é o caractere ponto. Não é aplicável utilizar separador de milhar. Exemplos de valores aderentes ao padrão: “1.00”, “123.99”, “123456789.23"
      properties:
        original:
          type: "string"
          title: "Valor"
          pattern: "\\d{1,10}\\.\\d{2}"
          description: "Valor original da cobrança."
        modalidadeAlteracao:
          type: "integer"
          format: "int32"
          minimum: 0
          maximum: 1
          title: "Modalidade de alteração"
          description: "Trata-se de um campo que determina se o valor final do documento pode ser alterado pelo pagador. Na ausência desse campo, assume-se que não se pode alterar o valor do documento de cobrança, ou seja, assume-se o valor 0. Se o campo estiver presente e com valor 1, então está determinado que o valor final da cobrança pode ter seu valor alterado pelo pagador."
        retirada:
          description: |
            É uma estrutura opcional relacionada ao conceito de recebimento de numerário. Apenas um agrupamento por vez é permitido, quando há `saque` não há `troco` e vice-versa. 

            Quando uma cobrança imediata tem uma estrutura de `retirada` ela deixa de ser considerada Pix comum e passa à categoria de Pix Saque ou Pix Troco. 

            Para que o preenchimento do objeto `retirada` seja considerado válido as seguintes regras se aplicam:
            - os campos `modalidadeAgente` e `prestadorDoServicoDeSaque` são de **preenchimento obrigatório**;
            - quando o `saque` estiver presente a cobrança deve respeitar as seguintes condições:
              - O campo `valor.original` deve ser preenchido com **valor igual a 0.00 (zero)**;
              - O campo `valor.modalidadeAlteracao` deve possuir o valor 0 (zero) explicitamente, ou implicitamente (pelo não preenchimento).
            - quando o `troco` estiver presente a cobrança deve respeitar as seguintes condições:
              - O campo `valor.original` deve ser preenchido com **valor maior que 0.00 (zero)**;
              - O campo `valor.modalidadeAlteracao` deve possuir o valor 0 (zero) explicitamente, ou implicitamente (pelo não preenchimento).

            **IMPORTANTE**: Quando usados o `saque` ou `troco` não será permitida a alteração do `valor.original` recebido. Na presença de `saque` ou `troco` o recebimento do campo `valor.modalidadeAlteracao` com valor 1 (um) é considerado erro.

            #### Exemplos válidos:
            Considerando os campos da estrutura `valor` e o predicado 'presente' cujo resultado é verdade quando a estrutura apontada é encontrada temos: 
            - **uma cobrança com valor fixo** (condições: valor.original > 0 && valor.modalidadeAlteração = 0 && !presente(valor.retirada))
              ```
              ...
              "valor": {
                "original": "10.00"
              },
              ...
              ```
            - **uma cobrança com valor alterável** (condições: valor.original >= 0.00 && modalidadeAlteração = 1 && !presente(valor.retirada))
              ```
              ...
              "valor": {
                "original": "10.00",
                "modalidadeAlteracao": 1
              },
              ```
            - **saque com valor fixo** (condições: valor.original = 0.00 && valor.modalidadeAlteração = 0 && presente(valor.retirada.saque) && valor.retirada.saque.valor > 0 && valor.retirada.saque.modalidadeAlteracao = 0)
              ```
              ...
              "valor": {
                "original": "0.00",
                "retirada": {
                  "saque": {
                    "valor": "5.00",
                    "modalidadeAgente": "AGPSS",
                    "prestadorDoServicoDeSaque": "12345678"
                  }
                }
              },
              ...
              ```
            - **saque com valor alterável** (condições: valor.original = 0.00 && valor.modalidadeAlteração = 0 && presente(valor.retirada.saque) && valor.retirada.saque.valor >= 0 && valor.retirada.saque.modalidadeAlteracao = 1)
              ```
              ...
              "valor": {
                "original": "0.00",
                "retirada": {
                  "saque": {
                    "valor": "5.00",
                    "modalidadeAlteracao": 1,
                    "modalidadeAgente": "AGPSS",
                    "prestadorDoServicoDeSaque": "12345678"
                  }
                }
              },
              ...
              ```
            - **cobrança com troco fixo** (condições: valor.original > 0.00 && valor.modalidadeAlteração = 0 && presente(valor.retirada.troco) && valor.retirada.troco.valor > 0 && valor.retirada.troco.modalidadeAlteracao = 0)
              ```
              ...
              "valor": {
                "original": "10.00",
                "retirada": {
                  "troco": {
                    "valor": "5.00",
                    "modalidadeAgente": "AGTEC",
                    "prestadorDoServicoDeSaque": "12345678"
                  }
                }
              },
              ...
              ```
            - **cobrança com troco alterável** (condições: valor.original > 0.00 && valor.modalidadeAlteração = 0 && presente(valor.retirada.troco) && valor.retirada.troco.valor >= 0 && valor.retirada.troco.modalidadeAlteracao = 1)
              ```
              ...
                "valor": {
                  "original": "10.00",
                  "retirada": {
                    "troco": {
                      "valor": "0.00",
                      "modalidadeAlteracao": 1,
                      "modalidadeAgente": "AGTEC",
                      "prestadorDoServicoDeSaque": "12345678"
                    }
                  }
                },
              ...
              ```
            #### Exemplos inválidos:
            Abaixo alguns exemplos que **não são válidos**. Convém observar que esta listagem não tem pretensão de ser completa, sendo tão somente uma referência para alguns erros possíveis.
            - **saque sem `modalidadeAgente` e `prestadorDoServicoDeSaque`** 
              ```
              ...
              "valor": {
                "original": "0.00",
                "retirada": {
                  "saque": {
                    "valor": "5.00"
                  }
                }
              },
              ...
              ```
            - **cobrança com saque e troco juntos** (não pode ter os dois ao mesmo tempo)
              ```
              ...
              "valor": {
                "original": "100.00",
                "retirada": {
                  "saque": {
                    "valor": "50.00",
                    "modalidadeAgente": "AGPSS",
                    "prestadorDoServicoDeSaque": "12345678"
                  },
                  "troco": {
                    "valor": "30.00",
                    "modalidadeAgente": "AGTEC",
                    "prestadorDoServicoDeSaque": "12345678"
                  }
                }
              },
              ...
              ```
            - **saque com valor.original maior que 0.00 (zero)** (saque requer valor.original = 0.00)
              ```
              ...
              "valor": {
                "original": "10.00",
                "retirada": {
                  "saque": {
                    "valor": "5.00",
                    "modalidadeAgente": "AGPSS",
                    "prestadorDoServicoDeSaque": "12345678"
                  }
                }
              },
              ...
              ```
            - **troco com valor.original igual a 0.00 (zero)** (para haver troco tem que haver valor.original > 0.00)
              ```
              ...
              "valor": {
                "original": "0.00",
                "retirada": {
                  "troco": {
                    "valor": "5.00",
                    "modalidadeAgente": "AGTEC",
                    "prestadorDoServicoDeSaque": "12345678"
                  }
                }
              },
              ...
              ```
            - **saque com valor.original alterável** (não se pode alterar o valor.original na presença do saque)
              ```
              ...
              "valor": {
                "original": "0.00",
                "modalidadeAlteracao": 1,
                "retirada": {
                  "saque": {
                    "valor": "5.00",
                    "modalidadeAlteracao": 1,
                    "modalidadeAgente": "AGPSS",
                    "prestadorDoServicoDeSaque": "12345678"
                  }
                }
              },
              ...
              ```
            - **troco com valor.original alterável** (não se pode alterar o valor.original na presença do troco)
              ```
              ...
              "valor": {
                "original": "0.01",
                "modalidadeAlteracao": 1,
                "retirada": {
                  "troco": {
                    "valor": "5.00",
                    "modalidadeAlteracao": 1,
                    "modalidadeAgente": "AGTOT",
                    "prestadorDoServicoDeSaque": "12345678"
                  }
                }
              },
              ...
              ```
          title: "Informações de retirada"
          type: "object"
          oneOf:
            - type: "object"
              properties:
                saque:
                  type: "object"
                  title: "Saque"
                  required:
                    ["valor", "modalidadeAgente", "prestadorDoServicoDeSaque"]
                  description: "Informações relacionadas ao saque"
                  properties:
                    valor:
                      type: "string"
                      title: "Valor do saque"
                      pattern: "\\d{1,10}\\.\\d{2}"
                      description: "Valor do saque efetuado"
                    modalidadeAlteracao:
                      type: "integer"
                      format: "int32"
                      minimum: 0
                      maximum: 1
                      default: 0
                      title: "Modalidade de alteração do saque"
                      description: "Modalidade de alteração de valor do saque. Quando não preenchido o valor assumido é o 0 (zero)."
                    modalidadeAgente:
                      type: "string"
                      title: "Modalidade do Agente"
                      description: |
                        ##### Modalidade do Agente
                        <table><tr><th>SIGLA</th><th>Descrição</th></tr><tr><td>AGTEC</td><td>Agente Estabelecimento Comercial</td></tr><tr><td>AGTOT</td><td>Agente Outra Espécie de Pessoa Jurídica ou Correspondente no País</td></tr><tr><td>AGPSS</td><td>Agente Facilitador de Serviço de Saque (<b>ATENÇÃO</b>: no mapeamento para o campo 'modalidadeAgente', da pacs.008, esse valor deve ser substituído por <b>AGFSS</b>)</td></tr></table>
                      enum:
                        - "AGTEC"
                        - "AGTOT"
                        - "AGPSS"
                    prestadorDoServicoDeSaque:
                      type: "string"
                      title: "Facilitador de Serviço de Saque"
                      pattern: "^[0-9A-Z]{8}$"
                      description: "ISPB do Facilitador de Serviço de Saque"
            - type: "object"
              properties:
                troco:
                  type: "object"
                  title: "Troco"
                  required:
                    ["valor", "modalidadeAgente", "prestadorDoServicoDeSaque"]
                  description: "Informações relacionadas ao troco"
                  properties:
                    valor:
                      type: "string"
                      title: "Valor do troco"
                      pattern: "\\d{1,10}\\.\\d{2}"
                      description: "Valor do troco efetuado"
                    modalidadeAlteracao:
                      type: "integer"
                      format: "int32"
                      minimum: 0
                      maximum: 1
                      default: 0
                      title: "Modalidade de alteração do troco"
                      description: "Modalidade de alteração de valor do troco. Quando não preenchido o valor assumido é o 0 (zero)."
                    modalidadeAgente:
                      type: "string"
                      title: "Modalidade do Agente"
                      description: |
                        ##### Modalidade do Agente
                        <table><tr><th>SIGLA</th><th>Descrição</th></tr><tr><td>AGTEC</td><td>Agente Estabelecimento Comercial</td></tr><tr><td>AGTOT</td><td>Agente Outra Espécie de Pessoa Jurídica ou Correspondente no País</td></tr></table>
                      enum:
                        - "AGTEC"
                        - "AGTOT"
                    prestadorDoServicoDeSaque:
                      type: "string"
                      title: "Facilitador de Serviço de Saque"
                      pattern: "^[0-9A-Z]{8}$"
                      description: "ISPB do Facilitador de Serviço de Saque"
    CobVPayloadValor:
      type: "object"
      title: "Valor da cobrança com vencimento calculada retornada pelo payload"
      required: ["final"]
      description: "Todos os campos que indicam valores monetários obedecem ao pattern \\d{1,10}\\.\\d{2}. O separador decimal é o caractere ponto. Não é aplicável utilizar separador de milhar. Exemplos de valores aderentes ao padrão: “1.00”, “123.99”, “123456789.23"
      properties:
        original:
          type: "string"
          title: "Valor"
          pattern: "\\d{1,10}\\.\\d{2}"
          description: "Valor original da cobrança."
        multa:
          title: "Multa aplicada"
          description: "Multa aplicada à cobrança"
          type: "string"
          pattern: "\\d{1,10}\\.\\d{2}"
        juros:
          title: "Juro aplicado"
          description: "Juro aplicado à cobrança"
          type: "string"
          pattern: "\\d{1,10}\\.\\d{2}"
        abatimento:
          title: "Abatimento aplicado"
          description: "Abatimento aplicado à cobrança"
          type: "string"
          pattern: "\\d{1,10}\\.\\d{2}"
        desconto:
          title: "Desconto aplicado"
          description: "Descontos aplicados à cobrança"
          type: "string"
          pattern: "\\d{1,10}\\.\\d{2}"
        final:
          type: "string"
          title: "Valor final"
          pattern: "\\d{1,10}\\.\\d{2}"
          description: "Valor final da cobrança."
    RecCompleta:
      type: "object"
      title: "Recorrência Completa"
      required: ["status","recebedor"]
      description: "Atributos de Configuração de Recorrência"
      allOf:
        - type: "object"
          properties:
            idRec:
              $ref: "#/components/schemas/RecId" 
        - $ref: "#/components/schemas/RecBase"
        - type: "object"
          properties:
            recebedor:
              oneOf:
                - $ref: "#/components/schemas/PessoaJuridicaRecorrencia"
              allOf:
                - type: "object"
                  properties:
                    convenio:
                      type: "string"
                      title: "Convênio"
                      description: "Convênio entre usuário e participante recebedor."
                      maxLength: 60
        - $ref: "#/components/schemas/DadosPagadorRec"
        - $ref: "#/components/schemas/RecStatus"
        - $ref: "#/components/schemas/RecConfiguracao"
        - type: "object"
          properties:
            loc:
              allOf:
                - $ref: "#/components/schemas/PayloadLocationRecCompleta"
        - $ref: "#/components/schemas/RecAtualizacao"
        - $ref: "#/components/schemas/RecEncerramento"
        - type: "object"
          properties:
            solicitacao:
              type: "array"
              title: "Solicitações vinculadas"
              description: "Solicitações vinculadas"
              items:
                allOf:
                  - $ref: "#/components/schemas/SolicRecCompleta"
        - $ref: "#/components/schemas/RecAtivacao"
        - type: "object"
          properties:
            dadosQR:
              type: "object"
              title: "Informações do QR Composto."
              description: |
                ##### Informações relacionadas aos parâmetros `idRec` e `txid` informados na requisição.
                Ao consultar uma recorrência via endpoint GET `/rec/{idRec}?txid={txid}`, o usuário recebedor pode optar pela consulta sem 
                o `txid` ou por compor a requisição com um `txid` de uma cobrança imediata, ou cobrança com vencimento, de forma a obter o QR Composto
                para a jornada de interesse.
                
                Os `dadosQR` retornados variam de acordo com a jornada desejada, indicada pela presença dos parâmetros de interesse, conforme a tabela abaixo:
                <table  >
                <tr><td width="15%">idRec</td><td  width="15%">txid de Cob</td><td  width="15%">txid de CobV</td><td width="100%">Conteúdo esperado</td></tr>
                <tr><td>X</td><td>-</td><td>-</td><td><pre>{ jornada: "JORNADA_2", pixCopiaECola: "QR Composto da recorrência" }</pre></td></tr>
                <tr><td>X</td><td>X</td><td>-</td><td><pre>{ jornada: "JORNADA_3", pixCopiaECola: "QR Composto da cobrança imediata + recorrência" }</pre></td></tr>
                <tr><td>X</td><td>-</td><td>X</td><td><pre>{ jornada: "JORNADA_4", pixCopiaECola: "QR Composto da cobrança com vencimento + recorrência" }</pre></td></tr>
                </table>

                Os campos `dadosQR.jornada` e `dadosQR.pixCopiaECola` só serão retornados se as respectivas locations necessárias para a construção do QR Composto
                estiverem preenchidas na recorrência e na eventual cobrança, a depender da jornada desejada.

              properties:
                jornada:
                  type: "string"
                  title: "Jornada de ativação"
                  enum:
                    - "JORNADA_2"
                    - "JORNADA_3"
                    - "JORNADA_4"
                pixCopiaECola:
                  type: "string"
                  title: "Pix Copia e Cola correspondente à Recorrência."
                  description: "Este campo retorna o valor do Pix Copia e Cola correspondente à recorrência. Trata-se da sequência de caracteres que representa o BR Code."
                  maxLength: 512
    RecCompletaPesquisada:
      type: "object"
      title: "Recorrência Completa Pesquisada"
      required: ["status","recebedor"]
      description: "Atributos de Configuração de Recorrência"
      allOf:
        - type: "object"
          properties:
            idRec:
              $ref: "#/components/schemas/RecId"
        - $ref: "#/components/schemas/RecBase"
        - type: "object"
          properties:
            recebedor:
              oneOf:
                - $ref: "#/components/schemas/PessoaJuridicaRecorrencia"
              allOf:
                - type: "object"
                  properties:
                    convenio:
                      type: "string"
                      title: "Convênio"
                      description: "Convênio entre usuário e participante recebedor."
                      maxLength: 60
        - $ref: "#/components/schemas/DadosPagadorRec"
        - $ref: "#/components/schemas/RecStatus"
        - $ref: "#/components/schemas/RecConfiguracao"
        - type: "object"
          properties:
            loc:
              allOf:
                - $ref: "#/components/schemas/PayloadLocationRecCompleta"
        - $ref: "#/components/schemas/RecAtualizacao"
        - $ref: "#/components/schemas/RecEncerramento"
        - type: "object"
          properties:
            solicitacao:
              type: "array"
              title: "Solicitações vinculadas"
              description: "Solicitações vinculadas"
              items:
                allOf:
                  - $ref: "#/components/schemas/SolicRecCompleta"
        - $ref: "#/components/schemas/RecAtivacao"
    RecGerada:
      type: "object"
      title: "Recorrência Gerada"
      required: ["recebedor"]
      description: "Atributos de Configuração de Recorrência"
      allOf:
        - type: "object"
          properties:
            idRec:
              $ref: "#/components/schemas/RecId"
        - $ref: "#/components/schemas/RecBase"
        - type: "object"
          properties:
            recebedor:
              oneOf:
                - $ref: "#/components/schemas/PessoaJuridicaRecorrencia"
              allOf:
                - type: "object"
                  properties:
                    convenio:
                      type: "string"
                      title: "Convênio"
                      description: "Convênio entre usuário e participante recebedor."
                      maxLength: 60
        - $ref: "#/components/schemas/RecStatus"
        - type: "object"
          properties:
            loc:
              allOf:
                - $ref: "#/components/schemas/PayloadLocationRecCompleta"
        - $ref: "#/components/schemas/RecAtualizacao"
        - $ref: "#/components/schemas/RecEncerramento"
        - $ref: "#/components/schemas/RecAtivacao"
    RecSolicitada:
      type: "object"
      title: "Recorrência Solicitada"
      description: "Atributos de Configuração de Recorrência"
      allOf:
        - $ref: "#/components/schemas/RecBase"
        - type: "object"
          properties:
            recebedor:
              type: "object"
              properties:
                convenio:
                  type: "string"
                  title: "Convênio"
                  description: "Convênio entre usuário e participante recebedor."
                  maxLength: 60
        - $ref: "#/components/schemas/RecConfiguracao"
        - type: "object"
          properties:
            loc:
              allOf:
                - $ref: "#/components/schemas/PayloadLocationRecId"
        - $ref: "#/components/schemas/RecAtivacaoSolicitada"
    RecPayload:
      type: "object"
      title: "Payload da Recorrência"
      required: ["idRec","atualizacao","recebedor"]
      description: "Atributos de Configuração de Recorrência"
      allOf:
        - type: "object"
          properties:
            idRec:
              $ref: "#/components/schemas/RecId"
        - $ref: "#/components/schemas/RecBase"
        - type: "object"
          properties:
            recebedor:
              oneOf:
                - $ref: "#/components/schemas/PessoaJuridicaRecorrencia"
              allOf:
                - type: "object"
                  required: ["ispbParticipante"]
                  properties:
                    ispbParticipante:
                      type: "string"
                      title: "ISPB do usuário recebedor."
                      description: "ISPB do usuário recebedor."
                      pattern: "^[0-9A-Z]{8}$"
        - $ref: "#/components/schemas/RecConfiguracao"
        - $ref: "#/components/schemas/RecAtualizacao"
    RecRevisada:
      type: "object"
      title: "Recorrência Revisada"
      description: "Atributos de Revisão da Configuração de Recorrência"
      allOf:
        - type: "object"
          title: "Status da Recorrência"
          properties:
            status:
              type: "string"
              title: "Status do registro da recorrência"
              enum:
                - "CANCELADA"
        - type: "object"
          properties:
            vinculo:
              type: "object"
              properties:
                devedor:
                  description: "O objeto devedor organiza as informações sobre o devedor da recorrência."
                  oneOf:
                    -  type: "object"
                       required: ["nome"]
                       title: "Pessoa Física"
                       properties:
                        nome:
                          type: "string"
                          title: "Nome"
                          description: "Nome do usuário."
                          maxLength: 140
                    -  type: "object"
                       required: ["nome"]
                       title: "Pessoa Jurídica"
                       properties:
                        nome:
                          type: "string"
                          title: "Nome"
                          description: "Nome do usuário."
                          maxLength: 140
        - type: "object"
          properties:
            loc:
              allOf:
                - $ref: "#/components/schemas/PayloadLocationRecId"
        - type: "object"
          properties:
            calendario:
              type: "object"
              title: "Informações sobre calendário da recorrência"
              description: "Informações sobre calendário da recorrência"
              properties:
                dataInicial:
                  type: "string"
                  format: "date"
                  title: "Data estimada de primeiro pagamento."
                  description: "Trata-se de uma data, no formato `YYYY-MM-DD`, segundo ISO 8601. Data estimada de primeiro pagamento."
                  example: "2023-04-01"
        - $ref: "#/components/schemas/RecAtivacaoSolicitada"
    RecNotification:
      type: "object"
      title: "Recorrência Notificada"
      required: ["idRec","status",atualizacao"]
      description: "Atributos de Notificação de Recorrência"
      allOf:
        - type: "object"
          properties:
            idRec:
              $ref: "#/components/schemas/RecId"
        - $ref: "#/components/schemas/RecStatus"
        - $ref: "#/components/schemas/RecAtualizacao"
        - $ref: "#/components/schemas/RecEncerramento"
        - $ref: "#/components/schemas/RecAtivacao"
    RecAtivacao:
      type: "object"
      title: "Dados relacionados à confirmação da ativação da recorrência."
      properties:
        ativacao:
          type: "object"
          title: "Dados relacionados à confirmação da ativação da recorrência."
          required: ["tipoJornada"]
          description: "Dados relacionados à confirmação da ativação da recorrência."
          properties:
            tipoJornada:
              type: "string"
              title: "Jornada de ativação"
              description: |
                Dado relacionado ao caminho percorrido pelo processo de adesão a recorrência pelo usuário pagador, os valores possíveis são:
                  - JORNADA_1: Usuário pagador aceitou a recorrência através de notificação externa ao ecossistema
                  - JORNADA_2: Usuário pagador aceitou a recorrência através de leitura de QR Code de recorrência
                  - JORNADA_3: Usuário pagador iniciou a recorrência através de leitura de QR Code composto e pagamento de cobrança imediata. O uso desta jornada torna obrigatório o preenchimento da informação dadosJornada.txid
                  - JORNADA_4: Usuário pagador escolheu aderir à recorrência através de leitura de QR Code composto relacionado à cobrança com vencimento ou estática relacionada a um contrato vigente
                  - AGUARDANDO_DEFINICAO: Valor inicial posterior a criação e anterior a ativação da recorrência.
              enum:
                - "JORNADA_1"
                - "JORNADA_2"
                - "JORNADA_3"
                - "JORNADA_4"
                - "AGUARDANDO_DEFINICAO"
            dadosJornada:
              type: "object"
              title: "Dados de confirmação da jornada e início da recorrência"
              oneOf:
                - type: "object"
                  title: "Cobrança imediata vinculada à Jornada 3"
                  required: ["txid"]
                  description: "Dado de preenchimento obrigatório quando utilizada a Jornada 3. Este campo deve ser removido pelo PSP Recebedor quando a ativação for realizada pelas jornadas 1, 2 ou 4."
                  properties:
                    txid:
                      $ref: "#/components/schemas/TxId"
    RecAtivacaoSolicitada:
      type: "object"
      title: "Dados relacionados à confirmação da ativação da recorrência."
      properties:
        ativacao:
          type: "object"
          title: "Dados relacionados à confirmação da ativação da recorrência."
          description: "Dados relacionados à confirmação da ativação da recorrência."
          properties:
            dadosJornada:
              type: "object"
              title: "Dados de confirmação da jornada e início da recorrência"
              oneOf:
                - type: "object"
                  title: "Cobrança imediata vinculada à Jornada 3"
                  required: ["txid"]
                  description: "Dado de preenchimento obrigatório quando utilizada a Jornada 3. Este campo deve ser removido pelo PSP Recebedor quando a ativação for realizada pelas jornadas 1, 2 ou 4."
                  properties:
                    txid:
                      $ref: "#/components/schemas/TxId"
    RecStatus:
      type: "object"
      title: "Status da Recorrência"
      required: ["status"]
      properties:
        status:
          type: "string"
          title: "Status do registro da recorrência"
          enum:
            - "CRIADA"
            - "APROVADA"
            - "REJEITADA"
            - "EXPIRADA"
            - "CANCELADA"
    RecConfiguracao:
      type: "object"
      title: "Configuração da Recorrência"
      required: ["politicaRetentativa"]
      properties:
        politicaRetentativa:
          type: "string"
          title: "Política de retentativa pós vencimento da recorrência"
          enum:
            - "NAO_PERMITE"
            - "PERMITE_3R_7D"
    RecAtualizacao:
      type: "object"
      title: "Histórico de atualização da recorrência."
      required: ["atualizacao"]
      properties:
        atualizacao:
          type: "array"
          title: "Histórico de Status"
          description: "Histórico das mudanças de status da recorrência."
          items:
            type: "object"
            required: ["status", "data"]
            properties:
              status:
                type: "string"
                title: "Status da recorrência"
                description: "Status da recorrência."
                enum:
                  - "CRIADA"
                  - "APROVADA"
                  - "REJEITADA"
                  - "EXPIRADA"
                  - "CANCELADA"
              data:
                type: "string"
                format: "date-time"
                description: "Data e hora do registro de status atualizado. Respeita RFC 3339."
    RecEncerramento:
      type: "object"
      title: "Detalhamento do encerramento da recorrência."
      properties:
        encerramento:
          type: "object"
          title: "Detalhamento do encerramento da recorrência."
          oneOf:
            - type: "object"
              properties:
                rejeicao:
                  type: "object"
                  title: "Informações sobre a rejeição da recorrência"
                  required: ["codigo", "descricao"]
                  description: "Informações sobre a rejeição da recorrência"
                  properties:
                    codigo:
                      type: "string"
                      title: "Código da rejeição"
                      description: "Código da rejeição. Corresponde ao código de rejeição presente no catálogo de mensagens."
                      enum:
                        - AP13
                        - AP14
                      maxLength: 4
                    descricao:
                      type: "string"
                      title: "Descricao da rejeição"
                      description: "Descricao da causa da rejeição"
                      maxLength: 400
            - type: "object"
              properties:
                cancelamento:
                  type: "object"
                  title: "Informações sobre o cancelamento da recorrência"
                  required: ["solicitante", "codigo", "descricao"]
                  description: "Informações sobre o cancelamento da recorrência"
                  properties:
                    solicitante:
                      type: "string"
                      title: "Solicitante do cancelamento"
                      enum:
                        - PSP_PAGADOR
                        - USUARIO_PAGADOR
                        - PSP_RECEBEDOR
                        - USUARIO_RECEBEDOR
                    codigo:
                      type: "string"
                      title: "Código do cancelamento"
                      description: "Código do cancelamento. Corresponde ao código de cancelamento presente no catálogo de mensagens."
                      enum:
                       - ACCL
                       - CPCL
                       - DCSD
                       - ERSL
                       - FRUD
                       - PCFD
                       - SLCR
                       - SLDB
                      maxLength: 4
                    descricao:
                      type: "string"
                      title: "Descricao do cancelamento"
                      description: "Descricao do cancelamento."
                      maxLength: 400
    RecId:
      type: "string"
      title: "ID Recorrência"
      description: |
        # Identificador da Recorrência

        Regra de formação:
        - RAxxxxxxxxyyyyMMddkkkkkkkkkkk (29 caracteres; "case sensitive", isso é, diferencia letras maiúsculas e minúsculas), sendo:
          - "R":  fixo (1 caractere). "R" para a recorrência criada dentro do Pix;
          - "A": identificação da possibilidade de novas tentativas, sendo possíveis os valores "R" ou "N" (1 caractere). "R" caso a recorrência permita novas tentativas de pagamento pós vencimento, ou "N" caso não permita novas tentativas.
          - "xxxxxxxx":  identificação do agente que presta serviço para o usuário recebedor que gerou o ID Recorrência, podendo ser: o ISPB do participante direto, o ISPB do participante indireto ou os 8 primeiros caracteres do CNPJ do prestador de serviço de iniciação (8 caracteres alfanuméricos [A-Z|0-9]);
          - "yyyyMMdd":  data (8 caracteres) de criação da recorrência;
          - "kkkkkkkkkkk": sequencial criado pelo agente que gerou o ID Recorrência (11 caracteres alfanuméricos [a-z|A-Z|0-9]). Deve ser único dentro de cada "yyyyMMdd".

        Dessa forma, o ID da recorrência deve ser formado de acordo com um dos tipos a seguir:
        - "RRxxxxxxxxyyyyMMddkkkkkkkkkkk"; para recorrência criada dentro do Pix e que permite novas tentativas de pagamento pós vencimento; ou
        - "RNxxxxxxxxyyyyMMddkkkkkkkkkkk"; para recorrência criada dentro do Pix e que não permite novas tentativas de pagamento pós vencimento.”

      pattern: "[a-zA-Z0-9]{29}"
      minLength: 29
      maxLength: 29
      example: RR1234567820240115abcdefghijk
    RecBase:
      title: "Recorrência Base"
      type: "object"
      required: ["idRec", "calendario","vinculo","retentativa"]
      description: "Atributos de Configuração de Recorrência"
      properties:
        vinculo:
          type: "object"
          title: "Descrição do Objeto da Recorrência"
          required: ["contrato","devedor"]
          description: "Informações sobre o objeto da recorrência."
          properties:
            objeto:
              type: "string"
              title: "Identificador do objeto de vínculo"
              description: "Campo de texto livre para informações referentes ao contrato que permitam ao usuário pagador reconhecer o objeto dos pagamentos periódicos por meio do Pix Automático."
              maxLength: 35
              example: 
                - "Conta de energia Av. Paulista, 1804"
                - "Serviço de internet banda larga"
                - "Assinatura anual"
            devedor:
              description: "O objeto devedor organiza as informações sobre o devedor da recorrência."
              oneOf:
                - $ref: "#/components/schemas/PessoaFisicaRecorrencia"
                - $ref: "#/components/schemas/PessoaJuridicaRecorrencia"
            contrato:
              type: "string"
              title: "Objeto da autorização"
              description: "Número, identificador, ou código que representa o objeto da autorização (contrato, pedido etc.)."
              maxLength: 35
        calendario:
          type: "object"
          title: "Informações sobre calendário da recorrência"
          required: ["dataInicial", "periodicidade"]
          description: "Informações sobre calendário da recorrência"
          properties:
            dataInicial:
              type: "string"
              format: "date"
              title: "Data estimada de primeiro pagamento."
              description: "Trata-se de uma data, no formato `YYYY-MM-DD`, segundo ISO 8601. Data estimada de primeiro pagamento."
              example: "2023-04-01"
            dataFinal:
              type: "string"
              format: "date"
              title: "Data final da vigência."
              description: "Campo opcional que deve ser preenchido para autorizações com vigência pré-definida, devendo ser compatível com os valores informados em tipoFrequencia e a dataInicialRecorrencia. Não deve ser preenchido para autorizações por tempo indeterminado. Trata-se de uma data, no formato `YYYY-MM-DD`, segundo ISO 8601."
              example: "2023-04-01"
            periodicidade:
              type: "string"
              title: "Periodicidade das cobranças recorrentes."
              enum:
                - "SEMANAL"
                - "MENSAL"
                - "TRIMESTRAL"
                - "SEMESTRAL"
                - "ANUAL"
        valor:
          type: "object"
          properties:
            valorRec:
              type: "string"
              pattern: "\\d{1,10}\\.\\d{2}"
              title: "Valor da recorrência"
              description: "Campo opcional, deve ser preenchido apenas quando o valor dos pagamentos for fixo ou não for sujeito a alteração durante a vigência da autorização."
            valorMinimoRecebedor:
              type: "string"
              pattern: "\\d{1,10}\\.\\d{2}"
              title: "Valor mínimo da recorrência"
              description: "Campo opcional. Valor definido pelo usuário recebedor. Se o usuário pagador atribuir um valor máximo para os pagamentos daquela autorização, ele não poderá ser inferior ao piso definido pelo usuário recebedor. Não pode ser preenchido nas autorizações de valor fixo, ou seja, com campo valor preenchido."
    SolicRecId:
      type: "object"
      title: "Id da Solicitação de recorrência"
      required: ["idSolicRec"]
      description: "Dados criados ou alterados da cobrança recorrente via API Pix"
      properties:
        idSolicRec:
          type: "string"
          title: "ID Solicitação da Recorrência"
          description: |
            # Identificador da Solicitação da Recorrência

            Regra de formação:
            - SCxxxxxxxxyyyyMMddkkkkkkkkkkk (29 caracteres; “case sensitive”, isso é, diferencia letras maiúsculas e minúsculas), sendo:
              - SC - fixo (2 caracteres);
              - xxxxxxxx – ISPB do agente que envia a mensagem pain.009 de solicitação de confirmação da recorrência (8 caracteres alfanuméricos [A-Z|0-9]);
              - yyyyMMdd – data (8 caracteres) de criação da mensagem pain.009 de solicitação de confirmação da recorrência;
              - kkkkkkkkkkk – sequencial criado pelo agente que gerou a mensagem de solicitação de confirmação da recorrência (11 caracteres alfanuméricos [a-z|A-Z|0-9]). Deve ser único dentro de cada “yyyyMMdd”.
          pattern: "[a-zA-Z0-9]{29}"
          minLength: 29
          maxLength: 29
          example: SC1234567820240115abcdefghijk
    SolicRecBase:
      type: "object"
      title: "Solicitação de Recorrência Base"
      required: ["calendario", "pagador", "idRec","destinatario"]
      description: "Dados criados ou alterados da cobrança recorrente via API Pix"
      properties:
        idRec:
          $ref: "#/components/schemas/RecId"
        calendario:
          type: "object"
          title: "Informações de Calendário da Solicitação da Recorrência"
          required: ["dataExpiracaoSolicitacao"]
          properties:
            dataExpiracaoSolicitacao:
              type: "string"
              format: "date-time"
              title: "Data da expiração da solicitação enviada ao usuário pagador."
              description: "Data da expiração da solicitação enviada ao usuário pagador. Respeita RFC 3339."
        destinatario:
          allOf:
            - $ref: "#/components/schemas/DadosBancarios"
          oneOf:
            - $ref: "#/components/schemas/CPF"
            - $ref: "#/components/schemas/CNPJ"
    SolicRecStatus:
      type: "object"
      title: "Status da Solicitação de Recorrência"
      required: ["status"]
      properties:
        status:
          type: "string"
          title: "Status do registro da solicitação de recorrência"
          enum:
            - "CRIADA"
            - "ENVIADA"
            - "RECEBIDA"
            - "REJEITADA"
            - "ACEITA"
            - "EXPIRADA"
            - "CANCELADA"
    SolicRecAtualizacao:
      type: "object"
      title: "Histórico de Status da Solicitação de Recorrência"
      required: ["atualizacao"]
      properties:
        atualizacao:
          type: "array"
          title: "Histórico de Status da Solicitação de Recorrência"
          description: ""
          items:
            type: "object"
            required: ["status", "data"]
            properties:
              status:
                type: "string"
                title: "Status do registro da solicitação de recorrência"
                enum:
                  - "CRIADA"
                  - "ENVIADA"
                  - "RECEBIDA"
                  - "REJEITADA"
                  - "ACEITA"
                  - "EXPIRADA"
                  - "CANCELADA"
              data:
                type: "string"
                format: "date-time"
                description: "Data e hora do registro de status atualizado. Respeita RFC 3339."
    SolicRecSolicitada:
      type: "object"
      title: "Solicitação de Recorrência"
      description: "Dados criados ou alterados da solicitação da recorrência"
      allOf:
        - $ref: "#/components/schemas/SolicRecBase"
    SolicRecRevisada:
      type: "object"
      title: "Solicitação de Recorrência"
      description: "Dados alterados da solicitação da recorrência"
      required: ["status"]
      properties:
        status:
          type: "string"
          title: "Status do registro da solicitação de recorrência"
          enum:
            - "CANCELADA"
    SolicRecCompleta:
      type: "object"
      title: "Solicitação de Recorrência Completa"
      required: ["rec"]
      description: "Dados criados ou alterados da solicitação da recorrência"
      allOf:
        - $ref: "#/components/schemas/SolicRecId"
        - $ref: "#/components/schemas/SolicRecBase"
        - $ref: "#/components/schemas/SolicRecStatus"
        - $ref: "#/components/schemas/SolicRecAtualizacao"
        - type: "object"
          properties:
            recPayload:
              $ref: "#/components/schemas/RecPayload"
    CobRGerada:
      type: "object"
      title: "Cobrança Recorrente Gerada"
      required:
        ["idRec","txid", "status", "valor", "recebedor", "calendario"]
      description: "Dados criados ou alterados da cobrança recorrente via API Pix"
      allOf:
        - type: "object"
          properties:
            idRec:
              $ref: "#/components/schemas/RecId"
        - type: "object"
          properties:
            txid:
              $ref: "#/components/schemas/TxId"
        - $ref: "#/components/schemas/CobRBase"
        - type: "object"
          properties:
            calendario:
              type: "object"
              required: ["criacao"]
              properties:
                criacao:
                  type: "string"
                  format: "date"
                  title: "Data de criação da cobrança"
                  description: "Trata-se de uma data, no formato `YYYY-MM-DD`, segundo ISO 8601. É a data de criação da cobrança."
                  example: "2023-04-01"
        - type: "object"
          properties:
            recebedor:
              allOf:
                - $ref: "#/components/schemas/PessoaJuridicaRecorrencia"
        - $ref: "#/components/schemas/CobRStatus"
        - $ref: "#/components/schemas/DadosDevedorRecorrencia"
    CobRCompleta:
      type: "object"
      title: "Cobrança Recorrente Completa"
      required:
        ["idRec","txid", "status", "valor", "recebedor", "calendario"]
      description: "Dados completos da cobrança recorrente via API Pix"
      allOf:
        - type: "object"
          properties:
            idRec:
              $ref: "#/components/schemas/RecId"
        - type: "object"
          properties:
            txid:
              $ref: "#/components/schemas/TxId"
        - $ref: "#/components/schemas/CobRBase"
        - type: "object"
          properties:
            calendario:
              type: "object"
              required: ["criacao"]
              properties:
                criacao:
                  type: "string"
                  format: "date"
                  title: "Data de criação da cobrança"
                  description: "Trata-se de uma data, no formato `YYYY-MM-DD`, segundo ISO 8601. É a data de criação da cobrança."
                  example: "2023-04-01"
        - $ref: "#/components/schemas/CobRStatus"
        - $ref: "#/components/schemas/CobRConfiguracao"
        - $ref: "#/components/schemas/DadosDevedorRecorrencia"
        - type: "object"
          properties:
            pix:
              type: "array"
              title: "Pix recebidos"
              items:
                allOf:
                  - $ref: "#/components/schemas/PixAutomatico"
                  - type: "object"
                    properties:
                      txid:
                        allOf:
                          - $ref: "#/components/schemas/TxId"
                          - pattern: "[a-zA-Z0-9]{26,35}"
        - $ref: "#/components/schemas/CobRAtualizacao"
        - $ref: "#/components/schemas/CobRTentativas"
    CobRAtualizacao:
      type: "object"
      title: "Histórico de Atualização da Cobrança Recorrente"
      required: ["atualizacao"]
      properties:
        atualizacao:
          type: "array"
          title: "Histórico de Status"
          description: "Histórico das mudanças de status das cobranças recorrentes."
          items:
            type: "object"
            required: ["status", "data"]
            properties:
              status:
                type: "string"
                title: "Status da cobrança"
                description: "Status da cobrança."
                enum:
                  - "CRIADA"
                  - "ATIVA"
                  - "CONCLUIDA"
                  - "EXPIRADA"
                  - "REJEITADA"
                  - "CANCELADA"
              data:
                type: "string"
                format: "date-time"
                description: "Data e hora do registro de status atualizado. Respeita RFC 3339."
        encerramento:
          type: "object"
          title: "Detalhamento do encerramento da cobrança."
          oneOf:
            - type: "object"
              properties:
                cancelamento:
                  type: "object"
                  title: "Informações sobre o cancelamento da cobrança"
                  required: ["solicitante", "codigo", "descricao"]
                  description: "Informações sobre o cancelamento da cobrança"
                  properties:
                    solicitante:
                      type: "string"
                      title: "Solicitante do cancelamento"
                      enum:
                        - PSP_PAGADOR
                        - USUARIO_PAGADOR
                        - PSP_RECEBEDOR
                        - USUARIO_RECEBEDOR
                    codigo:
                      type: "string"
                      title: "Código do cancelamento"
                      description: "Código do cancelamento. Corresponde ao código de cancelamento presente no catálogo de mensagens."
                      maxLength: 4
                      enum:
                        - ACCT
                        - BLCK
                        - CCLD
                        - FAIL
                        - OTHR
                        - SLBD
                        - SLCR
                    descricao:
                      type: "string"
                      title: "Descricao do cancelamento"
                      description: "Descricao da causa do cancelamento"
                      maxLength: 400
            - type: "object"
              properties:
                rejeicao:
                  type: "object"
                  title: "Informações sobre a rejeição da cobrança"
                  required: ["codigo", "descricao"]
                  description: "Informações sobre a rejeição da cobrança"
                  properties:
                    codigo:
                      type: "string"
                      title: "Código da rejeição"
                      description: "Código da rejeição. Corresponde ao código de rejeição presente no catálogo de mensagens."
                      maxLength: 4
                      enum:
                        - AB10
                        - AC05
                        - AC06
                        - AM02
                        - AM09
                        - DENC
                        - DS27
                        - DTED
                        - DTNT
                        - FBRD
                        - IRNT
                        - MIDI
                        - MSUC
                        - NIEC
                        - NIPA
                        - NITX
                        - QUNT
                        - RC09
                        - UDEI
                    descricao:
                      type: "string"
                      title: "Descricao da rejeição"
                      description: "Descricao da causa da rejeição"
                      maxLength: 400
    CobRTentativas:
      type: "object"
      title: "Histórico de Tentativas da Cobrança Recorrente"
      properties:
        tentativas:
          type: "array"
          title: "Histórico de Tentativas de Cobrança"
          description: "Histórico de Tentativas de Cobrança"
          items:
            type: "object"
            required: ["dataLiquidacao", "tipo", "endToEndId", "status","atualizacao"]
            properties:
              dataLiquidacao:
                type: "string"
                format: "date"
                description: "Data da liquidação da cobrança. Trata-se de uma data, no formato `YYYY-MM-DD`, segundo ISO 8601."
                example: "2023-04-01"
              tipo:
                type: "string"
                title: "Tipo da Tentativa"
                description: "Tipo da tentativa da cobrança."
                enum:
                  - "AGND"
                  - "NTAG"
                  - "RIFL"
              status:
                type: "string"
                title: "Status da Tentativa"
                description: "Status da tentativa da cobrança."
                enum:
                  - "SOLICITADA"
                  - "AGENDADA"
                  - "PAGA"
                  - "CANCELADA"
                  - "REJEITADA"
                  - "EXPIRADA"
              endToEndId:
                $ref: "#/components/schemas/EndToEndId"
              atualizacao:
                type: "array"
                title: "Histórico de Status da Tentativa"
                description: "Histórico das mudanças de status da tentativa de cobrança."
                items:
                  type: "object"
                  required: ["status", "data"]
                  properties:
                    status:
                      type: "string"
                      title: "Status da Tentativa"
                      description: "Status da tentativa da cobrança."
                      enum:
                        - "SOLICITADA"
                        - "AGENDADA"
                        - "PAGA"
                        - "CANCELADA"
                        - "REJEITADA"
                        - "EXPIRADA"
                    data:
                      type: "string"
                      format: "date-time"
                      description: "Data e hora do registro de status atualizado. Respeita RFC 3339."
              rejeicao:
                type: "object"
                title: "Informações sobre a rejeição da tentativa da cobrança"
                required: ["codigo", "descricao"]
                description: "Informações sobre a rejeição da tentativa da cobrança"
                properties:
                  codigo:
                    type: "string"
                    title: "Código da rejeição da tentativa"
                    description: "Código da rejeição da tentativa. Corresponde ao código de rejeição presente no catálogo de mensagens. Os códigos de rejeição da tentativa `AC05`,`AM09`,`DENC`,`DS27`,`DTED`,`MIDI`,`MSUC`,`NITX`,`RC09` e `DTED` causam a rejeição da cobrança recorrente correspondente."
                    maxLength: 4
                    enum:
                      - AB10
                      - AC05
                      - AC06
                      - AM02
                      - AM09
                      - DENC
                      - DS27
                      - DTED
                      - DTNT
                      - FBRD
                      - IRNT
                      - MIDI
                      - MSUC
                      - NIEC
                      - NIPA
                      - NITX
                      - QUNT
                      - RC09
                      - UDEI
                  descricao:
                    type: "string"
                    title: "Descricao da rejeição"
                    description: "Descricao da causa da rejeição"
                    maxLength: 400          
    CobRRevisada:
      type: "object"
      title: "Cobrança Recorrente Revisada"
      description: "Dados enviados para revisão da cobrança recorrente via API Pix"
      allOf:
        - $ref: "#/components/schemas/CobRStatusRevisada"
    CobRSolicitada:
      type: "object"
      title: "Cobrança Recorrente Solicitada"
      required: ["idRec", "calendario", "valor", "recebedor"]
      description: "Dados enviados para criação da cobrança recorrente via API Pix"
      allOf:
        - type: "object"
          properties:
            idRec:
              $ref: "#/components/schemas/RecId"
        - $ref: "#/components/schemas/CobRBase"
        - $ref: "#/components/schemas/DadosDevedorRecorrencia"
    CobRNotification:
      type: "object"
      title: "Cobrança Recorrente Notificada"
      required: ["idRec", "txid", "status", "atualizacao"]
      description: "Dados enviados para criação da cobrança recorrente via API Pix"
      allOf:
        - type: "object"
          properties:
            idRec:
              $ref: "#/components/schemas/RecId"
        - type: "object"
          properties:
            txid:
              $ref: "#/components/schemas/TxId"
        - $ref: "#/components/schemas/CobRStatus"
        - $ref: "#/components/schemas/CobRAtualizacao"
        - $ref: "#/components/schemas/CobRTentativas"
        - type: "object"
          properties:
            pix:
              type: "array"
              title: "Pix recebidos"
              items:
                allOf:
                  - $ref: "#/components/schemas/PixAutomatico"
                  - type: "object"
                    properties:
                      txid:
                        allOf:
                          - $ref: "#/components/schemas/TxId"
                          - pattern: "[a-zA-Z0-9]{26,35}"
    CobRConfiguracao:
      type: "object"
      title: "Configuração da Cobrança Recorrente"
      required: ["politicaRetentativa"]
      properties:
        politicaRetentativa:
          type: "string"
          title: "Política de retentativa da cobrança recorrente"
          enum:
            - "NAO_PERMITE"
            - "PERMITE_3R_7D"
    CobRStatus:
      type: "object"
      title: "Status da Cobrança Recorrente"
      properties:
        status:
          type: "string"
          title: "Status do registro da cobrança"
          enum:
            - "CRIADA"
            - "ATIVA"
            - "CONCLUIDA"
            - "EXPIRADA"
            - "REJEITADA"
            - "CANCELADA"
    CobRStatusRevisada:
      type: "object"
      title: "Status da Cobrança Recorrente"
      properties:
        status:
          type: "string"
          title: "Status do registro da cobrança"
          enum:
            - "CANCELADA"
    CobRBase:
      type: "object"
      title: "Cobrança Recorrente Base"
      required: ["ajusteDiaUtil"]
      description: "Atributos de cobrança recorrente"
      properties:
        infoAdicional:
          type: "string"
          title: "Informações adicionais da fatura."
          description: "Informações adicionais da fatura."
          maxLength: 140
        calendario:
          type: "object"
          title: "Informações sobre calendário da cobrança"
          required: ["dataDeVencimento"]
          description: ""
          properties:
            dataDeVencimento:
              type: "string"
              format: "date"
              title: "Data de vencimento da cobrança"
              description: "Trata-se de uma data, no formato `YYYY-MM-DD`, segundo ISO 8601. É a data de vencimento da cobrança."
              example: "2023-04-01"
        valor:
          type: "object"
          title: "Valor da cobrança recorrente"
          required: ["original"]
          description: "Valor da cobrança recorrente"
          properties:
            original:
              type: "string"
              title: "Valor"
              pattern: "\\d{1,10}\\.\\d{2}"
              description: "Valor original da cobrança."
        ajusteDiaUtil:
          type: "boolean"
          title: "Ajuste data prevista para liquidação para próximo dia útil"
          default: true
          description: "Campo de ativação do ajuste da data prevista para liquidação para próximo dia útil caso o vencimento corrente seja um dia não útil. O PSP Recebedor deverá considerar os feriados locais com base no código município do usuário pagador."
        recebedor:
          description: "O objeto recebedor organiza as informações sobre o recebedor da cobrança."
          allOf:
            - $ref: "#/components/schemas/DadosBancariosRecebedor"
    CobBase:
      type: "object"
      title: "Cobrança Base"
      description: "Atributos comuns a todas entidades de Cobrança"
      properties:
        chave:
          type: "string"
          title: "Chave DICT do recebedor"
          description: |
            # Formato do campo chave

            * O campo chave determina a chave Pix registrada no DICT que será utilizada para a cobrança. Essa chave será lida pelo aplicativo do PSP do pagador para consulta ao DICT, que retornará a informação que identificará o recebedor da cobrança.
            * Os tipos de chave podem ser: telefone, e-mail, cpf/cnpj ou EVP.
            * O formato das chaves pode ser encontrado na seção "Formatação das chaves do DICT no BR Code" do [Manual de Padrões para iniciação do Pix](https://www.bcb.gov.br/estabilidadefinanceira/pix).
          maxLength: 77
        solicitacaoPagador:
          type: "string"
          title: "Solicitação ao pagador"
          description: "O campo solicitacaoPagador, opcional, determina um texto a ser apresentado ao pagador para que ele possa digitar uma informação correlata, em formato livre, a ser enviada ao recebedor. Esse texto será preenchido, na pacs.008, pelo PSP do pagador, no campo RemittanceInformation <RmtInf>. O tamanho do campo <RmtInf> na pacs.008 está limitado a 140 caracteres."
          maxLength: 140
        infoAdicionais:
          type: "array"
          title: "Informações adicionais"
          description: "Cada respectiva informação adicional contida na lista (nome e valor) deve ser apresentada ao pagador."
          maximum: 50
          items:
            type: "object"
            required: ["nome", "valor"]
            properties:
              nome:
                type: "string"
                title: "Nome"
                description: "Nome do campo."
                maxLength: 50
              valor:
                type: "string"
                title: "Valor"
                description: "Dados do campo."
                maxLength: 200
    CobBaseCopiaCola:
      type: "object"
      title: "Cobrança Base com Copia e Cola"
      description: "Atributos comuns a todas entidades de Cobrança que possuem informação de Copia e Cola"
      allOf:
        - type: "object"
          properties:
            pixCopiaECola:
              type: "string"
              title: "Pix Copia e Cola correspondente à cobrança."
              description: "Este campo retorna o valor do Pix Copia e Cola correspondente à cobrança. Trata-se da sequência de caracteres que representa o BR Code."
              maxLength: 512
        - $ref: "#/components/schemas/CobBase"
    CobSolicitada:
      type: "object"
      title: "Cobrança imediata solicitada"
      description: "Dados enviados para criação ou alteração da cobrança imediata via API Pix"
      required: ["valor", "chave", "calendario"]
      allOf:
        - type: "object"
          properties:
            calendario:
              title: "Calendário"
              description: "Os campos aninhados sob o identificador calendário organizam informações a respeito de controle de tempo da cobrança."
              allOf:
                - $ref: "#/components/schemas/CobExpiracao"
        - type: "object"
          properties:
            devedor:
              description: "Os campos aninhados sob o objeto devedor são opcionais e identificam o devedor, ou seja, a pessoa ou a instituição a quem a cobrança está endereçada. Não identifica, necessariamente, quem irá efetivamente realizar o pagamento. Um CPF pode ser o devedor de uma cobrança, mas pode acontecer de outro CPF realizar, efetivamente, o pagamento do documento. Não é permitido que o campo `devedor.cpf` e campo `devedor.cnpj` estejam preenchidos ao mesmo tempo. Se o campo `devedor.cnpj` está preenchido, então o campo `devedor.cpf` não pode estar preenchido, e vice-versa. Se o campo `devedor.nome` está preenchido, então deve existir ou um `devedor.cpf` ou um campo `devedor.cnpj` preenchido."
              oneOf:
                - $ref: "#/components/schemas/PessoaFisica"
                - $ref: "#/components/schemas/PessoaJuridica"
        - type: "object"
          properties:
            loc:
              allOf:
                - $ref: "#/components/schemas/PayloadLocationCob"
        - type: "object"
          properties:
            valor:
              allOf:
                - required: ["original"]
                - $ref: "#/components/schemas/CobValor"
        - $ref: "#/components/schemas/CobBase"
    CobVSolicitada:
      type: "object"
      title: "Cobrança com vencimento solicitada"
      description: "Dados enviados para criação ou alteração da cobrança com vencimento via API Pix"
      required: ["valor", "chave", "devedor", "calendario"]
      allOf:
        - type: "object"
          properties:
            calendario:
              title: "Calendário"
              description: "Os campos aninhados sob o identificador calendário organizam informações a respeito de controle de tempo da cobrança."
              allOf:
                - $ref: "#/components/schemas/CobDataDeVencimento"
        - $ref: "#/components/schemas/DadosDevedor"
        - type: "object"
          properties:
            loc:
              allOf:
                - $ref: "#/components/schemas/PayloadLocationCob"
        - type: "object"
          properties:
            valor:
              allOf:
                - required: ["original"]
                - $ref: "#/components/schemas/CobVValor"
        - $ref: "#/components/schemas/CobBase"
    CobRevisada:
      type: "object"
      title: "Cobrança imediata revisada"
      description: "Dados enviados para revisão da cobrança imediata via API Pix"
      allOf:
        - type: "object"
          properties:
            calendario:
              title: "Calendário"
              description: "Os campos aninhados sob o identificador calendário organizam informações a respeito de controle de tempo da cobrança."
              allOf:
                - $ref: "#/components/schemas/CobExpiracao"
        - type: "object"
          properties:
            devedor:
              description: "Os campos aninhados sob o objeto devedor são opcionais e identificam o devedor, ou seja, a pessoa ou a instituição a quem a cobrança está endereçada. Não identifica, necessariamente, quem irá efetivamente realizar o pagamento. Um CPF pode ser o devedor de uma cobrança, mas pode acontecer de outro CPF realizar, efetivamente, o pagamento do documento. Não é permitido que o campo `devedor.cpf` e campo `devedor.cnpj` estejam preenchidos ao mesmo tempo. Se o campo `devedor.cnpj` está preenchido, então o campo `devedor.cpf` não pode estar preenchido, e vice-versa. Se o campo `devedor.nome` está preenchido, então deve existir ou um `devedor.cpf` ou um campo `devedor.cnpj` preenchido."
              oneOf:
                - $ref: "#/components/schemas/PessoaFisica"
                - $ref: "#/components/schemas/PessoaJuridica"
        - type: "object"
          properties:
            loc:
              allOf:
                - $ref: "#/components/schemas/PayloadLocationCob"
        - type: "object"
          properties:
            status:
              type: "string"
              title: "Status do registro da cobrança"
              enum:
                - "REMOVIDA_PELO_USUARIO_RECEBEDOR"
        - type: "object"
          properties:
            valor:
              $ref: "#/components/schemas/CobValor"
        - $ref: "#/components/schemas/CobBase"
    CobVRevisada:
      type: "object"
      title: "Cobrança com vencimento revisada"
      description: "Dados enviados para revisão da cobrança com vencimento via API Pix"
      allOf:
        - type: "object"
          properties:
            calendario:
              title: "Calendário"
              description: "Os campos aninhados sob o identificador calendário organizam informações a respeito de controle de tempo da cobrança."
              allOf:
                - $ref: "#/components/schemas/CobDataDeVencimento"
        - $ref: "#/components/schemas/DadosDevedor"
        - type: "object"
          properties:
            loc:
              allOf:
                - $ref: "#/components/schemas/PayloadLocationCob"
        - type: "object"
          properties:
            status:
              type: "string"
              title: "Status do registro da cobrança"
              enum:
                - "REMOVIDA_PELO_USUARIO_RECEBEDOR"
        - type: "object"
          properties:
            valor:
              $ref: "#/components/schemas/CobVValor"
        - $ref: "#/components/schemas/CobBase"
    CobGerada:
      type: "object"
      title: "Cobrança imediata gerada"
      description: "Dados criados ou alterados da cobrança imediata via API Pix"
      required: ["txid", "calendario", "revisao", "status", "valor", "chave"]
      allOf:
        - type: "object"
          properties:
            calendario:
              required: ["expiracao"]
              title: "Calendário"
              description: "Os campos aninhados sob o identificador calendário organizam informações a respeito de controle de tempo da cobrança."
              allOf:
                - $ref: "#/components/schemas/CobCriacao"
                - $ref: "#/components/schemas/CobExpiracao"
            txid:
              $ref: "#/components/schemas/TxId"
            revisao:
              $ref: "#/components/schemas/Revisao"
        - type: "object"
          properties:
            devedor:
              description: "Os campos aninhados sob o objeto devedor são opcionais e identificam o devedor, ou seja, a pessoa ou a instituição a quem a cobrança está endereçada. Não identifica, necessariamente, quem irá efetivamente realizar o pagamento. Um CPF pode ser o devedor de uma cobrança, mas pode acontecer de outro CPF realizar, efetivamente, o pagamento do documento. Não é permitido que o campo `devedor.cpf` e campo `devedor.cnpj` estejam preenchidos ao mesmo tempo. Se o campo `devedor.cnpj` está preenchido, então o campo `devedor.cpf` não pode estar preenchido, e vice-versa. Se o campo `devedor.nome` está preenchido, então deve existir ou um `devedor.cpf` ou um campo `devedor.cnpj` preenchido."
              oneOf:
                - $ref: "#/components/schemas/PessoaFisica"
                - $ref: "#/components/schemas/PessoaJuridica"
        - type: "object"
          properties:
            loc:
              required: ["id", "txid", "tipoCob", "criacao"]
              allOf:
                - $ref: "#/components/schemas/PayloadLocation"
        - type: "object"
          properties:
            location:
              type: "string"
              title: "Localização do payload"
              description: "Localização do Payload a ser informada na criação da cobrança."
              maxLength: 77
              format: uri
              example: "pix.example.com/qr/v2/2353c790eefb11eaadc10242ac120002"
              readOnly: true
        - type: "object"
          properties:
            status:
              $ref: "#/components/schemas/CobrancaStatus"
        - type: "object"
          properties:
            valor:
              required: ["original"]
              allOf:
                - $ref: "#/components/schemas/CobValor"
        - $ref: "#/components/schemas/CobBaseCopiaCola"
    CobVGerada:
      type: "object"
      title: "Cobrança com vencimento gerada"
      description: "Dados criados ou alterados da cobrança com vencimento via API Pix"
      required:
        [
          "location",
          "txid",
          "devedor",
          "calendario",
          "revisao",
          "status",
          "valor",
          "chave",
          "recebedor",
        ]
      allOf:
        - type: "object"
          properties:
            calendario:
              required: ["validadeAposVencimento"]
              title: "Calendário"
              description: "Os campos aninhados sob o identificador calendário organizam informações a respeito de controle de tempo da cobrança."
              allOf:
                - $ref: "#/components/schemas/CobCriacao"
                - $ref: "#/components/schemas/CobDataDeVencimento"
            txid:
              $ref: "#/components/schemas/TxId"
            revisao:
              $ref: "#/components/schemas/Revisao"
        - $ref: "#/components/schemas/DadosDevedor"
        - $ref: "#/components/schemas/DadosRecebedor"
        - type: "object"
          properties:
            loc:
              required: ["id", "txid", "tipoCob", "criacao"]
              allOf:
                - $ref: "#/components/schemas/PayloadLocation"
        - type: "object"
          properties:
            status:
              $ref: "#/components/schemas/CobrancaStatus"
        - type: "object"
          properties:
            valor:
              required: ["original"]
              allOf:
                - $ref: "#/components/schemas/CobVValor"
        - $ref: "#/components/schemas/CobBaseCopiaCola"
    CobrancaStatus:
      type: "string"
      title: "Status do registro da cobrança."
      description: |
        Estado do registro da cobrança. Não se confunde com o estado da cobrança em si, ou seja, não guarda relação com o fato de a cobrança encontrar-se vencida ou expirada, por exemplo.

        Os status são assim definidos:
        - `ATIVA`: indica que o registro se refere a uma cobrança que foi gerada mas ainda não foi paga nem removida;
        - `CONCLUIDA`: indica que o registro se refere a uma cobrança que já foi paga e, por conseguinte, não pode acolher outro pagamento;
        - `REMOVIDO_PELO_USUARIO_RECEBEDOR`: indica que o usuário recebedor solicitou a remoção do registro da cobrança; e
        - `REMOVIDO_PELO_PSP`: indica que o PSP Recebedor solicitou a remoção do registro da cobrança.
      enum:
        - "ATIVA"
        - "CONCLUIDA"
        - "REMOVIDA_PELO_USUARIO_RECEBEDOR"
        - "REMOVIDA_PELO_PSP"
    LoteCobVGerado:
      title: "Lote de cobranças com vencimento gerado"
      type: "object"
      required: ["id", "descricao", "criacao", "cobsv"]
      properties:
        id:
          type: "integer"
          format: "int64"
          title: "Id do lote"
        descricao:
          type: "string"
          title: "Descrição do lote"
        criacao:
          type: "string"
          format: "date-time"
          title: "Data de criação do lote"
          description: "Timestamp que indica o momento em que foi criado o lote. Respeita o formato definido na RFC 3339."
        cobsv:
          type: "array"
          items:
            $ref: "#/components/schemas/CobVGerada"
    CobVCompleta:
      title: "Cobrança com vencimento completa"
      required: ["status"]
      allOf:
        - $ref: "#/components/schemas/CobVGerada"
        - type: "object"
          properties:
            pix:
              type: "array"
              title: "Pix recebidos"
              items:
                allOf:
                  - $ref: "#/components/schemas/Pix"
                  - type: "object"
                    properties:
                      txid:
                        allOf:
                          - $ref: "#/components/schemas/TxId"
                          - pattern: "[a-zA-Z0-9]{26,35}"
        - type: "object"
          properties:
            status:
              $ref: "#/components/schemas/CobrancaStatus"
    CobCompleta:
      title: "Cobrança imediata completa"
      required: ["status"]
      allOf:
        - $ref: "#/components/schemas/CobGerada"
        - type: "object"
          properties:
            status:
              $ref: "#/components/schemas/CobrancaStatus"
        - type: "object"
          properties:
            pix:
              type: "array"
              title: "Pix recebidos"
              items:
                allOf:
                  - $ref: "#/components/schemas/Pix"
                  - type: "object"
                    properties:
                      txid:
                        allOf:
                          - $ref: "#/components/schemas/TxId"
                          - pattern: "[a-zA-Z0-9]{26,35}"
    LoteCobVConsultado:
      title: "Lote de solicitações de alteração ou criação de cobranças com vencimento"
      type: "object"
      required: ["id", "descricao", "criacao", "cobsv"]
      properties:
        id:
          type: "integer"
          format: "int64"
          title: "Identificador do lote em formato numérico."
        descricao:
          type: "string"
          title: "Descrição do lote"
        criacao:
          type: "string"
          format: "date-time"
          title: "Data de criação do lote"
          description: "Timestamp que indica o momento em que foi criado o lote. Respeita o formato definido na RFC 3339."
        cobsv:
          type: "array"
          items:
            type: "object"
            required: ["txid", "status"]
            properties:
              txid:
                $ref: "#/components/schemas/TxId"
              status:
                type: "string"
                title: "Status da solicitação de criação/alteração da cobrança no contexto de criação via lote"
                enum:
                  - "EM_PROCESSAMENTO"
                  - "CRIADA"
                  - "NEGADA"
              problema:
                $ref: "#/components/schemas/Problema"
              criacao:
                type: "string"
                format: "date-time"
                title: "Data de Criação"
                description: "Data e hora em que a cobrança foi criada. Respeita RFC 3339."
                readOnly: true
    LotesCobVConsultados:
      title: "Lotes de solicitações de cobranças com vencimento"
      type: "object"
      required: ["parametros", "lotes"]
      properties:
        parametros:
          $ref: "#/components/schemas/ParametrosConsultaLote"
        lotes:
          type: "array"
          title: "Lotes de solicitações de criação/alteração de cobranças com vencimento"
          items:
            allOf:
              - $ref: "#/components/schemas/LoteCobVConsultado"
    CobVPayload:
      type: "object"
      title: "Payload JSON da cobrança com vencimento"
      description: "Dados da cobrança com vencimento acessados pelo payload JSON"
      required:
        [
          "txid",
          "calendario",
          "revisao",
          "status",
          "valor",
          "chave",
          "devedor",
          "recebedor",
        ]
      allOf:
        - type: "object"
          properties:
            calendario:
              title: "Calendário"
              description: "Os campos aninhados sob o identificador calendário organizam informações a respeito de controle de tempo da cobrança."
              required: ["criacao", "apresentacao", "validadeAposVencimento"]
              allOf:
                - $ref: "#/components/schemas/CobCriacao"
                - $ref: "#/components/schemas/CobApresentacao"
                - $ref: "#/components/schemas/CobDataDeVencimento"
        - type: "object"
          properties:
            devedor:
              description: "Os campos aninhados sob o objeto devedor são opcionais e identificam o devedor, ou seja, a pessoa ou a instituição a quem a cobrança está endereçada. Não identifica, necessariamente, quem irá efetivamente realizar o pagamento. Um CPF pode ser o devedor de uma cobrança, mas pode acontecer de outro CPF realizar, efetivamente, o pagamento do documento. Não é permitido que o campo `devedor.cpf` e campo `devedor.cnpj` estejam preenchidos ao mesmo tempo. Se o campo `devedor.cnpj` está preenchido, então o campo `devedor.cpf` não pode estar preenchido, e vice-versa. Se o campo `devedor.nome` está preenchido, então deve existir ou um `devedor.cpf` ou um campo `devedor.cnpj` preenchido."
              oneOf:
                - $ref: "#/components/schemas/PessoaFisica"
                - $ref: "#/components/schemas/PessoaJuridica"
        - $ref: "#/components/schemas/DadosRecebedor"
        - type: "object"
          properties:
            txid:
              $ref: "#/components/schemas/TxId"
            revisao:
              $ref: "#/components/schemas/Revisao"
        - type: "object"
          properties:
            status:
              $ref: "#/components/schemas/CobrancaStatus"
        - type: "object"
          properties:
            valor:
              $ref: "#/components/schemas/CobVPayloadValor"
        - $ref: "#/components/schemas/CobBase"
    CobPayload:
      type: "object"
      title: "Payload JSON da cobrança imediata"
      description: "Dados da cobrança imediata acessados pelo payload JSON"
      required: ["txid", "calendario", "revisao", "status", "valor", "chave"]
      allOf:
        - type: "object"
          properties:
            calendario:
              title: "Calendário"
              description: "Os campos aninhados sob o identificador calendário organizam informações a respeito de controle de tempo da cobrança."
              required: ["criacao", "apresentacao", "expiracao"]
              allOf:
                - $ref: "#/components/schemas/CobCriacao"
                - $ref: "#/components/schemas/CobApresentacao"
                - $ref: "#/components/schemas/CobExpiracao"
            txid:
              $ref: "#/components/schemas/TxId"
            revisao:
              $ref: "#/components/schemas/Revisao"
        - type: "object"
          properties:
            devedor:
              description: "Os campos aninhados sob o objeto devedor são opcionais e identificam o devedor, ou seja, a pessoa ou a instituição a quem a cobrança está endereçada. Não identifica, necessariamente, quem irá efetivamente realizar o pagamento. Um CPF pode ser o devedor de uma cobrança, mas pode acontecer de outro CPF realizar, efetivamente, o pagamento do documento. Não é permitido que o campo `devedor.cpf` e campo `devedor.cnpj` estejam preenchidos ao mesmo tempo. Se o campo `devedor.cnpj` está preenchido, então o campo `devedor.cpf` não pode estar preenchido, e vice-versa. Se o campo `devedor.nome` está preenchido, então deve existir ou um `devedor.cpf` ou um campo `devedor.cnpj` preenchido."
              oneOf:
                - $ref: "#/components/schemas/PessoaFisica"
                - $ref: "#/components/schemas/PessoaJuridica"
        - type: "object"
          properties:
            status:
              $ref: "#/components/schemas/CobrancaStatus"
        - type: "object"
          properties:
            valor:
              $ref: "#/components/schemas/CobPayloadValor"
        - $ref: "#/components/schemas/CobBase"
    PayloadLocation:
      type: "object"
      title: "Location do Payload"
      description: "Identificador da localização do payload."
      required: ["id", "location", "tipoCob", "criacao"]
      properties:
        id:
          $ref: "#/components/schemas/PayloadLocationId"
        location:
          type: "string"
          title: "Localização do payload"
          description: "Localização do Payload a ser informada na criação da cobrança."
          maxLength: 77
          format: uri
          example: "pix.example.com/qr/v2/2353c790eefb11eaadc10242ac120002"
          readOnly: true
        tipoCob:
          type: "string"
          title: "Tipo da cobrança"
          enum:
            - "cob"
            - "cobv"
        criacao:
          type: "string"
          format: "date-time"
          title: "Data de Criação"
          description: "Data e hora em que a location foi criada. Respeita RFC 3339."
          readOnly: true
    PayloadLocationSolicitada:
      type: "object"
      title: "Location do Payload Solicitada"
      description: "Identificador da localização do payload solicitada."
      required: ["tipoCob"]
      properties:
        tipoCob:
          type: "string"
          title: "Tipo da cobrança"
          enum:
            - "cob"
            - "cobv"
    PayloadLocationRecSolicitada:
      type: "object"
      title: "Location do Payload Solicitada"
      description: "Identificador da localização do payload solicitada."
      required: ["tipo"]
      properties:
        tipo:
          type: "string"
          title: "Tipo da cobrança"
          enum:
            - "rec"
    PayloadLocationRecGerada:
      type: "object"
      title: "Location do Payload Completa"
      description: "Identificador da localização do payload completo."
      required: ["id", "location", "tipo", "criacao"]
      properties:
        id:
          $ref: "#/components/schemas/PayloadLocationRecId"
        location:
          type: "string"
          title: "Localização do payload"
          description: "Localização do Payload a ser informada na criação da recorrência."
          maxLength: 77
          format: uri
          example: "pix.example.com/qr/v2/rec/2353c790eefb11eaadc10242ac120002"
          readOnly: true
        criacao:
          type: "string"
          format: "date-time"
          title: "Data de Criação"
          description: "Data e hora em que a location foi criada. Respeita RFC 3339."
          readOnly: true
    PayloadLocationRecCompleta:
      type: "object"
      title: "Location do Payload Completa"
      description: "Identificador da localização do payload completo."
      allOf:
        - $ref: "#/components/schemas/PayloadLocationRecGerada"
        - type: "object"
          properties:
            idRec:
              $ref: "#/components/schemas/RecId"
    PayloadLocationCompleta:
      type: "object"
      title: "Location do Payload Completa"
      description: "Identificador da localização do payload completo."
      required: ["id", "location", "tipoCob", "criacao"]
      properties:
        id:
          $ref: "#/components/schemas/PayloadLocationId"
        txid:
          $ref: "#/components/schemas/TxId"
        location:
          type: "string"
          title: "Localização do payload"
          description: "Localização do Payload a ser informada na criação da cobrança."
          maxLength: 77
          format: uri
          example: "pix.example.com/qr/v2/2353c790eefb11eaadc10242ac120002"
          readOnly: true
        tipoCob:
          type: "string"
          title: "Tipo da cobrança"
          enum:
            - "cob"
            - "cobv"
        criacao:
          type: "string"
          format: "date-time"
          title: "Data de Criação"
          description: "Data e hora em que a location foi criada. Respeita RFC 3339."
          readOnly: true
    PayloadLocationCob:
      type: "object"
      title: "Location do Payload"
      required: ["id", "tipoCob"]
      description: "Identificador da localização do payload."
      properties:
        id:
          $ref: "#/components/schemas/PayloadLocationId"
    ParametrosConsultaRec:
      type: "object"
      title: "Parâmetros de Consulta de Recorrências"
      description: "Parâmetros utilizados para a realização de uma consulta de recorrências."
      required: ["inicio", "fim", "paginacao"]
      properties:
        inicio:
          type: "string"
          format: "date-time"
          title: "Data de Início"
          description: "Data inicial utilizada na consulta. Respeita RFC 3339."
          example: "2020-04-01T00:00:00Z"
        fim:
          type: "string"
          format: "date-time"
          title: "Data de Fim"
          description: "Data de fim utilizada na consulta. Respeita RFC 3339."
          example: "2020-04-01T17:00:00Z"
        cpf:
          type: "string"
          title: "CPF"
          pattern: "/^\\d{11}$/"
          description: "Filtro pelo CPF do devedor. Não pode ser utilizado ao mesmo tempo que o CNPJ."
        cnpj:
          type: "string"
          title: "CNPJ"
          pattern: "^[0-9A-Z]{14}$"
          description: "Filtro pelo CNPJ do devedor. Não pode ser utilizado ao mesmo tempo que o CPF."
        locationPresente:
          type: "boolean"
          description: "Filtro pela existência de location vinculada."
        status:
          type: "string"
          title: "Status do registro da recorrência"
          description: "Filtro pelo status das recorrências."
        recebedor:
          type: "object"
          title: "Recebedor"
          properties:
            convenio:
              type: "string"
              title: "Convênio"
              description: "Convênio entre usuário e participante recebedor."
              maxLength: 60
        paginacao:
          $ref: "#/components/schemas/Paginacao"
    ParametrosConsultaCob:
      type: "object"
      title: "Parâmetros de Consulta de Cobrança"
      description: "[DEPRECADO] Parâmetros utilizados para a realização de uma consulta de cobranças."
      required: ["inicio", "fim", "paginacao"]
      properties:
        inicio:
          type: "string"
          format: "date-time"
          title: "Data de Início"
          description: "Data inicial utilizada na consulta. Respeita RFC 3339."
          example: "2020-04-01T00:00:00Z"
        fim:
          type: "string"
          format: "date-time"
          title: "Data de Fim"
          description: "Data de fim utilizada na consulta. Respeita RFC 3339."
          example: "2020-04-01T17:00:00Z"
        cpf:
          type: "string"
          title: "CPF"
          pattern: "/^\\d{11}$/"
          description: "Filtro pelo CPF do devedor. Não pode ser utilizado ao mesmo tempo que o CNPJ."
        cnpj:
          type: "string"
          title: "CNPJ"
          pattern: "^[0-9A-Z]{14}$"
          description: "Filtro pelo CNPJ do devedor. Não pode ser utilizado ao mesmo tempo que o CPF."
        locationPresente:
          type: "boolean"
          description: "Filtro pela existência de location vinculada."
        status:
          type: "string"
          title: "Status do registro da cobrança"
          description: "Filtro pelo status das cobranças."
        paginacao:
          $ref: "#/components/schemas/Paginacao"
    ParametrosConsultaCobR:
      type: "object"
      title: "Parâmetros de Consulta de Cobrança"
      description: "Parâmetros utilizados para a realização de uma consulta de cobranças."
      required: ["inicio", "fim", "paginacao"]
      properties:
        inicio:
          type: "string"
          format: "date-time"
          title: "Data de Início"
          description: "Data inicial utilizada na consulta. Respeita RFC 3339."
          example: "2020-04-01T00:00:00Z"
        fim:
          type: "string"
          format: "date-time"
          title: "Data de Fim"
          description: "Data de fim utilizada na consulta. Respeita RFC 3339."
          example: "2020-04-01T17:00:00Z"
        idRec:
          $ref: "#/components/schemas/RecId"
        cpf:
          type: "string"
          title: "CPF"
          pattern: "/^\\d{11}$/"
          description: "Filtro pelo CPF do devedor. Não pode ser utilizado ao mesmo tempo que o CNPJ."
        cnpj:
          type: "string"
          title: "CNPJ"
          pattern: "^[0-9A-Z]{14}$"
          description: "Filtro pelo CNPJ do devedor. Não pode ser utilizado ao mesmo tempo que o CPF."
        status:
          type: "string"
          title: "Status do registro da cobrança"
          description: "Filtro pelo status das cobranças."
        recebedor:
          type: "object"
          title: "Recebedor"
          properties:
            convenio:
              type: "string"
              title: "Convênio"
              description: "Convênio entre usuário e participante recebedor."
              maxLength: 60
        paginacao:
          $ref: "#/components/schemas/Paginacao"
    ParametrosConsultaLote:
      type: "object"
      title: "Parâmetros de consulta de lotes de cobrança com vencimento."
      description: "Parâmetros utilizados para a realização de uma consulta de lote de cobranças com vencimento."
      required: ["inicio", "fim", "paginacao"]
      properties:
        inicio:
          type: "string"
          format: "date-time"
          title: "Data de Início"
          description: "Data inicial utilizada na consulta. Respeita RFC 3339."
          example: "2020-04-01T00:00:00Z"
        fim:
          type: "string"
          format: "date-time"
          title: "Data de Fim"
          description: "Data de fim utilizada na consulta. Respeita RFC 3339."
          example: "2020-04-01T17:00:00Z"
        paginacao:
          $ref: "#/components/schemas/Paginacao"
    CobsVConsultadas:
      type: "object"
      title: "Cobranças com vencimento consultadas"
      required: ["parametros", "cobs"]
      properties:
        parametros:
          $ref: "#/components/schemas/ParametrosConsultaCob"
        cobs:
          type: "array"
          title: "Lista de cobranças"
          items:
            allOf:
              - $ref: "#/components/schemas/CobVCompleta"
              - required: ["status", "txid", "idCob"]
    CobsConsultadas:
      type: "object"
      title: "Cobranças imediatas consultadas"
      required: ["parametros", "cobs"]
      properties:
        parametros:
          $ref: "#/components/schemas/ParametrosConsultaCob"
        cobs:
          type: "array"
          title: "Lista de cobranças"
          items:
            allOf:
              - $ref: "#/components/schemas/CobCompleta"
              - required: ["status", "txid", "idCob"]
    CobsRConsultadas:
      type: "object"
      title: "Cobranças recorrentes consultadas"
      required: ["parametros", "cobsr"]
      properties:
        parametros:
          $ref: "#/components/schemas/ParametrosConsultaCobR"
        cobsr:
          type: "array"
          title: "Lista de cobranças"
          items:
            allOf:
              - $ref: "#/components/schemas/CobRCompleta"
    RecsConsultadas:
      type: "object"
      title: "Recorrencias consultadas"
      required: ["parametros", "recs"]
      properties:
        parametros:
          $ref: "#/components/schemas/ParametrosConsultaRec"
        recs:
          type: "array"
          title: "Lista de recorrências"
          items:
            allOf:
              - $ref: "#/components/schemas/RecCompletaPesquisada"
    Pix:
      type: "object"
      title: "Pix"
      required: ["endToEndId", "valor", "horario"]
      properties:
        endToEndId:
          $ref: "#/components/schemas/EndToEndId"
        txid:
          allOf:
            - $ref: "#/components/schemas/TxId"
            - pattern: "[a-zA-Z0-9]{1,35}"
        valor:
          type: "string"
          title: "Valor do Pix."
          pattern: "\\d{1,10}\\.\\d{2}"
          description: "Valor do Pix."
        componentesValor:
          type: "object"
          title: "Informações sobre o valor do Pix"
          description: |-
            O objetivo dessa estrutura é explicar os elementos de composição do valor do Pix, incluindo informações sobre as multas, juros, descontos e abatimentos quando o Pix for relativo a cobranças com vencimento.

            Regras da estrutura:
            - O `valor` do Pix é igual a: 
              - (`original.valor` + `saque.valor` + `troco.valor`) + `multa.valor` + `juros.valor` – `abatimento.valor` – `desconto.valor`
              considerando-se apenas os campos que estiverem presentes para cada tipo de cobrança pago.
            - As estruturas `saque` e `troco` só serão retornadas quando o Pix for relativo a um Pix Saque ou Pix Troco, respectivamente, e 
            as demais estruturas (`juros`, `multa`, `abatimento` e `desconto`) só serão pertinentes aos Pix de pagamentos das cobranças com vencimento.
            - Não pode haver simultaneamente uma subsestrutura do tipo `saque` e outra do tipo `troco`;
            - Não há restrição na ordem das subestruturas.

            Para o caso de um Pix Saque pode-se retornar `original` com valor=0.00 (zero) uma vez que a soma será respeitada, ou pode-se omitir a 
            subestrutura original. No caso de um Pix Troco ou de um pagamento de cobrança com vencimento a subsestrutura `original` vai sempre estar 
            presente.

            #### Exemplos válidos:
            Exemplo de preenchimentos válidos. 

            - **Pix para pagamento de cobrança imediata (sem saque ou troco).**
              ```
              ...
              "componentesValor": {
                "original": {
                  "valor": "100.00"
                } 
              }
              ...
              ```
            - **Pix Saque.**
              ```
              ...
              "componentesValor": {
                "saque": {
                  "valor": "100.00",
                  "modalidadeAgente": "AGPSS",
                  "prestadorDeServicoDeSaque": "12345678"
                } 
              }
              ...
              ```
            - **Pix para pagamento de cobrança imediata com saque (pode vir original.valor=0.00).**
              ```
              ...
              "componentesValor": {
                "original": {
                  "valor": "0.00"
                },
                "saque": {
                  "valor": "100.00",
                  "modalidadeAgente": "AGPSS",
                  "prestadorDeServicoDeSaque": "12345678"
                } 
              }
              ...
              ```
            - **Pix Troco.**
              ```
              ...
              "componentesValor": {
                "original": {
                  "valor": "80.00"
                },
                "troco": {
                  "valor": "20.00",
                  "modalidadeAgente": "AGTEC",
                  "prestadorDeServicoDeSaque": "12345678"
                } 
              }
              ...
              ```
            - **Pix para pagamento de cobrança imediata com troco (ordem não importa).**
              ```
              ...
              "componentesValor": {
                "troco": {
                  "valor": "20.00",
                  "modalidadeAgente": "AGTEC",
                  "prestadorDeServicoDeSaque": "12345678"
                },
                "original": {
                  "valor": "80.00"
                }
              }
              ...
              ```
            - **Pix para pagamento de cobrança com vencimento de R$100,00 considerando-se um atraso de 2 dias a uma multa de 3% e juros de 1% ao dia. O `valor` do Pix será R$105,00.**
              ```
              ...
              "componentesValor": {
                "original": {
                  "valor": "100.00"
                },
                "multa": {
                  "valor": "3.00"
                },
                "juros": {
                  "valor": "2.00"
                }
              }
              ...
              ```            
            #### Exemplos inválidos:
            Exemplos, não exaustivos, de preenchimentos inválidos.
            - **`original.valor` maior que 0.00 (zero) e `saque` juntos**
              ```
              ...
              "componentesValor": {
                "original": {
                  "valor": "80.00"
                },
                "saque": {
                  "valor": "20.00",
                  "modalidadeAgente": "AGPSS",
                  "prestadorDeServicoDeSaque": "12345678"
                } 
              }
              ...
              ```
            - **dois elementos de `saque`**
              ```
              ...
              "componentesValor": [
                "saque": {
                  "valor": "20.00",
                  "modalidadeAgente": "AGPSS",
                  "prestadorDeServicoDeSaque": "12345678"
                },
                "saque": {
                  "valor": "10.00",
                  "modalidadeAgente": "AGPSS",
                  "prestadorDeServicoDeSaque": "12345678"
                } 
              ]
              ...
              ```
            - **saque e troco simultaneamente**
              ```
              ...
              "componentesValor": {
                "original": {
                  "valor": "60.00"
                },
                "saque": {
                  "valor": "20.00",
                  "modalidadeAgente": "AGPSS",
                  "prestadorDeServicoDeSaque": "12345678"
                },
                "troco": {
                  "valor": "20.00",
                  "modalidadeAgente": "AGTEC",
                  "prestadorDeServicoDeSaque": "12345678"
                } 
              }
              ...
              ```
          anyOf:
            - $ref: "#/components/schemas/PixValorOriginal"
            - $ref: "#/components/schemas/PixValorSaque"
            - $ref: "#/components/schemas/PixValorTroco"
            - $ref: "#/components/schemas/PixValorJuros"
            - $ref: "#/components/schemas/PixValorMulta"
            - $ref: "#/components/schemas/PixValorAbatimento"
            - $ref: "#/components/schemas/PixValorDesconto"
        chave:
          type: "string"
          title: "Chave DICT do recebedor"
          description: |
            # Formato do campo chave

            * Campo chave do recebedor conforme atribuído na respectiva PACS008.
            * Os tipos de chave podem ser: telefone, e-mail, cpf/cnpj ou EVP.
            * O formato das chaves pode ser encontrado na seção "Formatação das chaves do DICT no BR Code" do [Manual de Padrões para iniciação do Pix](https://www.bcb.gov.br/estabilidadefinanceira/pix).
          maxLength: 77
        horario:
          type: "string"
          format: "date-time"
          title: "Horário"
          description: "Horário em que o Pix foi processado no PSP."
        infoPagador:
          type: "string"
          title: "Informação livre do pagador"
          maxLength: 140
        devolucoes:
          type: "array"
          title: "Devoluções"
          items:
            $ref: "#/components/schemas/Devolucao"
    PixAutomatico:
      type: "object"
      title: "Pix"
      required: ["txid","endToEndId", "valor", "horario"]
      properties:
        endToEndId:
          $ref: "#/components/schemas/EndToEndId"
        txid:
          allOf:
            - $ref: "#/components/schemas/TxId"
            - pattern: "[a-zA-Z0-9]{1,35}"
        valor:
          type: "string"
          title: "Valor do Pix."
          pattern: "\\d{1,10}\\.\\d{2}"
          description: "Valor do Pix."
          anyOf:
            - $ref: "#/components/schemas/PixValorOriginal"
            - $ref: "#/components/schemas/PixValorJuros"
            - $ref: "#/components/schemas/PixValorMulta"
            - $ref: "#/components/schemas/PixValorAbatimento"
            - $ref: "#/components/schemas/PixValorDesconto"
        horario:
          type: "string"
          format: "date-time"
          title: "Horário"
          description: "Horário em que o Pix foi processado no PSP."
        infoPagador:
          type: "string"
          title: "Informação livre do pagador"
          maxLength: 140
        devolucoes:
          type: "array"
          title: "Devoluções"
          items:
            $ref: "#/components/schemas/DevolucaoPixAutomatico"
    PixValorOriginal:
      type: "object"
      properties:
        original:
          type: "object"
          required: ["valor"]
          properties:
            valor:
              type: "string"
              title: "Valor original"
              description: "Valor original do Pix."
              pattern: "\\d{1,10}\\.\\d{2}"
    PixValorSaque:
      type: "object"
      properties:
        saque:
          type: "object"
          required: ["valor", "modalidadeAgente", "prestadorDoServicoDeSaque"]
          properties:
            valor:
              type: "string"
              title: "Valor do Saque Pix"
              description: "Valor do Saque Pix."
              pattern: "\\d{1,10}\\.\\d{2}"
            modalidadeAgente:
              type: "string"
              title: "Modalidade do Agente"
              description: |
                ##### Modalidade do Agente
                <table><tr><th>SIGLA</th><th>Descrição</th></tr><tr><td>AGTEC</td><td>Agente Estabelecimento Comercial</td></tr><tr><td>AGTOT</td><td>Agente Outra Espécie de Pessoa Jurídica ou Correspondente no País</td></tr><tr><td>AGPSS</td><td>Agente Facilitador de Serviço de Saque (<b>ATENÇÃO</b>: no mapeamento para o campo 'modalidadeAgente', da pacs.008, esse valor deve ser substituído por <b>AGFSS</b>)</td></tr></table>
              enum:
                - "AGTEC"
                - "AGTOT"
                - "AGPSS"
            prestadorDoServicoDeSaque:
              type: "string"
              title: "Facilitador de Serviço de Saque"
              pattern: "^[0-9A-Z]{8}$"
              description: "ISPB do Facilitador de Serviço de Saque"
    PixValorTroco:
      type: "object"
      properties:
        troco:
          type: "object"
          required: ["valor", "modalidadeAgente", "prestadorDoServicoDeSaque"]
          properties:
            valor:
              type: "string"
              title: "Valor do Troco Pix"
              description: "Valor do Troco Pix."
              pattern: "\\d{1,10}\\.\\d{2}"
            modalidadeAgente:
              type: "string"
              title: "Modalidade do Agente"
              description: |
                ##### Modalidade do Agente
                <table><tr><th>SIGLA</th><th>Descrição</th></tr><tr><td>AGTEC</td><td>Agente Estabelecimento Comercial</td></tr><tr><td>AGTOT</td><td>Agente Outra Espécie de Pessoa Jurídica ou Correspondente no País</td></tr></table>
              enum:
                - "AGTEC"
                - "AGTOT"
            prestadorDoServicoDeSaque:
              type: "string"
              title: "Facilitador de Serviço de Saque"
              pattern: "^[0-9A-Z]{8}$"
              description: "ISPB do Facilitador de Serviço de Saque"
    PixValorJuros:
      type: "object"
      properties:
        juros:
          type: "object"
          required: ["valor"]
          properties:
            valor:
              type: "string"
              title: "Valor relativo aos juros."
              description: "Valor dos juros."
              pattern: "\\d{1,10}\\.\\d{2}"
    PixValorMulta:
      type: "object"
      properties:
        multa:
          type: "object"
          required: ["valor"]
          properties:
            valor:
              type: "string"
              title: "Valor relativo a multa."
              description: "Valor da multa."
              pattern: "\\d{1,10}\\.\\d{2}"
    PixValorDesconto:
      type: "object"
      properties:
        desconto:
          type: "object"
          required: ["valor"]
          properties:
            valor:
              type: "string"
              title: "Valor relativo a desconto."
              description: "Valor do desconto."
              pattern: "\\d{1,10}\\.\\d{2}"
    PixValorAbatimento:
      type: "object"
      properties:
        abatimento:
          type: "object"
          required: ["valor"]
          properties:
            valor:
              type: "string"
              title: "Valor relativo a abatimento."
              description: "Valor do abatimento."
              pattern: "\\d{1,10}\\.\\d{2}"
    Devolucao:
      type: "object"
      title: "Devolução"
      required: ["id", "rtrId", "valor", "horario", "status"]
      properties:
        id:
          $ref: "#/components/schemas/DevolucaoId"
        rtrId:
          type: "string"
          title: "RtrId"
          description: "ReturnIdentification que transita na PACS004."
          example: "D12345678202009091000abcde123456"
          pattern: "[a-zA-Z0-9]{32}"
          minLength: 32
          maxLength: 32
        valor:
          type: "string"
          title: "Valor a devolver."
          pattern: "\\d{1,10}\\.\\d{2}"
          description: "Valor a devolver."
        natureza:
          $ref: "#/components/schemas/DevolucaoNatureza"
        descricao:
          type: "string"
          title: "Mensagem ao pagador relativa à devolução."
          maxLength: 140
          description: "O campo `descricao`, opcional, determina um texto a ser apresentado ao pagador contendo informações sobre a devolução. Esse texto será preenchido, na pacs.004, pelo PSP do recebedor, no campo RemittanceInformation. O tamanho do campo na pacs.004 está limitado a 140 caracteres."
        horario:
          type: "object"
          properties:
            solicitacao:
              type: "string"
              format: "date-time"
              title: "Horário de solicitação"
              description: "Horário no qual a devolução foi solicitada no PSP."
            liquidacao:
              type: "string"
              format: "date-time"
              title: "Horário de liquidacao"
              description: "Horário no qual a devolução foi liquidada no PSP."
        status:
          type: "string"
          title: "Status"
          description: "Status da devolução."
          enum: ["EM_PROCESSAMENTO", "DEVOLVIDO", "NAO_REALIZADO"]
        motivo:
          type: "string"
          title: "Descrição do status."
          description: |
            # Status da Devolução

            Campo opcional que pode ser utilizado pelo PSP recebedor para detalhar os motivos
            de a devolução ter atingido o status em questão.
            Pode ser utilizado, por exemplo, para detalhar o motivo de a devolução não ter sido realizada.
          maxLength: 140
    DevolucaoPixAutomatico:
      type: "object"
      title: "Devolução"
      required: ["id", "rtrId", "valor", "horario", "status"]
      properties:
        id:
          $ref: "#/components/schemas/DevolucaoId"
        rtrId:
          type: "string"
          title: "RtrId"
          description: "ReturnIdentification que transita na PACS004."
          example: "D12345678202009091000abcde123456"
          pattern: "[a-zA-Z0-9]{32}"
          minLength: 32
          maxLength: 32
        valor:
          type: "string"
          title: "Valor a devolver."
          pattern: "\\d{1,10}\\.\\d{2}"
          description: "Valor a devolver."
        natureza:
          $ref: "#/components/schemas/DevolucaoNaturezaPixAutomatico"
        descricao:
          type: "string"
          title: "Mensagem ao pagador relativa à devolução."
          maxLength: 140
          description: "O campo `descricao`, opcional, determina um texto a ser apresentado ao pagador contendo informações sobre a devolução. Esse texto será preenchido, na pacs.004, pelo PSP do recebedor, no campo RemittanceInformation. O tamanho do campo na pacs.004 está limitado a 140 caracteres."
        horario:
          type: "object"
          properties:
            solicitacao:
              type: "string"
              format: "date-time"
              title: "Horário de solicitação"
              description: "Horário no qual a devolução foi solicitada no PSP."
            liquidacao:
              type: "string"
              format: "date-time"
              title: "Horário de liquidacao"
              description: "Horário no qual a devolução foi liquidada no PSP."
        status:
          type: "string"
          title: "Status"
          description: "Status da devolução."
          enum: ["EM_PROCESSAMENTO", "DEVOLVIDO", "NAO_REALIZADO"]
        motivo:
          type: "string"
          title: "Descrição do status."
          description: |
            # Status da Devolução

            Campo opcional que pode ser utilizado pelo PSP recebedor para detalhar os motivos
            de a devolução ter atingido o status em questão.
            Pode ser utilizado, por exemplo, para detalhar o motivo de a devolução não ter sido realizada.
          maxLength: 140
    DevolucaoSolicitada:
      type: "object"
      required: ["valor"]
      properties:
        valor:
          type: "string"
          title: "Valor"
          pattern: "\\d{1,10}\\.\\d{2}"
          description: "Valor solicitado para devolução. A soma dos valores de todas as devolucões não podem ultrapassar o valor total do Pix."
        natureza:
          $ref: "#/components/schemas/DevolucaoSolicitadaNatureza"
        descricao:
          type: "string"
          title: "Mensagem ao pagador relativa à devolução."
          description: "O campo `descricao`, opcional, determina um texto a ser apresentado ao pagador contendo informações sobre a devolução. Esse texto será preenchido, na pacs.004, pelo PSP do recebedor, no campo RemittanceInformation. O tamanho do campo na pacs.004 está limitado a 140 caracteres."
          maxLength: 140
    ParametrosConsultaPayloadLocation:
      type: "object"
      title: "Parâmetros de consulta de locations"
      description: "Parâmetros utilizados para a realização de uma consulta de locations."
      required: ["inicio", "fim", "paginacao"]
      properties:
        inicio:
          type: "string"
          format: "date-time"
          title: "Data de Início"
          description: "Data inicial utilizada na consulta. Respeita RFC 3339."
          example: "2020-01-01T00:00:00Z"
        fim:
          type: "string"
          format: "date-time"
          title: "Data de Fim"
          description: "Data de fim utilizada na consulta. Respeita RFC 3339."
          example: "2020-12-01T17:00:00Z"
        txIdPresente:
          type: "boolean"
          description: "Filtro pela existência de txid."
        tipoCob:
          type: "string"
          enum:
            - "cob"
            - "cobv"
        paginacao:
          $ref: "#/components/schemas/Paginacao"
    ParametrosConsultaPayloadLocationRec:
      type: "object"
      title: "Parâmetros de consulta de locations"
      description: "Parâmetros utilizados para a realização de uma consulta de locations."
      required: ["inicio", "fim", "paginacao"]
      properties:
        inicio:
          type: "string"
          format: "date-time"
          title: "Data de Início"
          description: "Data inicial utilizada na consulta. Respeita RFC 3339."
          example: "2020-01-01T00:00:00Z"
        fim:
          type: "string"
          format: "date-time"
          title: "Data de Fim"
          description: "Data de fim utilizada na consulta. Respeita RFC 3339."
          example: "2020-12-01T17:00:00Z"
        idRecPresente:
          type: "boolean"
          description: "Filtro pela existência de id da recorrência."
        recebedor:
          type: "object"
          title: "Recebedor"
          properties:
            convenio:
              type: "string"
              title: "Convênio"
              description: "Convênio entre usuário e participante recebedor."
              maxLength: 60
        paginacao:
          $ref: "#/components/schemas/Paginacao"
    PayloadLocationConsultadas:
      type: "object"
      title: "Locations Consultadas"
      required: ["parametros", "loc"]
      properties:
        parametros:
          $ref: "#/components/schemas/ParametrosConsultaPayloadLocation"
        loc:
          type: "array"
          title: "Lista de locations cadastradas"
          items:
            allOf:
              - $ref: "#/components/schemas/PayloadLocationCompleta"
    PayloadLocationRecConsultadas:
      type: "object"
      title: "Locations Consultadas"
      required: ["parametros", "loc"]
      properties:
        parametros:
          $ref: "#/components/schemas/ParametrosConsultaPayloadLocationRec"
        loc:
          type: "array"
          title: "Lista de locations cadastradas"
          items:
            allOf:
              - $ref: "#/components/schemas/PayloadLocationRecCompleta"
    ParametrosConsultaPix:
      type: "object"
      title: "Parâmetros de Consulta Pix"
      description: "Parâmetros utilizados para a realização de uma consulta de Pix."
      required: ["inicio", "fim", "paginacao"]
      properties:
        inicio:
          type: "string"
          format: "date-time"
          title: "Data de Início"
          description: "Data inicial utilizada na consulta. Respeita RFC 3339."
          example: "2020-01-01T00:00:00Z"
        fim:
          type: "string"
          format: "date-time"
          title: "Data de Fim"
          description: "Data de fim utilizada na consulta. Respeita RFC 3339."
          example: "2020-12-01T17:00:00Z"
        txid:
          allOf:
            - $ref: "#/components/schemas/TxId"
            - pattern: "[a-zA-Z0-9]{1,35}"
        txIdPresente:
          type: "boolean"
          description: "Filtro pela existência de txid."
        devolucaoPresente:
          type: "boolean"
          description: "Filtro pela existência de devolução."
        cpf:
          type: "string"
          pattern: "/^\\d{11}$/"
          description: "CPF"
        cnpj:
          type: "string"
          pattern: "^[0-9A-Z]{14}$"
          description: "CNPJ"
        paginacao:
          $ref: "#/components/schemas/Paginacao"
    ParametrosConsultaWebhooks:
      type: "object"
      title: "Parâmetros de Consulta de Webhooks"
      description: "Parâmetros utilizados para a realização de uma consulta de Webhooks."
      properties:
        inicio:
          type: "string"
          format: "date-time"
          title: "Data de Início"
          description: "Data inicial utilizada na consulta. Respeita RFC 3339."
          example: "2020-01-01T00:00:00Z"
        fim:
          type: "string"
          format: "date-time"
          title: "Data de Fim"
          description: "Data de fim utilizada na consulta. Respeita RFC 3339."
          example: "2020-12-01T17:00:00Z"
        paginacao:
          $ref: "#/components/schemas/Paginacao"
    PixConsultados:
      type: "object"
      title: "Pix Consultados"
      required: ["parametros", "cobs"]
      properties:
        parametros:
          $ref: "#/components/schemas/ParametrosConsultaPix"
        pix:
          type: "array"
          title: "Lista de Pix recebidos"
          items:
            allOf:
              - $ref: "#/components/schemas/Pix"
    WebhooksConsultados:
      type: "object"
      title: "Webhooks Consultados"
      required: ["webhooks"]
      properties:
        parametros:
          $ref: "#/components/schemas/ParametrosConsultaWebhooks"
        webhooks:
          type: "array"
          title: "Lista de Webhooks consultados"
          items:
            allOf:
              - $ref: "#/components/schemas/WebhookCompleto"
    WebhooksRecConsultados:
      type: "object"
      title: "Webhooks de Recorrências Consultados"
      required: ["webhooksrec"]
      properties:
        parametros:
          $ref: "#/components/schemas/ParametrosConsultaWebhooks"
        webhooksrec:
          type: "array"
          title: "Lista de Webhooks de Recorrências consultados"
          items:
            allOf:
              - $ref: "#/components/schemas/WebhookRecCompleto"
    Paginacao:
      type: "object"
      title: "Paginação"
      required:
        [
          "paginaAtual",
          "itensPorPagina",
          "quantidadeDePaginas",
          "quantidadeTotalDeItens",
        ]
      properties:
        paginaAtual:
          type: "integer"
          title: "Página atual"
          description: "Número da página recuperada."
          minimum: 0
        itensPorPagina:
          type: "integer"
          title: "Itens por página"
          description: "Quantidade de registros retornado na página."
          minimum: 1
        quantidadeDePaginas:
          type: "integer"
          title: "Quantidade de páginas"
          description: "Quantidade de páginas disponíveis para consulta."
          minimum: 1
        quantidadeTotalDeItens:
          type: "integer"
          title: "Quantidade total de itens"
          description: "Quantidade total de itens disponíveis de acordo com os parâmetros informados."
          minimum: 0
    Violacao:
      type: "object"
      title: "Violações"
      properties:
        razao:
          type: "string"
          title: "Descrição do erro"
          description: "Descrição do erro"
          example: "Valor da cobrança não pode ser 0.00"
        propriedade:
          type: "string"
          title: "Nome da propriedade"
          description: "Nome da propriedade"
          example: "cob.chave"
        valor:
          type: "string"
          title: "Valor da propriedade"
          description: "Valor da propriedade"
          example: "061996671234"
    Problema:
      type: object
      required: ["type", "title", "status"]
      properties:
        type:
          type: string
          format: uri
          description: "URI de referência que identifica o tipo de problema. De acordo com a RFC 7807."
          example: "https://pix.bcb.gov.br/api/v2/error/NaoEncontrado"
        title:
          type: string
          description: "Descrição resumida do problema."
          example: Not found
        status:
          type: integer
          description: "Código HTTP do status retornado."
          example: 404
        detail:
          type: string
          description: "Descrição completa do problema."
        correlationId:
          type: string
          description: Identificador de correlação do problema para fins de suporte
        violacoes:
          type: array
          items:
            $ref: "#/components/schemas/Violacao"
    Inicio:
      type: "string"
      format: "date-time"
      title: "Data de início"
      description: "Filtra os registros cuja data de criação seja maior ou igual que a data de início. Respeita RFC 3339."
    Fim:
      type: "string"
      format: "date-time"
      title: "Data de fim"
      description: "Filtra os registros cuja data de criação seja menor ou igual que a data de fim. Respeita RFC 3339."
  parameters:
    paginaAtual:
      in: "query"
      name: "paginacao.paginaAtual"
      required: false
      schema:
        type: "integer"
        format: "int32"
        title: "Página atual"
        minimum: 0
        default: 0
        description: "Página a ser retornada pela consulta. Se não for informada, o PSP assumirá que será 0."
    itensPorPagina:
      in: "query"
      name: "paginacao.itensPorPagina"
      required: false
      schema:
        type: "integer"
        format: "int32"
        title: "Itens por Página"
        minimum: 1
        maximum: 1000
        default: 100
        description: "Quantidade máxima de registros retornados em cada página. Apenas a última página pode conter uma quantidade menor de registros."
  responses:
    RequisicaoInvalida:
      description: "Problemas na requisição."
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/Problema"
    NaoEncontrado:
      description: "Recurso solicitado não foi encontrado."
      content:
        application/problem+json:
          schema:
            $ref: "#/components/schemas/Problema"
          examples:
            exemplo1:
              $ref: "#/components/examples/NaoEncontradoExample1"
    AcessoNegado:
      description: "Requisição de participante autenticado que viola alguma regra de autorização."
      content:
        application/problem+json:
          schema:
            $ref: "#/components/schemas/Problema"
          examples:
            exemplo1:
              $ref: "#/components/examples/AcessoNegadoExample1"
    ServicoIndisponivel:
      description: "Serviço não está disponível no momento. Serviço solicitado pode estar em manutenção ou fora da janela de funcionamento."
      content:
        application/problem+json:
          schema:
            $ref: "#/components/schemas/Problema"
          examples:
            exemplo1:
              $ref: "#/components/examples/ServicoIndisponivelExample1"
