SigNoz/signoz · error
order must be asc or desc
Error message
order must be asc or desc
What it means
QueryRuleStateHistory.Validate restricts the Order param for rule state history to exactly 'asc' or 'desc'; any other value (including empty, uppercase, or 'ascending') is rejected.
Source
Thrown at pkg/query-service/model/alerting.go:167
type QueryRuleStateHistory struct {
Start int64 `json:"start"`
End int64 `json:"end"`
State string `json:"state"`
Filters *v3.FilterSet `json:"filters"`
Offset int64 `json:"offset"`
Limit int64 `json:"limit"`
Order string `json:"order"`
}
func (r *QueryRuleStateHistory) Validate() error {
if r.Start == 0 || r.End == 0 {
return fmt.Errorf("start and end are required")
}
if r.Offset < 0 || r.Limit < 0 {
return fmt.Errorf("offset and limit must be greater than 0")
}
if r.Order != "asc" && r.Order != "desc" {
return fmt.Errorf("order must be asc or desc")
}
return nil
}
type RuleStateHistoryContributor struct {
Fingerprint uint64 `json:"fingerprint" ch:"fingerprint"`
Labels LabelsString `json:"labels" ch:"labels"`
Count uint64 `json:"count" ch:"count"`
RelatedTracesLink string `json:"relatedTracesLink"`
RelatedLogsLink string `json:"relatedLogsLink"`
}
type RuleStateTransition struct {
RuleID string `json:"ruleID" ch:"rule_id"`
State AlertState `json:"state" ch:"state"`
FiringTime int64 `json:"firingTime" ch:"firing_time"`
ResolutionTime int64 `json:"resolutionTime" ch:"resolution_time"`
}View on GitHub (pinned to 5069bf80b0)
Solutions
- Send order=asc or order=desc exactly (lowercase)
- Default to 'desc' client-side when the user hasn't chosen
- Lowercase and trim user input before sending
Example fix
// before GET /api/rules/<id>/state_history?order=ASC&start=..&end=.. // after GET /api/rules/<id>/state_history?order=asc&start=..&end=..
Defensive patterns
Strategy: validation
Validate before calling
if r.Order != "asc" && r.Order != "desc" {
r.Order = "desc"
} Type guard
func isValidOrder(s string) bool { return s == "asc" || s == "desc" } Prevention
- Default order to 'desc' when unset
- Normalize case before sending
When it happens
Trigger: Sending order=ASC, order=ascending, or omitting order entirely while calling getRuleStateHistory.
Common situations: Clients defaulting to verbose direction names; case-sensitive strings from user input; missing param because the developer assumed a server-side default.
Related errors
- start and end are required
- offset and limit must be greater than 0
- CodeLicenseUnavailable
- CodeLicenseUnavailable
- CodeInvalidInput
AI-assisted analysis of SigNoz/signoz@5069bf80b0 (2026-08-28).
Data as JSON: /api/errors/b4db580312a86cd2.
Report an issue: GitHub.