<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Grafana Enterprise Logs reference topics on Grafana Labs</title><link>https://grafana.com/docs/enterprise-logs/v1.9.x/reference/</link><description>Recent content in Grafana Enterprise Logs reference topics on Grafana Labs</description><generator>Hugo -- gohugo.io</generator><language>en</language><atom:link href="/docs/enterprise-logs/v1.9.x/reference/index.xml" rel="self" type="application/rss+xml"/><item><title>GEL admin API</title><link>https://grafana.com/docs/enterprise-logs/v1.9.x/reference/gel-admin-api/</link><pubDate>Mon, 14 Apr 2025 21:05:47 +0000</pubDate><guid>https://grafana.com/docs/enterprise-logs/v1.9.x/reference/gel-admin-api/</guid><content><![CDATA[&lt;h1 id=&#34;gel-admin-api&#34;&gt;GEL 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 GEL. Use the new Admin API version v3 endpoints /admin/api/v3/ instead.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;It is also possible to create tenants, access policies, and tokens using the plugin.&lt;/p&gt;
&lt;h2 id=&#34;tenants&#34;&gt;Tenants&lt;/h2&gt;
&lt;p&gt;A tenant is made up of the following fields:&lt;/p&gt;
&lt;ul&gt;
&lt;li&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;/li&gt;
&lt;li&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;/li&gt;
&lt;li&gt;&lt;code&gt;status&lt;/code&gt;: The current status of this tenant. It can have the following values:
&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;code&gt;cluster&lt;/code&gt;: The name of the GEL cluster to which this tenant is scoped. You can only write to or query this tenant from this cluster.&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 GEL.
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;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 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;/p&gt;&lt;/blockquote&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:3100/admin/api/v3/tenants | jq
{
  &amp;#34;items&amp;#34;: [
    {
      &amp;#34;name&amp;#34;: &amp;#34;enterprise-logs-dev&amp;#34;,
      &amp;#34;display_name&amp;#34;: &amp;#34;Grafana Enterprise Logs dev tenant&amp;#34;,
      &amp;#34;created_at&amp;#34;: &amp;#34;2021-02-01T17:37:59.341728283Z&amp;#34;,
      &amp;#34;status&amp;#34;: &amp;#34;active&amp;#34;,
      &amp;#34;cluster&amp;#34;: &amp;#34;dev-cluster&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-a-tenant&#34;&gt;Create a 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 GEL.
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;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;/p&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:3100/admin/api/v3/tenants \
--data &amp;#39;{&amp;#34;name&amp;#34;:&amp;#34;dev&amp;#34;, &amp;#34;display_name&amp;#34;: &amp;#34;Grafana Enterprise Logs dev tenant&amp;#34;, &amp;#34;cluster&amp;#34;: &amp;#34;dev-cluster&amp;#34;}&amp;#39;&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 GEL.
Use the endpoint &lt;code&gt;PUT /admin/api/v3/tenants&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;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:3100/admin/api/v3/tenants/enterprise-logs-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 Logs dev tenant&amp;#34;, &amp;#34;status&amp;#34;: &amp;#34;active&amp;#34;, &amp;#34;cluster&amp;#34;: &amp;#34;dev-cluster&amp;#34;}&amp;#39; | jq
{
  &amp;#34;name&amp;#34;: &amp;#34;enterprise-logs-dev&amp;#34;,
  &amp;#34;display_name&amp;#34;: &amp;#34;Grafana Enterprise Logs dev tenant&amp;#34;,
  &amp;#34;created_at&amp;#34;: &amp;#34;2021-02-01T17:37:59.341728283Z&amp;#34;,
  &amp;#34;status&amp;#34;: &amp;#34;active&amp;#34;,
  &amp;#34;cluster&amp;#34;: &amp;#34;dev-cluster&amp;#34;
}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h3 id=&#34;read-tenant-details&#34;&gt;Read tenant details&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 GEL.
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;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:3100/admin/api/v3/tenants/enterprise-logs-dev | jq
{
  &amp;#34;name&amp;#34;: &amp;#34;enterprise-logs-dev&amp;#34;,
  &amp;#34;display_name&amp;#34;: &amp;#34;Grafana Enterprise Logs dev tenant&amp;#34;,
  &amp;#34;created_at&amp;#34;: &amp;#34;2021-02-01T17:37:59.341728283Z&amp;#34;,
  &amp;#34;status&amp;#34;: &amp;#34;active&amp;#34;,
  &amp;#34;cluster&amp;#34;: &amp;#34;dev-cluster&amp;#34;
}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h3 id=&#34;delete-a-tenant&#34;&gt;Delete a 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/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 GEL.
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;p&gt;Example API call for marking a tenant inactive:&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:3100/admin/api/v3/tenants/enterprise-logs-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;dev-cluster&amp;#34;}&amp;#39; | jq
{
  &amp;#34;name&amp;#34;: &amp;#34;enterprise-logs-dev&amp;#34;,
  &amp;#34;display_name&amp;#34;: &amp;#34;Grafana Enterprise Logs dev tenant&amp;#34;,
  &amp;#34;created_at&amp;#34;: &amp;#34;2021-02-01T17:37:59.341728283Z&amp;#34;,
  &amp;#34;status&amp;#34;: &amp;#34;inactive&amp;#34;,
  &amp;#34;cluster&amp;#34;: &amp;#34;dev-cluster&amp;#34;
}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h2 id=&#34;access-policies&#34;&gt;Access policies&lt;/h2&gt;
&lt;p&gt;An access policy is made up of the following fields:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;name&lt;/code&gt;: The machine-readable name of a policy.&lt;/li&gt;
&lt;li&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;/li&gt;
&lt;li&gt;&lt;code&gt;created_at&lt;/code&gt;: An &lt;a href=&#34;https://tools.ietf.org/html/rfc3339&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;RFC3339&lt;/a&gt;-formatted date time.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;realms&lt;/code&gt;: A list of realms.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;scopes&lt;/code&gt;: A list of scopes.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A realm designates the tenant/cluster pairs for which the access policy allows requests:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;tenant&lt;/code&gt;: You must set this field to an existing tenant or &lt;code&gt;*&lt;/code&gt;. &lt;code&gt;*&lt;/code&gt;, which denotes access to all tenants.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;cluster&lt;/code&gt;: You must set this field to an existing cluster.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A scope designates what operations that the tokens, which are assigned to this access policy, are able to perform when calling the GEL API.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;logs:read&lt;/code&gt;: Permission to view data from a tenant.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;logs:write&lt;/code&gt;: Permission to write data to a tenant.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;logs:delete&lt;/code&gt;: Permission to delete data from a tenant.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;admin&lt;/code&gt;: Permission to perform admin operations.&lt;/li&gt;
&lt;/ul&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 GEL.
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;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:3100/admin/api/v3/accesspolicies | jq
{
  &amp;#34;items&amp;#34;: [
    {
      &amp;#34;name&amp;#34;: &amp;#34;ap1&amp;#34;,
      &amp;#34;display_name&amp;#34;: &amp;#34;First access policy&amp;#34;,
      &amp;#34;created_at&amp;#34;: &amp;#34;2021-02-01T17:37:59.341728283Z&amp;#34;,
      &amp;#34;status&amp;#34;: &amp;#34;active&amp;#34;,
      &amp;#34;realms&amp;#34;: [
        {
          &amp;#34;tenant&amp;#34;: &amp;#34;enterprise-logs-dev&amp;#34;,
          &amp;#34;cluster&amp;#34;: &amp;#34;dev-cluster&amp;#34;
        }
      ],
      &amp;#34;scopes&amp;#34;: [
        &amp;#34;logs:read&amp;#34;,
        &amp;#34;logs:write&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 GEL.
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;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;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:3100/admin/api/v3/accesspolicies \
--data &amp;#39;{&amp;#34;name&amp;#34;:&amp;#34;ap1&amp;#34;, &amp;#34;display_name&amp;#34;: &amp;#34;First access policy&amp;#34;, \
  &amp;#34;created_at&amp;#34;: &amp;#34;2021-02-01T17:37:59.341728283Z&amp;#34;, \
  &amp;#34;realms&amp;#34;: [{&amp;#34;tenant&amp;#34;: &amp;#34;enterprise-logs-dev&amp;#34;, &amp;#34;cluster&amp;#34;: &amp;#34;dev-cluster&amp;#34;}], \
  &amp;#34;scopes&amp;#34;: [&amp;#34;logs:read&amp;#34;, &amp;#34;logs:write&amp;#34;]}&amp;#39;&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&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 GEL.
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;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:3100/admin/api/v3/accesspolicies/enterprise-logs-dev \
-X PUT -H &amp;#39;If-Match: &amp;#34;123&amp;#34;` \
--data &amp;#39;{&amp;#34;display_name&amp;#34;: &amp;#34;First access policy&amp;#34;, \
  &amp;#34;status&amp;#34;: &amp;#34;active&amp;#34;, \
  &amp;#34;realms&amp;#34;: [{&amp;#34;tenant&amp;#34;: &amp;#34;enterprise-logs-dev&amp;#34;, &amp;#34;cluster&amp;#34;: &amp;#34;dev-cluster&amp;#34;}], \
  &amp;#34;scopes&amp;#34;: [&amp;#34;logs:read&amp;#34;, &amp;#34;logs:write&amp;#34;]}&amp;#39; | jq
{
  &amp;#34;name&amp;#34;: &amp;#34;ap1&amp;#34;,
  &amp;#34;display_name&amp;#34;: &amp;#34;First access policy&amp;#34;,
  &amp;#34;created_at&amp;#34;: &amp;#34;2021-02-01T17:37:59.341728283Z&amp;#34;,
  &amp;#34;status&amp;#34;: &amp;#34;active&amp;#34;,
  &amp;#34;realms&amp;#34;: [
    {
      &amp;#34;tenant&amp;#34;: &amp;#34;enterprise-logs-dev&amp;#34;,
      &amp;#34;cluster&amp;#34;: &amp;#34;dev-cluster&amp;#34;
    }
  ],
  &amp;#34;scopes&amp;#34;: [
    &amp;#34;logs:read&amp;#34;,
    &amp;#34;logs:write&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 GEL.
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;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:3100/admin/api/v3/accesspolicies/ap1 | jq
{
  &amp;#34;name&amp;#34;: &amp;#34;ap1&amp;#34;,
  &amp;#34;display_name&amp;#34;: &amp;#34;First access policy&amp;#34;,
  &amp;#34;created_at&amp;#34;: &amp;#34;2021-02-01T17:37:59.341728283Z&amp;#34;,
  &amp;#34;status&amp;#34;: &amp;#34;active&amp;#34;,
  &amp;#34;realms&amp;#34;: [
    {
      &amp;#34;tenant&amp;#34;: &amp;#34;enterprise-logs-dev&amp;#34;,
      &amp;#34;cluster&amp;#34;: &amp;#34;dev-cluster&amp;#34;
    }
  ],
  &amp;#34;scopes&amp;#34;: [
    &amp;#34;logs:read&amp;#34;,
    &amp;#34;logs:write&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 GEL.
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;Example API call for setting an access policy to inactive state:&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:3100/admin/api/v3/accesspolicies/enterprise-logs-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;display_name&amp;#34;: &amp;#34;First access policy&amp;#34;, \
  &amp;#34;realms&amp;#34;: [{&amp;#34;tenant&amp;#34;: &amp;#34;enterprise-logs-dev&amp;#34;, &amp;#34;cluster&amp;#34;: &amp;#34;dev-cluster&amp;#34;}], \
  &amp;#34;scopes&amp;#34;: [&amp;#34;logs:read&amp;#34;, &amp;#34;logs:write&amp;#34;]}&amp;#39; | jq
{
  &amp;#34;name&amp;#34;: &amp;#34;ap1&amp;#34;,
  &amp;#34;display_name&amp;#34;: &amp;#34;First access policy&amp;#34;,
  &amp;#34;created_at&amp;#34;: &amp;#34;2021-02-01T17:37:59.341728283Z&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-logs-dev&amp;#34;,
      &amp;#34;cluster&amp;#34;: &amp;#34;dev-cluster&amp;#34;
    }
  ],
  &amp;#34;scopes&amp;#34;: [
    &amp;#34;logs:read&amp;#34;,
    &amp;#34;logs:write&amp;#34;
  ]
}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h2 id=&#34;tokens&#34;&gt;Tokens&lt;/h2&gt;
&lt;p&gt;A token is made up of the following fields:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;name&lt;/code&gt;: The machine-readable name of a policy.&lt;/li&gt;
&lt;li&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;/li&gt;
&lt;li&gt;&lt;code&gt;created_at&lt;/code&gt;: An &lt;a href=&#34;https://tools.ietf.org/html/rfc3339&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;RFC3339&lt;/a&gt;-formatted date time.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;expiration&lt;/code&gt;: An &lt;a href=&#34;https://tools.ietf.org/html/rfc3339&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;RFC3339&lt;/a&gt;-formatted date time.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;access_policy&lt;/code&gt;: The name of the access policy&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;create-a-token&#34;&gt;Create a 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 GEL.
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;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;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:3100/admin/api/v3/tokens \
--data &amp;#39;{&amp;#34;name&amp;#34;:&amp;#34;devtoken&amp;#34;, &amp;#34;display_name&amp;#34;:&amp;#34;Dev token&amp;#34;, \
  &amp;#34;created_at&amp;#34;: &amp;#34;2021-02-01T17:37:59.341728283Z&amp;#34;, \
  &amp;#34;expiration&amp;#34;: &amp;#34;2021-03-01T17:37:59.341728283Z&amp;#34;, \
  &amp;#34;access_policy&amp;#34;: &amp;#34;ap1&amp;#34;}&amp;#39;&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&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 GEL.
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;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:3100/admin/api/v3/tokens/logs-enterprise-token | jq
{
  &amp;#34;name&amp;#34;: &amp;#34;logs-enterprise-token&amp;#34;,
  &amp;#34;display_name&amp;#34;: &amp;#34;Grafana Enterprise Logs Dev Token&amp;#34;,
  &amp;#34;created_at&amp;#34;: &amp;#34;2021-02-01T17:37:59.341728283Z&amp;#34;,
  &amp;#34;status&amp;#34;: &amp;#34;active&amp;#34;,
  &amp;#34;access_policy&amp;#34;: &amp;#34;ap1&amp;#34;,
  &amp;#34;expiration&amp;#34;: &amp;#34;2021-03-01T17:37:59.341728283Z&amp;#34;
}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h3 id=&#34;delete-a-token&#34;&gt;Delete a 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 GEL.
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/logs-enterprise-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;logs-enterprise-token&amp;#34;,
  &amp;#34;display_name&amp;#34;: &amp;#34;Grafana Enterprise Logs Dev Token&amp;#34;,
  &amp;#34;created_at&amp;#34;: &amp;#34;2021-02-01T17:37:59.341728283Z&amp;#34;,
  &amp;#34;status&amp;#34;: &amp;#34;inactive&amp;#34;,
  &amp;#34;access_policy&amp;#34;: &amp;#34;ap1&amp;#34;,
  &amp;#34;expiration&amp;#34;: &amp;#34;2021-03-01T17:37:59.341728283Z&amp;#34;
}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h2 id=&#34;verify-that-you-can-write-data-to-your-gel-tenant&#34;&gt;Verify that you can write data to your GEL tenant&lt;/h2&gt;
&lt;p&gt;The following command pushes a log line by using the Loki API. The &lt;code&gt;TOKEN&lt;/code&gt; environment variable contains the preceding token that was created. The value &lt;code&gt;1612951327316545500&lt;/code&gt; is the current Unix epoch time in nanoseconds at the time of writing; adjust this to the current time. On Linux, you can use the &lt;code&gt;date &#43;%s%N&lt;/code&gt; command:&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;$ date &amp;#43;%s%N
1612951327316545500&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Next, the timestamp is used to push a log line:&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 :$TOKEN localhost:3100/loki/api/v1/push \
-H &amp;#34;Content-Type: application/json&amp;#34; \
-H &amp;#34;X-Scope-OrdID: dev&amp;#34; \
--data &amp;#39;{&amp;#34;streams&amp;#34;: [{ &amp;#34;stream&amp;#34;: { &amp;#34;job&amp;#34;: &amp;#34;example&amp;#34; }, &amp;#34;values&amp;#34;: [ [ &amp;#34;1612951327316545500&amp;#34;, &amp;#34;A log line&amp;#34; ] ] }]}&amp;#39;&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
]]></content><description>&lt;h1 id="gel-admin-api">GEL 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 GEL. Use the new Admin API version v3 endpoints /admin/api/v3/ instead.&lt;/p></description></item><item><title>GEL Node API</title><link>https://grafana.com/docs/enterprise-logs/v1.9.x/reference/gel-node-api/</link><pubDate>Tue, 16 Jul 2024 15:42:20 +0000</pubDate><guid>https://grafana.com/docs/enterprise-logs/v1.9.x/reference/gel-node-api/</guid><content><![CDATA[&lt;h1 id=&#34;gel-node-api&#34;&gt;GEL Node API&lt;/h1&gt;
&lt;p&gt;An HTTP API called Node API is available within each GEL 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;h3 id=&#34;get-debug-information&#34;&gt;Get debug information&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;GET /node/api/v1/debug-export&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;This endpoint exports debug information from the GEL target.
The response is a ZIP file with the following structure:&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;debug
├── 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;The files contain:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;config.default.yaml&lt;/code&gt;
The default configuration file for the requested service.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;config.actual.yaml&lt;/code&gt;
The actual runtime configuration file for the requested service.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;process-mappings.txt&lt;/code&gt;
Shows how memory is being used by the process from the operating system&amp;rsquo;s perspective.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;version.json&lt;/code&gt;
The version information about the requested service.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
]]></content><description>&lt;h1 id="gel-node-api">GEL Node API&lt;/h1>
&lt;p>An HTTP API called Node API is available within each GEL 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>