Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

PUT deveria efetuar alteração/revisão? #571

Open
johngalt85 opened this issue Oct 10, 2023 · 3 comments
Open

PUT deveria efetuar alteração/revisão? #571

johngalt85 opened this issue Oct 10, 2023 · 3 comments

Comments

@johngalt85
Copy link

Um PUT no recurso /cob ou /cobv, deveria fazer alteração?
Pois existe o PATCH para isso, não é?
Além de um verbo específico para alteração, permitir que o PUT o faça também, não é errado, uma vez que deveria rejeitar a criação por TXID já existente?

@rubenskuhl
Copy link

Me parece que não deveria poder fazer alteração, já que isso quebra idempotência. Apenas PUT com os mesmos dados anteriores deviam ser aceitos IMHO.

@johngalt85
Copy link
Author

Minha aplicação estava equivocadamente enviando um mesmo Txid para o recurso PUT /cob, com outros dados de cobrança, como se fosse uma nova cobrança de fato, só mantendo o Txid, porém a cada PUT a cobrança era alterada, já identifiquei e corrigi.
Porém, meu questionamento é se o fato de estar usando PUT /cob, a requisição não deveria simplesmente ser recusada por Txid já existente? Reforçando esse argumento, o fato de já existir o PATCH /cob com a finalidade específica de alteração, porém lendo a documentação(swagger, spec) não localizei nada taxativo em impedir que PUT /cob faça alteração, para que eu possa questionar o PSP Recebedor fornecedor da API, de forma embasada na documentação BACEN.

@rubenskuhl
Copy link

rubenskuhl commented Oct 10, 2023

Minha aplicação estava equivocadamente enviando um mesmo Txid para o recurso PUT /cob, com outros dados de cobrança, como se fosse uma nova cobrança de fato, só mantendo o Txid, porém a cada PUT a cobrança era alterada, já identifiquei e corrigi. Porém, meu questionamento é se o fato de estar usando PUT /cob, a requisição não deveria simplesmente ser recusada por Txid já existente? Reforçando esse argumento, o fato de já existir o PATCH /cob com a finalidade específica de alteração, porém lendo a documentação(swagger, spec) não localizei nada taxativo em impedir que PUT /cob faça alteração, para que eu possa questionar o PSP Recebedor fornecedor da API, de forma embasada na documentação BACEN.

Por mais que eu ache isso uma violação de idempotência, a documentação do BACEN ampara o que fez o PSP nesse caso:

__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.

Ou seja, o que diz o BACEN é que uma cobrança ATIVA (ou seja, nem paga nem removida) pode ser alterada via PUT, não apenas via PATCH.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants