{
  "openapi": "3.1.0",
  "info": {
    "title": "SandboxAPIs — Prometheus (paths only)",
    "version": "coverage-manifest-rev-5",
    "summary": "The 30 read paths SandboxAPIs serves on Prometheus.",
    "description": "Every read SandboxAPIs serves on Prometheus, pointed at https://prom.sandboxapis.dev.\n\n30 requests, one per served row of our coverage manifest. PATHS ONLY: this file carries no request or\nresponse schema, because a schema is the part of an API description we do not own. It is generated from\ncoverage/COVERAGE_MANIFEST.yaml — our own record of what THIS host answers — and never from a vendor's\npublished specification, several of which may not be redistributed.\n\nThe host is read-only. Every write verb answers the provider's own error shape with a message naming what was\nattempted; the \"Read-only refusal, on purpose\" folder holds one so the shape is discoverable.\n\nNo credentials are needed — any value in `apiKey` is accepted, and a real SandboxAPIs key only raises the rate\nlimit. Path variables left blank are identifiers that move when the live host re-rolls; fill them from a list\nresponse."
  },
  "servers": [
    {
      "url": "https://prom.sandboxapis.dev",
      "description": "The live Prometheus host"
    }
  ],
  "security": [
    {
      "sandboxapisKey": []
    }
  ],
  "components": {
    "securitySchemes": {
      "sandboxapisKey": {
        "type": "http",
        "scheme": "bearer",
        "description": "Authorization: Bearer <key> (what a Prometheus behind an authenticating proxy expects)"
      }
    }
  },
  "paths": {
    "/alertmanagers": {
      "get": {
        "summary": "GET /alertmanagers",
        "operationId": "get_alertmanagers",
        "tags": [
          "alerts"
        ],
        "description": "Served by SandboxAPIs. Answer mode: empty. Answers an EMPTY collection, and that is the true answer for this universe — not a gap. This data set's Prometheus sends no alert to an alertmanager: paging is modelled by the incident hosts (PagerDuty's escalation policies route every page), so the discovery lists are the CAPTURED empty {activeAlertmanagers: [], droppedAlertmanagers: []} (2026-10-23)",
        "x-sandboxapis-mode": "empty",
        "responses": {
          "200": {
            "description": "The provider's own response shape. This document describes paths only and carries no schema."
          }
        }
      }
    },
    "/alerts": {
      "get": {
        "summary": "GET /alerts",
        "operationId": "get_alerts",
        "tags": [
          "alerts"
        ],
        "description": "Served by SandboxAPIs. Answer mode: derive.",
        "x-sandboxapis-mode": "derive",
        "responses": {
          "200": {
            "description": "The provider's own response shape. This document describes paths only and carries no schema."
          }
        }
      }
    },
    "/features": {
      "get": {
        "summary": "GET /features",
        "operationId": "get_features",
        "tags": [
          "features"
        ],
        "description": "Served by SandboxAPIs. Answer mode: derive.",
        "x-sandboxapis-mode": "derive",
        "responses": {
          "200": {
            "description": "The provider's own response shape. This document describes paths only and carries no schema."
          }
        }
      }
    },
    "/format_query": {
      "get": {
        "summary": "GET /format_query",
        "operationId": "get_format_query",
        "tags": [
          "query"
        ],
        "description": "Served by SandboxAPIs. Answer mode: derive.",
        "x-sandboxapis-mode": "derive",
        "responses": {
          "200": {
            "description": "The provider's own response shape. This document describes paths only and carries no schema."
          }
        }
      },
      "post": {
        "summary": "POST /format_query",
        "operationId": "post_format_query",
        "tags": [
          "query"
        ],
        "description": "Served by SandboxAPIs. Answer mode: derive.",
        "x-sandboxapis-mode": "derive",
        "responses": {
          "200": {
            "description": "The provider's own response shape. This document describes paths only and carries no schema."
          }
        }
      }
    },
    "/label/{name}/values": {
      "get": {
        "summary": "GET /label/{name}/values",
        "operationId": "get_label_name_values",
        "tags": [
          "labels"
        ],
        "description": "Served by SandboxAPIs. Answer mode: derive.",
        "x-sandboxapis-mode": "derive",
        "parameters": [
          {
            "name": "name",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The provider's own response shape. This document describes paths only and carries no schema."
          }
        }
      }
    },
    "/labels": {
      "get": {
        "summary": "GET /labels",
        "operationId": "get_labels",
        "tags": [
          "labels"
        ],
        "description": "Served by SandboxAPIs. Answer mode: derive.",
        "x-sandboxapis-mode": "derive",
        "responses": {
          "200": {
            "description": "The provider's own response shape. This document describes paths only and carries no schema."
          }
        }
      },
      "post": {
        "summary": "POST /labels",
        "operationId": "post_labels",
        "tags": [
          "labels"
        ],
        "description": "Served by SandboxAPIs. Answer mode: derive.",
        "x-sandboxapis-mode": "derive",
        "responses": {
          "200": {
            "description": "The provider's own response shape. This document describes paths only and carries no schema."
          }
        }
      }
    },
    "/metadata": {
      "get": {
        "summary": "GET /metadata",
        "operationId": "get_metadata",
        "tags": [
          "metadata"
        ],
        "description": "Served by SandboxAPIs. Answer mode: derive.",
        "x-sandboxapis-mode": "derive",
        "responses": {
          "200": {
            "description": "The provider's own response shape. This document describes paths only and carries no schema."
          }
        }
      }
    },
    "/notifications": {
      "get": {
        "summary": "GET /notifications",
        "operationId": "get_notifications",
        "tags": [
          "notifications"
        ],
        "description": "Served by SandboxAPIs. Answer mode: empty. Answers an EMPTY collection, and that is the true answer for this universe — not a gap. This data set's Prometheus has raised no server notification (no failed config reload, no shutdown), and the release's answer with none is the CAPTURED empty array (2026-10-23)",
        "x-sandboxapis-mode": "empty",
        "responses": {
          "200": {
            "description": "The provider's own response shape. This document describes paths only and carries no schema."
          }
        }
      }
    },
    "/parse_query": {
      "get": {
        "summary": "GET /parse_query",
        "operationId": "get_parse_query",
        "tags": [
          "query"
        ],
        "description": "Served by SandboxAPIs. Answer mode: derive.",
        "x-sandboxapis-mode": "derive",
        "responses": {
          "200": {
            "description": "The provider's own response shape. This document describes paths only and carries no schema."
          }
        }
      },
      "post": {
        "summary": "POST /parse_query",
        "operationId": "post_parse_query",
        "tags": [
          "query"
        ],
        "description": "Served by SandboxAPIs. Answer mode: derive.",
        "x-sandboxapis-mode": "derive",
        "responses": {
          "200": {
            "description": "The provider's own response shape. This document describes paths only and carries no schema."
          }
        }
      }
    },
    "/query": {
      "get": {
        "summary": "GET /query",
        "operationId": "get_query",
        "tags": [
          "query"
        ],
        "description": "Served by SandboxAPIs. Answer mode: derive.",
        "x-sandboxapis-mode": "derive",
        "responses": {
          "200": {
            "description": "The provider's own response shape. This document describes paths only and carries no schema."
          }
        }
      },
      "post": {
        "summary": "POST /query",
        "operationId": "post_query",
        "tags": [
          "query"
        ],
        "description": "Served by SandboxAPIs. Answer mode: derive.",
        "x-sandboxapis-mode": "derive",
        "responses": {
          "200": {
            "description": "The provider's own response shape. This document describes paths only and carries no schema."
          }
        }
      }
    },
    "/query_exemplars": {
      "get": {
        "summary": "GET /query_exemplars",
        "operationId": "get_query_exemplars",
        "tags": [
          "query"
        ],
        "description": "Served by SandboxAPIs. Answer mode: empty. Answers an EMPTY collection, and that is the true answer for this universe — not a gap. This data set records no exemplar: exemplar storage is reported off (/features exemplar_storage false), so no sample has an exemplar attached, and Prometheus's own answer for a query with none is CAPTURED as {\"status\":\"success\",\"data\":[]} at 200 (2026-10-23)",
        "x-sandboxapis-mode": "empty",
        "responses": {
          "200": {
            "description": "The provider's own response shape. This document describes paths only and carries no schema."
          }
        }
      },
      "post": {
        "summary": "POST /query_exemplars",
        "operationId": "post_query_exemplars",
        "tags": [
          "query"
        ],
        "description": "Served by SandboxAPIs. Answer mode: empty. Answers an EMPTY collection, and that is the true answer for this universe — not a gap. The POST form of the exemplar query beside it, with the same parameters and the same truthful answer: this data set records no exemplar (exemplar storage is reported off, /features exemplar_storage false), so the data is the captured empty array",
        "x-sandboxapis-mode": "empty",
        "responses": {
          "200": {
            "description": "The provider's own response shape. This document describes paths only and carries no schema."
          }
        }
      }
    },
    "/query_range": {
      "get": {
        "summary": "GET /query_range",
        "operationId": "get_query_range",
        "tags": [
          "query"
        ],
        "description": "Served by SandboxAPIs. Answer mode: derive.",
        "x-sandboxapis-mode": "derive",
        "responses": {
          "200": {
            "description": "The provider's own response shape. This document describes paths only and carries no schema."
          }
        }
      },
      "post": {
        "summary": "POST /query_range",
        "operationId": "post_query_range",
        "tags": [
          "query"
        ],
        "description": "Served by SandboxAPIs. Answer mode: derive.",
        "x-sandboxapis-mode": "derive",
        "responses": {
          "200": {
            "description": "The provider's own response shape. This document describes paths only and carries no schema."
          }
        }
      }
    },
    "/rules": {
      "get": {
        "summary": "GET /rules",
        "operationId": "get_rules",
        "tags": [
          "rules"
        ],
        "description": "Served by SandboxAPIs. Answer mode: derive.",
        "x-sandboxapis-mode": "derive",
        "responses": {
          "200": {
            "description": "The provider's own response shape. This document describes paths only and carries no schema."
          }
        }
      }
    },
    "/scrape_pools": {
      "get": {
        "summary": "GET /scrape_pools",
        "operationId": "get_scrape_pools",
        "tags": [
          "targets"
        ],
        "description": "Served by SandboxAPIs. Answer mode: empty. Answers an EMPTY collection, and that is the true answer for this universe — not a gap. No scrape job is configured in this data set's Prometheus, because its series arrive by remote write, so the pool list is the CAPTURED empty {scrapePools: []} (2026-10-23)",
        "x-sandboxapis-mode": "empty",
        "responses": {
          "200": {
            "description": "The provider's own response shape. This document describes paths only and carries no schema."
          }
        }
      }
    },
    "/series": {
      "get": {
        "summary": "GET /series",
        "operationId": "get_series",
        "tags": [
          "series"
        ],
        "description": "Served by SandboxAPIs. Answer mode: derive.",
        "x-sandboxapis-mode": "derive",
        "responses": {
          "200": {
            "description": "The provider's own response shape. This document describes paths only and carries no schema."
          }
        }
      },
      "post": {
        "summary": "POST /series",
        "operationId": "post_series",
        "tags": [
          "series"
        ],
        "description": "Served by SandboxAPIs. Answer mode: derive.",
        "x-sandboxapis-mode": "derive",
        "responses": {
          "200": {
            "description": "The provider's own response shape. This document describes paths only and carries no schema."
          }
        }
      }
    },
    "/status/buildinfo": {
      "get": {
        "summary": "GET /status/buildinfo",
        "operationId": "get_status_buildinfo",
        "tags": [
          "status"
        ],
        "description": "Served by SandboxAPIs. Answer mode: derive.",
        "x-sandboxapis-mode": "derive",
        "responses": {
          "200": {
            "description": "The provider's own response shape. This document describes paths only and carries no schema."
          }
        }
      }
    },
    "/status/config": {
      "get": {
        "summary": "GET /status/config",
        "operationId": "get_status_config",
        "tags": [
          "status"
        ],
        "description": "Served by SandboxAPIs. Answer mode: derive.",
        "x-sandboxapis-mode": "derive",
        "responses": {
          "200": {
            "description": "The provider's own response shape. This document describes paths only and carries no schema."
          }
        }
      }
    },
    "/status/flags": {
      "get": {
        "summary": "GET /status/flags",
        "operationId": "get_status_flags",
        "tags": [
          "status"
        ],
        "description": "Served by SandboxAPIs. Answer mode: derive.",
        "x-sandboxapis-mode": "derive",
        "responses": {
          "200": {
            "description": "The provider's own response shape. This document describes paths only and carries no schema."
          }
        }
      }
    },
    "/status/tsdb": {
      "get": {
        "summary": "GET /status/tsdb",
        "operationId": "get_status_tsdb",
        "tags": [
          "status"
        ],
        "description": "Served by SandboxAPIs. Answer mode: derive.",
        "x-sandboxapis-mode": "derive",
        "responses": {
          "200": {
            "description": "The provider's own response shape. This document describes paths only and carries no schema."
          }
        }
      }
    },
    "/status/tsdb/blocks": {
      "get": {
        "summary": "GET /status/tsdb/blocks",
        "operationId": "get_status_tsdb_blocks",
        "tags": [
          "status"
        ],
        "description": "Served by SandboxAPIs. Answer mode: empty. Answers an EMPTY collection, and that is the true answer for this universe — not a gap. Every sample this replica holds is served from the head, so there is no persisted block to describe, and an empty head's answer is the CAPTURED {blocks: []} (2026-10-23)",
        "x-sandboxapis-mode": "empty",
        "responses": {
          "200": {
            "description": "The provider's own response shape. This document describes paths only and carries no schema."
          }
        }
      }
    },
    "/status/walreplay": {
      "get": {
        "summary": "GET /status/walreplay",
        "operationId": "get_status_walreplay",
        "tags": [
          "status"
        ],
        "description": "Served by SandboxAPIs. Answer mode: derive.",
        "x-sandboxapis-mode": "derive",
        "responses": {
          "200": {
            "description": "The provider's own response shape. This document describes paths only and carries no schema."
          }
        }
      }
    },
    "/targets": {
      "get": {
        "summary": "GET /targets",
        "operationId": "get_targets",
        "tags": [
          "targets"
        ],
        "description": "Served by SandboxAPIs. Answer mode: empty. Answers an EMPTY collection, and that is the true answer for this universe — not a gap. This data set's series arrive by remote write (its /status/flags reports the remote-write receiver on and its configuration has no scrape job), so Prometheus has no target to list, and the release's own answer with no scrape job is CAPTURED as {activeTargets: [], droppedTargets: [], droppedTargetCounts: {}} (2026-10-23)",
        "x-sandboxapis-mode": "empty",
        "responses": {
          "200": {
            "description": "The provider's own response shape. This document describes paths only and carries no schema."
          }
        }
      }
    },
    "/targets/metadata": {
      "get": {
        "summary": "GET /targets/metadata",
        "operationId": "get_targets_metadata",
        "tags": [
          "targets"
        ],
        "description": "Served by SandboxAPIs. Answer mode: empty. Answers an EMPTY collection, and that is the true answer for this universe — not a gap. ENTAILED by the empty target list beside it: metadata per target exists only for scraped targets, and with no scrape job the release answers the CAPTURED empty array (2026-10-23)",
        "x-sandboxapis-mode": "empty",
        "responses": {
          "200": {
            "description": "The provider's own response shape. This document describes paths only and carries no schema."
          }
        }
      }
    }
  }
}
