I have a set of api endpoints called by patreon webhooks.
All of the calls work, except for members:pledge:delete.
When I try sending a test message for this webhook the json that is sent is malformed.
Specifically the included list is not formatted properly.
This is an example of the json that is sent to me:
This is what I and Json expects:
This missing ‘}’ seams to be a persistent issue, because I think all webhooks fail to append the last ‘}’ of any json they send.
Because its the last ‘}’ the webhooks still work, but this points to a more persistent issue in how patreon formats json stings.
Additionally, the members:pledge:delete webhook does not register the failed send attempt.
Because of the malformed json my api endpoint throws an exception, and this should be logged as a failed send for the webhook, but it does not.
As far as I am aware this is the only webhook to behave this way.
Is that what you are getting from the raw post when it arrives at the edge of your infra/server etc? Or is it what you get from something that accepts and formats that result?
This is a striped down example of the data I receive.
Obviously there is more data in the real message, but I did not want to post my personal data.
What I posted illustrates the problem. I have not handled the data in any way.
Patreon sends me a malformed json.
There hasnt been any case of malformed json being reported up until now. Try to make sure that no library or infra/server in your stack is formatting the data and causing this.
It may be the case that only the test data that patron sends is affected.
I have received successful and well formatted package triggered by real users.
But when I send test data, the data is malformed.
The data is taken from the package body, not anything that has been manipulated by me, my program or tech stack.
Additionally, the error is also very specific, where some data sent by patron is fine, and this specifically is not.
The error is consistent in that only test data seams is malformed in this way, although I don’t have enough traffic to unilaterally say that all real data is fine. This may be why you have had no reports of errors.
The same tech stack is also processing both the successful and the unsuccessful packages.
Since it cannot be reproduced, you will need to debug it on your side.