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

  1. Set orderParam to a value from allowedOrderParams in parser.go for your version (typically 'timestamp' or 'frequency')
  2. Omit both order and orderParam to use the default sort
  3. 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

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.