<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>APIs on Grafana Labs</title><link>https://grafana.com/docs/enterprise-metrics/v2.16.x/api/</link><description>Recent content in APIs on Grafana Labs</description><generator>Hugo -- gohugo.io</generator><language>en</language><atom:link href="/docs/enterprise-metrics/v2.16.x/api/index.xml" rel="self" type="application/rss+xml"/><item><title>Grafana Mimir HTTP API</title><link>https://grafana.com/docs/enterprise-metrics/v2.16.x/api/mimir-api/</link><pubDate>Tue, 22 Apr 2025 17:05:43 +0000</pubDate><guid>https://grafana.com/docs/enterprise-metrics/v2.16.x/api/mimir-api/</guid><content><![CDATA[&lt;!-- Note: This topic is mounted in the GEM documentation. Ensure that all updates are also applicable to GEM. --&gt;
&lt;h1 id=&#34;grafana-mimir-http-api&#34;&gt;Grafana Mimir HTTP API&lt;/h1&gt;
&lt;p&gt;Grafana Mimir exposes an HTTP API that you can use to write and query time series data, and operate the cluster.&lt;/p&gt;
&lt;p&gt;This document groups API endpoints by service. Note that the API endpoints are exposed when you run Grafana Mimir in microservices mode, monolithic mode, and read-write mode:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Microservices mode&lt;/strong&gt;: Each service exposes its own endpoints.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Monolithic mode&lt;/strong&gt;: The Grafana Mimir instance exposes all API endpoints.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Read-write mode&lt;/strong&gt;: The component services are exposed on the endpoint that they are contained within. Either Mimir read, Mimir write, or Mimir backend. Refer to &lt;a href=&#34;../architecture/deployment-modes/&#34;&gt;Deployment modes&lt;/a&gt; for the grouping of components.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;endpoints&#34;&gt;Endpoints&lt;/h2&gt;
&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
  &lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;API&lt;/th&gt;
              &lt;th&gt;Service&lt;/th&gt;
              &lt;th&gt;Endpoint&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;a href=&#34;#index-page&#34;&gt;Index page&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;&lt;em&gt;All services&lt;/em&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;GET /&lt;/code&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;a href=&#34;#configuration&#34;&gt;Configuration&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;&lt;em&gt;All services&lt;/em&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;GET /config&lt;/code&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;a href=&#34;#status-configuration&#34;&gt;Status Configuration&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;&lt;em&gt;All services&lt;/em&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;GET /api/v1/status/config&lt;/code&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;a href=&#34;#status-flags&#34;&gt;Status Flags&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;&lt;em&gt;All services&lt;/em&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;GET /api/v1/status/flags&lt;/code&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;a href=&#34;#runtime-configuration&#34;&gt;Runtime Configuration&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;&lt;em&gt;All services&lt;/em&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;GET /runtime_config&lt;/code&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;a href=&#34;#services-status&#34;&gt;Services&amp;rsquo; status&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;&lt;em&gt;All services&lt;/em&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;GET /services&lt;/code&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;a href=&#34;#readiness-probe&#34;&gt;Readiness probe&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;&lt;em&gt;All services&lt;/em&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;GET /ready&lt;/code&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;a href=&#34;#metrics&#34;&gt;Metrics&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;&lt;em&gt;All services&lt;/em&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;GET /metrics&lt;/code&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;a href=&#34;#pprof&#34;&gt;Pprof&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;&lt;em&gt;All services&lt;/em&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;GET /debug/pprof&lt;/code&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;a href=&#34;#fgprof&#34;&gt;Fgprof&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;&lt;em&gt;All services&lt;/em&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;GET /debug/fgprof&lt;/code&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;a href=&#34;#build-information&#34;&gt;Build information&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;&lt;em&gt;All services&lt;/em&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;GET /api/v1/status/buildinfo&lt;/code&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;a href=&#34;#memberlist-cluster&#34;&gt;Memberlist cluster&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;&lt;em&gt;All services&lt;/em&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;GET /memberlist&lt;/code&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;a href=&#34;#get-tenant-limits&#34;&gt;Get tenant limits&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;&lt;em&gt;All services&lt;/em&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;GET /api/v1/user_limits&lt;/code&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;a href=&#34;#remote-write&#34;&gt;Remote write&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Distributor&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;POST /api/v1/push&lt;/code&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;a href=&#34;#otlp&#34;&gt;OTLP&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Distributor&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;POST /otlp/v1/metrics&lt;/code&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;a href=&#34;#tenants-stats&#34;&gt;Tenants stats&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Distributor&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;GET /distributor/all_user_stats&lt;/code&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;a href=&#34;#ha-tracker-status&#34;&gt;HA tracker status&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Distributor&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;GET /distributor/ha_tracker&lt;/code&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;a href=&#34;#flush-chunks--blocks&#34;&gt;Flush chunks / blocks&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Ingester&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;GET,POST /ingester/flush&lt;/code&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;a href=&#34;#prepare-for-shutdown&#34;&gt;Prepare for Shutdown&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Ingester&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;GET,POST,DELETE /ingester/prepare-shutdown&lt;/code&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;a href=&#34;#shutdown&#34;&gt;Shutdown&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Ingester&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;POST /ingester/shutdown&lt;/code&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;a href=&#34;#prepare-partition-downscale&#34;&gt;Prepare Partition Downscale&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Ingester&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;GET,POST,DELETE /ingester/prepare-partition-downscale&lt;/code&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;a href=&#34;#prepare-instance-ring-downscale&#34;&gt;Prepare Instance Ring Downscale&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Ingester&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;GET,POST,DELETE /ingester/prepare-instance-ring-downscale&lt;/code&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;a href=&#34;#ingesters-ring-status&#34;&gt;Ingesters ring status&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Distributor,Ingester&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;GET /ingester/ring&lt;/code&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;a href=&#34;#ingester-tenants&#34;&gt;Ingester tenants&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Ingester&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;GET /ingester/tenants&lt;/code&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;a href=&#34;#ingester-tenant-tsdb&#34;&gt;Ingester tenant TSDB&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Ingester&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;GET /ingester/tsdb/{tenant}&lt;/code&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;a href=&#34;#instant-query&#34;&gt;Instant query&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Querier, Query-frontend&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;GET,POST &amp;lt;prometheus-http-prefix&amp;gt;/api/v1/query&lt;/code&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;a href=&#34;#range-query&#34;&gt;Range query&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Querier, Query-frontend&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;GET,POST &amp;lt;prometheus-http-prefix&amp;gt;/api/v1/query_range&lt;/code&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;a href=&#34;#exemplar-query&#34;&gt;Exemplar query&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Querier, Query-frontend&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;GET,POST &amp;lt;prometheus-http-prefix&amp;gt;/api/v1/query_exemplars&lt;/code&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;a href=&#34;#get-series-by-label-matchers&#34;&gt;Get series by label matchers&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Querier, Query-frontend&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;GET,POST &amp;lt;prometheus-http-prefix&amp;gt;/api/v1/series&lt;/code&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;a href=&#34;#get-active-series-by-selector&#34;&gt;Get active series by selector&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Query-frontend&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;GET, POST &amp;lt;prometheus-http-prefix&amp;gt;/api/v1/cardinality/active_series&lt;/code&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;a href=&#34;#get-label-names&#34;&gt;Get label names&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Querier, Query-frontend&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;GET,POST &amp;lt;prometheus-http-prefix&amp;gt;/api/v1/labels&lt;/code&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;a href=&#34;#get-label-values&#34;&gt;Get label values&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Querier, Query-frontend&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;GET &amp;lt;prometheus-http-prefix&amp;gt;/api/v1/label/{name}/values&lt;/code&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;a href=&#34;#get-metric-metadata&#34;&gt;Get metric metadata&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Querier, Query-frontend&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;GET &amp;lt;prometheus-http-prefix&amp;gt;/api/v1/metadata&lt;/code&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;a href=&#34;#remote-read&#34;&gt;Remote read&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Querier, Query-frontend&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;POST &amp;lt;prometheus-http-prefix&amp;gt;/api/v1/read&lt;/code&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;a href=&#34;#label-names-cardinality&#34;&gt;Label names cardinality&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Querier, Query-frontend&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;GET, POST &amp;lt;prometheus-http-prefix&amp;gt;/api/v1/cardinality/label_names&lt;/code&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;a href=&#34;#label-values-cardinality&#34;&gt;Label values cardinality&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Querier, Query-frontend&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;GET, POST &amp;lt;prometheus-http-prefix&amp;gt;/api/v1/cardinality/label_values&lt;/code&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;a href=&#34;#build-information&#34;&gt;Build information&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Querier, Query-frontend, Ruler&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;GET &amp;lt;prometheus-http-prefix&amp;gt;/api/v1/status/buildinfo&lt;/code&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;a href=&#34;#format-query&#34;&gt;Format query&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Querier, Query-frontend&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;GET, POST &amp;lt;prometheus-http-prefix&amp;gt;/api/v1/format_query&lt;/code&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;a href=&#34;#get-tenant-ingestion-stats&#34;&gt;Get tenant ingestion stats&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Querier&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;GET /api/v1/user_stats&lt;/code&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;a href=&#34;#query-scheduler-ring-status&#34;&gt;Query-scheduler ring status&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Query-scheduler&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;GET /query-scheduler/ring&lt;/code&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;a href=&#34;#ruler-ring-status&#34;&gt;Ruler ring status&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Ruler&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;GET /ruler/ring&lt;/code&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;a href=&#34;#ruler-rules&#34;&gt;Ruler rules &lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Ruler&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;GET /ruler/rule_groups&lt;/code&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;a href=&#34;#list-prometheus-rules&#34;&gt;List Prometheus rules&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Ruler&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;GET &amp;lt;prometheus-http-prefix&amp;gt;/api/v1/rules&lt;/code&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;a href=&#34;#list-prometheus-alerts&#34;&gt;List Prometheus alerts&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Ruler&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;GET &amp;lt;prometheus-http-prefix&amp;gt;/api/v1/alerts&lt;/code&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;a href=&#34;#list-rule-groups&#34;&gt;List rule groups&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Ruler&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;GET &amp;lt;prometheus-http-prefix&amp;gt;/config/v1/rules&lt;/code&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;a href=&#34;#get-rule-groups-by-namespace&#34;&gt;Get rule groups by namespace&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Ruler&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;GET &amp;lt;prometheus-http-prefix&amp;gt;/config/v1/rules/{namespace}&lt;/code&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;a href=&#34;#get-rule-group&#34;&gt;Get rule group&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Ruler&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;GET &amp;lt;prometheus-http-prefix&amp;gt;/config/v1/rules/{namespace}/{groupName}&lt;/code&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;a href=&#34;#set-rule-group&#34;&gt;Set rule group&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Ruler&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;POST &amp;lt;prometheus-http-prefix&amp;gt;/config/v1/rules/{namespace}&lt;/code&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;a href=&#34;#delete-rule-group&#34;&gt;Delete rule group&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Ruler&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;DELETE &amp;lt;prometheus-http-prefix&amp;gt;/config/v1/rules/{namespace}/{groupName}&lt;/code&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;a href=&#34;#delete-namespace&#34;&gt;Delete namespace&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Ruler&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;DELETE &amp;lt;prometheus-http-prefix&amp;gt;/config/v1/rules/{namespace}&lt;/code&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;a href=&#34;#delete-tenant-configuration&#34;&gt;Delete tenant configuration&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Ruler&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;POST /ruler/delete_tenant_config&lt;/code&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;a href=&#34;#alertmanager-status&#34;&gt;Alertmanager status&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Alertmanager&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;GET /multitenant_alertmanager/status&lt;/code&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;a href=&#34;#alertmanager-configs&#34;&gt;Alertmanager configs&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Alertmanager&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;GET /multitenant_alertmanager/configs&lt;/code&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;a href=&#34;#alertmanager-ring-status&#34;&gt;Alertmanager ring status&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Alertmanager&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;GET /multitenant_alertmanager/ring&lt;/code&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;a href=&#34;#alertmanager-ui&#34;&gt;Alertmanager UI&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Alertmanager&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;GET &amp;lt;alertmanager-http-prefix&amp;gt;&lt;/code&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;a href=&#34;#build-information&#34;&gt;Build Information&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Alertmanager&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;GET &amp;lt;alertmanager-http-prefix&amp;gt;/api/v1/status/buildinfo&lt;/code&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;a href=&#34;#alertmanager-delete-tenant-configuration&#34;&gt;Alertmanager Delete Tenant Configuration&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Alertmanager&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;POST /multitenant_alertmanager/delete_tenant_config&lt;/code&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;a href=&#34;#get-alertmanager-configuration&#34;&gt;Get Alertmanager configuration&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Alertmanager&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;GET /api/v1/alerts&lt;/code&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;a href=&#34;#set-alertmanager-configuration&#34;&gt;Set Alertmanager configuration&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Alertmanager&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;POST /api/v1/alerts&lt;/code&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;a href=&#34;#delete-alertmanager-configuration&#34;&gt;Delete Alertmanager configuration&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Alertmanager&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;DELETE /api/v1/alerts&lt;/code&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;a href=&#34;#store-gateway-ring-status&#34;&gt;Store-gateway ring status&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Store-gateway&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;GET /store-gateway/ring&lt;/code&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;a href=&#34;#store-gateway-tenants&#34;&gt;Store-gateway tenants&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Store-gateway&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;GET /store-gateway/tenants&lt;/code&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;a href=&#34;#store-gateway-tenant-blocks&#34;&gt;Store-gateway tenant blocks&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Store-gateway&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;GET /store-gateway/tenant/{tenant}/blocks&lt;/code&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;a href=&#34;#prepare-for-shutdown&#34;&gt;Prepare for Shutdown&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Store-gateway&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;GET,POST,DELETE /store-gateway/prepare-shutdown&lt;/code&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;a href=&#34;#compactor-ring-status&#34;&gt;Compactor ring status&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Compactor&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;GET /compactor/ring&lt;/code&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;a href=&#34;#start-block-upload&#34;&gt;Start block upload&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Compactor&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;POST /api/v1/upload/block/{block}/start&lt;/code&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;a href=&#34;#upload-block-file&#34;&gt;Upload block file&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Compactor&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;POST /api/v1/upload/block/{block}/files?path={path}&lt;/code&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;a href=&#34;#complete-block-upload&#34;&gt;Complete block upload&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Compactor&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;POST /api/v1/upload/block/{block}/finish&lt;/code&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;a href=&#34;#check-block-upload&#34;&gt;Check block upload&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Compactor&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;GET /api/v1/upload/block/{block}/check&lt;/code&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;a href=&#34;#tenant-delete-request&#34;&gt;Tenant delete request&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Compactor&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;POST /compactor/delete_tenant&lt;/code&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;a href=&#34;#tenant-delete-status&#34;&gt;Tenant delete status&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Compactor&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;GET /compactor/delete_tenant_status&lt;/code&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;a href=&#34;#compactor-tenants&#34;&gt;Compactor tenants&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Compactor&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;GET /compactor/tenants&lt;/code&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;a href=&#34;#compactor-tenant-planned-jobs&#34;&gt;Compactor tenant planned jobs&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Compactor&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;GET /compactor/tenant/{tenant}/planned_jobs&lt;/code&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;a href=&#34;#overrides-exporter-ring-status&#34;&gt;Overrides-exporter ring status&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Overrides-exporter&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;GET /overrides-exporter/ring&lt;/code&gt;&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;
&lt;/div&gt;
&lt;h3 id=&#34;path-prefixes&#34;&gt;Path prefixes&lt;/h3&gt;
&lt;p&gt;The following table provides usage of placeholder path prefixes, for prefixes that are configurable.&lt;/p&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Prefix&lt;/th&gt;
              &lt;th&gt;Default&lt;/th&gt;
              &lt;th&gt;CLI flag&lt;/th&gt;
              &lt;th&gt;YAML configuration&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;&amp;lt;prometheus-http-prefix&amp;gt;&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;/prometheus&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;-http.prometheus-http-prefix&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;api &amp;gt; prometheus_http_prefix&lt;/code&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;&amp;lt;alertmanager-http-prefix&amp;gt;&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;/alertmanager&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;-http.alertmanager-http-prefix&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;api &amp;gt; alertmanager_http_prefix&lt;/code&gt;&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;h3 id=&#34;authentication&#34;&gt;Authentication&lt;/h3&gt;
&lt;p&gt;Endpoints that require authentication must be called with the &lt;code&gt;X-Scope-OrgID&lt;/code&gt; HTTP request header specified to the tenant ID.&lt;/p&gt;
&lt;p&gt;If you disable multi-tenancy, Grafana Mimir doesn&amp;rsquo;t require any request to include the &lt;code&gt;X-Scope-OrgID&lt;/code&gt; header.&lt;/p&gt;
&lt;p&gt;Multi-tenancy can be enabled and disabled via the &lt;code&gt;-auth.multitenancy-enabled&lt;/code&gt; flag or its respective YAML configuration option.&lt;/p&gt;
&lt;p&gt;For more information about authentication and authorization, refer to &lt;a href=&#34;../../manage/secure/authentication-and-authorization/&#34;&gt;Authentication and Authorization&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;all-services&#34;&gt;All services&lt;/h2&gt;
&lt;p&gt;The following API endpoints are exposed by all services.&lt;/p&gt;
&lt;h3 id=&#34;index-page&#34;&gt;Index page&lt;/h3&gt;

&lt;div class=&#34;code-snippet code-snippet__mini&#34;&gt;&lt;div class=&#34;lang-toolbar__mini&#34;&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet code-snippet__border&#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-none&#34;&gt;GET /&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;This endpoint displays an index page with links to other web pages exposed by Grafana Mimir.&lt;/p&gt;
&lt;h3 id=&#34;configuration&#34;&gt;Configuration&lt;/h3&gt;

&lt;div class=&#34;code-snippet code-snippet__mini&#34;&gt;&lt;div class=&#34;lang-toolbar__mini&#34;&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet code-snippet__border&#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-none&#34;&gt;GET /config&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;This endpoint displays the configuration currently applied to Grafana Mimir including default values and settings via CLI flags. This endpoint provides the configuration in YAML format and masks sensitive data.&lt;/p&gt;


&lt;div class=&#34;admonition admonition-note&#34;&gt;&lt;blockquote&gt;&lt;p class=&#34;title text-uppercase&#34;&gt;Note&lt;/p&gt;&lt;p&gt;The exported configuration doesn&amp;rsquo;t include the per-tenant overrides.&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;

&lt;h4 id=&#34;different-modes&#34;&gt;Different modes&lt;/h4&gt;

&lt;div class=&#34;code-snippet code-snippet__mini&#34;&gt;&lt;div class=&#34;lang-toolbar__mini&#34;&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet code-snippet__border&#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-none&#34;&gt;GET /config?mode=diff&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;This endpoint displays the differences between the Grafana Mimir default configuration and the current configuration.&lt;/p&gt;

&lt;div class=&#34;code-snippet code-snippet__mini&#34;&gt;&lt;div class=&#34;lang-toolbar__mini&#34;&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet code-snippet__border&#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-none&#34;&gt;GET /config?mode=defaults&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;This endpoint displays the default configuration values.&lt;/p&gt;
&lt;h3 id=&#34;status-configuration&#34;&gt;Status Configuration&lt;/h3&gt;

&lt;div class=&#34;code-snippet code-snippet__mini&#34;&gt;&lt;div class=&#34;lang-toolbar__mini&#34;&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet code-snippet__border&#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-none&#34;&gt;GET /api/v1/status/config&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;This endpoint displays empty configuration settings, it exists only to be compatible with the Prometheus &lt;code&gt;/api/v1/status/config&lt;/code&gt; API.&lt;/p&gt;
&lt;h3 id=&#34;status-flags&#34;&gt;Status Flags&lt;/h3&gt;

&lt;div class=&#34;code-snippet code-snippet__mini&#34;&gt;&lt;div class=&#34;lang-toolbar__mini&#34;&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet code-snippet__border&#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-none&#34;&gt;GET /api/v1/status/flags&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;This endpoint displays empty configuration flags, it exists only to be compatible with the Prometheus &lt;code&gt;/api/v1/status/flags&lt;/code&gt; API.&lt;/p&gt;
&lt;h3 id=&#34;runtime-configuration&#34;&gt;Runtime Configuration&lt;/h3&gt;

