HTTPS API read_state status code 429 Can only request up to 1 paths for request_status

Hi, I am seeing a 429 error on read_state requests with the following response: Can only request up to 1 paths for request_status.
The agent calls for the following 5 paths in each read_state request:
/time
/request_status/<request_id>/status
/request_status/<request_id>/reply
/request_status/<request_id>/reject_code
/request_status/<request_id>/reject_message
The agent code was working before and unchanged since this error.
Is there a new change in the http-api?

Looks like a limit of one request ID per query was introduced recently.

Unfortunately, the way request IDs are counted in the validation logic is inaccurate. I.e. the code counts the number of times /request_status appears among all requested paths, not the number of distinct request IDs. So in your case, the validation code bails out because it sees you requesting 4 different /request_status paths instead of exactly one request ID. The issue was hidden before, because there was a limit of 100 request IDs (or rather 100 paths containing /request_status).

The workaround is for you to query for [/time, /request_status/<request_id>] instead of enumerating all children of /request_status/<request_id>. That will return all children of /request_status/<request_id>, no need to enumerate them.

In the meantime, I’ll file an issue to get this properly fixed.

2 Likes

What agent are you talking about? agent-rs only requests the prefix /request_status/<request_id> so it should work just fine.

@mraszyk
This Dart/Flutter agent ic_tools | Dart Package.
Here is where the agent requests the paths.

The fix has been merged and should be available with the next release.

Thanks @free and @mraszyk.