Bug Description
Two sibling endpoints in the same API, both scoped in their own documentation
to Agency Plan orders, decline the same unentitled request two different
ways when queried against a non-Agency order. One returns a well-formed
200 body with populated limits but empty metrics and websites
arrays — a response that is indistinguishable from a true reading of
"nothing happening" on an entitled order. The other returns a 404-shaped
error. Same API, same entitlement boundary, two different behaviors.
Steps to Reproduce
- Have an order on a plan that is not Agency Plan (tested against a
hostinger_business order).
- Call
listOrderResourceUsageMetricsV1 with a 24h window, then again with
a 720h window.
- Call
listAgencyPlanOrderDiskUsageMetricsV1 on the same order with a
1-day window, then again with a 30-day window.
- Compare the two response shapes.
Both pairs of calls were made within the same minute against the same order.
Expected Behavior
An unentitled request against an Agency-Plan-scoped endpoint should be
distinguishable from a true empty reading — either both endpoints should
signal "not entitled" the same way, or the resource-usage endpoint should
not return a 200 with empty arrays when the caller has no entitlement to
see resource usage at all.
Actual Behavior
| Endpoint |
Windows tried |
Response |
listOrderResourceUsageMetricsV1 |
24 h, 720 h |
200, well-formed body, populated limits, empty metrics and websites |
listAgencyPlanOrderDiskUsageMetricsV1 |
1 d, 30 d |
{"message":"[Hosting:9999] Not found.","correlation_id":…} |
The first endpoint's 200-with-empty-arrays is indistinguishable, to any
consumer, from a true reading that nothing is happening — and its sibling
already demonstrates the honest behavior instead, so this reads as an
inconsistency rather than a deliberate design choice.
Error Messages / Stack Trace
Correlation ids for the two disk-usage calls (both 404-shaped):
- 1 day window:
a2a3ce32-3819-4503-8c30-967f204bec6c
- 30 day window:
a2a3ce42-1ee5-4074-bbf7-010c9eb28d02
Both returned:
{"message":"[Hosting:9999] Not found.","correlation_id":"…"}
Additional Context
Both endpoints are documented as scoped to Agency Plan orders. This was
observed on a hostinger_business-plan order, so the request was unentitled
either way — the finding is about the two endpoints disagreeing on how to
decline it, not about which one is "right" to decline.
Bug Description
Two sibling endpoints in the same API, both scoped in their own documentation
to Agency Plan orders, decline the same unentitled request two different
ways when queried against a non-Agency order. One returns a well-formed
200body with populatedlimitsbut emptymetricsandwebsitesarrays — a response that is indistinguishable from a true reading of
"nothing happening" on an entitled order. The other returns a
404-shapederror. Same API, same entitlement boundary, two different behaviors.
Steps to Reproduce
hostinger_businessorder).listOrderResourceUsageMetricsV1with a 24h window, then again witha 720h window.
listAgencyPlanOrderDiskUsageMetricsV1on the same order with a1-day window, then again with a 30-day window.
Both pairs of calls were made within the same minute against the same order.
Expected Behavior
An unentitled request against an Agency-Plan-scoped endpoint should be
distinguishable from a true empty reading — either both endpoints should
signal "not entitled" the same way, or the resource-usage endpoint should
not return a
200with empty arrays when the caller has no entitlement tosee resource usage at all.
Actual Behavior
listOrderResourceUsageMetricsV1200, well-formed body, populatedlimits, emptymetricsandwebsiteslistAgencyPlanOrderDiskUsageMetricsV1{"message":"[Hosting:9999] Not found.","correlation_id":…}The first endpoint's
200-with-empty-arrays is indistinguishable, to anyconsumer, from a true reading that nothing is happening — and its sibling
already demonstrates the honest behavior instead, so this reads as an
inconsistency rather than a deliberate design choice.
Error Messages / Stack Trace
Correlation ids for the two disk-usage calls (both
404-shaped):a2a3ce32-3819-4503-8c30-967f204bec6ca2a3ce42-1ee5-4074-bbf7-010c9eb28d02Both returned:
{"message":"[Hosting:9999] Not found.","correlation_id":"…"}Additional Context
Both endpoints are documented as scoped to Agency Plan orders. This was
observed on a
hostinger_business-plan order, so the request was unentitledeither way — the finding is about the two endpoints disagreeing on how to
decline it, not about which one is "right" to decline.