&lt;div class=&#34;code-snippet code-snippet__mini&#34;&gt;&lt;div class=&#34;lang-toolbar__mini&#34;&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet code-snippet__border&#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-none&#34;&gt;GET /runtime_config&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;This endpoint displays the &lt;a href=&#34;../../configure/about-runtime-configuration/&#34;&gt;runtime configuration&lt;/a&gt; currently applied to Grafana Mimir, in YAML format, including default values.
The endpoint is only available if Grafana Mimir is configured with the &lt;code&gt;-runtime-config.file&lt;/code&gt; option.&lt;/p&gt;
&lt;h4 id=&#34;different-modes-1&#34;&gt;Different modes&lt;/h4&gt;

&lt;div class=&#34;code-snippet code-snippet__mini&#34;&gt;&lt;div class=&#34;lang-toolbar__mini&#34;&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet code-snippet__border&#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-none&#34;&gt;GET /runtime_config?mode=diff&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;This endpoint displays the differences between the Grafana Mimir default runtime configuration and the current runtime configuration.&lt;/p&gt;
&lt;h3 id=&#34;services-status&#34;&gt;Services&amp;rsquo; status&lt;/h3&gt;

&lt;div class=&#34;code-snippet code-snippet__mini&#34;&gt;&lt;div class=&#34;lang-toolbar__mini&#34;&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet code-snippet__border&#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-none&#34;&gt;GET /services&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;This endpoint displays a web page with the status of internal Grafana Mimir services.&lt;/p&gt;
&lt;h3 id=&#34;readiness-probe&#34;&gt;Readiness probe&lt;/h3&gt;

&lt;div class=&#34;code-snippet code-snippet__mini&#34;&gt;&lt;div class=&#34;lang-toolbar__mini&#34;&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet code-snippet__border&#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-none&#34;&gt;GET /ready&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;This endoint returns 200 when Grafana Mimir is ready to serve traffic.&lt;/p&gt;
&lt;h3 id=&#34;metrics&#34;&gt;Metrics&lt;/h3&gt;

&lt;div class=&#34;code-snippet code-snippet__mini&#34;&gt;&lt;div class=&#34;lang-toolbar__mini&#34;&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet code-snippet__border&#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-none&#34;&gt;GET /metrics&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;This endpoint returns the metrics for the running Grafana Mimir service in the Prometheus exposition format.&lt;/p&gt;
&lt;h3 id=&#34;pprof&#34;&gt;Pprof&lt;/h3&gt;

&lt;div class=&#34;code-snippet code-snippet__mini&#34;&gt;&lt;div class=&#34;lang-toolbar__mini&#34;&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet code-snippet__border&#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-none&#34;&gt;GET /debug/pprof/heap
GET /debug/pprof/block
GET /debug/pprof/profile
GET /debug/pprof/trace
GET /debug/pprof/goroutine
GET /debug/pprof/mutex&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;These endpoints return runtime profiling data in the format expected by the pprof visualization tool. There are many things that can be profiled using this endpoint, including heap, trace, goroutine, and so on.&lt;/p&gt;
&lt;p&gt;For more information about pprof, refer to &lt;a href=&#34;https://golang.org/pkg/net/http/pprof/&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;pprof&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&#34;fgprof&#34;&gt;Fgprof&lt;/h3&gt;

&lt;div class=&#34;code-snippet code-snippet__mini&#34;&gt;&lt;div class=&#34;lang-toolbar__mini&#34;&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet code-snippet__border&#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-none&#34;&gt;GET /debug/fgprof&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;This endpoint returns the sampling Go profiling data that you can use to analyze On-CPU and Off-CPU (for example, I/O) time.&lt;/p&gt;
&lt;p&gt;For more information about fgprof, refer to &lt;a href=&#34;https://github.com/felixge/fgprof&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;fgprof&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&#34;build-information&#34;&gt;Build information&lt;/h3&gt;

&lt;div class=&#34;code-snippet code-snippet__mini&#34;&gt;&lt;div class=&#34;lang-toolbar__mini&#34;&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet code-snippet__border&#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-none&#34;&gt;GET /api/v1/status/buildinfo
GET &amp;lt;prometheus-http-prefix&amp;gt;/api/v1/status/buildinfo
GET &amp;lt;alertmanager-http-prefix&amp;gt;/api/v1/status/buildinfo&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;This endpoint returns in JSON format information about the build and enabled features. The format returned is not identical, but is similar to the &lt;a href=&#34;https://prometheus.io/docs/prometheus/latest/querying/api/#build-information&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Prometheus Build Information endpoint&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&#34;format-query&#34;&gt;Format query&lt;/h3&gt;

&lt;div class=&#34;code-snippet code-snippet__mini&#34;&gt;&lt;div class=&#34;lang-toolbar__mini&#34;&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet code-snippet__border&#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-none&#34;&gt;GET &amp;lt;prometheus-http-prefix&amp;gt;/api/v1/format_query?query={query}
POST &amp;lt;prometheus-http-prefix&amp;gt;/api/v1/format_query&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Formats the PromQL query.&lt;/p&gt;
&lt;p&gt;This endpoint is compatible with the Prometheus format query endpoint.&lt;/p&gt;
&lt;p&gt;For more information about formatting queries, refer to &lt;a href=&#34;https://prometheus.io/docs/prometheus/latest/querying/api/#formatting-query-expressions&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Prometheus&amp;rsquo; documentation&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&#34;memberlist-cluster&#34;&gt;Memberlist cluster&lt;/h3&gt;

&lt;div class=&#34;code-snippet code-snippet__mini&#34;&gt;&lt;div class=&#34;lang-toolbar__mini&#34;&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet code-snippet__border&#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-none&#34;&gt;GET /memberlist&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;This admin page shows information about Memberlist cluster (list of nodes and their health) and KV store (keys and values in the KV store).&lt;/p&gt;
&lt;p&gt;If memberlist message history is enabled, this page also shows all received and sent messages stored in the buffers.
This can be useful for troubleshooting memberlist cluster.
To enable message history buffers use &lt;code&gt;-memberlist.message-history-buffer-bytes&lt;/code&gt; CLI flag or the corresponding YAML configuration parameter.&lt;/p&gt;
&lt;h3 id=&#34;get-tenant-limits&#34;&gt;Get tenant limits&lt;/h3&gt;

&lt;div class=&#34;code-snippet code-snippet__mini&#34;&gt;&lt;div class=&#34;lang-toolbar__mini&#34;&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet code-snippet__border&#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-none&#34;&gt;GET /api/v1/user_limits&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Returns realtime limits for the authenticated tenant, in &lt;code&gt;JSON&lt;/code&gt; format.
This API is experimental.&lt;/p&gt;
&lt;p&gt;Requires &lt;a href=&#34;#authentication&#34;&gt;authentication&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The endpoint is only available if Grafana Mimir is configured with the &lt;code&gt;-runtime-config.file&lt;/code&gt; option.&lt;/p&gt;
&lt;h2 id=&#34;distributor&#34;&gt;Distributor&lt;/h2&gt;
&lt;p&gt;The following endpoints relate to the &lt;a href=&#34;../architecture/components/distributor/&#34;&gt;distributor&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&#34;remote-write&#34;&gt;Remote write&lt;/h3&gt;

&lt;div class=&#34;code-snippet code-snippet__mini&#34;&gt;&lt;div class=&#34;lang-toolbar__mini&#34;&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet code-snippet__border&#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-none&#34;&gt;POST /api/v1/push&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Entrypoint for the &lt;a href=&#34;https://prometheus.io/docs/prometheus/latest/configuration/configuration/#remote_write&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Prometheus remote write&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This endpoint accepts an HTTP POST request with a body that contains a request encoded with &lt;a href=&#34;https://developers.google.com/protocol-buffers&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Protocol Buffers&lt;/a&gt; and compressed with &lt;a href=&#34;https://github.com/google/snappy&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Snappy&lt;/a&gt;.
You can find the definition of the protobuf message in &lt;a href=&#34;https://github.com/grafana/mimir/blob/main/pkg/mimirpb/mimir.proto&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;pkg/mimirpb/mimir.proto&lt;/a&gt;.
The HTTP request must contain the header &lt;code&gt;X-Prometheus-Remote-Write-Version&lt;/code&gt; set to &lt;code&gt;0.1.0&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;To skip the label name validation, perform the following actions:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Enable API&amp;rsquo;s flag &lt;code&gt;-api.skip-label-name-validation-header-enabled=true&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Ensure that the request is sent with the header &lt;code&gt;X-Mimir-SkipLabelNameValidation: true&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This feature supports the writes from non-standard downstream clients that have metric name not Prometheus compliant.&lt;/p&gt;
&lt;p&gt;For more information, refer to Prometheus &lt;a href=&#34;https://prometheus.io/docs/prometheus/latest/storage/#remote-storage-integrations&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Remote storage integrations&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Requires &lt;a href=&#34;#authentication&#34;&gt;authentication&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&#34;otlp&#34;&gt;OTLP&lt;/h3&gt;

&lt;div class=&#34;code-snippet code-snippet__mini&#34;&gt;&lt;div class=&#34;lang-toolbar__mini&#34;&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet code-snippet__border&#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-none&#34;&gt;POST /otlp/v1/metrics&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;


&lt;div class=&#34;admonition admonition-note&#34;&gt;&lt;blockquote&gt;&lt;p class=&#34;title text-uppercase&#34;&gt;Note&lt;/p&gt;&lt;p&gt;To send OTLP data to Grafana Cloud, refer to &lt;a href=&#34;/docs/grafana-cloud/send-data/otlp/send-data-otlp/&#34;&gt;Send data using OpenTelemetry Protocol (OTLP)&lt;/a&gt;.&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;

&lt;p&gt;Entrypoint for the &lt;a href=&#34;https://github.com/open-telemetry/opentelemetry-proto/blob/main/docs/specification.md&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;OTLP HTTP&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This endpoint accepts an HTTP POST request with a body that contains a request encoded with &lt;a href=&#34;https://developers.google.com/protocol-buffers&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Protocol Buffers&lt;/a&gt; and optionally compressed with &lt;a href=&#34;https://www.gnu.org/software/gzip/&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;GZIP&lt;/a&gt;.
You can find the definition of the protobuf message in &lt;a href=&#34;https://github.com/open-telemetry/opentelemetry-proto/blob/main/opentelemetry/proto/metrics/v1/metrics.proto&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;metrics.proto&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Requires &lt;a href=&#34;#authentication&#34;&gt;authentication&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&#34;distributor-ring-status&#34;&gt;Distributor ring status&lt;/h3&gt;

&lt;div class=&#34;code-snippet code-snippet__mini&#34;&gt;&lt;div class=&#34;lang-toolbar__mini&#34;&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet code-snippet__border&#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-none&#34;&gt;GET /distributor/ring&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;This endpoint displays a web page with the distributor hash ring status, including the state, and the health and last heartbeat time of each distributor.&lt;/p&gt;
&lt;h3 id=&#34;tenants-stats&#34;&gt;Tenants stats&lt;/h3&gt;

&lt;div class=&#34;code-snippet code-snippet__mini&#34;&gt;&lt;div class=&#34;lang-toolbar__mini&#34;&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet code-snippet__border&#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-none&#34;&gt;GET /distributor/all_user_stats&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;This endpoint displays a web page that shows per-tenant statistics updated in real time, including the total number of active series across all ingesters and the current ingestion rate displayed in samples per second.&lt;/p&gt;


&lt;div class=&#34;admonition admonition-note&#34;&gt;&lt;blockquote&gt;&lt;p class=&#34;title text-uppercase&#34;&gt;Note&lt;/p&gt;&lt;p&gt;This endpoint requires all ingesters to be &lt;code&gt;ACTIVE&lt;/code&gt; in the ring for a successful response.&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;

&lt;h3 id=&#34;ha-tracker-status&#34;&gt;HA tracker status&lt;/h3&gt;

&lt;div class=&#34;code-snippet code-snippet__mini&#34;&gt;&lt;div class=&#34;lang-toolbar__mini&#34;&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet code-snippet__border&#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-none&#34;&gt;GET /distributor/ha_tracker&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;This endpoint displays a web page with the current status of the HA tracker, including the elected replica for each Prometheus HA cluster.&lt;/p&gt;
&lt;h2 id=&#34;ingester&#34;&gt;Ingester&lt;/h2&gt;
&lt;p&gt;The following endpoints relate to the &lt;a href=&#34;../architecture/components/ingester/&#34;&gt;ingester&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&#34;flush-chunks--blocks&#34;&gt;Flush chunks / blocks&lt;/h3&gt;

&lt;div class=&#34;code-snippet code-snippet__mini&#34;&gt;&lt;div class=&#34;lang-toolbar__mini&#34;&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet code-snippet__border&#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-none&#34;&gt;GET,POST /ingester/flush&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;This endpoint triggers a flush of the in-memory series time series data to the long-term storage.
This endpoint also triggers the flush when &lt;code&gt;-blocks-storage.tsdb.flush-blocks-on-shutdown&lt;/code&gt; is disabled.&lt;/p&gt;
&lt;p&gt;This endpoint accepts a &lt;code&gt;tenant&lt;/code&gt; parameter to specify the tenant whose blocks are compacted and shipped.
This parameter might be specified multiple times to select more tenants.
If no tenant is specified, all tenants are flushed.&lt;/p&gt;
&lt;p&gt;The flush endpoint also accepts a &lt;code&gt;wait=true&lt;/code&gt; parameter, which makes the call synchronous, and only returns a status code after flushing completes.&lt;/p&gt;


&lt;div class=&#34;admonition admonition-note&#34;&gt;&lt;blockquote&gt;&lt;p class=&#34;title text-uppercase&#34;&gt;Note&lt;/p&gt;&lt;p&gt;The returned status code doesn&amp;rsquo;t reflect the result of flush operation.&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;

&lt;h3 id=&#34;prepare-for-shutdown&#34;&gt;Prepare for Shutdown&lt;/h3&gt;

&lt;div class=&#34;code-snippet code-snippet__mini&#34;&gt;&lt;div class=&#34;lang-toolbar__mini&#34;&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet code-snippet__border&#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-none&#34;&gt;GET,POST,DELETE /ingester/prepare-shutdown&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;This endpoint inspects or changes in-memory ingester configuration to prepare for permanently stopping an ingester
instance but does not actually stop any part of the ingester.&lt;/p&gt;
&lt;p&gt;After a &lt;code&gt;POST&lt;/code&gt; to the &lt;code&gt;prepare-shutdown&lt;/code&gt; endpoint returns, when the ingester process is stopped with &lt;code&gt;SIGINT&lt;/code&gt; / &lt;code&gt;SIGTERM&lt;/code&gt;,
the ingester will be unregistered from the ring and in-memory time series data will be flushed to long-term storage.
This endpoint causes the ingester to be unregistered from the ring when stopped even if you disable
&lt;code&gt;-ingester.ring.unregister-on-shutdown&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;A &lt;code&gt;GET&lt;/code&gt; to the &lt;code&gt;prepare-shutdown&lt;/code&gt; endpoint returns the status of this configuration, either &lt;code&gt;set&lt;/code&gt; or &lt;code&gt;unset&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;A &lt;code&gt;DELETE&lt;/code&gt; to the &lt;code&gt;prepare-shutdown&lt;/code&gt; endpoint reverts the configuration of the ingester to its previous state
(with respect to unregistering on shutdown and flushing of in-memory time series data to long-term storage).&lt;/p&gt;
&lt;p&gt;This API endpoint is usually used by Kubernetes-specific scale down automations such as the
&lt;a href=&#34;https://github.com/grafana/rollout-operator&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;rollout-operator&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&#34;shutdown&#34;&gt;Shutdown&lt;/h3&gt;

&lt;div class=&#34;code-snippet code-snippet__mini&#34;&gt;&lt;div class=&#34;lang-toolbar__mini&#34;&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet code-snippet__border&#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-none&#34;&gt;POST /ingester/shutdown&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;This endpoint flushes in-memory time series data from ingesters to the long-term storage, and then shuts down the ingester service.
After the shutdown endpoint returns, the operator or any automation that&amp;rsquo;s used terminates the process with a &lt;code&gt;SIGINT&lt;/code&gt; / &lt;code&gt;SIGTERM&lt;/code&gt; signal.
During this time, &lt;code&gt;/ready&lt;/code&gt; does not return 200.
This endpoint unregisters the ingester from the ring even if you disable &lt;code&gt;-ingester.ring.unregister-on-shutdown&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;This API endpoint is usually used by scale down automations.&lt;/p&gt;
&lt;h3 id=&#34;prepare-partition-downscale&#34;&gt;Prepare partition downscale&lt;/h3&gt;

&lt;div class=&#34;code-snippet code-snippet__mini&#34;&gt;&lt;div class=&#34;lang-toolbar__mini&#34;&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet code-snippet__border&#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-none&#34;&gt;GET,POST,DELETE /ingester/prepare-partition-downscale&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;This endpoint prepares the ingester&amp;rsquo;s partition for downscaling by setting it to the &lt;code&gt;INACTIVE&lt;/code&gt; state.&lt;/p&gt;
&lt;p&gt;A &lt;code&gt;GET&lt;/code&gt; call to this endpoint returns a timestamp of when the partition was switched to the &lt;code&gt;INACTIVE&lt;/code&gt; state, or 0, if the partition is not in the &lt;code&gt;INACTIVE&lt;/code&gt; state.&lt;/p&gt;
&lt;p&gt;A &lt;code&gt;POST&lt;/code&gt; call switches this ingester&amp;rsquo;s partition to the &lt;code&gt;INACTIVE&lt;/code&gt; state, if it isn&amp;rsquo;t &lt;code&gt;INACTIVE&lt;/code&gt; already, and returns the timestamp of when the switch to the &lt;code&gt;INACTIVE&lt;/code&gt; state occurred.&lt;/p&gt;
&lt;p&gt;A &lt;code&gt;DELETE&lt;/code&gt; call sets the partition back from the &lt;code&gt;INACTIVE&lt;/code&gt; to the &lt;code&gt;ACTIVE&lt;/code&gt; state.&lt;/p&gt;
&lt;p&gt;If the ingester is not configured to use ingest-storage, any call to this endpoint fails.&lt;/p&gt;
&lt;p&gt;This API endpoint is usually used by scale down automation, e.g. rollout-operator.&lt;/p&gt;
&lt;h3 id=&#34;prepare-instance-ring-downscale&#34;&gt;Prepare instance ring downscale&lt;/h3&gt;

&lt;div class=&#34;code-snippet code-snippet__mini&#34;&gt;&lt;div class=&#34;lang-toolbar__mini&#34;&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet code-snippet__border&#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-none&#34;&gt;GET,POST,DELETE /ingester/prepare-instance-ring-downscale&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;This endpoint prepares the ingester for downscaling by setting it to read-only mode.&lt;/p&gt;
&lt;p&gt;A &lt;code&gt;GET&lt;/code&gt; call to this endpoint returns a timestamp of when the ingester was switched to read-only mode, or 0, if the ingester is not in read-only mode.&lt;/p&gt;
&lt;p&gt;A &lt;code&gt;POST&lt;/code&gt; call switches this ingester&amp;rsquo;s partition to read-only mode, if it isn&amp;rsquo;t read-only already, and returns the timestamp of when the switch to read-only mode occurred.&lt;/p&gt;
&lt;p&gt;A &lt;code&gt;DELETE&lt;/code&gt; call sets the ingester back to read-write mode.&lt;/p&gt;
&lt;p&gt;If the ingester is configured to use ingest-storage, any call to this endpoint fails.&lt;/p&gt;
&lt;p&gt;This API endpoint is usually used by scale down automation, e.g. rollout-operator.&lt;/p&gt;
&lt;h3 id=&#34;prepare-for-unregister&#34;&gt;Prepare for unregister&lt;/h3&gt;

