Hello, I am using the suggested.approved webhook in Crowdin to automate actions when a suggestion is approved. Currently, the webhook payload includes useful fields such as translator information. However, I need to retrieve information about the proofreader (e.g., ID or username) who approved the suggestion.
From my research, the webhook payload does not seem to include proofreader details by default. I understand that Crowdin supports custom webhook payloads, but it’s unclear if proofreader-specific information is accessible through this mechanism. Thanks!
Thank you for confirming that the suggested.approved webhook should include the username and user ID of the approver. However, in my case, the webhook payload does not seem to include these details, it’s return translator information instead.
Could you help verify if there might be a bug affecting the webhook.
Any guidance on how to resolve this would be greatly appreciated!
Is it a different user who approved the suggestion?
If it’s a different user, would you be able to run the Get Approval API call (with any sandbox tool like Postman)? As webhooks have similar logic to APIs, it would be great to know whether this issue is webhook-only or not.
Last but not least, could you share the URL (in the Crowdin Editor) to the string that triggered that webhook? So I can review string history via my database.
If the project is private, you can send me a direct message or email us at support@crowdin.com.
Different User: Yes, it was a different user who approved the suggestion.
API Test: I tested the scenario using the Get Approval API, and it works as expected, the API returns the approver details correctly. This suggests the issue might be specific to the webhook.
URL to the string that triggered the webhook sent by email.
Please let me know if you need any further details to investigate this issue.
Unfortunately, APIs and webhooks are different things, webhooks are notifications, and we have a standardized payload there, where there is a translation object, such as everywhere in similar events, they contain only the author of the translation (i.e. “translation” object only, no “approval” object)
But you can modify your pipeline a little if necessary. As a result, after receiving the webhook you can call the API and see who made that approval.
We don’t have any plans on the roadmap to somehow modify or change system logic here.
Thank you for clarifying.
Since I will need to call the API after receiving the webhook to fetch the approver details, could you confirm the rate limit for the Get Approval API endpoint? I could not find this information specified in the documentation, so your guidance would be very helpful to ensure my pipeline adheres to Crowdin’s API limits.
The number of simultaneous API requests per account is 20 requests.
This includes requests from all tokens created under a single account (e.g., 20 requests from one token, 10 requests from two separate tokens, or 1 request from 20 separate tokens).
Response code 429 Too Many Requests is returned when the limit is exceeded.
Hi @Dima Thank you for the clarifications provided but I have another follow up question:
The Get Approval API requires Approval ID. which is not present in the event suggestion.approvedpayload coz there is no approval object. And per API docs the approval ID is fetched via API List Translation Approvals which accepts translationID and returns a list of all translation approvals.
In that case how are we going to cohesively link the suggestion.approved event translation ID to its corresponding approval ID? OR is the translation ID the same as the approval ID?
Can you provide some extra context about your workflow, what’s the reason for particular approve ID and approve events? Perhaps if I have the full picture I can suggest a more simple approach.
Thank you for your response.
But our use case is not that sophisticated we only need the ONE only approval user from the suggestion.approved event.
So you saying Yes, correct are you confirming that the translationID is the same as approvalID? and we can use translationID directly in the Get Approval API to get the approval username who approved that translation?
Serge, yes, on the system level there’s a “translation” object only, no “approval” object, so the workflow based on this process/request with these requests may be limited.