Skip to content
Novus Examples
json246 B

Prometheus HTTP API — Error Envelope with a PromQL Parse Error (json)

The error envelope a Prometheus API returns for a malformed PromQL query — status, errorType, a message with a line and column position, and an empty but present data object. Clients that only check for a data key render this as a successful empty result.

Preview — first 10 linesjson
{
  "status": "error",
  "errorType": "bad_data",
  "error": "invalid parameter \"query\": 1:26: parse error: unexpected identifier \"by\" in aggregation expression, expected \"(\"",
  "data": {
    "resultType": "vector",
    "result": []
  }
}

Specifications

Status
error
Error Type
bad_data
Http Status
400
Carries Empty Data
true
Has Line Column Position
true

Testing contract

Expected to pass
Scenario
Send a malformed query and handle the response in your API client.
Expected result
The client reports the parse error with its 1:26 position instead of rendering an empty chart, because it checks status before reading data.

What is a .json file?

JSON (JavaScript Object Notation) is a lightweight, text-based data-interchange format representing objects, arrays, strings, numbers, booleans, and null. It is language-independent, human-readable, and the dominant format for web APIs and configuration. It requires a single well-formed root value.

How to use this file

Use an example JSON file to test parsers and serializers, schema validation, Unicode and number-precision handling, and API request or response processing.

How to use this file for testing

“Prometheus HTTP API — Error Envelope with a PromQL Parse Error (json)” is a deterministic Novus Examples fixture for Observability, Error handling, API testing. Structured and plain-text telemetry with known timestamps, levels, request identifiers, and error states for testing log ingestion, correlation, dashboards, and alert pipelines.

Documented properties for this file: JSON · 246 bytes. Compare results against paired or grouped companions on this page when present (clean↔damaged, searchable↔scanned, or format twins) so scores stay reproducible across runs.

Download the file once, keep the path stable in CI or local scripts, and treat the spec table as the contract: dimensions, seeds, field lists, and roles are intentional. Corrupt or invalid samples are labelled as such — expect parsers to fail loudly rather than silently accept them.

Telemetry fixtures use fixed trace IDs, span IDs, and timestamps so ingestion is reproducible run to run. Point your collector, parser, or query layer at the file and assert the documented span tree, metric families, or severity mix; service and host names are invented.

Code examples

import json

with open("prometheus-api-error.json") as f:
    data = json.load(f)
print(type(data), len(data))

Generated by generation/observability.py. Free for any use, no attribution required — license.