&lt;div class=&#34;code-snippet code-snippet__mini&#34;&gt;&lt;div class=&#34;lang-toolbar__mini&#34;&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet code-snippet__border&#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-none&#34;&gt;GET,PUT,DELETE /ingester/unregister-on-shutdown&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;This endpoint controls whether an ingester should unregister from the ring on its next termination, that is, the next time it receives a &lt;code&gt;SIGINT&lt;/code&gt; or &lt;code&gt;SIGTERM&lt;/code&gt; signal.
Via this endpoint, Mimir operators can dynamically control an ingester&amp;rsquo;s &lt;code&gt;-ingester.ring.unregister-on-shutdown&lt;/code&gt; state without having to restart the ingester.&lt;/p&gt;
&lt;p&gt;A &lt;code&gt;PUT&lt;/code&gt; sets the ingester&amp;rsquo;s unregister state. When invoked with the &lt;code&gt;PUT&lt;/code&gt; method, the endpoint takes a request body:&lt;/p&gt;

&lt;div class=&#34;code-snippet code-snippet__mini&#34;&gt;&lt;div class=&#34;lang-toolbar__mini&#34;&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet code-snippet__border&#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-none&#34;&gt;{&amp;#34;unregister&amp;#34;: true}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;A &lt;code&gt;GET&lt;/code&gt; returns the ingester&amp;rsquo;s current unregister state.&lt;/p&gt;
&lt;p&gt;A &lt;code&gt;DELETE&lt;/code&gt; resets the ingester&amp;rsquo;s unregister state to the value that was passed via the &lt;code&gt;-ingester.ring.unregister-on-shutdown&lt;/code&gt;
configuration option.&lt;/p&gt;
&lt;p&gt;Regardless of the HTTP method used, the endpoint always returns a response body with the ingester&amp;rsquo;s current unregister state:&lt;/p&gt;

&lt;div class=&#34;code-snippet code-snippet__mini&#34;&gt;&lt;div class=&#34;lang-toolbar__mini&#34;&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet code-snippet__border&#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-none&#34;&gt;{&amp;#34;unregister&amp;#34;: true}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h3 id=&#34;tsdb-metrics&#34;&gt;TSDB Metrics&lt;/h3&gt;

&lt;div class=&#34;code-snippet code-snippet__mini&#34;&gt;&lt;div class=&#34;lang-toolbar__mini&#34;&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet code-snippet__border&#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-none&#34;&gt;GET /ingester/tsdb_metrics&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;This endpoint returns low-level metrics exposed by per-tenant TSDB. This can be useful for troubleshooting.
Difference from &lt;code&gt;/metrics&lt;/code&gt; is that metrics returned in &lt;code&gt;/metrics&lt;/code&gt; are aggregated across all open TSDBs, while this
endpoint returns TSDB metrics only for specific tenant.&lt;/p&gt;
&lt;p&gt;Requires &lt;a href=&#34;#authentication&#34;&gt;authentication&lt;/a&gt;, authenticated tenant is one whose TSDB metrics are returned.&lt;/p&gt;
&lt;h3 id=&#34;ingesters-ring-status&#34;&gt;Ingesters ring status&lt;/h3&gt;

&lt;div class=&#34;code-snippet code-snippet__mini&#34;&gt;&lt;div class=&#34;lang-toolbar__mini&#34;&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet code-snippet__border&#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-none&#34;&gt;GET /ingester/ring&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;This endpoint displays a web page with the ingesters hash ring status, including the state, health, and last heartbeat time of each ingester.&lt;/p&gt;
&lt;h3 id=&#34;ingester-tenants&#34;&gt;Ingester tenants&lt;/h3&gt;

&lt;div class=&#34;code-snippet code-snippet__mini&#34;&gt;&lt;div class=&#34;lang-toolbar__mini&#34;&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet code-snippet__border&#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-none&#34;&gt;GET /ingester/tenants&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Displays a web page with the list of tenants with open TSDB on given ingester.&lt;/p&gt;
&lt;h3 id=&#34;ingester-tenant-tsdb&#34;&gt;Ingester tenant TSDB&lt;/h3&gt;

&lt;div class=&#34;code-snippet code-snippet__mini&#34;&gt;&lt;div class=&#34;lang-toolbar__mini&#34;&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet code-snippet__border&#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-none&#34;&gt;GET /ingester/tsdb/{tenant}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Displays a web page with details about tenant&amp;rsquo;s open TSDB on given ingester.&lt;/p&gt;
&lt;h2 id=&#34;querier--query-frontend&#34;&gt;Querier / Query-frontend&lt;/h2&gt;
&lt;p&gt;The following endpoints are exposed both by the &lt;a href=&#34;../architecture/components/querier/&#34;&gt;querier&lt;/a&gt; and &lt;a href=&#34;../architecture/components/query-frontend/&#34;&gt;query-frontend&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&#34;instant-query&#34;&gt;Instant query&lt;/h3&gt;

&lt;div class=&#34;code-snippet code-snippet__mini&#34;&gt;&lt;div class=&#34;lang-toolbar__mini&#34;&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet code-snippet__border&#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-none&#34;&gt;GET,POST &amp;lt;prometheus-http-prefix&amp;gt;/api/v1/query&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;This endpoint is compatible with the Prometheus instant query endpoint.&lt;/p&gt;
&lt;p&gt;For more information about Prometheus instant queries, refer to Prometheus &lt;a href=&#34;https://prometheus.io/docs/prometheus/latest/querying/api/#instant-queries&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;instant query&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Requires &lt;a href=&#34;#authentication&#34;&gt;authentication&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&#34;range-query&#34;&gt;Range query&lt;/h3&gt;

&lt;div class=&#34;code-snippet code-snippet__mini&#34;&gt;&lt;div class=&#34;lang-toolbar__mini&#34;&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet code-snippet__border&#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-none&#34;&gt;GET,POST &amp;lt;prometheus-http-prefix&amp;gt;/api/v1/query_range&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;This endpoint is compatible with the Prometheus range query endpoint. When a client sends a request through the query-frontend, the query-frontend uses caching and execution parallelization to accelerate the query.&lt;/p&gt;
&lt;p&gt;For more information about Prometheus range queries, refer to Prometheus &lt;a href=&#34;https://prometheus.io/docs/prometheus/latest/querying/api/#range-queries&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;range query&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Requires &lt;a href=&#34;#authentication&#34;&gt;authentication&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&#34;exemplar-query&#34;&gt;Exemplar query&lt;/h3&gt;

&lt;div class=&#34;code-snippet code-snippet__mini&#34;&gt;&lt;div class=&#34;lang-toolbar__mini&#34;&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet code-snippet__border&#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-none&#34;&gt;GET,POST &amp;lt;prometheus-http-prefix&amp;gt;/api/v1/query_exemplars&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;This endpoint is compatible with the Prometheus exemplar query endpoint.&lt;/p&gt;
&lt;p&gt;For more information about Prometheus exemplar queries, refer to Prometheus &lt;a href=&#34;https://prometheus.io/docs/prometheus/latest/querying/api/#querying-exemplars&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;exemplar query&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Requires &lt;a href=&#34;#authentication&#34;&gt;authentication&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&#34;get-series-by-label-matchers&#34;&gt;Get series by label matchers&lt;/h3&gt;

&lt;div class=&#34;code-snippet code-snippet__mini&#34;&gt;&lt;div class=&#34;lang-toolbar__mini&#34;&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet code-snippet__border&#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-none&#34;&gt;GET,POST &amp;lt;prometheus-http-prefix&amp;gt;/api/v1/series&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;For more information, refer to Prometheus &lt;a href=&#34;https://prometheus.io/docs/prometheus/latest/querying/api/#finding-series-by-label-matchers&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;series endpoint&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Requires &lt;a href=&#34;#authentication&#34;&gt;authentication&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&#34;get-active-series-by-selector&#34;&gt;Get active series by selector&lt;/h3&gt;

&lt;div class=&#34;code-snippet code-snippet__mini&#34;&gt;&lt;div class=&#34;lang-toolbar__mini&#34;&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet code-snippet__border&#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-none&#34;&gt;GET,POST &amp;lt;prometheus-http-prefix&amp;gt;/api/v1/cardinality/active_series&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Returns the label sets of all active series matching a PromQL selector.&lt;/p&gt;
&lt;p&gt;This endpoint is similar to the &lt;a href=&#34;#get-series-by-label-matchers&#34;&gt;series endpoint&lt;/a&gt; but operates on the set of series considered &lt;em&gt;active&lt;/em&gt; at the time of query processing.
A series is considered active if any data has been written for it within the period specified by &lt;code&gt;-ingester.active-series-metrics-idle-timeout&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;This endpoint is disabled by default; you can enable it via the &lt;code&gt;-querier.cardinality-analysis-enabled&lt;/code&gt; CLI flag (or its respective YAML configuration option).&lt;/p&gt;
&lt;p&gt;Requires &lt;a href=&#34;#authentication&#34;&gt;authentication&lt;/a&gt;.&lt;/p&gt;
&lt;h4 id=&#34;query-parameters&#34;&gt;Query parameters&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;selector&lt;/strong&gt; - &lt;em&gt;mandatory&lt;/em&gt; - PromQL selector used to filter the result set.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;headers&#34;&gt;Headers&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Sharding-Control&lt;/code&gt; - &lt;em&gt;optional&lt;/em&gt; - Integer value specifying how many shards to use for request execution.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;response-format&#34;&gt;Response format&lt;/h4&gt;
&lt;p&gt;The response format is a subset of the &lt;a href=&#34;#get-series-by-label-matchers&#34;&gt;series endpoint&lt;/a&gt; format including only the &lt;code&gt;data&lt;/code&gt; field.
The following shows an example request/response pair for this endpoint. Each item in the &lt;code&gt;data&lt;/code&gt; array corresponds to a matched series.&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;shell&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-shell&#34;&gt;$ curl &amp;#39;http://localhost:9090/api/v1/cardinality/active_series&amp;#39; \
    --header &amp;#39;Sharding-Control: 4&amp;#39; \ # optional
    --data-urlencode &amp;#39;selector=up&amp;#39;&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;shell&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-shell&#34;&gt;{
   &amp;#34;data&amp;#34; : [
      {
         &amp;#34;__name__&amp;#34; : &amp;#34;up&amp;#34;,
         &amp;#34;job&amp;#34; : &amp;#34;prometheus&amp;#34;,
         &amp;#34;instance&amp;#34; : &amp;#34;localhost:9090&amp;#34;
      },
      {
         &amp;#34;__name__&amp;#34; : &amp;#34;up&amp;#34;,
         &amp;#34;job&amp;#34; : &amp;#34;node&amp;#34;,
         &amp;#34;instance&amp;#34; : &amp;#34;localhost:9091&amp;#34;
      },
      {
         &amp;#34;__name__&amp;#34; : &amp;#34;process_start_time_seconds&amp;#34;,
         &amp;#34;job&amp;#34; : &amp;#34;prometheus&amp;#34;,
         &amp;#34;instance&amp;#34; : &amp;#34;localhost:9090&amp;#34;
      }
   ]
}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h4 id=&#34;caching&#34;&gt;Caching&lt;/h4&gt;
&lt;p&gt;Responses for the active series endpoint are never cached.&lt;/p&gt;
&lt;h3 id=&#34;get-label-names&#34;&gt;Get label names&lt;/h3&gt;

&lt;div class=&#34;code-snippet code-snippet__mini&#34;&gt;&lt;div class=&#34;lang-toolbar__mini&#34;&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet code-snippet__border&#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-none&#34;&gt;GET,POST &amp;lt;prometheus-http-prefix&amp;gt;/api/v1/labels&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;For more information, refer to Prometheus &lt;a href=&#34;https://prometheus.io/docs/prometheus/latest/querying/api/#getting-label-names&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;get label names&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Requires &lt;a href=&#34;#authentication&#34;&gt;authentication&lt;/a&gt;.&lt;/p&gt;
&lt;h4 id=&#34;caching-1&#34;&gt;Caching&lt;/h4&gt;
&lt;p&gt;The query-frontend can return a stale response fetched from the query results cache if &lt;code&gt;-query-frontend.cache-results&lt;/code&gt; is enabled and &lt;code&gt;-query-frontend.results-cache-ttl-for-labels-query&lt;/code&gt; set to a value greater than &lt;code&gt;0&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id=&#34;get-label-values&#34;&gt;Get label values&lt;/h3&gt;

&lt;div class=&#34;code-snippet code-snippet__mini&#34;&gt;&lt;div class=&#34;lang-toolbar__mini&#34;&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet code-snippet__border&#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-none&#34;&gt;GET &amp;lt;prometheus-http-prefix&amp;gt;/api/v1/label/{name}/values&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;For more information, refer to Prometheus &lt;a href=&#34;https://prometheus.io/docs/prometheus/latest/querying/api/#querying-label-values&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;get label values&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Requires &lt;a href=&#34;#authentication&#34;&gt;authentication&lt;/a&gt;.&lt;/p&gt;
&lt;h4 id=&#34;caching-2&#34;&gt;Caching&lt;/h4&gt;
&lt;p&gt;The query-frontend can return a stale response fetched from the query results cache if &lt;code&gt;-query-frontend.cache-results&lt;/code&gt; is enabled and &lt;code&gt;-query-frontend.results-cache-ttl-for-labels-query&lt;/code&gt; set to a value greater than &lt;code&gt;0&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id=&#34;get-metric-metadata&#34;&gt;Get metric metadata&lt;/h3&gt;

&lt;div class=&#34;code-snippet code-snippet__mini&#34;&gt;&lt;div class=&#34;lang-toolbar__mini&#34;&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet code-snippet__border&#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-none&#34;&gt;GET &amp;lt;prometheus-http-prefix&amp;gt;/api/v1/metadata&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Prometheus-compatible metric metadata endpoint.&lt;/p&gt;
&lt;p&gt;For more information, refer to Prometheus &lt;a href=&#34;https://prometheus.io/docs/prometheus/latest/querying/api/#querying-metric-metadata&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;metric metadata&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Requires &lt;a href=&#34;#authentication&#34;&gt;authentication&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&#34;remote-read&#34;&gt;Remote read&lt;/h3&gt;

&lt;div class=&#34;code-snippet code-snippet__mini&#34;&gt;&lt;div class=&#34;lang-toolbar__mini&#34;&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet code-snippet__border&#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-none&#34;&gt;POST &amp;lt;prometheus-http-prefix&amp;gt;/api/v1/read&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Prometheus-compatible &lt;a href=&#34;https://prometheus.io/docs/prometheus/latest/configuration/configuration/#remote_read&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;remote read&lt;/a&gt; endpoint.&lt;/p&gt;
&lt;p&gt;For more information, refer to Prometheus &lt;a href=&#34;https://prometheus.io/docs/prometheus/latest/storage/#remote-storage-integrations&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Remote storage integrations&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Requires &lt;a href=&#34;#authentication&#34;&gt;authentication&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&#34;label-names-cardinality&#34;&gt;Label names cardinality&lt;/h3&gt;

&lt;div class=&#34;code-snippet code-snippet__mini&#34;&gt;&lt;div class=&#34;lang-toolbar__mini&#34;&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet code-snippet__border&#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-none&#34;&gt;GET,POST &amp;lt;prometheus-http-prefix&amp;gt;/api/v1/cardinality/label_names&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Returns label names cardinality across all ingesters, for the authenticated tenant, in &lt;code&gt;JSON&lt;/code&gt; format.
It counts distinct label values per label name.&lt;/p&gt;
&lt;p&gt;The items in the field &lt;code&gt;cardinality&lt;/code&gt; are sorted by &lt;code&gt;label_values_count&lt;/code&gt; in DESC order and by &lt;code&gt;label_name&lt;/code&gt; in ASC order.
The count of items is limited by &lt;code&gt;limit&lt;/code&gt; request param.&lt;/p&gt;
&lt;p&gt;This endpoint is disabled by default and can be enabled via the &lt;code&gt;-querier.cardinality-analysis-enabled&lt;/code&gt; CLI flag (or its respective YAML config option).&lt;/p&gt;
&lt;p&gt;Requires &lt;a href=&#34;#authentication&#34;&gt;authentication&lt;/a&gt;.&lt;/p&gt;
&lt;h4 id=&#34;count-series-by-inmemory-or-active&#34;&gt;Count series by &lt;code&gt;inmemory&lt;/code&gt; or &lt;code&gt;active&lt;/code&gt;&lt;/h4&gt;
&lt;p&gt;Two methods of counting are available: &lt;code&gt;inmemory&lt;/code&gt; and &lt;code&gt;active&lt;/code&gt;. To choose one, use the &lt;code&gt;count_method&lt;/code&gt; parameter.&lt;/p&gt;
&lt;p&gt;The &lt;code&gt;inmemory&lt;/code&gt; method counts the labels in currently opened TSDBs in Mimir&amp;rsquo;s ingesters.
Two subsequent calls might return completely different results if an ingester cut a block between calls.
This method of counting is most useful for understanding ingester memory usage.&lt;/p&gt;
&lt;p&gt;The &lt;code&gt;active&lt;/code&gt; method also counts labels in currently opened TSDBs in Mimir&amp;rsquo;s ingesters, but filters out values that have not received a sample within a configurable duration of time.
To configure this duration, use the &lt;code&gt;-ingester.active-series-metrics-idle-timeout&lt;/code&gt; parameter.
This method of counting is most useful for understanding what label values are represented in the samples ingested by Mimir in the last &lt;code&gt;-ingester.active-series-metrics-idle-timeout&lt;/code&gt;.
Two subsequent calls will likely return similar results, because this window of time is not related to the block cutting on ingesters.
Values will change only as a result of changes in the data ingested by Mimir.&lt;/p&gt;
&lt;h4 id=&#34;caching-3&#34;&gt;Caching&lt;/h4&gt;
&lt;p&gt;The query-frontend can return a stale response fetched from the query results cache if &lt;code&gt;-query-frontend.cache-results&lt;/code&gt; is enabled and &lt;code&gt;-query-frontend.results-cache-ttl-for-cardinality-query&lt;/code&gt; set to a value greater than &lt;code&gt;0&lt;/code&gt;.&lt;/p&gt;
&lt;h4 id=&#34;request-params&#34;&gt;Request params&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;selector&lt;/strong&gt; - &lt;em&gt;optional&lt;/em&gt; - specifies PromQL selector that will be used to filter series that must be analyzed.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;count_method&lt;/strong&gt; - &lt;em&gt;optional&lt;/em&gt; - specifies which series counting method will be used. (default=&amp;ldquo;inmemory&amp;rdquo;, available options=[&amp;ldquo;inmemory&amp;rdquo;, &amp;ldquo;active&amp;rdquo;])&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;limit&lt;/strong&gt; - &lt;em&gt;optional&lt;/em&gt; - specifies max count of items in field &lt;code&gt;cardinality&lt;/code&gt; in response (default=20, min=0, max=500)&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;response-schema&#34;&gt;Response schema&lt;/h4&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;JSON&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-json&#34;&gt;{
  &amp;#34;label_values_count_total&amp;#34;: &amp;lt;number&amp;gt;,
  &amp;#34;label_names_count&amp;#34;: &amp;lt;number&amp;gt;,
  &amp;#34;cardinality&amp;#34;: [
    {
      &amp;#34;label_name&amp;#34;: &amp;lt;string&amp;gt;,
      &amp;#34;label_values_count&amp;#34;: &amp;lt;number&amp;gt;
    }
  ]
}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h3 id=&#34;label-values-cardinality&#34;&gt;Label values cardinality&lt;/h3&gt;

