SigNoz/signoz · error · errors.Error
CodeLicenseUnavailable
CodeLicenseUnavailable
Error message
no valid license found
What it means
On the errors list endpoint, when order is provided the orderParam must be one of allowedOrderParams (supported sort fields such as timestamp/frequency); otherwise parseListErrorsRequest fails with 'given orderParam: %s is not allowed in query'.
Source
Thrown at ee/gateway/httpgateway/provider.go:217
return err
}
return nil
}
func (provider *Provider) DeleteIngestionKeyLimit(ctx context.Context, orgID valuer.UUID, limitID string) error {
_, err := provider.do(ctx, orgID, http.MethodDelete, "/v1/workspaces/me/limits/"+limitID, nil, nil)
if err != nil {
return err
}
return nil
}
func (provider *Provider) do(ctx context.Context, orgID valuer.UUID, method string, path string, queryParams url.Values, body []byte) ([]byte, error) {
license, err := provider.licensing.GetActive(ctx, orgID)
if err != nil {
return nil, errors.New(errors.TypeLicenseUnavailable, errors.CodeLicenseUnavailable, "no valid license found").WithAdditional("this feature requires a valid license").WithAdditional(err.Error())
}
// build url
requestURL := provider.config.URL.JoinPath(path)
// add query params to the url
if queryParams != nil {
requestURL.RawQuery = queryParams.Encode()
}
// build request
request, err := http.NewRequestWithContext(ctx, method, requestURL.String(), bytes.NewBuffer(body))
if err != nil {
return nil, err
}
// add headers needed to call gateway
request.Header.Set("Content-Type", "application/json")View on GitHub (pinned to 5069bf80b0)
Solutions
- Set orderParam to a value from allowedOrderParams in parser.go for your version (typically 'timestamp' or 'frequency')
- Omit both order and orderParam to use the default sort
- Upgrade SigNoz if a newer version allows the field you need
Example fix
# before curl '.../api/v1/errors?limit=100&order=asc&orderParam=service.name' # after curl '.../api/v1/errors?limit=100&order=asc&orderParam=timestamp'
Defensive patterns
Strategy: validation
Validate before calling
var allowedOrderParams = []string{"timestamp", "frequency"} // mirror parser.go for your version
if op := q.Get("orderParam"); op != "" && !slices.Contains(allowedOrderParams, op) {
q.Del("orderParam")
} Type guard
null
Try / catch
null
Prevention
- Check allowedOrderParams for your SigNoz version
- Omit sorting params entirely for default behavior
- Don't assume every displayed column is sortable
When it happens
Trigger: GET /api/v1/errors with a valid order=asc but orderParam set to an unlisted field (e.g. orderParam=service.name, orderParam=traceID) in your SigNoz version.
Common situations: Sorting by a field shown in the UI table that isn't sortable server-side; version differences in the allowed set; copy-pasting orderParam between /errors and other endpoints with different vocabularies.
Related errors
AI-assisted analysis of SigNoz/signoz@5069bf80b0 (2026-08-28).
Data as JSON: /api/errors/ad158927bd43080c.
Report an issue: GitHub.