&lt;div class=&#34;code-snippet code-snippet__mini&#34;&gt;&lt;div class=&#34;lang-toolbar__mini&#34;&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet code-snippet__border&#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-none&#34;&gt;GET,POST &amp;lt;prometheus-http-prefix&amp;gt;/api/v1/cardinality/label_values&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Returns label values cardinality associated to request param &lt;code&gt;label_names[]&lt;/code&gt; across all ingesters, for the authenticated tenant, in &lt;code&gt;JSON&lt;/code&gt; format.
It returns the series count per label value associated to request param &lt;code&gt;label_names[]&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;The items in the field &lt;code&gt;labels&lt;/code&gt; are sorted by &lt;code&gt;series_count&lt;/code&gt; in descending order and by &lt;code&gt;label_name&lt;/code&gt; in ascending order.
The items in the field &lt;code&gt;cardinality&lt;/code&gt; are sorted by &lt;code&gt;series_count&lt;/code&gt; in DESC order and by &lt;code&gt;label_value&lt;/code&gt; in ASC order.
The count of &lt;code&gt;cardinality&lt;/code&gt; items is limited by request parameter &lt;code&gt;limit&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;This endpoint is disabled by default; you can enable it via the &lt;code&gt;-querier.cardinality-analysis-enabled&lt;/code&gt; CLI flag (or its respective YAML configuration option).&lt;/p&gt;
&lt;p&gt;Requires &lt;a href=&#34;#authentication&#34;&gt;authentication&lt;/a&gt;.&lt;/p&gt;
&lt;h4 id=&#34;count-series-by-inmemory-or-active-1&#34;&gt;Count series by &lt;code&gt;inmemory&lt;/code&gt; or &lt;code&gt;active&lt;/code&gt;&lt;/h4&gt;
&lt;p&gt;Two methods of counting are available: &lt;code&gt;inmemory&lt;/code&gt; and &lt;code&gt;active&lt;/code&gt;. To choose one, use the &lt;code&gt;count_method&lt;/code&gt; parameter.&lt;/p&gt;
&lt;p&gt;The &lt;code&gt;inmemory&lt;/code&gt; method counts the number of series in currently opened TSDBs in Mimir&amp;rsquo;s ingesters.
Two subsequent calls might return completely different results if an ingester cut a block between calls.
This method of counting is most useful for understanding ingester memory usage.&lt;/p&gt;
&lt;p&gt;The &lt;code&gt;active&lt;/code&gt; method also counts series in currently opened TSDBs in Mimir&amp;rsquo;s ingesters, but filters out series that have not received a sample within a configurable duration of time.
To configure this duration, use the &lt;code&gt;-ingester.active-series-metrics-idle-timeout&lt;/code&gt; parameter.
This method of counting is most useful for understanding what label values are represented in the samples ingested by Mimir in the last &lt;code&gt;-ingester.active-series-metrics-idle-timeout&lt;/code&gt;.
Two subsequent calls will likely return similar results, because this window of time is not related to the block cutting on ingesters.
Values will change only as a result of changes in the data ingested by Mimir.&lt;/p&gt;
&lt;h4 id=&#34;caching-4&#34;&gt;Caching&lt;/h4&gt;
&lt;p&gt;The query-frontend can return a stale response fetched from the query results cache if &lt;code&gt;-query-frontend.cache-results&lt;/code&gt; is enabled and &lt;code&gt;-query-frontend.results-cache-ttl-for-cardinality-query&lt;/code&gt; set to a value greater than &lt;code&gt;0&lt;/code&gt;.&lt;/p&gt;
&lt;h4 id=&#34;request-params-1&#34;&gt;Request params&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;label_names[]&lt;/strong&gt; - &lt;em&gt;required&lt;/em&gt; - specifies labels for which cardinality must be provided.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;selector&lt;/strong&gt; - &lt;em&gt;optional&lt;/em&gt; - specifies PromQL selector that will be used to filter series that must be analyzed.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;count_method&lt;/strong&gt; - &lt;em&gt;optional&lt;/em&gt; - specifies which series counting method will be used. (default=&amp;ldquo;inmemory&amp;rdquo;, available options=[&amp;ldquo;inmemory&amp;rdquo;, &amp;ldquo;active&amp;rdquo;])&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;limit&lt;/strong&gt; - &lt;em&gt;optional&lt;/em&gt; - specifies max count of items in field &lt;code&gt;cardinality&lt;/code&gt; in response (default=20, min=0, max=500).&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;response-schema-1&#34;&gt;Response schema&lt;/h4&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;JSON&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-json&#34;&gt;{
  &amp;#34;series_count_total&amp;#34;: &amp;lt;number&amp;gt;,
  &amp;#34;labels&amp;#34;: [
    {
      &amp;#34;label_name&amp;#34;: &amp;lt;string&amp;gt;,
      &amp;#34;label_values_count&amp;#34;: &amp;lt;number&amp;gt;,
      &amp;#34;series_count&amp;#34;: &amp;lt;number&amp;gt;,
      &amp;#34;cardinality&amp;#34;: [
        {
          &amp;#34;label_value&amp;#34;: &amp;lt;string&amp;gt;,
          &amp;#34;series_count&amp;#34;: &amp;lt;number&amp;gt;
        }
      ]
    }
  ]
}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;series_count_total&lt;/strong&gt; - total number of series across opened TSDBs in all ingesters&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;labels[].label_name&lt;/strong&gt; - label name requested via the request param &lt;code&gt;label_names[]&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;labels[].label_values_count&lt;/strong&gt; - total number of label values for the label name (note that dependent on the &lt;code&gt;limit&lt;/code&gt; request param it is possible that not all label values are present in &lt;code&gt;cardinality&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;labels[].series_count&lt;/strong&gt; - total number of series having &lt;code&gt;labels[].label_name&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;labels[].cardinality[].label_value&lt;/strong&gt; - label value associated to &lt;code&gt;labels[].label_name&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;labels[].cardinality[].series_count&lt;/strong&gt; - total number of series having &lt;code&gt;label_value&lt;/code&gt; for &lt;code&gt;label_name&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;querier&#34;&gt;Querier&lt;/h2&gt;
&lt;h3 id=&#34;get-tenant-ingestion-stats&#34;&gt;Get tenant ingestion stats&lt;/h3&gt;

&lt;div class=&#34;code-snippet code-snippet__mini&#34;&gt;&lt;div class=&#34;lang-toolbar__mini&#34;&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet code-snippet__border&#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-none&#34;&gt;GET /api/v1/user_stats&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Returns realtime ingestion rate, for the authenticated tenant, in &lt;code&gt;JSON&lt;/code&gt; format.&lt;/p&gt;
&lt;p&gt;Requires &lt;a href=&#34;#authentication&#34;&gt;authentication&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;query-scheduler&#34;&gt;Query-scheduler&lt;/h2&gt;
&lt;h3 id=&#34;query-scheduler-ring-status&#34;&gt;Query-scheduler ring status&lt;/h3&gt;

&lt;div class=&#34;code-snippet code-snippet__mini&#34;&gt;&lt;div class=&#34;lang-toolbar__mini&#34;&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet code-snippet__border&#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-none&#34;&gt;GET /query-scheduler/ring&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Displays a web page with the query-scheduler hash ring status, including the state, healthy and last heartbeat time of each query-scheduler.
The query-scheduler ring is available only when &lt;code&gt;-query-scheduler.service-discovery-mode&lt;/code&gt; is set to &lt;code&gt;ring&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id=&#34;ruler&#34;&gt;Ruler&lt;/h2&gt;
&lt;p&gt;The ruler API endpoints require to configure a backend object storage to store the recording rules and alerts. The ruler API uses the concept of a &amp;ldquo;namespace&amp;rdquo; when creating rule groups. This is a stand in for the name of the rule file in Prometheus and rule groups must be named uniquely within a namespace.&lt;/p&gt;
&lt;h3 id=&#34;ruler-ring-status&#34;&gt;Ruler ring status&lt;/h3&gt;

&lt;div class=&#34;code-snippet code-snippet__mini&#34;&gt;&lt;div class=&#34;lang-toolbar__mini&#34;&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet code-snippet__border&#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-none&#34;&gt;GET /ruler/ring&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Displays a web page with the ruler hash ring status, including the state, healthy and last heartbeat time of each ruler.&lt;/p&gt;
&lt;h3 id=&#34;ruler-rules&#34;&gt;Ruler rules&lt;/h3&gt;

&lt;div class=&#34;code-snippet code-snippet__mini&#34;&gt;&lt;div class=&#34;lang-toolbar__mini&#34;&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet code-snippet__border&#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-none&#34;&gt;GET /ruler/rule_groups&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;List all tenant rules. This endpoint is not part of ruler-API and is always available regardless of whether ruler-API is enabled or not. It should not be exposed to end users. This endpoint returns a YAML dictionary with all the rule groups for each tenant and &lt;code&gt;200&lt;/code&gt; status code on success.&lt;/p&gt;
&lt;h3 id=&#34;list-prometheus-rules&#34;&gt;List Prometheus rules&lt;/h3&gt;

&lt;div class=&#34;code-snippet code-snippet__mini&#34;&gt;&lt;div class=&#34;lang-toolbar__mini&#34;&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet code-snippet__border&#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-none&#34;&gt;GET &amp;lt;prometheus-http-prefix&amp;gt;/api/v1/rules?type={alert|record}&amp;amp;file={}&amp;amp;rule_group={}&amp;amp;rule_name={}&amp;amp;exclude_alerts={true|false}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Prometheus-compatible rules endpoint to list alerting and recording rules that are currently loaded.&lt;/p&gt;
&lt;p&gt;The &lt;code&gt;type&lt;/code&gt; parameter is optional. If set, only the specified type of rule is returned.&lt;/p&gt;
&lt;p&gt;The &lt;code&gt;file&lt;/code&gt;, &lt;code&gt;rule_group&lt;/code&gt; and &lt;code&gt;rule_name&lt;/code&gt; parameters are optional, and can accept multiple values. If set, the response content is filtered accordingly. The parameters can also be provided as &lt;code&gt;file[]&lt;/code&gt;, &lt;code&gt;rule_group[]&lt;/code&gt; and &lt;code&gt;rule_name[]&lt;/code&gt; - if both are provided e.g &lt;code&gt;file&lt;/code&gt; and &lt;code&gt;file[]&lt;/code&gt; , &lt;code&gt;file[]&lt;/code&gt; will take precdent.&lt;/p&gt;
&lt;p&gt;The &lt;code&gt;exclude_alerts&lt;/code&gt; parameter is optional. If set, it only returns rules and excludes active alerts.&lt;/p&gt;
&lt;p&gt;The &lt;code&gt;group_limit&lt;/code&gt; and &lt;code&gt;group_next_token&lt;/code&gt; parameters are optional. If &lt;code&gt;group_limit&lt;/code&gt; is set, it will limit the number of rule groups returned in a single response. If the total number of rule groups exceeds this value, the response will contain a &lt;code&gt;groupNextToken&lt;/code&gt;.
This can be passed into subsequent requests via &lt;code&gt;group_next_token&lt;/code&gt; to paginate over the remaining groups. The final response will not contain a token.
For more information, refer to Prometheus &lt;a href=&#34;https://prometheus.io/docs/prometheus/latest/querying/api/#rules&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;rules&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Requires &lt;a href=&#34;#authentication&#34;&gt;authentication&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&#34;list-prometheus-alerts&#34;&gt;List Prometheus alerts&lt;/h3&gt;

&lt;div class=&#34;code-snippet code-snippet__mini&#34;&gt;&lt;div class=&#34;lang-toolbar__mini&#34;&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet code-snippet__border&#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-none&#34;&gt;GET &amp;lt;prometheus-http-prefix&amp;gt;/api/v1/alerts&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Prometheus-compatible rules endpoint to list of all active alerts.&lt;/p&gt;
&lt;p&gt;For more information, refer to Prometheus &lt;a href=&#34;https://prometheus.io/docs/prometheus/latest/querying/api/#alerts&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;alerts&lt;/a&gt; documentation.&lt;/p&gt;
&lt;p&gt;Requires &lt;a href=&#34;#authentication&#34;&gt;authentication&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&#34;list-rule-groups&#34;&gt;List rule groups&lt;/h3&gt;

&lt;div class=&#34;code-snippet code-snippet__mini&#34;&gt;&lt;div class=&#34;lang-toolbar__mini&#34;&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet code-snippet__border&#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-none&#34;&gt;GET &amp;lt;prometheus-http-prefix&amp;gt;/config/v1/rules&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;List all rules configured for the authenticated tenant. This endpoint returns a YAML dictionary with all the rule groups for each namespace and &lt;code&gt;200&lt;/code&gt; status code on success.&lt;/p&gt;
&lt;p&gt;This endpoint can be disabled via the &lt;code&gt;-ruler.enable-api&lt;/code&gt; CLI flag (or its respective YAML config option).&lt;/p&gt;
&lt;p&gt;Requires &lt;a href=&#34;#authentication&#34;&gt;authentication&lt;/a&gt;.&lt;/p&gt;


&lt;div class=&#34;admonition admonition-note&#34;&gt;&lt;blockquote&gt;&lt;p class=&#34;title text-uppercase&#34;&gt;Note&lt;/p&gt;&lt;p&gt;To list all rule groups from Mimir, use &lt;a href=&#34;../../manage/tools/mimirtool/#list-rules&#34;&gt;&lt;code&gt;mimirtool rules list&lt;/code&gt; command&lt;/a&gt;.&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Example response&lt;/strong&gt;&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;YAML&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-yaml&#34;&gt;---
&amp;lt;namespace1&amp;gt;:
- name: &amp;lt;string&amp;gt;
  interval: &amp;lt;duration;optional&amp;gt;
  source_tenants:
    - &amp;lt;string&amp;gt;
  rules:
  - record: &amp;lt;string&amp;gt;
      expr: &amp;lt;string&amp;gt;
  - alert: &amp;lt;string&amp;gt;
      expr: &amp;lt;string&amp;gt;
      for: &amp;lt;duration&amp;gt;
      annotations:
        &amp;lt;annotation_name&amp;gt;: &amp;lt;string&amp;gt;
      labels:
        &amp;lt;label_name&amp;gt;: &amp;lt;string&amp;gt;
- name: &amp;lt;string&amp;gt;
  interval: &amp;lt;duration;optional&amp;gt;
  source_tenants:
    - &amp;lt;string&amp;gt;
  rules:
  - record: &amp;lt;string&amp;gt;
      expr: &amp;lt;string&amp;gt;
  - alert: &amp;lt;string&amp;gt;
      expr: &amp;lt;string&amp;gt;
      for: &amp;lt;duration&amp;gt;
      annotations:
        &amp;lt;annotation_name&amp;gt;: &amp;lt;string&amp;gt;
      labels:
        &amp;lt;label_name&amp;gt;: &amp;lt;string&amp;gt;
&amp;lt;namespace2&amp;gt;:
- name: &amp;lt;string&amp;gt;
  interval: &amp;lt;duration;optional&amp;gt;
  source_tenants:
    - &amp;lt;string&amp;gt;
  rules:
  - record: &amp;lt;string&amp;gt;
      expr: &amp;lt;string&amp;gt;
  - alert: &amp;lt;string&amp;gt;
      expr: &amp;lt;string&amp;gt;
      for: &amp;lt;duration&amp;gt;
      annotations:
        &amp;lt;annotation_name&amp;gt;: &amp;lt;string&amp;gt;
      labels:
        &amp;lt;label_name&amp;gt;: &amp;lt;string&amp;gt;&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h3 id=&#34;get-rule-groups-by-namespace&#34;&gt;Get rule groups by namespace&lt;/h3&gt;

&lt;div class=&#34;code-snippet code-snippet__mini&#34;&gt;&lt;div class=&#34;lang-toolbar__mini&#34;&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet code-snippet__border&#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-none&#34;&gt;GET &amp;lt;prometheus-http-prefix&amp;gt;/config/v1/rules/{namespace}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Returns the rule groups defined for a given namespace.
Escape the &lt;code&gt;{namespace}&lt;/code&gt; path segment using percent-encoding, as defined by
&lt;a href=&#34;https://datatracker.ietf.org/doc/html/rfc3986&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;RFC 3986&lt;/a&gt;. For example, escape &lt;code&gt;/&lt;/code&gt; to &lt;code&gt;%2F&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;This endpoint can be disabled via the &lt;code&gt;-ruler.enable-api&lt;/code&gt; CLI flag (or its respective YAML config option).&lt;/p&gt;
&lt;p&gt;Requires &lt;a href=&#34;#authentication&#34;&gt;authentication&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Example response&lt;/strong&gt;&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;YAML&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-yaml&#34;&gt;name: &amp;lt;string&amp;gt;
interval: &amp;lt;duration;optional&amp;gt;
source_tenants:
  - &amp;lt;string&amp;gt;
rules:
  - record: &amp;lt;string&amp;gt;
    expr: &amp;lt;string&amp;gt;
  - alert: &amp;lt;string&amp;gt;
    expr: &amp;lt;string&amp;gt;
    for: &amp;lt;duration&amp;gt;
    annotations:
      &amp;lt;annotation_name&amp;gt;: &amp;lt;string&amp;gt;
    labels:
      &amp;lt;label_name&amp;gt;: &amp;lt;string&amp;gt;&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h3 id=&#34;get-rule-group&#34;&gt;Get rule group&lt;/h3&gt;

&lt;div class=&#34;code-snippet code-snippet__mini&#34;&gt;&lt;div class=&#34;lang-toolbar__mini&#34;&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet code-snippet__border&#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-none&#34;&gt;GET &amp;lt;prometheus-http-prefix&amp;gt;/config/v1/rules/{namespace}/{groupName}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Returns the rule group matching the request namespace and group name.
Escape the &lt;code&gt;{namespace}&lt;/code&gt; and &lt;code&gt;{groupName}&lt;/code&gt; path segments using percent-encoding, as defined by
&lt;a href=&#34;https://datatracker.ietf.org/doc/html/rfc3986&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;RFC 3986&lt;/a&gt;. For example, escape &lt;code&gt;/&lt;/code&gt; to &lt;code&gt;%2F&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;This endpoint can be disabled via the &lt;code&gt;-ruler.enable-api&lt;/code&gt; CLI flag (or its respective YAML config option).&lt;/p&gt;
&lt;p&gt;Requires &lt;a href=&#34;#authentication&#34;&gt;authentication&lt;/a&gt;.&lt;/p&gt;


&lt;div class=&#34;admonition admonition-note&#34;&gt;&lt;blockquote&gt;&lt;p class=&#34;title text-uppercase&#34;&gt;Note&lt;/p&gt;&lt;p&gt;To retrieve a single rule group from Mimir, use &lt;a href=&#34;../../manage/tools/mimirtool/#get-rule-group&#34;&gt;&lt;code&gt;mimirtool rules get&lt;/code&gt; command&lt;/a&gt; .&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;

&lt;h3 id=&#34;set-rule-group&#34;&gt;Set rule group&lt;/h3&gt;

&lt;div class=&#34;code-snippet code-snippet__mini&#34;&gt;&lt;div class=&#34;lang-toolbar__mini&#34;&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet code-snippet__border&#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-none&#34;&gt;POST /&amp;lt;prometheus-http-prefix&amp;gt;/config/v1/rules/{namespace}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Creates or updates a rule group.
This endpoint expects a request with &lt;code&gt;Content-Type: application/yaml&lt;/code&gt; header and the rules group &lt;strong&gt;YAML&lt;/strong&gt; definition in the request body, and returns &lt;code&gt;202&lt;/code&gt; on success.
The request body must contain the definition of one and only one rule group.
Escape the &lt;code&gt;{namespace}&lt;/code&gt; path segment using percent-encoding, as defined by &lt;a href=&#34;https://datatracker.ietf.org/doc/html/rfc3986&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;RFC 3986&lt;/a&gt;.
For example, escape &lt;code&gt;/&lt;/code&gt; to &lt;code&gt;%2F&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;This endpoint can be disabled via the &lt;code&gt;-ruler.enable-api&lt;/code&gt; CLI flag (or its respective YAML config option).&lt;/p&gt;
&lt;p&gt;Requires &lt;a href=&#34;#authentication&#34;&gt;authentication&lt;/a&gt;.&lt;/p&gt;


&lt;div class=&#34;admonition admonition-note&#34;&gt;&lt;blockquote&gt;&lt;p class=&#34;title text-uppercase&#34;&gt;Note&lt;/p&gt;&lt;p&gt;To load one or more rule groups into Mimir, use &lt;a href=&#34;../../manage/tools/mimirtool/#load-rule-group&#34;&gt;&lt;code&gt;mimirtool rules load&lt;/code&gt; command&lt;/a&gt; .&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;



&lt;div class=&#34;admonition admonition-note&#34;&gt;&lt;blockquote&gt;&lt;p class=&#34;title text-uppercase&#34;&gt;Note&lt;/p&gt;&lt;p&gt;When using &lt;code&gt;curl&lt;/code&gt; to send the request body from a file, ensure that you use the &lt;code&gt;--data-binary&lt;/code&gt; flag instead of &lt;code&gt;-d&lt;/code&gt;, &lt;code&gt;--data&lt;/code&gt;, or &lt;code&gt;--data-ascii&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;The latter options don&amp;rsquo;t preserve carriage returns and newlines.&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;

&lt;h4 id=&#34;example-request-body&#34;&gt;Example request body&lt;/h4&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;YAML&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-yaml&#34;&gt;name: MyGroupName
rules:
  - alert: MyAlertName
    expr: up == 0
    labels:
      severity: warning&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h3 id=&#34;delete-rule-group&#34;&gt;Delete rule group&lt;/h3&gt;

&lt;div class=&#34;code-snippet code-snippet__mini&#34;&gt;&lt;div class=&#34;lang-toolbar__mini&#34;&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet code-snippet__border&#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-none&#34;&gt;DELETE /&amp;lt;prometheus-http-prefix&amp;gt;/config/v1/rules/{namespace}/{groupName}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Deletes a rule group by namespace and group name. This endpoints returns &lt;code&gt;202&lt;/code&gt; on success.
Escape the &lt;code&gt;{namespace}&lt;/code&gt; and &lt;code&gt;{groupName}&lt;/code&gt; path segments using percent-encoding, as defined by &lt;a href=&#34;https://datatracker.ietf.org/doc/html/rfc3986&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;RFC 3986&lt;/a&gt;.
For example, escape &lt;code&gt;/&lt;/code&gt; to &lt;code&gt;%2F&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;This endpoint can be disabled via the &lt;code&gt;-ruler.enable-api&lt;/code&gt; CLI flag (or its respective YAML config option).&lt;/p&gt;
&lt;p&gt;Requires &lt;a href=&#34;#authentication&#34;&gt;authentication&lt;/a&gt;.&lt;/p&gt;


&lt;div class=&#34;admonition admonition-note&#34;&gt;&lt;blockquote&gt;&lt;p class=&#34;title text-uppercase&#34;&gt;Note&lt;/p&gt;&lt;p&gt;To delete a rule group from Mimir, use &lt;a href=&#34;../../manage/tools/mimirtool/#delete-rule-group&#34;&gt;&lt;code&gt;mimirtool rules delete&lt;/code&gt; command&lt;/a&gt;.&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;

&lt;h3 id=&#34;delete-namespace&#34;&gt;Delete namespace&lt;/h3&gt;

&lt;div class=&#34;code-snippet code-snippet__mini&#34;&gt;&lt;div class=&#34;lang-toolbar__mini&#34;&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet code-snippet__border&#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-none&#34;&gt;DELETE /&amp;lt;prometheus-http-prefix&amp;gt;/config/v1/rules/{namespace}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Deletes all the rule groups in a namespace (including the namespace itself). This endpoint returns &lt;code&gt;202&lt;/code&gt; on success.
Escape the &lt;code&gt;{namespace}&lt;/code&gt; path segment using percent-encoding, as defined by &lt;a href=&#34;https://datatracker.ietf.org/doc/html/rfc3986&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;RFC 3986&lt;/a&gt;.
For example, escape &lt;code&gt;/&lt;/code&gt; to &lt;code&gt;%2F&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;This endpoint can be disabled via the &lt;code&gt;-ruler.enable-api&lt;/code&gt; CLI flag (or its respective YAML config option).&lt;/p&gt;
&lt;p&gt;Requires &lt;a href=&#34;#authentication&#34;&gt;authentication&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&#34;delete-tenant-configuration&#34;&gt;Delete tenant configuration&lt;/h3&gt;

&lt;div class=&#34;code-snippet code-snippet__mini&#34;&gt;&lt;div class=&#34;lang-toolbar__mini&#34;&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet code-snippet__border&#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-none&#34;&gt;POST /ruler/delete_tenant_config&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;This deletes all rule groups for a tenant, and returns &lt;code&gt;200&lt;/code&gt; on success. Calling this endpoint when no rule groups exist for a tenant returns &lt;code&gt;200&lt;/code&gt;. Authentication is only to identify the tenant.&lt;/p&gt;
&lt;p&gt;This is intended as internal API, and not to be exposed to users. This endpoint is enabled regardless of whether &lt;code&gt;-ruler.enable-api&lt;/code&gt; is enabled or not.&lt;/p&gt;
&lt;p&gt;Requires &lt;a href=&#34;#authentication&#34;&gt;authentication&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;alertmanager&#34;&gt;Alertmanager&lt;/h2&gt;
&lt;h3 id=&#34;alertmanager-status&#34;&gt;Alertmanager status&lt;/h3&gt;

&lt;div class=&#34;code-snippet code-snippet__mini&#34;&gt;&lt;div class=&#34;lang-toolbar__mini&#34;&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet code-snippet__border&#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-none&#34;&gt;GET /multitenant_alertmanager/status&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Displays a web page with the current status of the Alertmanager, including the Alertmanager cluster members.&lt;/p&gt;
&lt;h3 id=&#34;alertmanager-configs&#34;&gt;Alertmanager configs&lt;/h3&gt;

&lt;div class=&#34;code-snippet code-snippet__mini&#34;&gt;&lt;div class=&#34;lang-toolbar__mini&#34;&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet code-snippet__border&#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-none&#34;&gt;GET /multitenant_alertmanager/configs&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;List all Alertmanager configurations. This endpoint is not part of Alertmanager API and is always available regardless of whether Alertmanager API is enabled or not. It should not be exposed to end users. This endpoint returns a YAML dictionary with all the Alertmanager configurations and &lt;code&gt;200&lt;/code&gt; status code on success.&lt;/p&gt;
&lt;h3 id=&#34;alertmanager-ring-status&#34;&gt;Alertmanager ring status&lt;/h3&gt;

&lt;div class=&#34;code-snippet code-snippet__mini&#34;&gt;&lt;div class=&#34;lang-toolbar__mini&#34;&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet code-snippet__border&#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-none&#34;&gt;GET /multitenant_alertmanager/ring&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Displays a web page with the Alertmanager hash ring status, including the state, healthy and last heartbeat time of each Alertmanager instance.&lt;/p&gt;
&lt;h3 id=&#34;alertmanager-ui&#34;&gt;Alertmanager UI&lt;/h3&gt;

&lt;div class=&#34;code-snippet code-snippet__mini&#34;&gt;&lt;div class=&#34;lang-toolbar__mini&#34;&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet code-snippet__border&#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-none&#34;&gt;GET /&amp;lt;alertmanager-http-prefix&amp;gt;&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Displays the Alertmanager UI.&lt;/p&gt;
&lt;p&gt;Requires &lt;a href=&#34;#authentication&#34;&gt;authentication&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&#34;alertmanager-delete-tenant-configuration&#34;&gt;Alertmanager Delete Tenant Configuration&lt;/h3&gt;

&lt;div class=&#34;code-snippet code-snippet__mini&#34;&gt;&lt;div class=&#34;lang-toolbar__mini&#34;&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet code-snippet__border&#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-none&#34;&gt;POST /multitenant_alertmanager/delete_tenant_config&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;This endpoint deletes configuration for a tenant identified by &lt;code&gt;X-Scope-OrgID&lt;/code&gt; header.
It is internal, available even if Alertmanager API is disabled.
The endpoint returns a status code of &lt;code&gt;200&lt;/code&gt; if the user&amp;rsquo;s configuration has been deleted, or it didn&amp;rsquo;t exist in the first place.&lt;/p&gt;
&lt;p&gt;Requires &lt;a href=&#34;#authentication&#34;&gt;authentication&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&#34;get-alertmanager-configuration&#34;&gt;Get Alertmanager configuration&lt;/h3&gt;

&lt;div class=&#34;code-snippet code-snippet__mini&#34;&gt;&lt;div class=&#34;lang-toolbar__mini&#34;&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet code-snippet__border&#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-none&#34;&gt;GET /api/v1/alerts&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Get the current Alertmanager configuration for the authenticated tenant, reading it from the configured object storage.&lt;/p&gt;
&lt;p&gt;This endpoint doesn&amp;rsquo;t accept any URL query parameter and returns &lt;code&gt;200&lt;/code&gt; on success.&lt;/p&gt;
&lt;p&gt;This endpoint can be enabled and disabled via the &lt;code&gt;-alertmanager.enable-api&lt;/code&gt; CLI flag (or its respective YAML config option).&lt;/p&gt;
&lt;p&gt;Requires &lt;a href=&#34;#authentication&#34;&gt;authentication&lt;/a&gt;.&lt;/p&gt;


&lt;div class=&#34;admonition admonition-note&#34;&gt;&lt;blockquote&gt;&lt;p class=&#34;title text-uppercase&#34;&gt;Note&lt;/p&gt;&lt;p&gt;To retrieve a tenant&amp;rsquo;s Alertmanager configuration from Mimir, use &lt;a href=&#34;../../manage/tools/mimirtool/#get-alertmanager-configuration&#34;&gt;&lt;code&gt;mimirtool alertmanager get&lt;/code&gt; command&lt;/a&gt;.&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;

&lt;h3 id=&#34;set-alertmanager-configuration&#34;&gt;Set Alertmanager configuration&lt;/h3&gt;

&lt;div class=&#34;code-snippet code-snippet__mini&#34;&gt;&lt;div class=&#34;lang-toolbar__mini&#34;&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet code-snippet__border&#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-none&#34;&gt;POST /api/v1/alerts&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Stores or updates the Alertmanager configuration for the authenticated tenant. The Alertmanager configuration is stored in the configured backend object storage.&lt;/p&gt;
&lt;p&gt;This endpoint expects the Alertmanager &lt;strong&gt;YAML&lt;/strong&gt; configuration in the request body and returns &lt;code&gt;201&lt;/code&gt; on success.&lt;/p&gt;
&lt;p&gt;The names of the templates in &lt;code&gt;template_files&lt;/code&gt; must be valid file names and not contain any path separators. For example, both &lt;code&gt;/templates/my-template.tpl&lt;/code&gt; and &lt;code&gt;./my-template.tpl&lt;/code&gt; are invalid, whereas &lt;code&gt;my-template.tpl&lt;/code&gt; is valid.&lt;/p&gt;
&lt;p&gt;This endpoint can be enabled and disabled via the &lt;code&gt;-alertmanager.enable-api&lt;/code&gt; CLI flag (or its respective YAML config option).&lt;/p&gt;
&lt;p&gt;Requires &lt;a href=&#34;#authentication&#34;&gt;authentication&lt;/a&gt;.&lt;/p&gt;


&lt;div class=&#34;admonition admonition-note&#34;&gt;&lt;blockquote&gt;&lt;p class=&#34;title text-uppercase&#34;&gt;Note&lt;/p&gt;&lt;p&gt;To load a tenant&amp;rsquo;s Alertmanager configuration to Mimir, use &lt;a href=&#34;../../manage/tools/mimirtool/#load-alertmanager-configuration&#34;&gt;&lt;code&gt;mimirtool alertmanager load&lt;/code&gt; command&lt;/a&gt;.&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;



&lt;div class=&#34;admonition admonition-note&#34;&gt;&lt;blockquote&gt;&lt;p class=&#34;title text-uppercase&#34;&gt;Note&lt;/p&gt;&lt;p&gt;When using &lt;code&gt;curl&lt;/code&gt; to send the request body from a file, ensure that you use the &lt;code&gt;--data-binary&lt;/code&gt; flag instead of &lt;code&gt;-d&lt;/code&gt;, &lt;code&gt;--data&lt;/code&gt;, or &lt;code&gt;--data-ascii&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;The latter options don&amp;rsquo;t preserve carriage returns and newlines.&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;

&lt;h4 id=&#34;example-request-body-1&#34;&gt;Example request body&lt;/h4&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;YAML&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-yaml&#34;&gt;template_files:
  default_template: |
    {{ define &amp;#34;__alertmanager&amp;#34; }}AlertManager{{ end }}
    {{ define &amp;#34;__alertmanagerURL&amp;#34; }}{{ .ExternalURL }}/#/alerts?receiver={{ .Receiver | urlquery }}{{ end }}
alertmanager_config: |
  global:
    smtp_smarthost: &amp;#39;localhost:25&amp;#39;
    smtp_from: &amp;#39;youraddress@example.org&amp;#39;
  templates:
    - &amp;#39;default_template&amp;#39;
  route:
    receiver: example-email
  receivers:
    - name: example-email
      email_configs:
      - to: &amp;#39;youraddress@example.org&amp;#39;&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h3 id=&#34;delete-alertmanager-configuration&#34;&gt;Delete Alertmanager configuration&lt;/h3&gt;

&lt;div class=&#34;code-snippet code-snippet__mini&#34;&gt;&lt;div class=&#34;lang-toolbar__mini&#34;&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet code-snippet__border&#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-none&#34;&gt;DELETE /api/v1/alerts&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Deletes the Alertmanager configuration for the authenticated tenant.&lt;/p&gt;
&lt;p&gt;This endpoint doesn&amp;rsquo;t accept any URL query parameter and returns &lt;code&gt;200&lt;/code&gt; on success.&lt;/p&gt;
&lt;p&gt;This endpoint can be enabled and disabled via the &lt;code&gt;-alertmanager.enable-api&lt;/code&gt; CLI flag (or its respective YAML config option).&lt;/p&gt;
&lt;p&gt;Requires &lt;a href=&#34;#authentication&#34;&gt;authentication&lt;/a&gt;.&lt;/p&gt;


&lt;div class=&#34;admonition admonition-note&#34;&gt;&lt;blockquote&gt;&lt;p class=&#34;title text-uppercase&#34;&gt;Note&lt;/p&gt;&lt;p&gt;To delete a tenant&amp;rsquo;s Alertmanager configuration from Mimir, use &lt;a href=&#34;../../manage/tools/mimirtool/#delete-alertmanager-configuration&#34;&gt;&lt;code&gt;mimirtool alertmanager delete&lt;/code&gt; command&lt;/a&gt;.&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;

&lt;h2 id=&#34;store-gateway&#34;&gt;Store-gateway&lt;/h2&gt;
&lt;h3 id=&#34;store-gateway-ring-status&#34;&gt;Store-gateway ring status&lt;/h3&gt;

&lt;div class=&#34;code-snippet code-snippet__mini&#34;&gt;&lt;div class=&#34;lang-toolbar__mini&#34;&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet code-snippet__border&#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-none&#34;&gt;GET /store-gateway/ring&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Displays a web page with the store-gateway hash ring status, including the state, healthy and last heartbeat time of each store-gateway.&lt;/p&gt;
&lt;h3 id=&#34;store-gateway-tenants&#34;&gt;Store-gateway tenants&lt;/h3&gt;

&lt;div class=&#34;code-snippet code-snippet__mini&#34;&gt;&lt;div class=&#34;lang-toolbar__mini&#34;&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet code-snippet__border&#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-none&#34;&gt;GET /store-gateway/tenants&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Displays a web page with the list of tenants with blocks in the storage configured for store-gateway.&lt;/p&gt;
&lt;h3 id=&#34;store-gateway-tenant-blocks&#34;&gt;Store-gateway tenant blocks&lt;/h3&gt;

&lt;div class=&#34;code-snippet code-snippet__mini&#34;&gt;&lt;div class=&#34;lang-toolbar__mini&#34;&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet code-snippet__border&#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-none&#34;&gt;GET /store-gateway/tenant/{tenant}/blocks&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Displays a web page listing the blocks for a given tenant.&lt;/p&gt;
&lt;h3 id=&#34;prepare-for-shutdown-1&#34;&gt;Prepare for Shutdown&lt;/h3&gt;

&lt;div class=&#34;code-snippet code-snippet__mini&#34;&gt;&lt;div class=&#34;lang-toolbar__mini&#34;&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet code-snippet__border&#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-none&#34;&gt;GET,POST,DELETE /store-gateway/prepare-shutdown&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;This endpoint changes in-memory store-gateway configuration to prepare for permanently stopping a store-gateway
instance but does not actually stop any part of the latter.&lt;/p&gt;
&lt;p&gt;After a &lt;code&gt;POST&lt;/code&gt; to the &lt;code&gt;prepare-shutdown&lt;/code&gt; endpoint returns, when the store-gateway process is stopped with &lt;code&gt;SIGINT&lt;/code&gt; / &lt;code&gt;SIGTERM&lt;/code&gt;,
the store-gateway will be unregistered from the ring.&lt;/p&gt;
&lt;p&gt;A &lt;code&gt;GET&lt;/code&gt; to the &lt;code&gt;prepare-shutdown&lt;/code&gt; endpoint returns the status of this configuration, either &lt;code&gt;set&lt;/code&gt; or &lt;code&gt;unset&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;A &lt;code&gt;DELETE&lt;/code&gt; to the &lt;code&gt;prepare-shutdown&lt;/code&gt; endpoint reverts the configuration of the store-gateway to its previous state
(with respect to unregistering).&lt;/p&gt;
&lt;p&gt;This API endpoint is usually used by Kubernetes-specific scale down automations such as the
&lt;a href=&#34;https://github.com/grafana/rollout-operator&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;rollout-operator&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;compactor&#34;&gt;Compactor&lt;/h2&gt;
&lt;h3 id=&#34;compactor-ring-status&#34;&gt;Compactor ring status&lt;/h3&gt;

&lt;div class=&#34;code-snippet code-snippet__mini&#34;&gt;&lt;div class=&#34;lang-toolbar__mini&#34;&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet code-snippet__border&#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-none&#34;&gt;GET /compactor/ring&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Displays a web page with the compactor hash ring status, including the state, healthy and last heartbeat time of each compactor.&lt;/p&gt;
&lt;h3 id=&#34;start-block-upload&#34;&gt;Start block upload&lt;/h3&gt;

&lt;div class=&#34;code-snippet code-snippet__mini&#34;&gt;&lt;div class=&#34;lang-toolbar__mini&#34;&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet code-snippet__border&#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-none&#34;&gt;POST /api/v1/upload/block/{block}/start&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Starts the uploading of a TSDB block with a given ID to object storage. The client should send the block&amp;rsquo;s
&lt;code&gt;meta.json&lt;/code&gt; file as the request body. If the complete block already exists in object storage, a
&lt;code&gt;409&lt;/code&gt; (Conflict) status code gets returned. If the provided &lt;code&gt;meta.json&lt;/code&gt; file is invalid, a &lt;code&gt;400&lt;/code&gt; (Bad Request)
status code gets returned. If the block&amp;rsquo;s max time is before the tenant&amp;rsquo;s retention period, a
&lt;code&gt;422&lt;/code&gt; (Unprocessable Entity) status code gets returned.&lt;/p&gt;
&lt;p&gt;The provided &lt;code&gt;meta.json&lt;/code&gt; file must have a &lt;code&gt;thanos.files&lt;/code&gt; section with the list of the block&amp;rsquo;s files,
otherwise the request will be rejected.&lt;/p&gt;
&lt;p&gt;If the API request succeeds, a sanitized version of the block&amp;rsquo;s &lt;code&gt;meta.json&lt;/code&gt; file gets uploaded to object storage as
&lt;code&gt;uploading-meta.json&lt;/code&gt;, and a &lt;code&gt;200&lt;/code&gt; status code gets returned. Then you can start uploading files, and once
done, you can request completion of the block upload.&lt;/p&gt;
&lt;p&gt;Requires &lt;a href=&#34;#authentication&#34;&gt;authentication&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&#34;upload-block-file&#34;&gt;Upload block file&lt;/h3&gt;

&lt;div class=&#34;code-snippet code-snippet__mini&#34;&gt;&lt;div class=&#34;lang-toolbar__mini&#34;&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet code-snippet__border&#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-none&#34;&gt;POST /api/v1/upload/block/{block}/files?path={path}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Uploads a file with a given path, for a block with a given ID. The file path has to be one of the following,
otherwise a &lt;code&gt;400&lt;/code&gt; (Bad Request) status code gets returned:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;index&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;chunks/&amp;lt;6-digit number&amp;gt;&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The client must send the content of the file as the body of the request; if the body is empty, a
&lt;code&gt;400&lt;/code&gt; (Bad Request) status code gets returned. If the complete block already exists in object storage,
a &lt;code&gt;409&lt;/code&gt; (Conflict) status code gets returned. If an in-flight meta file (&lt;code&gt;uploading-meta.json&lt;/code&gt;) doesn&amp;rsquo;t
exist in object storage for the block in question, a &lt;code&gt;404&lt;/code&gt; (Not Found) status code gets returned.&lt;/p&gt;
&lt;p&gt;If the API request succeeds, the file gets uploaded with the given path to the block&amp;rsquo;s directory in object storage,
and a &lt;code&gt;200&lt;/code&gt; status code gets returned.&lt;/p&gt;
&lt;p&gt;Requires &lt;a href=&#34;#authentication&#34;&gt;authentication&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&#34;complete-block-upload&#34;&gt;Complete block upload&lt;/h3&gt;

&lt;div class=&#34;code-snippet code-snippet__mini&#34;&gt;&lt;div class=&#34;lang-toolbar__mini&#34;&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet code-snippet__border&#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-none&#34;&gt;POST /api/v1/upload/block/{block}/finish&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Initiates the completion of a TSDB block with a given ID to object storage. If the complete block already
exists in object storage, a &lt;code&gt;409&lt;/code&gt; (Conflict) status code gets returned. If an in-flight meta file
(&lt;code&gt;uploading-meta.json&lt;/code&gt;) doesn&amp;rsquo;t exist in object storage for the block in question, a &lt;code&gt;404&lt;/code&gt; (Not Found)
status code gets returned. If the compactor has reached its limit for the maximum
number of concurrent block upload validations, which is configured with &lt;code&gt;-compactor.max-block-upload-validation-concurrency&lt;/code&gt;,
a &lt;code&gt;429&lt;/code&gt; (Too Many Requests) will be returned.&lt;/p&gt;
&lt;p&gt;If the API request succeeds, compactor will start the block validation in the background. If the background validation
passes block upload is finished by renaming in-flight meta file to &lt;code&gt;meta.json&lt;/code&gt; in the block&amp;rsquo;s directory.&lt;/p&gt;
&lt;p&gt;This API endpoint returns &lt;code&gt;200&lt;/code&gt; (OK) at the beginning of the validation. To further check state of the block upload,
use &lt;a href=&#34;#check-block-upload&#34;&gt;Check block upload&lt;/a&gt; API endpoint.&lt;/p&gt;
&lt;p&gt;Requires &lt;a href=&#34;#authentication&#34;&gt;authentication&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This API endpoint is experimental and subject to change.&lt;/p&gt;
&lt;h3 id=&#34;check-block-upload&#34;&gt;Check block upload&lt;/h3&gt;

&lt;div class=&#34;code-snippet code-snippet__mini&#34;&gt;&lt;div class=&#34;lang-toolbar__mini&#34;&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet code-snippet__border&#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-none&#34;&gt;GET /api/v1/upload/block/{block}/check&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Returns state of the block upload. State is returned as JSON object with field &lt;code&gt;result&lt;/code&gt;, with following possible values:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;complete&lt;/code&gt; &amp;ndash; block validation is complete, and block upload is now finished.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;uploading&lt;/code&gt; &amp;ndash; block is still being uploaded, and &lt;a href=&#34;#complete-block-upload&#34;&gt;Complete block upload&lt;/a&gt; has not yet been called on the block.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;validating&lt;/code&gt; &amp;ndash; block is being validated. Validation was started by call to &lt;a href=&#34;#complete-block-upload&#34;&gt;Complete block upload&lt;/a&gt; API.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;failed&lt;/code&gt; &amp;ndash; block validation has failed. Error message is available from &lt;code&gt;error&lt;/code&gt; field of the returned JSON object.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Example response&lt;/strong&gt;&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;JSON&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-json&#34;&gt;{ &amp;#34;result&amp;#34;: &amp;#34;uploading&amp;#34; }&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Example response&lt;/strong&gt;&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;JSON&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-json&#34;&gt;{ &amp;#34;result&amp;#34;: &amp;#34;failed&amp;#34;, &amp;#34;error&amp;#34;: &amp;#34;missing index file&amp;#34; }&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Requires &lt;a href=&#34;#authentication&#34;&gt;authentication&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This API endpoint is experimental and subject to change.&lt;/p&gt;
&lt;h3 id=&#34;tenant-delete-request&#34;&gt;Tenant Delete Request&lt;/h3&gt;

&lt;div class=&#34;code-snippet code-snippet__mini&#34;&gt;&lt;div class=&#34;lang-toolbar__mini&#34;&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet code-snippet__border&#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-none&#34;&gt;POST /compactor/delete_tenant&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Request deletion of ALL tenant data for the tenant specified in the &lt;code&gt;X-Scope-OrgID&lt;/code&gt; header. If authentication is disabled,
then the default &lt;code&gt;anonymous&lt;/code&gt; tenant is deleted (configurable by &lt;code&gt;-auth.no-auth-tenant&lt;/code&gt;).&lt;/p&gt;
&lt;p&gt;Requires &lt;a href=&#34;#authentication&#34;&gt;authentication&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&#34;tenant-delete-status&#34;&gt;Tenant Delete Status&lt;/h3&gt;

&lt;div class=&#34;code-snippet code-snippet__mini&#34;&gt;&lt;div class=&#34;lang-toolbar__mini&#34;&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet code-snippet__border&#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-none&#34;&gt;GET /compactor/delete_tenant_status&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Returns status of tenant deletion.&lt;/p&gt;
&lt;h4 id=&#34;response-schema-2&#34;&gt;Response schema&lt;/h4&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;JSON&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-json&#34;&gt;{
  &amp;#34;tenant_id&amp;#34;: &amp;#34;&amp;lt;id&amp;gt;&amp;#34;,
  &amp;#34;blocks_deleted&amp;#34;: true
}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;The &lt;code&gt;blocks_deleted&lt;/code&gt; field will be set to &lt;code&gt;true&lt;/code&gt; if all the tenant&amp;rsquo;s blocks have been deleted.&lt;/p&gt;
&lt;p&gt;Requires &lt;a href=&#34;#authentication&#34;&gt;authentication&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&#34;compactor-tenants&#34;&gt;Compactor tenants&lt;/h3&gt;

&lt;div class=&#34;code-snippet code-snippet__mini&#34;&gt;&lt;div class=&#34;lang-toolbar__mini&#34;&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet code-snippet__border&#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-none&#34;&gt;GET /compactor/tenants&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Displays a web page with the list of tenants that have blocks in the storage configured for the compactor.&lt;/p&gt;
&lt;h3 id=&#34;compactor-tenant-planned-jobs&#34;&gt;Compactor tenant planned jobs&lt;/h3&gt;

&lt;div class=&#34;code-snippet code-snippet__mini&#34;&gt;&lt;div class=&#34;lang-toolbar__mini&#34;&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet code-snippet__border&#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-none&#34;&gt;GET /compactor/tenant/{tenant}/planned_jobs&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Displays a web page listing planned compaction jobs computed from the bucket index for the given tenant.&lt;/p&gt;
&lt;h2 id=&#34;overrides-exporter&#34;&gt;Overrides-exporter&lt;/h2&gt;
&lt;h3 id=&#34;overrides-exporter-ring-status&#34;&gt;Overrides-exporter ring status&lt;/h3&gt;

&lt;div class=&#34;code-snippet code-snippet__mini&#34;&gt;&lt;div class=&#34;lang-toolbar__mini&#34;&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet code-snippet__border&#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-none&#34;&gt;GET /overrides-exporter/ring&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Displays a web page with the overrides-exporter hash ring status, including the state, healthy and last heartbeat time of each overrides-exporter.
The overrides-exporter ring is available only when &lt;code&gt;-overrides-exporter.ring.enabled&lt;/code&gt; is set to &lt;code&gt;true&lt;/code&gt;.&lt;/p&gt;
]]></content><description>&lt;!-- Note: This topic is mounted in the GEM documentation. Ensure that all updates are also applicable to GEM. -->
&lt;h1 id="grafana-mimir-http-api">Grafana Mimir HTTP API&lt;/h1>
&lt;p>Grafana Mimir exposes an HTTP API that you can use to write and query time series data, and operate the cluster.&lt;/p></description></item><item><title>GEM Admin API</title><link>https://grafana.com/docs/enterprise-metrics/v2.16.x/api/admin-api/</link><pubDate>Thu, 12 Jun 2025 13:03:13 +0000</pubDate><guid>https://grafana.com/docs/enterprise-metrics/v2.16.x/api/admin-api/</guid><content><![CDATA[&lt;h1 id=&#34;gem-admin-api&#34;&gt;GEM Admin API&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;NOTE:&lt;/strong&gt; Admin API version v1 /admin/api/v1/ and v2 /admin/api/v2/ endpoints are deprecated and will be
removed in a future release of GEM. Use the new Admin API version v3 endpoints /admin/api/v3/ instead.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;In addition to the standard 
    &lt;a href=&#34;/docs/enterprise-metrics/v2.16.x/api/mimir-api/&#34;&gt;Grafana Mimir API endpoints&lt;/a&gt;, Grafana Enterprise Metrics supports an admin HTTP API for managing cluster resources such as tenants and tokens.&lt;/p&gt;
&lt;h2 id=&#34;api-operations&#34;&gt;API operations&lt;/h2&gt;
&lt;p&gt;The API supports standard CRUD (create, read, update, and delete) operations for most resources. Creates are issued via &lt;code&gt;POST&lt;/code&gt; requests, reads via &lt;code&gt;GET&lt;/code&gt; requests, updates via &lt;code&gt;PUT&lt;/code&gt; requests, and deletes via &lt;code&gt;DELETE&lt;/code&gt; requests. When running multiple instances of the Admin API, we recommend that you enable leader election so that all mutations occur on a single, leader-elected instance.&lt;/p&gt;
&lt;h3 id=&#34;write-consistency-if-match-and-etag-headers&#34;&gt;Write consistency (If-Match and ETag headers)&lt;/h3&gt;
&lt;p&gt;To ensure concurrent changes are propagated in a way that avoids unintentional overwrites, an &lt;a href=&#34;https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/If-Match&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;&lt;code&gt;If-Match&lt;/code&gt;&lt;/a&gt; header is required for all requests that mutate data. The current version of a resource to be sent in the &lt;code&gt;If-Match&lt;/code&gt; header can be found in the &lt;a href=&#34;https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/ETag&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;&lt;code&gt;ETag&lt;/code&gt;&lt;/a&gt; header returned on all &lt;code&gt;GET&lt;/code&gt; and &lt;code&gt;PUT&lt;/code&gt; requests that return a single resource in the response body.&lt;/p&gt;
&lt;p&gt;Here are a few examples of how to get the value of the &lt;code&gt;ETag&lt;/code&gt; header using &lt;code&gt;curl&lt;/code&gt;. The first example uses the argument &lt;code&gt;-D -&lt;/code&gt; to write all headers to standard out, and then parses for the &lt;code&gt;ETag&lt;/code&gt; header.&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;console&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-console&#34;&gt;curl -u :$API_TOKEN -sD - -o /dev/null http://localhost:8080/admin/api/v3/accesspolicies/{name} | grep -i ETag | cut -d &amp;#34; &amp;#34; -f 2&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;This second example uses the &lt;code&gt;-i&lt;/code&gt; option to print the headers along with the response payload.&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;console&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-console&#34;&gt;curl -u :$API_TOKEN -i http://localhost:8080/admin/api/v3/accesspolicies/{name}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;When making a request to mutate data, make sure to include the double quotes (&lt;code&gt;&amp;quot;&lt;/code&gt;) around the value in the &lt;code&gt;If-Match&lt;/code&gt; header. So, for example, the following is a request to update the access policy named &lt;code&gt;the-access-policy&lt;/code&gt;, currently at version &lt;code&gt;1&lt;/code&gt;:&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;console&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-console&#34;&gt;curl -u :$API_TOKEN -X PUT -H &amp;#39;If-Match: &amp;#34;1&amp;#34;&amp;#39; http://localhost:8080/admin/api/v3/accesspolicies/the-access-policy --data &amp;#39;{&amp;#34;status&amp;#34;: &amp;#34;active&amp;#34;, &amp;#34;realms&amp;#34;: [{&amp;#34;tenant&amp;#34;: &amp;#34;enterprise-metrics-dev&amp;#34;, &amp;#34;cluster&amp;#34;: &amp;#34;enterprise-metrics-dev&amp;#34;}], &amp;#34;scopes&amp;#34;: [&amp;#34;metrics:write&amp;#34;]}&amp;#39;&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Optionally, a wildcard &lt;code&gt;&amp;quot;*&amp;quot;&lt;/code&gt; may be passed as the &lt;code&gt;If-Match&lt;/code&gt; version which effectively disables the write consistency protections and allows any current version to be updated.&lt;/p&gt;
&lt;h2 id=&#34;cluster-api&#34;&gt;Cluster API&lt;/h2&gt;
&lt;h3 id=&#34;list-clusters&#34;&gt;List clusters&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;GET /admin/api/v1/clusters&lt;/code&gt;
&lt;code&gt;GET /admin/api/v2/clusters&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Deprecated&lt;/strong&gt;: these endpoints are deprecated and will be removed in a future release of GEM.
Use the endpoint &lt;code&gt;GET /admin/api/v3/clusters&lt;/code&gt; instead.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;GET /admin/api/v3/clusters&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Response:&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;JSON&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-json&#34;&gt;{
  &amp;#34;items&amp;#34;: [
    {
      &amp;#34;name&amp;#34;:  &amp;#34;&amp;lt;string&amp;gt;&amp;#34;,              // cluster name
      &amp;#34;display_name&amp;#34;: &amp;#34;&amp;lt;string&amp;gt;&amp;#34;,       // cluster display name
      &amp;#34;created_at&amp;#34;: &amp;#34;&amp;lt;rfc3339 string&amp;gt;&amp;#34;, // date created
      &amp;#34;kind&amp;#34;: &amp;#34;&amp;lt;string&amp;gt;&amp;#34;,               // cluster type, currently only cortex is supported
      &amp;#34;base_url&amp;#34;: &amp;#34;&amp;lt;string&amp;gt;&amp;#34;            // Base URL of the cluster, optional
    }
    ...
  ],
  &amp;#34;type&amp;#34;: &amp;#34;cluster&amp;#34;
}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Example:&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;console&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-console&#34;&gt;$ curl -u :$API_TOKEN http://localhost:8080/admin/api/v3/clusters | jq
{
  &amp;#34;items&amp;#34;: [
    {
      &amp;#34;name&amp;#34;: &amp;#34;enterprise-metrics-dev&amp;#34;,
      &amp;#34;display_name&amp;#34;: &amp;#34;enterprise-metrics-dev&amp;#34;,
      &amp;#34;created_at&amp;#34;: &amp;#34;2020-07-13T16:50:41.953793Z&amp;#34;,
      &amp;#34;kind&amp;#34;: &amp;#34;metrics&amp;#34;,
      &amp;#34;base_url&amp;#34;: &amp;#34;&amp;#34;
    }
  ],
  &amp;#34;type&amp;#34;: &amp;#34;cluster&amp;#34;
}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h3 id=&#34;get-cluster&#34;&gt;Get cluster&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;GET /admin/api/v1/clusters/{name}&lt;/code&gt;
&lt;code&gt;GET /admin/api/v2/clusters/{name}&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Deprecated&lt;/strong&gt;: these endpoints are deprecated and will be removed in a future release of GEM.
Use the endpoint &lt;code&gt;GET /admin/api/v3/clusters/{name}&lt;/code&gt; instead.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;GET /admin/api/v3/clusters/{name}&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;NOTES:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;There is no &lt;code&gt;ETag&lt;/code&gt; header on a cluster response because clusters are immutable.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Response:&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;JSON&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-json&#34;&gt;{
  &amp;#34;name&amp;#34;: &amp;#34;&amp;lt;string&amp;gt;&amp;#34;, // cluster name
  &amp;#34;display_name&amp;#34;: &amp;#34;&amp;lt;string&amp;gt;&amp;#34;, // cluster display name
  &amp;#34;created_at&amp;#34;: &amp;#34;&amp;lt;rfc3339 string&amp;gt;&amp;#34;, // date created
  &amp;#34;kind&amp;#34;: &amp;#34;&amp;lt;string&amp;gt;&amp;#34;, // cluster type, currently only cortex is supported
  &amp;#34;base_url&amp;#34;: &amp;#34;&amp;lt;string&amp;gt;&amp;#34; // Base URL of the cluster, optional
}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Example:&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;console&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-console&#34;&gt;$ curl -u :$API_TOKEN http://localhost:8080/admin/api/v3/clusters/enterprise-metrics-dev | jq
{
  &amp;#34;name&amp;#34;: &amp;#34;enterprise-metrics-dev&amp;#34;,
  &amp;#34;display_name&amp;#34;: &amp;#34;enterprise-metrics-dev&amp;#34;,
  &amp;#34;created_at&amp;#34;: &amp;#34;2020-07-13T16:50:41.953793Z&amp;#34;,
  &amp;#34;kind&amp;#34;: &amp;#34;metrics&amp;#34;,
  &amp;#34;base_url&amp;#34;: &amp;#34;&amp;#34;
}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h2 id=&#34;tenant-api&#34;&gt;Tenant API&lt;/h2&gt;
&lt;h3 id=&#34;model&#34;&gt;Model&lt;/h3&gt;
&lt;p&gt;The tenant model is made up of the following fields:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;name&lt;/code&gt;: The machine-readable name of a tenant. It must be between 3 and 64 characters and only include the following characters, &lt;code&gt;[a-z0-9-_]&lt;/code&gt;. Once set, this field is immutable.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;display_name&lt;/code&gt;: The human-readable name of a tenant. It can contain any set of characters and can be changed.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;status&lt;/code&gt;: The current status of this tenant. It can have the following values:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;active&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;inactive&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;unknown&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;cluster&lt;/code&gt;: The name of the Grafana Enterprise Metrics cluster that this tenant is scoped to. You will only be able to write/query this tenant from this cluster.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;limits&lt;/code&gt;: Tenant-specific resource usage limits. Limits are key-value pairs (JSON object) that correspond to 
    &lt;a href=&#34;/docs/mimir/v2.16.x/configure/configuration-parameters/#limits&#34;&gt;Grafana Mimir limits configuration&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Deprecated&lt;/strong&gt;: The &lt;code&gt;limits&lt;/code&gt; field is deprecated and set to be removed in a future release of GEM. Set this field to &lt;code&gt;limits: null&lt;/code&gt; or remove it from your configuration. Instead, define limits using 
    &lt;a href=&#34;/docs/mimir/v2.16.x/configure/about-runtime-configuration/&#34;&gt;runtime configuration in Grafana Mimir&lt;/a&gt;. For information on how to migrate limit settings to runtime configuration, refer to 
    &lt;a href=&#34;/docs/enterprise-metrics/v2.16.x/configure/config-gem/limits/#migrate-your-limits-configuration&#34;&gt;Migrate your limits configuration&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;list-tenants&#34;&gt;List tenants&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;GET /admin/api/v1/instances&lt;/code&gt;
&lt;code&gt;GET /admin/api/v2/tenants&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Deprecated&lt;/strong&gt;: these endpoints are deprecated and will be removed in a future release of GEM.
Use the endpoint &lt;code&gt;GET /admin/api/v3/tenants&lt;/code&gt; instead.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;GET /admin/api/v3/tenants&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;NOTES:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;This endpoint only returns tenants in an &lt;code&gt;active&lt;/code&gt; status. To get all tenants including &lt;code&gt;inactive&lt;/code&gt; ones use the query parameter &lt;code&gt;include-non-active=true&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Response:&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;JSON&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-json&#34;&gt;{
  &amp;#34;items&amp;#34;: [
    {
      &amp;#34;name&amp;#34;: &amp;#34;&amp;lt;string&amp;gt;&amp;#34;,
      &amp;#34;display_name&amp;#34;: &amp;#34;&amp;lt;string&amp;gt;&amp;#34;,
      &amp;#34;created_at&amp;#34;: &amp;#34;&amp;lt;rfc3339 string&amp;gt;&amp;#34;,
      &amp;#34;status&amp;#34;: &amp;#34;&amp;lt;string&amp;gt;&amp;#34;,
      &amp;#34;cluster&amp;#34;: &amp;#34;&amp;lt;string&amp;gt;&amp;#34;
    },
    ...
  ],
  &amp;#34;type&amp;#34;: &amp;#34;tenant&amp;#34;
}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Example:&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;console&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-console&#34;&gt;$ curl -u :$API_TOKEN localhost:8080/admin/api/v3/tenants | jq
{
  &amp;#34;items&amp;#34;: [
    {
      &amp;#34;name&amp;#34;: &amp;#34;enterprise-metrics-dev&amp;#34;,
      &amp;#34;display_name&amp;#34;: &amp;#34;Grafana Enterprise Metrics dev tenant&amp;#34;,
      &amp;#34;created_at&amp;#34;: &amp;#34;2020-07-13T17:37:59.341728283Z&amp;#34;,
      &amp;#34;status&amp;#34;: &amp;#34;active&amp;#34;,
      &amp;#34;cluster&amp;#34;: &amp;#34;enterprise-metrics-dev&amp;#34;
    }
  ],
  &amp;#34;type&amp;#34;: &amp;#34;tenant&amp;#34;
}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h3 id=&#34;create-tenant&#34;&gt;Create tenant&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;POST /admin/api/v1/instances&lt;/code&gt;
&lt;code&gt;POST /admin/api/v2/tenants&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Deprecated&lt;/strong&gt;: these endpoints are deprecated and will be removed in a future release of GEM.
Use the endpoint &lt;code&gt;POST /admin/api/v3/tenants&lt;/code&gt; instead.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;POST /admin/api/v3/tenants&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;NOTES:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Because tenant names are unique, you cannot create a new tenant with the same name as a tenant that already exists but is in the &lt;code&gt;inactive&lt;/code&gt; state.
Instead, to use the same tenant name again you must re-enable the &lt;code&gt;inactive&lt;/code&gt; tenant by updating its state to &lt;code&gt;active&lt;/code&gt;.
To make this change, use the &lt;a href=&#34;#update-tenant&#34;&gt;Update Tenant&lt;/a&gt; endpoint.
When creating a tenant via this API call, it is not required to specify the &lt;code&gt;status&lt;/code&gt; field because the status is always overwritten by the API to &lt;code&gt;active&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Example:&lt;/p&gt;

&lt;div class=&#34;code-snippet code-snippet__mini&#34;&gt;&lt;div class=&#34;lang-toolbar__mini&#34;&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet code-snippet__border&#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-none&#34;&gt;$ curl -u :$API_TOKEN -X POST localhost:8080/admin/api/v3/tenants --data-raw &amp;#39;
{
  &amp;#34;name&amp;#34;: &amp;#34;enterprise-metrics-dev&amp;#34;,
  &amp;#34;display_name&amp;#34;: &amp;#34;Grafana Enterprise Metrics dev tenant&amp;#34;,
  &amp;#34;created_at&amp;#34;: &amp;#34;2020-07-13T17:37:59.341728283Z&amp;#34;,
  &amp;#34;status&amp;#34;: &amp;#34;active&amp;#34;,
  &amp;#34;cluster&amp;#34;: &amp;#34;enterprise-metrics-dev&amp;#34;
}&amp;#39;&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Response:&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;JSON&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-json&#34;&gt;{
  &amp;#34;name&amp;#34;: &amp;#34;enterprise-metrics-dev&amp;#34;,
  &amp;#34;display_name&amp;#34;: &amp;#34;Grafana Enterprise Metrics dev tenant&amp;#34;,
  &amp;#34;created_at&amp;#34;: &amp;#34;2020-07-13T17:37:59.341728283Z&amp;#34;,
  &amp;#34;status&amp;#34;: &amp;#34;active&amp;#34;,
  &amp;#34;cluster&amp;#34;: &amp;#34;enterprise-metrics-dev&amp;#34;
}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h3 id=&#34;update-tenant&#34;&gt;Update tenant&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;PUT /admin/api/v1/instances/{name}&lt;/code&gt;
&lt;code&gt;PUT /admin/api/v2/tenants/{name}&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Deprecated&lt;/strong&gt;: these endpoints are deprecated and will be removed in a future release of GEM.
Use the endpoint &lt;code&gt;PUT /admin/api/v3/tenants/{name}&lt;/code&gt; instead.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;PUT /admin/api/v3/tenants/{name}&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;NOTES:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The &lt;code&gt;name&lt;/code&gt; field of the object in the request body is ignored during updates.&lt;/li&gt;
&lt;li&gt;The &lt;code&gt;created_at&lt;/code&gt; field may not be modified during updates.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;If-Match&lt;/code&gt; header matching the current version is required.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Response:&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;JSON&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-json&#34;&gt;{
  &amp;#34;name&amp;#34;: &amp;#34;&amp;lt;string&amp;gt;&amp;#34;,
  &amp;#34;display_name&amp;#34;: &amp;#34;&amp;lt;string&amp;gt;&amp;#34;,
  &amp;#34;created_at&amp;#34;: &amp;#34;&amp;lt;rfc3339 string&amp;gt;&amp;#34;,
  &amp;#34;status&amp;#34;: &amp;#34;&amp;lt;string&amp;gt;&amp;#34;,
  &amp;#34;cluster&amp;#34;: &amp;#34;&amp;lt;string&amp;gt;&amp;#34;
}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Example:&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;console&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-console&#34;&gt;curl -u :$API_TOKEN localhost:8080/admin/api/v3/tenants/enterprise-metrics-dev \
-X PUT -H &amp;#39;If-Match: &amp;#34;123&amp;#34;` \
--data &amp;#39;{&amp;#34;display_name&amp;#34;:&amp;#34;Grafana Enterprise Metrics dev tenant&amp;#34;, &amp;#34;status&amp;#34;: &amp;#34;active&amp;#34;, &amp;#34;cluster&amp;#34;: &amp;#34;enterprise-metrics-dev&amp;#34;}&amp;#39; | jq
{
  &amp;#34;name&amp;#34;: &amp;#34;enterprise-metrics-dev&amp;#34;,
  &amp;#34;display_name&amp;#34;: &amp;#34;Grafana Enterprise Metrics dev tenant&amp;#34;,
  &amp;#34;created_at&amp;#34;: &amp;#34;2020-07-13T17:37:59.341728283Z&amp;#34;,
  &amp;#34;status&amp;#34;: &amp;#34;active&amp;#34;,
  &amp;#34;cluster&amp;#34;: &amp;#34;enterprise-metrics-dev&amp;#34;
}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h3 id=&#34;get-tenant&#34;&gt;Get tenant&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;GET /admin/api/v1/instances/{name}&lt;/code&gt;
&lt;code&gt;GET /admin/api/v2/tenants/{name}&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Deprecated&lt;/strong&gt;: these endpoints are deprecated and will be removed in a future release of GEM.
Use the endpoint &lt;code&gt;GET /admin/api/v3/tenants/{name}&lt;/code&gt; instead.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;GET /admin/api/v3/tenants/{name}&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;NOTES:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The current version of the tenant will be returned in an &lt;code&gt;ETag&lt;/code&gt; header on the response.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Response:&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;JSON&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-json&#34;&gt;{
  &amp;#34;name&amp;#34;: &amp;#34;&amp;lt;string&amp;gt;&amp;#34;,
  &amp;#34;display_name&amp;#34;: &amp;#34;&amp;lt;string&amp;gt;&amp;#34;,
  &amp;#34;created_at&amp;#34;: &amp;#34;&amp;lt;rfc3339 string&amp;gt;&amp;#34;,
  &amp;#34;status&amp;#34;: &amp;#34;&amp;lt;string&amp;gt;&amp;#34;,
  &amp;#34;cluster&amp;#34;: &amp;#34;&amp;lt;string&amp;gt;&amp;#34;
}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Example:&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;console&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-console&#34;&gt;$ curl -u :$API_TOKEN localhost:8080/admin/api/v3/tenants/enterprise-metrics-dev | jq
{
  &amp;#34;name&amp;#34;: &amp;#34;enterprise-metrics-dev&amp;#34;,
  &amp;#34;display_name&amp;#34;: &amp;#34;Grafana Enterprise Metrics dev tenant&amp;#34;,
  &amp;#34;created_at&amp;#34;: &amp;#34;2020-07-13T17:37:59.341728283Z&amp;#34;,
  &amp;#34;status&amp;#34;: &amp;#34;active&amp;#34;,
  &amp;#34;cluster&amp;#34;: &amp;#34;enterprise-metrics-dev&amp;#34;
}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h3 id=&#34;delete-tenant&#34;&gt;Delete tenant&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;DELETE /admin/api/v1/instances/{name}&lt;/code&gt;
&lt;code&gt;DELETE /admin/api/v2/instances/{name}&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Deprecated&lt;/strong&gt;: these endpoints are deprecated and will be removed in a future release of GEM.
In Admin API version v3, delete operations are no longer supported and have been replaced by soft deletes.
Use the endpoint &lt;code&gt;PUT /admin/api/v3/tenants/{name}&lt;/code&gt; with &lt;code&gt;&amp;quot;status&amp;quot;: &amp;quot;inactive&amp;quot;&lt;/code&gt; instead.
This operation will inactivate a tenant and subsequent HTTP requests for the tenant will fail with a 401 Unauthorized HTTP status code.
To re-enable a tenant, use the endpoint &lt;code&gt;PUT /admin/api/v3/tenants/{name}&lt;/code&gt; with &lt;code&gt;&amp;quot;status&amp;quot;: &amp;quot;active&amp;quot;&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;PUT /admin/api/v3/tenants/{name}&lt;/code&gt;&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;JSON&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-json&#34;&gt;{
  &amp;#34;status&amp;#34;: &amp;#34;inactive&amp;#34;,
  &amp;#34;cluster&amp;#34;: &amp;#34;&amp;lt;string&amp;gt;&amp;#34;
}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;NOTES:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;If-Match&lt;/code&gt; header matching the current version is required.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Example:&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;console&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-console&#34;&gt;curl -u :$API_TOKEN localhost:8080/admin/api/v3/tenants/enterprise-metrics-dev \
-X PUT -H &amp;#39;If-Match: &amp;#34;123&amp;#34;` \
--data &amp;#39;{&amp;#34;status&amp;#34;: &amp;#34;inactive&amp;#34;, &amp;#34;cluster&amp;#34;: &amp;#34;enterprise-metrics-dev&amp;#34;}&amp;#39; | jq
{
  &amp;#34;name&amp;#34;: &amp;#34;enterprise-metrics-dev&amp;#34;,
  &amp;#34;display_name&amp;#34;: &amp;#34;Grafana Enterprise Metrics dev tenant&amp;#34;,
  &amp;#34;created_at&amp;#34;: &amp;#34;2020-07-13T17:37:59.341728283Z&amp;#34;,
  &amp;#34;status&amp;#34;: &amp;#34;inactive&amp;#34;,
  &amp;#34;cluster&amp;#34;: &amp;#34;enterprise-metrics-dev&amp;#34;
}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h2 id=&#34;access-policy-api&#34;&gt;Access policy API&lt;/h2&gt;
&lt;h3 id=&#34;list-access-policies&#34;&gt;List access policies&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;GET /admin/api/v1/accesspolicies&lt;/code&gt;
&lt;code&gt;GET /admin/api/v2/accesspolicies&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Deprecated&lt;/strong&gt;: these endpoints are deprecated and will be removed in a future release of GEM.
Use the endpoint &lt;code&gt;GET /admin/api/v3/accesspolicies&lt;/code&gt; instead.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;GET /admin/api/v3/accesspolicies&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;NOTES:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;This endpoint only returns access policies in an &lt;code&gt;active&lt;/code&gt; status. To get all access policies including &lt;code&gt;inactive&lt;/code&gt; ones use the query parameter &lt;code&gt;include-non-active=true&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Response:&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;JSON&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-json&#34;&gt;{
  &amp;#34;items&amp;#34;: [
    {
      &amp;#34;name&amp;#34;: &amp;#34;&amp;lt;string&amp;gt;&amp;#34;,
      &amp;#34;display_name&amp;#34;: &amp;#34;&amp;lt;string&amp;gt;&amp;#34;,
      &amp;#34;created_at&amp;#34;: &amp;#34;&amp;lt;rfc3339 string&amp;gt;&amp;#34;,
      &amp;#34;status&amp;#34;: &amp;#34;&amp;lt;string&amp;gt;&amp;#34;,
      &amp;#34;realms&amp;#34;: [
        {
          &amp;#34;tenant&amp;#34;: &amp;#34;&amp;lt;string&amp;gt;&amp;#34;,
          &amp;#34;cluster&amp;#34;: &amp;#34;&amp;lt;string&amp;gt;&amp;#34;
        }
      ],
      &amp;#34;scopes&amp;#34;: [
        &amp;#34;&amp;lt;string&amp;gt;&amp;#34;,
        ...
      ]
    },
    ...
  ],
  &amp;#34;type&amp;#34;: &amp;#34;access_policy&amp;#34;
}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h3 id=&#34;create-access-policy&#34;&gt;Create access policy&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;POST /admin/api/v1/accesspolicies&lt;/code&gt;
&lt;code&gt;POST /admin/api/v2/accesspolicies&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Deprecated&lt;/strong&gt;: these endpoints are deprecated and will be removed in a future release of GEM.
Use the endpoint &lt;code&gt;POST /admin/api/v3/accesspolicies&lt;/code&gt; instead.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;POST /admin/api/v3/accesspolicies&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Payload:&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;JSON&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-json&#34;&gt;{
  &amp;#34;name&amp;#34;: &amp;#34;&amp;lt;string&amp;gt;&amp;#34;,
  &amp;#34;display_name&amp;#34;: &amp;#34;&amp;lt;string&amp;gt;&amp;#34;,
  &amp;#34;created_at&amp;#34;: &amp;#34;&amp;lt;rfc3339 string&amp;gt;&amp;#34;,
  &amp;#34;realms&amp;#34;: [
    {
      &amp;#34;tenant&amp;#34;: &amp;#34;&amp;lt;string&amp;gt;&amp;#34;,
      &amp;#34;cluster&amp;#34;: &amp;#34;&amp;lt;string&amp;gt;&amp;#34;
    }
  ],
  &amp;#34;scopes&amp;#34;: [
    &amp;#34;&amp;lt;string&amp;gt;&amp;#34;,
    ...
  ]
}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Because access policy names are unique, you cannot create a new access policy with the same name as an access policy that already exists but is in the &lt;code&gt;inactive&lt;/code&gt; state.
Instead, to use the same access policy name again you must re-enable the &lt;code&gt;inactive&lt;/code&gt; access policy by updating its state to &lt;code&gt;active&lt;/code&gt;.
To make this change, use the &lt;a href=&#34;#update-access-policy&#34;&gt;Update Access Policy&lt;/a&gt; endpoint.
When creating an access policy via this API call, it is not required to specify the &lt;code&gt;status&lt;/code&gt; field because the status is always overwritten by the API to &lt;code&gt;active&lt;/code&gt;.&lt;/p&gt;
&lt;h4 id=&#34;realms&#34;&gt;Realms&lt;/h4&gt;
&lt;p&gt;Realms designate the tenant/cluster pairs that the access policy allows requests for:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;tenant&lt;/code&gt;: This field must be set to an existing tenant or &lt;code&gt;*&lt;/code&gt;. &lt;code&gt;*&lt;/code&gt; denotes access to all tenants.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;cluster&lt;/code&gt;: This field must be set to an existing cluster.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;label_policies&lt;/code&gt;: This is an optional field that can be set to a list of label policies. An access policy gets access to metrics that match at least one of the label policies. If label policies are not set, all metrics will match.&lt;/li&gt;
&lt;/ul&gt;
&lt;h5 id=&#34;label-policy-selector-and-label-matchers&#34;&gt;Label policy, selector, and label matchers&lt;/h5&gt;
&lt;p&gt;A label policy contains a selector that&amp;rsquo;s a PromQL metric selector string:&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;JSON&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-json&#34;&gt;{
  &amp;#34;selector&amp;#34;: &amp;#34;&amp;lt;PromQL metric selector&amp;gt;&amp;#34;
}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;The PromQL metric selector &lt;code&gt;{job=&amp;quot;grafana-labs&amp;quot;, role!=&amp;quot;software-engineer&amp;quot;}&lt;/code&gt; translates into this label policy:&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;JSON&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-json&#34;&gt;{
  &amp;#34;selector&amp;#34;: &amp;#34;{job=\&amp;#34;grafana-labs\&amp;#34;, role!=\&amp;#34;software-engineer\&amp;#34;}&amp;#34;
}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h4 id=&#34;scopes&#34;&gt;Scopes&lt;/h4&gt;
&lt;p&gt;Scopes designate what operations tokens assigned to this access policy will be able to do when calling the GEM API.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;admin&lt;/code&gt;: Permission to perform admin operations&lt;/li&gt;
&lt;li&gt;&lt;code&gt;admin:read&lt;/code&gt;: Permission to view admin resources (access policies and tokens, tenants, and clusters)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;alerts:read&lt;/code&gt;: Permission to view the Alertmanager UI and get the Alertmanager configuration for a tenant&lt;/li&gt;
&lt;li&gt;&lt;code&gt;alerts:write&lt;/code&gt;: Permission to create silences in the Alertmanager UI and create and delete the Alertmanager configuration for a tenant&lt;/li&gt;
&lt;li&gt;&lt;code&gt;metrics:delete&lt;/code&gt;: Permission to delete data from a tenant&lt;/li&gt;
&lt;li&gt;&lt;code&gt;metrics:read&lt;/code&gt;: Permission to view data from a tenant&lt;/li&gt;
&lt;li&gt;&lt;code&gt;metrics:write&lt;/code&gt;: Permission to write data to a tenant&lt;/li&gt;
&lt;li&gt;&lt;code&gt;rules:read&lt;/code&gt;: Permission to read ruler rules&lt;/li&gt;
&lt;li&gt;&lt;code&gt;rules:write&lt;/code&gt;: Permission to write ruler rules&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;update-access-policy&#34;&gt;Update access policy&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;PUT /admin/api/v1/accesspolicies/{name}&lt;/code&gt;
&lt;code&gt;PUT /admin/api/v2/accesspolicies/{name}&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Deprecated&lt;/strong&gt;: these endpoints are deprecated and will be removed in a future release of GEM.
Use the endpoint &lt;code&gt;PUT /admin/api/v3/accesspolicies/{name}&lt;/code&gt; instead.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;PUT /admin/api/v3/accesspolicies/{name}&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;NOTES:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;If-Match&lt;/code&gt; header matching the current version is required.&lt;/li&gt;
&lt;li&gt;Update differs from create in that only the &lt;code&gt;Display Name&lt;/code&gt;, &lt;code&gt;Status&lt;/code&gt;, &lt;a href=&#34;#realms&#34;&gt;&lt;code&gt;Realms&lt;/code&gt;&lt;/a&gt;, and &lt;a href=&#34;#scopes&#34;&gt;&lt;code&gt;Scopes&lt;/code&gt;&lt;/a&gt; are updatable.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Payload:&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;JSON&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-json&#34;&gt;{
  &amp;#34;display_name&amp;#34;: &amp;#34;&amp;lt;string&amp;gt;&amp;#34;,
  &amp;#34;status&amp;#34;: &amp;#34;&amp;lt;string&amp;gt;&amp;#34;,
  &amp;#34;realms&amp;#34;: [
    {
      &amp;#34;tenant&amp;#34;: &amp;#34;&amp;lt;string&amp;gt;&amp;#34;,
      &amp;#34;cluster&amp;#34;: &amp;#34;&amp;lt;string&amp;gt;&amp;#34;
    }
  ],
  &amp;#34;scopes&amp;#34;: [
    &amp;#34;&amp;lt;string&amp;gt;&amp;#34;,
    ...
  ]
}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h3 id=&#34;get-access-policy&#34;&gt;Get access policy&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;GET /admin/api/v1/accesspolicies/{name}&lt;/code&gt;
&lt;code&gt;GET /admin/api/v2/accesspolicies/{name}&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Deprecated&lt;/strong&gt;: these endpoints are deprecated and will be removed in a future release of GEM.
Use the endpoint &lt;code&gt;GET /admin/api/v3/accesspolicies/{name}&lt;/code&gt; instead.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;GET /admin/api/v3/accesspolicies/{name}&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;NOTES:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The current version of the access policy will be returned in an &lt;code&gt;ETag&lt;/code&gt; header on the response.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Response:&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;JSON&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-json&#34;&gt;{
  &amp;#34;name&amp;#34;: &amp;#34;&amp;lt;string&amp;gt;&amp;#34;,
  &amp;#34;display_name&amp;#34;: &amp;#34;&amp;lt;string&amp;gt;&amp;#34;,
  &amp;#34;created_at&amp;#34;: &amp;#34;&amp;lt;rfc3339 string&amp;gt;&amp;#34;,
  &amp;#34;status&amp;#34;: &amp;#34;&amp;lt;string&amp;gt;&amp;#34;,
  &amp;#34;realms&amp;#34;: [
    {
      &amp;#34;tenant&amp;#34;: &amp;#34;&amp;lt;string&amp;gt;&amp;#34;,
      &amp;#34;cluster&amp;#34;: &amp;#34;&amp;lt;string&amp;gt;&amp;#34;
    }
  ],
  &amp;#34;scopes&amp;#34;: [
    &amp;#34;&amp;lt;string&amp;gt;&amp;#34;,
    ...
  ]
}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h3 id=&#34;delete-access-policy&#34;&gt;Delete access policy&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;DELETE /admin/api/v1/accesspolicies/{name}&lt;/code&gt;
&lt;code&gt;DELETE /admin/api/v2/accesspolicies/{name}&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Deprecated&lt;/strong&gt;: these endpoints are deprecated and will be removed in a future release of GEM.
In Admin API version v3, delete operations are no longer supported and have been replaced by soft deletes.
Use the endpoint &lt;code&gt;PUT /admin/api/v3/accesspolicies/{name}&lt;/code&gt; with &lt;code&gt;&amp;quot;status&amp;quot;: &amp;quot;inactive&amp;quot;&lt;/code&gt; instead.
This operation will inactivate an access policy and subsequent HTTP requests with an associated token will fail with a 401 Unauthorized HTTP status code.
To re-enable an access policy, use the endpoint &lt;code&gt;PUT /admin/api/v3/accesspolicies/{name}&lt;/code&gt; with &lt;code&gt;&amp;quot;status&amp;quot;: &amp;quot;active&amp;quot;&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;PUT /admin/api/v3/accesspolicies/{name}&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;NOTES:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;If-Match&lt;/code&gt; header matching the current version is required.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Example:&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;console&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-console&#34;&gt;curl -u :$API_TOKEN localhost:8080/admin/api/v3/tokens/accesspolicies/enterprise-metrics-ap \
-X PUT -H &amp;#39;If-Match: &amp;#34;123&amp;#34;` \
--data &amp;#39;{&amp;#34;status&amp;#34;: &amp;#34;inactive&amp;#34;, &amp;#34;realms&amp;#34;: [{&amp;#34;tenant&amp;#34;: &amp;#34;enterprise-metrics-dev&amp;#34;, &amp;#34;cluster&amp;#34;: &amp;#34;enterprise-metrics-dev&amp;#34;}], &amp;#34;scopes&amp;#34;: [&amp;#34;metrics:write&amp;#34;]}&amp;#39; | jq
{
  &amp;#34;name&amp;#34;: &amp;#34;enterprise-metrics-ap&amp;#34;,
  &amp;#34;created_at&amp;#34;: &amp;#34;2022-02-11T16:55:43.598543386Z&amp;#34;,
  &amp;#34;status&amp;#34;: &amp;#34;inactive&amp;#34;,
  &amp;#34;realms&amp;#34;: [
      {
          &amp;#34;tenant&amp;#34;: &amp;#34;enterprise-metrics-dev&amp;#34;,
          &amp;#34;cluster&amp;#34;: &amp;#34;enterprise-metrics-dev&amp;#34;
      }
  ],
  &amp;#34;scopes&amp;#34;: [
      &amp;#34;metrics:write&amp;#34;
  ]
}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h2 id=&#34;token-api&#34;&gt;Token API&lt;/h2&gt;
&lt;h3 id=&#34;list-tokens&#34;&gt;List tokens&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;GET /admin/api/v1/tokens&lt;/code&gt;
&lt;code&gt;GET /admin/api/v2/tokens&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Deprecated&lt;/strong&gt;: these endpoints are deprecated and will be removed in a future release of GEM.
Use the endpoint &lt;code&gt;GET /admin/api/v3/tokens&lt;/code&gt; instead.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;GET /admin/api/v3/tokens&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;NOTES:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;This endpoint only returns tokens in an &lt;code&gt;active&lt;/code&gt; status. To get all tokens including &lt;code&gt;inactive&lt;/code&gt; ones use the query parameter &lt;code&gt;include-non-active=true&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Response:&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;JSON&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-json&#34;&gt;{
  &amp;#34;items&amp;#34;: [
    {
      &amp;#34;name&amp;#34;: &amp;#34;&amp;lt;string&amp;gt;&amp;#34;,
      &amp;#34;display_name&amp;#34;: &amp;#34;&amp;lt;string&amp;gt;&amp;#34;,
      &amp;#34;created_by&amp;#34;: &amp;#34;&amp;lt;string&amp;gt;&amp;#34;,
      &amp;#34;created_at&amp;#34;: &amp;#34;&amp;lt;rfc3339 string&amp;gt;&amp;#34;,
      &amp;#34;status&amp;#34;: &amp;#34;&amp;lt;string&amp;gt;&amp;#34;,
      &amp;#34;access_policy&amp;#34;: &amp;#34;&amp;lt;string&amp;gt;&amp;#34;,
      &amp;#34;expiration&amp;#34;: &amp;#34;&amp;lt;rfc3339 string&amp;gt;&amp;#34;
    },
    ...
  ],
  &amp;#34;type&amp;#34;: &amp;#34;token&amp;#34;
}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h3 id=&#34;create-token&#34;&gt;Create token&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;POST /admin/api/v1/tokens&lt;/code&gt;
&lt;code&gt;POST /admin/api/v2/tokens&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Deprecated&lt;/strong&gt;: these endpoints are deprecated and will be removed in a future release of GEM.
Use the endpoint &lt;code&gt;POST /admin/api/v3/tokens&lt;/code&gt; instead.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;POST /admin/api/v3/tokens&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Payload:&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;JSON&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-json&#34;&gt;{
  &amp;#34;name&amp;#34;: &amp;#34;&amp;lt;string&amp;gt;&amp;#34;,
  &amp;#34;display_name&amp;#34;: &amp;#34;&amp;lt;string&amp;gt;&amp;#34;,
  &amp;#34;created_at&amp;#34;: &amp;#34;&amp;lt;rfc3339 string&amp;gt;&amp;#34;,
  &amp;#34;access_policy&amp;#34;: &amp;#34;&amp;lt;string&amp;gt;&amp;#34;,
  &amp;#34;expiration&amp;#34;: &amp;#34;&amp;lt;rfc3339 string&amp;gt;&amp;#34;
}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Because token names are unique, you cannot create a new token with the same name as a token that already exists but is in the &lt;code&gt;inactive&lt;/code&gt; state.
Instead, to use the same token name again you must re-enable the &lt;code&gt;inactive&lt;/code&gt; token by updating its state to &lt;code&gt;active&lt;/code&gt;.
To make this change, use the &lt;code&gt;PUT /admin/api/v3/tokens/{name}&lt;/code&gt; endpoint.
When creating a token via this API call, it is not required to specify the &lt;code&gt;status&lt;/code&gt; field because the status is always overwritten by the API to &lt;code&gt;active&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id=&#34;get-token&#34;&gt;Get token&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;GET /admin/api/v1/tokens/{name}&lt;/code&gt;
&lt;code&gt;GET /admin/api/v2/tokens/{name}&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Deprecated&lt;/strong&gt;: these endpoints are deprecated and will be removed in a future release of GEM.
Use the endpoint &lt;code&gt;GET /admin/api/v3/tokens/{name}&lt;/code&gt; instead.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;GET /admin/api/v3/tokens/{name}&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;NOTES:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The current version of the token will be returned in an &lt;code&gt;ETag&lt;/code&gt; header on the response.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Response:&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;JSON&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-json&#34;&gt;{
  &amp;#34;name&amp;#34;: &amp;#34;&amp;lt;string&amp;gt;&amp;#34;,
  &amp;#34;display_name&amp;#34;: &amp;#34;&amp;lt;string&amp;gt;&amp;#34;,
  &amp;#34;created_at&amp;#34;: &amp;#34;&amp;lt;rfc3339 string&amp;gt;&amp;#34;,
  &amp;#34;status&amp;#34;: &amp;#34;&amp;lt;string&amp;gt;&amp;#34;,
  &amp;#34;access_policy&amp;#34;: &amp;#34;&amp;lt;string&amp;gt;&amp;#34;,
  &amp;#34;expiration&amp;#34;: &amp;#34;&amp;lt;rfc3339 string&amp;gt;&amp;#34;
}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h3 id=&#34;delete-token&#34;&gt;Delete token&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;DELETE /admin/api/v1/tokens/{name}&lt;/code&gt;
&lt;code&gt;DELETE /admin/api/v2/tokens/{name}&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Deprecated&lt;/strong&gt;: these endpoints are deprecated and will be removed in a future release of GEM.
In Admin API version v3, delete operations are no longer supported and have been replaced by soft deletes.
Use the endpoint &lt;code&gt;PUT /admin/api/v3/tokens/{name}&lt;/code&gt; with &lt;code&gt;&amp;quot;status&amp;quot;: &amp;quot;inactive&amp;quot;&lt;/code&gt; instead.
This operation will inactivate a token and subsequent HTTP requests with the token will fail with a 401 Unauthorized HTTP status code.
To re-enable a token, use the endpoint &lt;code&gt;PUT /admin/api/v3/tokens/{name}&lt;/code&gt; with &lt;code&gt;&amp;quot;status&amp;quot;: &amp;quot;active&amp;quot;&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;PUT /admin/api/v3/tokens/{name}&lt;/code&gt;&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;JSON&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-json&#34;&gt;{
  &amp;#34;status&amp;#34;: &amp;#34;inactive&amp;#34;
}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;NOTES:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;If-Match&lt;/code&gt; header matching the current version is required.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Example:&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;console&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-console&#34;&gt;curl -u :$API_TOKEN localhost:8080/admin/api/v3/tokens/enterprise-metrics-token \
-X PUT -H &amp;#39;If-Match: &amp;#34;123&amp;#34;` \
--data &amp;#39;{&amp;#34;status&amp;#34;: &amp;#34;inactive&amp;#34;}&amp;#39; | jq
{
  &amp;#34;name&amp;#34;: &amp;#34;enterprise-metrics-token&amp;#34;,
  &amp;#34;display_name&amp;#34;: &amp;#34;Grafana Enterprise Metrics Dev Token&amp;#34;,
  &amp;#34;created_at&amp;#34;: &amp;#34;2022-02-11T16:59:36.275826382Z&amp;#34;,
  &amp;#34;status&amp;#34;: &amp;#34;inactive&amp;#34;,
  &amp;#34;access_policy&amp;#34;: &amp;#34;enterprise-metrics-ap&amp;#34;,
  &amp;#34;expiration&amp;#34;: &amp;#34;2050-01-01T00:00:00Z&amp;#34;
}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h2 id=&#34;license-api&#34;&gt;License API&lt;/h2&gt;
&lt;h3 id=&#34;list-licenses&#34;&gt;List licenses&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;GET /admin/api/v1/licenses&lt;/code&gt;
&lt;code&gt;GET /admin/api/v2/licenses&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Deprecated&lt;/strong&gt;: these endpoints are deprecated and will be removed in a future release of GEM.
Use the endpoint &lt;code&gt;GET /admin/api/v3/licenses&lt;/code&gt; instead.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;GET /admin/api/v3/licenses&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Response:&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;JSON&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-json&#34;&gt;{
  &amp;#34;items&amp;#34;: [
    {
      &amp;#34;name&amp;#34;: &amp;#34;&amp;lt;string&amp;gt;&amp;#34;,
      &amp;#34;display_name&amp;#34;: &amp;#34;&amp;lt;string&amp;gt;&amp;#34;,
      &amp;#34;created_by&amp;#34;: &amp;#34;&amp;lt;string&amp;gt;&amp;#34;,
      &amp;#34;created_at&amp;#34;: &amp;#34;&amp;lt;rfc3339 string&amp;gt;&amp;#34;,
      &amp;#34;token&amp;#34;: {
        &amp;#34;jti&amp;#34;: &amp;#34;&amp;lt;string&amp;gt;&amp;#34;,
        &amp;#34;iss&amp;#34;: &amp;#34;&amp;lt;string&amp;gt;&amp;#34;,
        &amp;#34;sub&amp;#34;: &amp;#34;&amp;lt;string&amp;gt;&amp;#34;,
        &amp;#34;iat&amp;#34;: &amp;#34;&amp;lt;int64&amp;gt;&amp;#34;,
        &amp;#34;exp&amp;#34;: &amp;#34;&amp;lt;int64&amp;gt;&amp;#34;,
        &amp;#34;nbf&amp;#34;: &amp;#34;&amp;lt;int64&amp;gt;&amp;#34;,
        &amp;#34;lexp&amp;#34;: &amp;#34;&amp;lt;int64&amp;gt;&amp;#34;,
        &amp;#34;lid&amp;#34;: &amp;#34;&amp;lt;string&amp;gt;&amp;#34;,
        &amp;#34;max_users&amp;#34;: &amp;#34;&amp;lt;int64&amp;gt;&amp;#34;,
        &amp;#34;included_admins&amp;#34;: &amp;#34;&amp;lt;int64&amp;gt;&amp;#34;,
        &amp;#34;included_viewers&amp;#34;: &amp;#34;&amp;lt;int64&amp;gt;&amp;#34;,
        &amp;#34;lic_exp_warn_days&amp;#34;: &amp;#34;&amp;lt;int64&amp;gt;&amp;#34;,
        &amp;#34;prod&amp;#34;: [
          &amp;#34;&amp;lt;string&amp;gt;&amp;#34;,
          ...
        ],
        &amp;#34;company&amp;#34;: &amp;#34;&amp;lt;string&amp;gt;&amp;#34;,
        &amp;#34;slug&amp;#34;: &amp;#34;&amp;lt;string&amp;gt;&amp;#34;,
      }
    },
    ...
  ],
  &amp;#34;type&amp;#34;: &amp;#34;license&amp;#34;
}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h2 id=&#34;feature-detection-api&#34;&gt;Feature detection API&lt;/h2&gt;
&lt;h3 id=&#34;get-product-and-feature-information&#34;&gt;Get product and feature information&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;GET /admin/api/v1/features&lt;/code&gt;
&lt;code&gt;GET /admin/api/v2/features&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Deprecated&lt;/strong&gt;: these endpoints are deprecated and will be removed in a future release of GEM.
Use the endpoint &lt;code&gt;GET /admin/api/v3/features&lt;/code&gt; instead.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;GET /admin/api/v3/features&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Response:&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;JSON&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-json&#34;&gt;{
  &amp;#34;name&amp;#34;: &amp;#34;&amp;lt;string&amp;gt;&amp;#34;,
  &amp;#34;version&amp;#34;: &amp;#34;&amp;lt;string&amp;gt;&amp;#34;,
  &amp;#34;features&amp;#34;: {
      &amp;#34;&amp;lt;string&amp;gt;&amp;#34;: &amp;#34;&amp;lt;string&amp;gt;&amp;#34;,
      ...
  }
}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Example response:&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;JSON&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-json&#34;&gt;{
  &amp;#34;name&amp;#34;: &amp;#34;GEM&amp;#34;,
  &amp;#34;version&amp;#34;: &amp;#34;1.1&amp;#34;,
  &amp;#34;features&amp;#34;: {
    &amp;#34;debug_export&amp;#34;: &amp;#34;v1&amp;#34;,
    &amp;#34;editable_access_policies&amp;#34;: &amp;#34;v1&amp;#34;,
    &amp;#34;editable_tenants&amp;#34;: &amp;#34;v1&amp;#34;,
    &amp;#34;lbac&amp;#34;: &amp;#34;v1&amp;#34;,
    &amp;#34;self_monitoring&amp;#34;: &amp;#34;v1&amp;#34;,
    &amp;#34;federated_rules&amp;#34;: &amp;#34;v1&amp;#34;
  }
}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
]]></content><description>&lt;h1 id="gem-admin-api">GEM Admin API&lt;/h1>
&lt;blockquote>
&lt;p>&lt;strong>NOTE:&lt;/strong> Admin API version v1 /admin/api/v1/ and v2 /admin/api/v2/ endpoints are deprecated and will be
removed in a future release of GEM. Use the new Admin API version v3 endpoints /admin/api/v3/ instead.&lt;/p></description></item><item><title>GEM Node API</title><link>https://grafana.com/docs/enterprise-metrics/v2.16.x/api/gem-node-api/</link><pubDate>Tue, 22 Apr 2025 16:43:47 +0000</pubDate><guid>https://grafana.com/docs/enterprise-metrics/v2.16.x/api/gem-node-api/</guid><content><![CDATA[&lt;h1 id=&#34;gem-node-api&#34;&gt;GEM Node API&lt;/h1&gt;
&lt;p&gt;An HTTP API called Node API is available within each GEM binary, and each binary runs either as a microservice (such as an ingester) or in single-process mode where &lt;code&gt;target=all&lt;/code&gt;. The Node API fetches basic information about that microservice or single process.&lt;/p&gt;
&lt;h2 id=&#34;get-version-information&#34;&gt;Get version information&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;GET /node/api/v1/version&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Response:&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;JSON&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-json&#34;&gt;{
  &amp;#34;go_version&amp;#34;: &amp;#34;&amp;lt;string&amp;gt;&amp;#34;, // The go version
  &amp;#34;product&amp;#34;: &amp;#34;&amp;lt;string&amp;gt;&amp;#34;, // The name of the product, in this case &amp;#34;GEM&amp;#34;
  &amp;#34;revision&amp;#34;: &amp;#34;&amp;lt;string&amp;gt;&amp;#34;, // The git revision of GEM
  &amp;#34;version&amp;#34;: &amp;#34;&amp;lt;string&amp;gt;&amp;#34; // The GEM version
}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Example:&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;console&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-console&#34;&gt;$ curl -u :$API_TOKEN http://localhost:8080/node/api/v1/version | jq
{
  &amp;#34;go_version&amp;#34;: &amp;#34;go1.16.6&amp;#34;,
  &amp;#34;product&amp;#34;: &amp;#34;GEM&amp;#34;,
  &amp;#34;revision&amp;#34;: &amp;#34;1rr03cg6e&amp;#34;,
  &amp;#34;version&amp;#34;: &amp;#34;v1.3.0&amp;#34;
}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h2 id=&#34;get-debug-information&#34;&gt;Get debug information&lt;/h2&gt;
&lt;p&gt;This endpoint exports debug information from the GEM target.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;GET /node/api/v1/debug-export&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;The response is a ZIP file with the following structure:&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;console&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-console&#34;&gt;debug/
├─ tsdb-metas/
│  ├─ team-a/
│  │  ├─ 01FCZEADAH07FB9VER85YGVMBP.json
│  │  ├─ 01FCZEAD3ZN9Z9Q0YMR234VHXY.json
│  ├─ team-b/
│  ├─ __system__/
├─ config.default.yaml
├─ config.actual.yaml
├─ process-mappings.txt
├─ version.json&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;tsdb_metas/&lt;/strong&gt;&lt;br /&gt;
The TSDB block meta data for the available tenants.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;config.default.yaml&lt;/strong&gt;&lt;br /&gt;
The default configuration file for the requested service.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;config.actual.yaml&lt;/strong&gt;&lt;br /&gt;
The actual runtime configuration file for the requested service.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;process-mappings.txt&lt;/strong&gt;&lt;br /&gt;
This file shows how memory is being used by the process from the OS perspective.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;version.json&lt;/strong&gt;&lt;br /&gt;
The version information about the requested service in the same format as is returned for the &lt;code&gt;node/api/v1/version&lt;/code&gt; endpoint.&lt;/p&gt;
]]></content><description>&lt;h1 id="gem-node-api">GEM Node API&lt;/h1>
&lt;p>An HTTP API called Node API is available within each GEM binary, and each binary runs either as a microservice (such as an ingester) or in single-process mode where &lt;code>target=all&lt;/code>. The Node API fetches basic information about that microservice or single process.&lt;/p></description></item></channel></rss>