[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-grafana-configuring-yesoreyeram-infinity-datasource":3,"mdc--rmxs8t-key":35,"related-repo-grafana-configuring-yesoreyeram-infinity-datasource":6197,"related-org-grafana-configuring-yesoreyeram-infinity-datasource":6225},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":23,"repoUrl":24,"updatedAt":25,"license":26,"forks":27,"topics":28,"repo":30,"sourceUrl":33,"mdContent":34},"configuring-yesoreyeram-infinity-datasource","configure Grafana Infinity data source","Configure the Infinity data source — base URL and allowed hosts, the authentication methods (basic, bearer token, API key, digest, OAuth passthrough, OAuth 2.0 client credentials\u002FJWT, Azure, Azure Blob, AWS), TLS, custom HTTP headers, network and security settings, the custom health check, and provisioning with a config file. Use when a user asks how to set up, configure, or change settings for the Infinity data source; how to authenticate to an API; how to allow hosts; how to provision it as YAML; or how to troubleshoot connection, authentication, or health-check issues.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},"grafana","Grafana","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fgrafana.jpg",[12,16,17,20],{"name":13,"slug":14,"type":15},"Configuration","configuration","tag",{"name":9,"slug":8,"type":15},{"name":18,"slug":19,"type":15},"Authentication","authentication",{"name":21,"slug":22,"type":15},"API Development","api-development",1056,"https:\u002F\u002Fgithub.com\u002Fgrafana\u002Fgrafana-infinity-datasource","2026-07-12T07:43:25.939136",null,148,[29],"group-datasources",{"repoUrl":24,"stars":23,"forks":27,"topics":31,"description":32},[29],"API datasource for grafana. Visualize data from JSON \u002F CSV \u002F TSV \u002F XML \u002F GraphQL endpoints","https:\u002F\u002Fgithub.com\u002Fgrafana\u002Fgrafana-infinity-datasource\u002Ftree\u002FHEAD\u002Fskills\u002Fconfiguring-yesoreyeram-infinity-datasource","---\nname: configuring-yesoreyeram-infinity-datasource\ndescription: Configure the Infinity data source — base URL and allowed hosts, the authentication methods (basic, bearer token, API key, digest, OAuth passthrough, OAuth 2.0 client credentials\u002FJWT, Azure, Azure Blob, AWS), TLS, custom HTTP headers, network and security settings, the custom health check, and provisioning with a config file. Use when a user asks how to set up, configure, or change settings for the Infinity data source; how to authenticate to an API; how to allow hosts; how to provision it as YAML; or how to troubleshoot connection, authentication, or health-check issues.\n---\n\n# Configuring the Infinity data source\n\nThe Infinity data source is a universal plugin for pulling data from REST APIs and\nother systems (JSON, CSV, TSV, XML, GraphQL, HTML, Google Sheets, and more) into\nGrafana. It works out of the box with no configuration for public endpoints; configure\nit when you need authentication, custom headers, TLS, network restrictions, or a base\nURL shared across queries.\n\nThis skill explains how to configure the Infinity data source from the Grafana UI and\nhow to provision it from a config file. The data source `type` is\n`yesoreyeram-infinity-datasource`.\n\n## Open the configuration page\n\n1. In Grafana, go to **Connections → Data sources**.\n2. Select your **Infinity** data source, or click **Add new data source** and choose\n   **Infinity**.\n3. Change the settings you need, then click **Save & test**.\n\nConfiguration applies to **all** queries that use this data source instance. If you\nneed different settings (for example, different credentials) for different queries,\ncreate a separate Infinity data source instance.\n\nThe configuration UI is organized into pages in the left navigation:\n\n| Page                       | Contents                                                                            |\n| -------------------------- | ----------------------------------------------------------------------------------- |\n| **Authentication**         | Auth type and its credential fields (see [Authentication](#authentication)).        |\n| **URL, Headers & Params**  | Base URL, custom HTTP headers, custom query params, and kept cookies.               |\n| **Network**                | Request timeout, TLS settings, and proxy.                                           |\n| **Security**               | Allowed hosts and unsecured-query handling (see [Security](#security-settings)).    |\n| **Health check**           | Optional custom health-check URL (see [Custom health check](#custom-health-check)). |\n| **Reference data**         | Named inline datasets reusable in queries.                                          |\n| **Global queries**         | Named queries reusable across panels.                                               |\n\n## URL, Headers & Params\n\n| Setting          | What it does                                                                                                                                                 | Stored as           |\n| ---------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------- |\n| **Base URL**     | Optional. Prefixed to every query URL. For example, base URL `https:\u002F\u002Fexample.com\u002Fapi` plus query URL `\u002Fusers` resolves to `https:\u002F\u002Fexample.com\u002Fapi\u002Fusers`.  | `url` (jsonData)    |\n| **Custom HTTP headers** | Header name\u002Fvalue pairs sent with every request. Values are secret.                                                                                   | `httpHeaderName{N}` \u002F `httpHeaderValue{N}` (secure) |\n| **URL query params** | Query-string key\u002Fvalue pairs sent with every request. Values are secret.                                                                                 | `secureQueryName{N}` \u002F `secureQueryValue{N}` (secure) |\n| **Keep cookies** | Names of cookies to forward from the incoming request to the upstream API.                                                                                   | `keepCookies` (jsonData array) |\n\nSetting a **Base URL** also satisfies the [Allowed hosts](#allowed-hosts) requirement\nfor that host. Custom headers (other than `Accept` \u002F `Content-Type`), custom query\nparams, and kept cookies each independently require **Allowed hosts** to be set.\n\nProvisioning example:\n\n```yaml\napiVersion: 1\ndatasources:\n  - name: Infinity\n    type: yesoreyeram-infinity-datasource\n    jsonData:\n      url: https:\u002F\u002Fexample.com\u002Fapi\n      keepCookies:\n        - session_id\n      # Header\u002Fparam names are stored in jsonData; their values are secret.\n      httpHeaderName1: X-Custom-Header\n      secureQueryName1: api_version\n      allowedHosts:\n        - https:\u002F\u002Fexample.com\n    secureJsonData:\n      httpHeaderValue1: my-header-value\n      secureQueryValue1: '2024-01-01'\n```\n\n## Authentication\n\nOn the **Authentication** page, pick an **Auth type** card that matches your API. The\nfields that appear below the cards change with the selected method. The available auth\ntypes are:\n\n| Auth type                | `auth_method` value | Use it when…                                                                  |\n| ------------------------ | ------------------- | ----------------------------------------------------------------------------- |\n| **No Auth**              | `none`              | The API is public and needs no credentials.                                   |\n| **Basic Authentication** | `basicAuth`         | The API expects a username and password (`Authorization: Basic …`).           |\n| **Bearer Token**         | `bearerToken`       | The API expects `Authorization: Bearer \u003Ctoken>` (JWT, PAT, etc.).             |\n| **API Key Value pair**   | `apiKey`            | The API expects a key\u002Fvalue pair in a **header** or **query** parameter.      |\n| **Digest Auth**          | `digestAuth`        | The API uses RFC 7616 HTTP Digest auth (username + password).                 |\n| **Forward OAuth**        | `oauthPassThru`     | Forward the Grafana user's existing OAuth identity token to the API.          |\n| **OAuth2**               | `oauth2`            | Machine-to-machine OAuth — Client Credentials, JWT, or another grant.         |\n| **AWS**                  | `aws`               | The API is an AWS signed endpoint (for example CloudWatch \u002F `monitoring`).    |\n| **Azure Blob**           | `azureBlob`         | You are reading data from Azure Blob Storage.                                 |\n\n> **Allowed hosts requirement.** Every method except **No Auth** and **Azure Blob**\n> requires you to list the target host under **Allowed hosts** (on the **Security**\n> page) unless you set a **Base URL**. If neither is set, queries are blocked. See\n> [Security](#security-settings) and [Allowed hosts](#allowed-hosts).\n\n### No Auth (`none`)\n\nNo credentials are sent. Use for public APIs. **Allowed hosts** is not required for the\nauth method itself, but may still be required if you enable TLS, custom headers, custom\nquery params, or kept cookies.\n\n```yaml\napiVersion: 1\ndatasources:\n  - name: Infinity\n    type: yesoreyeram-infinity-datasource\n    jsonData:\n      auth_method: none\n```\n\n### Basic Authentication (`basicAuth`)\n\nSends `Authorization: Basic \u003Cbase64(user:password)>`.\n\n| Field         | Stored as                       |\n| ------------- | ------------------------------- |\n| **User Name** | `basicAuthUser` (jsonData)      |\n| **Password**  | `basicAuthPassword` (secure)    |\n\nA missing or empty password produces `invalid or empty password detected` on\n**Save & test**.\n\n```yaml\napiVersion: 1\ndatasources:\n  - name: Infinity\n    type: yesoreyeram-infinity-datasource\n    basicAuth: true\n    basicAuthUser: my-user\n    jsonData:\n      auth_method: basicAuth\n      allowedHosts:\n        - https:\u002F\u002Fapi.example.com\n    secureJsonData:\n      basicAuthPassword: ${BASIC_AUTH_PASSWORD}\n```\n\n### Bearer Token (`bearerToken`)\n\nSends `Authorization: Bearer \u003Ctoken>` exactly. Use this only when the API expects the\nliteral `Bearer ` prefix.\n\n| Field      | Stored as                |\n| ---------- | ------------------------ |\n| **Token**  | `bearerToken` (secure)   |\n\nA missing or empty token produces `invalid or empty bearer token detected`.\n\n```yaml\napiVersion: 1\ndatasources:\n  - name: Infinity\n    type: yesoreyeram-infinity-datasource\n    jsonData:\n      auth_method: bearerToken\n      allowedHosts:\n        - https:\u002F\u002Fapi.example.com\n    secureJsonData:\n      bearerToken: ${BEARER_TOKEN}\n```\n\n### API Key Value pair (`apiKey`)\n\nSends an arbitrary key\u002Fvalue either as a header or as a query string parameter. Use this\nwhen the API needs a custom header name (for example `X-API-Key`), a non-`Bearer`\nprefix, or the key passed in the URL.\n\n| Field     | Stored as                                  | Notes                                           |\n| --------- | ------------------------------------------ | ----------------------------------------------- |\n| **Key**   | `apiKeyKey` (jsonData)                      | Header name or query-parameter name.           |\n| **Value** | `apiKeyValue` (secure)                      | The secret key value.                          |\n| **In**    | `apiKeyType` (jsonData): `header` \\| `query`| Whether the pair is added as a header or query.|\n\nA missing key or value produces `invalid API key specified`.\n\n```yaml\napiVersion: 1\ndatasources:\n  - name: Infinity\n    type: yesoreyeram-infinity-datasource\n    jsonData:\n      auth_method: apiKey\n      apiKeyKey: X-API-Key\n      apiKeyType: header # or: query\n      allowedHosts:\n        - https:\u002F\u002Fapi.example.com\n    secureJsonData:\n      apiKeyValue: ${API_KEY}\n```\n\n### Digest Auth (`digestAuth`)\n\nHTTP Digest authentication (RFC 7616). Same fields as Basic Authentication\n(**User Name** + **Password**, stored in `basicAuthUser` \u002F `basicAuthPassword`), but the\nDigest challenge\u002Fresponse handshake is used instead of `Basic`.\n\n```yaml\napiVersion: 1\ndatasources:\n  - name: Infinity\n    type: yesoreyeram-infinity-datasource\n    basicAuth: true\n    basicAuthUser: my-user\n    jsonData:\n      auth_method: digestAuth\n      allowedHosts:\n        - https:\u002F\u002Fapi.example.com\n    secureJsonData:\n      basicAuthPassword: ${DIGEST_PASSWORD}\n```\n\n### Forward OAuth (`oauthPassThru`)\n\nForwards the OAuth identity token of the currently signed-in Grafana user to the API. No\ncredential fields are shown; Grafana must be configured with an OAuth provider and the\nuser must have a valid token. Sets `oauthPassThru: true` in jsonData.\n\n```yaml\napiVersion: 1\ndatasources:\n  - name: Infinity\n    type: yesoreyeram-infinity-datasource\n    jsonData:\n      auth_method: oauthPassThru\n      oauthPassThru: true\n      allowedHosts:\n        - https:\u002F\u002Fapi.example.com\n```\n\n### OAuth2 (`oauth2`)\n\nSelecting **OAuth2** reveals a **Grant type** selector with three options:\n\n#### Client credentials (`oauth2_type: client_credentials`)\n\nMachine-to-machine flow. Infinity fetches a token from the token URL and attaches it to\neach request.\n\n| Field                | Stored as                        | Notes                                                                 |\n| -------------------- | -------------------------------- | --------------------------------------------------------------------- |\n| **Client ID**        | `oauth2.client_id` (jsonData)    |                                                                       |\n| **Client Secret**    | `oauth2ClientSecret` (secure)    |                                                                       |\n| **Token URL**        | `oauth2.token_url` (jsonData)    | The OAuth token endpoint.                                             |\n| **Scopes**           | `oauth2.scopes` (jsonData array) | One or more scopes.                                                   |\n| **Auth Style**       | `oauth2.authStyle` (jsonData)    | `0` Auto, `1` In Params (body), `2` In Header (basic auth on token).  |\n| **Endpoint params**  | `oauth2EndPointParamsName{N}` \u002F `oauth2EndPointParamsValue{N}` (secure) | Extra parameters sent to the token endpoint. |\n\n```yaml\napiVersion: 1\ndatasources:\n  - name: Infinity\n    type: yesoreyeram-infinity-datasource\n    jsonData:\n      auth_method: oauth2\n      oauth2:\n        oauth2_type: client_credentials\n        client_id: my-client-id\n        token_url: https:\u002F\u002Fapi.example.com\u002Foauth2\u002Ftoken\n        scopes:\n          - read\n        authStyle: 0 # 0 Auto, 1 In Params, 2 In Header\n      allowedHosts:\n        - https:\u002F\u002Fapi.example.com\n    secureJsonData:\n      oauth2ClientSecret: ${OAUTH2_CLIENT_SECRET}\n```\n\n#### JWT (`oauth2_type: jwt`)\n\nTwo-legged JWT bearer flow (for example Google service accounts).\n\n| Field                       | Stored as                        |\n| --------------------------- | -------------------------------- |\n| **Email**                   | `oauth2.email` (jsonData)        |\n| **Private Key Identifier**  | `oauth2.private_key_id` (jsonData)|\n| **Private Key**             | `oauth2JWTPrivateKey` (secure)   |\n| **Token URL**               | `oauth2.token_url` (jsonData)    |\n| **Subject**                 | `oauth2.subject` (jsonData)      |\n| **Scopes**                  | `oauth2.scopes` (jsonData array) |\n\n```yaml\napiVersion: 1\ndatasources:\n  - name: Infinity\n    type: yesoreyeram-infinity-datasource\n    jsonData:\n      auth_method: oauth2\n      oauth2:\n        oauth2_type: jwt\n        email: my-service-account@project.iam.gserviceaccount.com\n        private_key_id: my-private-key-id\n        token_url: https:\u002F\u002Foauth2.googleapis.com\u002Ftoken\n        subject: my-subject\n        scopes:\n          - https:\u002F\u002Fwww.googleapis.com\u002Fauth\u002Fspreadsheets.readonly\n      allowedHosts:\n        - https:\u002F\u002Fsheets.googleapis.com\n    secureJsonData:\n      oauth2JWTPrivateKey: ${OAUTH2_JWT_PRIVATE_KEY}\n```\n\n> **Advanced token customization.** For all OAuth2 grants you can override how the token\n> is attached — a custom token header name, a custom token value template, and extra\n> token-request headers (`oauth2TokenHeadersName{N}` \u002F `oauth2TokenHeadersValue{N}`).\n> See [OAuth2 Custom Tokens](https:\u002F\u002Fgrafana.com\u002Fdocs\u002Fplugins\u002Fyesoreyeram-infinity-datasource\u002Flatest\u002Fadvanced-features\u002Foauth2-custom-tokens\u002F).\n\n### AWS (`aws`)\n\nSigns requests with AWS Signature V4 using static access keys.\n\n| Field          | Stored as                          | Notes                                            |\n| -------------- | ---------------------------------- | ------------------------------------------------ |\n| **Region**     | `aws.region` (jsonData)            | For example `us-east-1`.                         |\n| **Service**    | `aws.service` (jsonData)           | The AWS service name, for example `monitoring`.  |\n| **Access Key** | `awsAccessKey` (secure)            | A missing value yields `invalid\u002Fempty AWS access key`. |\n| **Secret Key** | `awsSecretKey` (secure)            | A missing value yields `invalid\u002Fempty AWS secret key`. |\n\nThe auth type is fixed to access keys (`aws.authType: keys`).\n\n```yaml\napiVersion: 1\ndatasources:\n  - name: Infinity\n    type: yesoreyeram-infinity-datasource\n    jsonData:\n      auth_method: aws\n      aws:\n        authType: keys\n        region: us-east-1\n        service: monitoring\n      allowedHosts:\n        - https:\u002F\u002Fmonitoring.us-east-1.amazonaws.com\n    secureJsonData:\n      awsAccessKey: ${AWS_ACCESS_KEY}\n      awsSecretKey: ${AWS_SECRET_KEY}\n```\n\n### Azure Blob (`azureBlob`)\n\nReads from Azure Blob Storage. **Allowed hosts** is _not_ required for this method.\n\n| Field                      | Stored as                              | Notes                                                            |\n| -------------------------- | -------------------------------------- | ---------------------------------------------------------------- |\n| **Azure cloud**            | `azureBlobCloudType` (jsonData)        | `AzureCloud`, `AzureUSGovernment`, or `AzureChinaCloud`.         |\n| **Storage account name**   | `azureBlobAccountName` (jsonData)      | A missing value yields `invalid\u002Fempty azure blob account name`.  |\n| **Storage account key**    | `azureBlobAccountKey` (secure)         | A missing value yields `invalid\u002Fempty azure blob key`.           |\n\nAn HTTP 403 from Azure surfaces as `http 403. check azure blob storage key`.\n\n```yaml\napiVersion: 1\ndatasources:\n  - name: Infinity\n    type: yesoreyeram-infinity-datasource\n    jsonData:\n      auth_method: azureBlob\n      azureBlobCloudType: AzureCloud # or: AzureUSGovernment, AzureChinaCloud\n      azureBlobAccountName: mystorageaccount\n    secureJsonData:\n      azureBlobAccountKey: ${AZURE_BLOB_ACCOUNT_KEY}\n```\n\n### Other Auth Providers\n\nThe **Other Auth Providers** card opens a guided dialog for common providers:\n\n- **GitHub** — guided Basic Authentication setup that also pre-fills the GitHub host\n  under **Allowed hosts**.\n- **Google JWT** — guided OAuth2 JWT setup for Google service accounts.\n\nThese guides simply pre-configure the underlying auth methods described above. To\nprovision them, use the **Basic Authentication** example (GitHub) or the OAuth2 **JWT**\nexample (Google JWT) shown above.\n\n### Choosing between methods\n\n- **Bearer vs API key**: If the API expects the literal `Authorization: Bearer \u003Ctoken>`,\n  use **Bearer Token**. If it needs a different header name, a non-`Bearer` prefix, or\n  the credential in the query string, use **API Key Value pair**.\n- After choosing any method other than **No Auth** or **Azure Blob**, add the target\n  host under **Allowed hosts** (or set a **Base URL**) or queries will be blocked.\n\n## Network\n\nThe **Network** page controls how requests reach the upstream API.\n\n### Timeout\n\n**Timeout (in seconds)** sets the per-request timeout. The default is 60 seconds; `0`\nmeans no timeout. Stored as `timeoutInSeconds` (jsonData). Requests that exceed it fail\nwith a `context deadline exceeded` \u002F `connection timed out` error.\n\n### TLS \u002F SSL settings\n\nConfigure these when your API requires client certificates or a custom CA:\n\n| Setting                       | What it does                                                                 | Stored as              |\n| ----------------------------- | --------------------------------------------------------------------------- | ---------------------- |\n| **Skip TLS Verify**           | Skips certificate verification (not recommended for production).            | `tlsSkipVerify`        |\n| **TLS Client Auth**           | Enables client-certificate authentication.                                  | `tlsAuth`              |\n| **With CA Cert**              | Uses a custom CA certificate.                                               | `tlsAuthWithCACert`    |\n| **ServerName**                | Server name matching the certificate (required with a custom CA cert).      | `serverName`           |\n| **CA Cert**                   | The CA certificate contents.                                               | `tlsCACert` (secure)   |\n| **Client Cert**               | The client certificate contents.                                          | `tlsClientCert` (secure)|\n| **Client Key**                | The client private-key contents.                                          | `tlsClientKey` (secure)|\n\n> Enabling any TLS option requires the target host to be added under\n> [Allowed hosts](#allowed-hosts) (or a **Base URL** to be set).\n\n### Proxy\n\n| Setting           | What it does                                                                                  | Stored as            |\n| ----------------- | -------------------------------------------------------------------------------------------- | -------------------- |\n| **Proxy type**    | `None`, `Environment` (use `HTTP_PROXY`\u002F`HTTPS_PROXY` env vars), or `URL` (explicit proxy).  | `proxy_type`         |\n| **Proxy URL**     | Explicit proxy address when **Proxy type** is `URL`.                                          | `proxy_url`          |\n| **Proxy user\u002Fpassword** | Optional credentials for the proxy.                                                     | `proxyUserName` \u002F `proxyUserPassword` (secure) |\n| **Secure SOCKS proxy** | Optionally route traffic through Grafana's secure SOCKS proxy.                          | `enableSecureSocksProxy` |\n\n## Security settings\n\nThe **Security** page controls which hosts are reachable and how unsecured queries are\nhandled.\n\n### Allowed hosts\n\n**Allowed hosts** is an allow-list of URL prefixes the data source may connect to. When a\nquery URL does not start with one of the listed prefixes, the request is rejected.\n\n- Enter the **full base URL**, including scheme, for each host — for example\n  `https:\u002F\u002Fapi.example.com`.\n- Setting a **Base URL** (on the **URL, Headers & Params** page) also satisfies this\n  requirement for that host.\n- **Allowed hosts is required** when any of the following is true:\n  - An auth method other than **No Auth** or **Azure Blob** is selected.\n  - TLS \u002F SSL options are enabled.\n  - Custom HTTP headers (other than `Accept` \u002F `Content-Type`) are configured.\n  - Custom URL query params are configured.\n  - **Keep cookies** are configured.\n- If none of those apply and no **Base URL** is set, all hosts are allowed.\n\n### Unsecured query handling\n\nControls how inline\u002Funsecured queries (where the URL or data is supplied in the query\nitself) are treated: **Warn**, **Allow**, or **Deny**. Stored as\n`unsecuredQueryHandling` (jsonData).\n\n### Other security options\n\n- **Allowed dangerous HTTP methods** — Enables `PUT`, `PATCH`, and `DELETE` in queries\n  (`allowDangerousHTTPMethods`, off by default). When disabled, only `GET` and `POST`\n  are permitted; other methods fail with `only GET and POST HTTP methods are allowed`.\n\n## Custom health check\n\nBy default, **Save & test** verifies the data source without calling a specific URL.\nEnable **custom health check** to point the test at a real endpoint so **Save & test**\nconfirms reachability and authentication against a URL you choose. Set the health check\nURL, then click **Save & test**.\n\n## Reference data and global queries\n\nTwo configuration features support reusable queries:\n\n- **Reference data** — Define named inline datasets you can query later with the\n  **Reference** source. See [Reference data](https:\u002F\u002Fgrafana.com\u002Fdocs\u002Fplugins\u002Fyesoreyeram-infinity-datasource\u002Flatest\u002Fadvanced-features\u002Freference-data\u002F).\n- **Global queries** — Define named queries you can reuse across panels. See\n  [Global queries](https:\u002F\u002Fgrafana.com\u002Fdocs\u002Fplugins\u002Fyesoreyeram-infinity-datasource\u002Flatest\u002Fadvanced-features\u002Fglobal-queries\u002F).\n\n## Provisioning with a config file\n\nInstead of using the UI, provision the Infinity data source from a YAML file in\nGrafana's `provisioning\u002Fdatasources\u002F` directory. The data source `type` is\n`yesoreyeram-infinity-datasource`.\n\nMinimal example (public endpoints, no auth):\n\n```yaml\napiVersion: 1\ndatasources:\n  - name: Infinity\n    type: yesoreyeram-infinity-datasource\n```\n\nExample with API key authentication and an allowed host:\n\n```yaml\napiVersion: 1\ndatasources:\n  - name: Infinity\n    type: yesoreyeram-infinity-datasource\n    jsonData:\n      auth_method: apiKey\n      apiKeyKey: X-API-Key\n      apiKeyType: header\n      allowedHosts:\n        - https:\u002F\u002Fapi.example.com\n    secureJsonData:\n      apiKeyValue: ${API_KEY}\n```\n\nNon-secret options go under `jsonData` (for example `auth_method`, `allowedHosts`,\n`timeoutInSeconds`, `proxy_type`, `customHealthCheckEnabled`, `customHealthCheckUrl`,\n`tlsSkipVerify`, `global_queries`, `refData`). Secrets go under `secureJsonData` (for\nexample `apiKeyValue`, `bearerToken`, `basicAuthPassword`, `oauth2ClientSecret`,\n`awsSecretKey`, `tlsClientKey`).\n\nProvisioning changes are applied when Grafana starts or when you reload provisioning, so\nrestart Grafana (or trigger a provisioning reload) after editing the file.\n\n## After saving\n\n- Changes take effect when you click **Save & test**; no Grafana restart is needed for\n  UI-based changes.\n- Use the data source in panels and dashboards as you would any other.\n\n## Troubleshooting\n\nMatch the error message you see (on **Save & test** or in a panel) to the cause and fix\nbelow.\n\n### Allowed hosts \u002F blocked URLs\n\n- **`requested URL not allowed. To allow this URL, update the data source config in the\n  Security tab, Allowed hosts section`** — The query URL does not start with any\n  configured prefix. Add the full base URL (for example `https:\u002F\u002Fapi.example.com`) under\n  **Security → Allowed hosts**, or set a **Base URL**. Remember that any auth method\n  (except No Auth \u002F Azure Blob), TLS, custom headers, custom query params, or kept\n  cookies makes **Allowed hosts** mandatory.\n\n### Authentication errors\n\n- **`invalid or empty password detected`** — Basic \u002F Digest auth: enter the **Password**.\n- **`invalid or empty bearer token detected`** — Bearer Token auth: enter the **Token**.\n- **`invalid API key specified`** — API Key auth: set both **Key** and **Value** and\n  pick the correct **In** (Header or Query Param).\n- **`invalid\u002Fempty AWS access key`** \u002F **`invalid\u002Fempty AWS secret key`** — AWS auth:\n  enter both the **Access Key** and **Secret Key** (and the correct **Region** \u002F\n  **Service**).\n- **`invalid\u002Fempty azure blob account name`** \u002F **`invalid\u002Fempty azure blob key`** —\n  Azure Blob auth: enter the **Storage account name** and **Storage account key**.\n- **`http 403. check azure blob storage key`** — Azure returned 403; the storage account\n  key is wrong or lacks permission.\n- **Wrong header sent** — If the API rejects the token, confirm you chose the right\n  method: use **Bearer Token** for a literal `Bearer \u003Ctoken>`, or **API Key Value pair**\n  for a custom header name \u002F non-`Bearer` prefix \u002F query-string credential.\n\n### HTTP method errors\n\n- **`only GET and POST HTTP methods are allowed for this data source. To make use other\n  methods, enable the \"Allow dangerous HTTP methods\" in the data source configuration`**\n  — Enable **Security → Allowed dangerous HTTP methods** to use `PUT` \u002F `PATCH` \u002F\n  `DELETE`.\n\n### Network and TLS errors\n\n- **`no such host`** — DNS could not resolve the host. Check the URL \u002F Base URL.\n- **`network is unreachable`** \u002F **`connection refused`** — The host is not reachable\n  from Grafana; check firewalls and that the service is up.\n- **`context deadline exceeded`** \u002F **`connection timed out`** — The request exceeded the\n  configured timeout. Increase **Network → Timeout (in seconds)** or check upstream\n  latency.\n- **`socks connect` errors** — Check the proxy configuration on the **Network** page.\n- **TLS \u002F certificate errors** — Verify the CA cert, client cert\u002Fkey, and **ServerName**.\n  As a last resort (non-production), enable **Skip TLS Verify**.\n\n### Other\n\n- **`unsuccessful HTTP response code`** — The API returned a non-2xx status. Inspect the\n  endpoint; optionally enable status-code handling for endpoints that return non-2xx on\n  success.\n- **`unable to parse response body as JSON`** — The response is not the format the query\n  expects. Confirm the query **Type**\u002F**Parser** matches the actual payload.\n- **Provisioned changes don't appear** — Provisioning is applied only when Grafana starts\n  or when you reload provisioning. Restart Grafana (or trigger a provisioning reload)\n  after editing the YAML file.\n\n## References\n\n- [Configure the Infinity data source](https:\u002F\u002Fgrafana.com\u002Fdocs\u002Fplugins\u002Fyesoreyeram-infinity-datasource\u002Flatest\u002Fconfigure\u002F)\n- [Grafana data source management](https:\u002F\u002Fgrafana.com\u002Fdocs\u002Fgrafana\u002Flatest\u002Fadministration\u002Fdata-source-management\u002F)\n- [Provisioning data sources](https:\u002F\u002Fgrafana.com\u002Fdocs\u002Fgrafana\u002Flatest\u002Fadministration\u002Fprovisioning\u002F#data-sources)\n\n## See also\n\n- `querying-yesoreyeram-infinity-datasource` — build queries, choose types\u002Fparsers\u002Fsources, and\n  shape results into data frames.\n",{"data":36,"body":37},{"name":4,"description":6},{"type":38,"children":39},"root",[40,49,55,77,84,136,148,153,313,318,490,530,535,815,819,837,1130,1184,1198,1209,1304,1316,1328,1391,1409,1589,1601,1620,1660,1672,1816,1828,1849,1965,1977,2160,2172,2209,2382,2394,2407,2539,2551,2569,2583,2588,2793,3048,3061,3066,3208,3470,3507,3519,3524,3678,3690,3915,3927,3946,4081,4093,4254,4260,4271,4300,4318,4324,4390,4395,4405,4411,4451,4457,4462,4664,4684,4690,4870,4876,4886,4891,4900,5014,5020,5052,5058,5124,5129,5158,5164,5169,5211,5217,5242,5247,5314,5319,5491,5609,5614,5620,5639,5645,5656,5662,5705,5711,5905,5911,5953,5959,6072,6078,6132,6138,6171,6177,6191],{"type":41,"tag":42,"props":43,"children":45},"element","h1",{"id":44},"configuring-the-infinity-data-source",[46],{"type":47,"value":48},"text","Configuring the Infinity data source",{"type":41,"tag":50,"props":51,"children":52},"p",{},[53],{"type":47,"value":54},"The Infinity data source is a universal plugin for pulling data from REST APIs and\nother systems (JSON, CSV, TSV, XML, GraphQL, HTML, Google Sheets, and more) into\nGrafana. It works out of the box with no configuration for public endpoints; configure\nit when you need authentication, custom headers, TLS, network restrictions, or a base\nURL shared across queries.",{"type":41,"tag":50,"props":56,"children":57},{},[58,60,67,69,75],{"type":47,"value":59},"This skill explains how to configure the Infinity data source from the Grafana UI and\nhow to provision it from a config file. The data source ",{"type":41,"tag":61,"props":62,"children":64},"code",{"className":63},[],[65],{"type":47,"value":66},"type",{"type":47,"value":68}," is\n",{"type":41,"tag":61,"props":70,"children":72},{"className":71},[],[73],{"type":47,"value":74},"yesoreyeram-infinity-datasource",{"type":47,"value":76},".",{"type":41,"tag":78,"props":79,"children":81},"h2",{"id":80},"open-the-configuration-page",[82],{"type":47,"value":83},"Open the configuration page",{"type":41,"tag":85,"props":86,"children":87},"ol",{},[88,101,125],{"type":41,"tag":89,"props":90,"children":91},"li",{},[92,94,100],{"type":47,"value":93},"In Grafana, go to ",{"type":41,"tag":95,"props":96,"children":97},"strong",{},[98],{"type":47,"value":99},"Connections → Data sources",{"type":47,"value":76},{"type":41,"tag":89,"props":102,"children":103},{},[104,106,111,113,118,120,124],{"type":47,"value":105},"Select your ",{"type":41,"tag":95,"props":107,"children":108},{},[109],{"type":47,"value":110},"Infinity",{"type":47,"value":112}," data source, or click ",{"type":41,"tag":95,"props":114,"children":115},{},[116],{"type":47,"value":117},"Add new data source",{"type":47,"value":119}," and choose\n",{"type":41,"tag":95,"props":121,"children":122},{},[123],{"type":47,"value":110},{"type":47,"value":76},{"type":41,"tag":89,"props":126,"children":127},{},[128,130,135],{"type":47,"value":129},"Change the settings you need, then click ",{"type":41,"tag":95,"props":131,"children":132},{},[133],{"type":47,"value":134},"Save & test",{"type":47,"value":76},{"type":41,"tag":50,"props":137,"children":138},{},[139,141,146],{"type":47,"value":140},"Configuration applies to ",{"type":41,"tag":95,"props":142,"children":143},{},[144],{"type":47,"value":145},"all",{"type":47,"value":147}," queries that use this data source instance. If you\nneed different settings (for example, different credentials) for different queries,\ncreate a separate Infinity data source instance.",{"type":41,"tag":50,"props":149,"children":150},{},[151],{"type":47,"value":152},"The configuration UI is organized into pages in the left navigation:",{"type":41,"tag":154,"props":155,"children":156},"table",{},[157,176],{"type":41,"tag":158,"props":159,"children":160},"thead",{},[161],{"type":41,"tag":162,"props":163,"children":164},"tr",{},[165,171],{"type":41,"tag":166,"props":167,"children":168},"th",{},[169],{"type":47,"value":170},"Page",{"type":41,"tag":166,"props":172,"children":173},{},[174],{"type":47,"value":175},"Contents",{"type":41,"tag":177,"props":178,"children":179},"tbody",{},[180,204,220,236,258,281,297],{"type":41,"tag":162,"props":181,"children":182},{},[183,191],{"type":41,"tag":184,"props":185,"children":186},"td",{},[187],{"type":41,"tag":95,"props":188,"children":189},{},[190],{"type":47,"value":18},{"type":41,"tag":184,"props":192,"children":193},{},[194,196,202],{"type":47,"value":195},"Auth type and its credential fields (see ",{"type":41,"tag":197,"props":198,"children":200},"a",{"href":199},"#authentication",[201],{"type":47,"value":18},{"type":47,"value":203},").",{"type":41,"tag":162,"props":205,"children":206},{},[207,215],{"type":41,"tag":184,"props":208,"children":209},{},[210],{"type":41,"tag":95,"props":211,"children":212},{},[213],{"type":47,"value":214},"URL, Headers & Params",{"type":41,"tag":184,"props":216,"children":217},{},[218],{"type":47,"value":219},"Base URL, custom HTTP headers, custom query params, and kept cookies.",{"type":41,"tag":162,"props":221,"children":222},{},[223,231],{"type":41,"tag":184,"props":224,"children":225},{},[226],{"type":41,"tag":95,"props":227,"children":228},{},[229],{"type":47,"value":230},"Network",{"type":41,"tag":184,"props":232,"children":233},{},[234],{"type":47,"value":235},"Request timeout, TLS settings, and proxy.",{"type":41,"tag":162,"props":237,"children":238},{},[239,247],{"type":41,"tag":184,"props":240,"children":241},{},[242],{"type":41,"tag":95,"props":243,"children":244},{},[245],{"type":47,"value":246},"Security",{"type":41,"tag":184,"props":248,"children":249},{},[250,252,257],{"type":47,"value":251},"Allowed hosts and unsecured-query handling (see ",{"type":41,"tag":197,"props":253,"children":255},{"href":254},"#security-settings",[256],{"type":47,"value":246},{"type":47,"value":203},{"type":41,"tag":162,"props":259,"children":260},{},[261,269],{"type":41,"tag":184,"props":262,"children":263},{},[264],{"type":41,"tag":95,"props":265,"children":266},{},[267],{"type":47,"value":268},"Health check",{"type":41,"tag":184,"props":270,"children":271},{},[272,274,280],{"type":47,"value":273},"Optional custom health-check URL (see ",{"type":41,"tag":197,"props":275,"children":277},{"href":276},"#custom-health-check",[278],{"type":47,"value":279},"Custom health check",{"type":47,"value":203},{"type":41,"tag":162,"props":282,"children":283},{},[284,292],{"type":41,"tag":184,"props":285,"children":286},{},[287],{"type":41,"tag":95,"props":288,"children":289},{},[290],{"type":47,"value":291},"Reference data",{"type":41,"tag":184,"props":293,"children":294},{},[295],{"type":47,"value":296},"Named inline datasets reusable in queries.",{"type":41,"tag":162,"props":298,"children":299},{},[300,308],{"type":41,"tag":184,"props":301,"children":302},{},[303],{"type":41,"tag":95,"props":304,"children":305},{},[306],{"type":47,"value":307},"Global queries",{"type":41,"tag":184,"props":309,"children":310},{},[311],{"type":47,"value":312},"Named queries reusable across panels.",{"type":41,"tag":78,"props":314,"children":316},{"id":315},"url-headers-params",[317],{"type":47,"value":214},{"type":41,"tag":154,"props":319,"children":320},{},[321,342],{"type":41,"tag":158,"props":322,"children":323},{},[324],{"type":41,"tag":162,"props":325,"children":326},{},[327,332,337],{"type":41,"tag":166,"props":328,"children":329},{},[330],{"type":47,"value":331},"Setting",{"type":41,"tag":166,"props":333,"children":334},{},[335],{"type":47,"value":336},"What it does",{"type":41,"tag":166,"props":338,"children":339},{},[340],{"type":47,"value":341},"Stored as",{"type":41,"tag":177,"props":343,"children":344},{},[345,395,430,463],{"type":41,"tag":162,"props":346,"children":347},{},[348,356,384],{"type":41,"tag":184,"props":349,"children":350},{},[351],{"type":41,"tag":95,"props":352,"children":353},{},[354],{"type":47,"value":355},"Base URL",{"type":41,"tag":184,"props":357,"children":358},{},[359,361,367,369,375,377,383],{"type":47,"value":360},"Optional. Prefixed to every query URL. For example, base URL ",{"type":41,"tag":61,"props":362,"children":364},{"className":363},[],[365],{"type":47,"value":366},"https:\u002F\u002Fexample.com\u002Fapi",{"type":47,"value":368}," plus query URL ",{"type":41,"tag":61,"props":370,"children":372},{"className":371},[],[373],{"type":47,"value":374},"\u002Fusers",{"type":47,"value":376}," resolves to ",{"type":41,"tag":61,"props":378,"children":380},{"className":379},[],[381],{"type":47,"value":382},"https:\u002F\u002Fexample.com\u002Fapi\u002Fusers",{"type":47,"value":76},{"type":41,"tag":184,"props":385,"children":386},{},[387,393],{"type":41,"tag":61,"props":388,"children":390},{"className":389},[],[391],{"type":47,"value":392},"url",{"type":47,"value":394}," (jsonData)",{"type":41,"tag":162,"props":396,"children":397},{},[398,406,411],{"type":41,"tag":184,"props":399,"children":400},{},[401],{"type":41,"tag":95,"props":402,"children":403},{},[404],{"type":47,"value":405},"Custom HTTP headers",{"type":41,"tag":184,"props":407,"children":408},{},[409],{"type":47,"value":410},"Header name\u002Fvalue pairs sent with every request. Values are secret.",{"type":41,"tag":184,"props":412,"children":413},{},[414,420,422,428],{"type":41,"tag":61,"props":415,"children":417},{"className":416},[],[418],{"type":47,"value":419},"httpHeaderName{N}",{"type":47,"value":421}," \u002F ",{"type":41,"tag":61,"props":423,"children":425},{"className":424},[],[426],{"type":47,"value":427},"httpHeaderValue{N}",{"type":47,"value":429}," (secure)",{"type":41,"tag":162,"props":431,"children":432},{},[433,441,446],{"type":41,"tag":184,"props":434,"children":435},{},[436],{"type":41,"tag":95,"props":437,"children":438},{},[439],{"type":47,"value":440},"URL query params",{"type":41,"tag":184,"props":442,"children":443},{},[444],{"type":47,"value":445},"Query-string key\u002Fvalue pairs sent with every request. Values are secret.",{"type":41,"tag":184,"props":447,"children":448},{},[449,455,456,462],{"type":41,"tag":61,"props":450,"children":452},{"className":451},[],[453],{"type":47,"value":454},"secureQueryName{N}",{"type":47,"value":421},{"type":41,"tag":61,"props":457,"children":459},{"className":458},[],[460],{"type":47,"value":461},"secureQueryValue{N}",{"type":47,"value":429},{"type":41,"tag":162,"props":464,"children":465},{},[466,474,479],{"type":41,"tag":184,"props":467,"children":468},{},[469],{"type":41,"tag":95,"props":470,"children":471},{},[472],{"type":47,"value":473},"Keep cookies",{"type":41,"tag":184,"props":475,"children":476},{},[477],{"type":47,"value":478},"Names of cookies to forward from the incoming request to the upstream API.",{"type":41,"tag":184,"props":480,"children":481},{},[482,488],{"type":41,"tag":61,"props":483,"children":485},{"className":484},[],[486],{"type":47,"value":487},"keepCookies",{"type":47,"value":489}," (jsonData array)",{"type":41,"tag":50,"props":491,"children":492},{},[493,495,499,501,507,509,515,516,522,524,528],{"type":47,"value":494},"Setting a ",{"type":41,"tag":95,"props":496,"children":497},{},[498],{"type":47,"value":355},{"type":47,"value":500}," also satisfies the ",{"type":41,"tag":197,"props":502,"children":504},{"href":503},"#allowed-hosts",[505],{"type":47,"value":506},"Allowed hosts",{"type":47,"value":508}," requirement\nfor that host. Custom headers (other than ",{"type":41,"tag":61,"props":510,"children":512},{"className":511},[],[513],{"type":47,"value":514},"Accept",{"type":47,"value":421},{"type":41,"tag":61,"props":517,"children":519},{"className":518},[],[520],{"type":47,"value":521},"Content-Type",{"type":47,"value":523},"), custom query\nparams, and kept cookies each independently require ",{"type":41,"tag":95,"props":525,"children":526},{},[527],{"type":47,"value":506},{"type":47,"value":529}," to be set.",{"type":41,"tag":50,"props":531,"children":532},{},[533],{"type":47,"value":534},"Provisioning example:",{"type":41,"tag":536,"props":537,"children":542},"pre",{"className":538,"code":539,"language":540,"meta":541,"style":541},"language-yaml shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","apiVersion: 1\ndatasources:\n  - name: Infinity\n    type: yesoreyeram-infinity-datasource\n    jsonData:\n      url: https:\u002F\u002Fexample.com\u002Fapi\n      keepCookies:\n        - session_id\n      # Header\u002Fparam names are stored in jsonData; their values are secret.\n      httpHeaderName1: X-Custom-Header\n      secureQueryName1: api_version\n      allowedHosts:\n        - https:\u002F\u002Fexample.com\n    secureJsonData:\n      httpHeaderValue1: my-header-value\n      secureQueryValue1: '2024-01-01'\n","yaml","",[543],{"type":41,"tag":61,"props":544,"children":545},{"__ignoreMap":541},[546,570,584,608,626,639,657,670,684,694,712,730,743,756,769,787],{"type":41,"tag":547,"props":548,"children":551},"span",{"class":549,"line":550},"line",1,[552,558,564],{"type":41,"tag":547,"props":553,"children":555},{"style":554},"--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178",[556],{"type":47,"value":557},"apiVersion",{"type":41,"tag":547,"props":559,"children":561},{"style":560},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[562],{"type":47,"value":563},":",{"type":41,"tag":547,"props":565,"children":567},{"style":566},"--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C",[568],{"type":47,"value":569}," 1\n",{"type":41,"tag":547,"props":571,"children":573},{"class":549,"line":572},2,[574,579],{"type":41,"tag":547,"props":575,"children":576},{"style":554},[577],{"type":47,"value":578},"datasources",{"type":41,"tag":547,"props":580,"children":581},{"style":560},[582],{"type":47,"value":583},":\n",{"type":41,"tag":547,"props":585,"children":587},{"class":549,"line":586},3,[588,593,598,602],{"type":41,"tag":547,"props":589,"children":590},{"style":560},[591],{"type":47,"value":592},"  -",{"type":41,"tag":547,"props":594,"children":595},{"style":554},[596],{"type":47,"value":597}," name",{"type":41,"tag":547,"props":599,"children":600},{"style":560},[601],{"type":47,"value":563},{"type":41,"tag":547,"props":603,"children":605},{"style":604},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[606],{"type":47,"value":607}," Infinity\n",{"type":41,"tag":547,"props":609,"children":611},{"class":549,"line":610},4,[612,617,621],{"type":41,"tag":547,"props":613,"children":614},{"style":554},[615],{"type":47,"value":616},"    type",{"type":41,"tag":547,"props":618,"children":619},{"style":560},[620],{"type":47,"value":563},{"type":41,"tag":547,"props":622,"children":623},{"style":604},[624],{"type":47,"value":625}," yesoreyeram-infinity-datasource\n",{"type":41,"tag":547,"props":627,"children":629},{"class":549,"line":628},5,[630,635],{"type":41,"tag":547,"props":631,"children":632},{"style":554},[633],{"type":47,"value":634},"    jsonData",{"type":41,"tag":547,"props":636,"children":637},{"style":560},[638],{"type":47,"value":583},{"type":41,"tag":547,"props":640,"children":642},{"class":549,"line":641},6,[643,648,652],{"type":41,"tag":547,"props":644,"children":645},{"style":554},[646],{"type":47,"value":647},"      url",{"type":41,"tag":547,"props":649,"children":650},{"style":560},[651],{"type":47,"value":563},{"type":41,"tag":547,"props":653,"children":654},{"style":604},[655],{"type":47,"value":656}," https:\u002F\u002Fexample.com\u002Fapi\n",{"type":41,"tag":547,"props":658,"children":660},{"class":549,"line":659},7,[661,666],{"type":41,"tag":547,"props":662,"children":663},{"style":554},[664],{"type":47,"value":665},"      keepCookies",{"type":41,"tag":547,"props":667,"children":668},{"style":560},[669],{"type":47,"value":583},{"type":41,"tag":547,"props":671,"children":673},{"class":549,"line":672},8,[674,679],{"type":41,"tag":547,"props":675,"children":676},{"style":560},[677],{"type":47,"value":678},"        -",{"type":41,"tag":547,"props":680,"children":681},{"style":604},[682],{"type":47,"value":683}," session_id\n",{"type":41,"tag":547,"props":685,"children":687},{"class":549,"line":686},9,[688],{"type":41,"tag":547,"props":689,"children":691},{"style":690},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic",[692],{"type":47,"value":693},"      # Header\u002Fparam names are stored in jsonData; their values are secret.\n",{"type":41,"tag":547,"props":695,"children":697},{"class":549,"line":696},10,[698,703,707],{"type":41,"tag":547,"props":699,"children":700},{"style":554},[701],{"type":47,"value":702},"      httpHeaderName1",{"type":41,"tag":547,"props":704,"children":705},{"style":560},[706],{"type":47,"value":563},{"type":41,"tag":547,"props":708,"children":709},{"style":604},[710],{"type":47,"value":711}," X-Custom-Header\n",{"type":41,"tag":547,"props":713,"children":715},{"class":549,"line":714},11,[716,721,725],{"type":41,"tag":547,"props":717,"children":718},{"style":554},[719],{"type":47,"value":720},"      secureQueryName1",{"type":41,"tag":547,"props":722,"children":723},{"style":560},[724],{"type":47,"value":563},{"type":41,"tag":547,"props":726,"children":727},{"style":604},[728],{"type":47,"value":729}," api_version\n",{"type":41,"tag":547,"props":731,"children":733},{"class":549,"line":732},12,[734,739],{"type":41,"tag":547,"props":735,"children":736},{"style":554},[737],{"type":47,"value":738},"      allowedHosts",{"type":41,"tag":547,"props":740,"children":741},{"style":560},[742],{"type":47,"value":583},{"type":41,"tag":547,"props":744,"children":746},{"class":549,"line":745},13,[747,751],{"type":41,"tag":547,"props":748,"children":749},{"style":560},[750],{"type":47,"value":678},{"type":41,"tag":547,"props":752,"children":753},{"style":604},[754],{"type":47,"value":755}," https:\u002F\u002Fexample.com\n",{"type":41,"tag":547,"props":757,"children":759},{"class":549,"line":758},14,[760,765],{"type":41,"tag":547,"props":761,"children":762},{"style":554},[763],{"type":47,"value":764},"    secureJsonData",{"type":41,"tag":547,"props":766,"children":767},{"style":560},[768],{"type":47,"value":583},{"type":41,"tag":547,"props":770,"children":772},{"class":549,"line":771},15,[773,778,782],{"type":41,"tag":547,"props":774,"children":775},{"style":554},[776],{"type":47,"value":777},"      httpHeaderValue1",{"type":41,"tag":547,"props":779,"children":780},{"style":560},[781],{"type":47,"value":563},{"type":41,"tag":547,"props":783,"children":784},{"style":604},[785],{"type":47,"value":786}," my-header-value\n",{"type":41,"tag":547,"props":788,"children":790},{"class":549,"line":789},16,[791,796,800,805,810],{"type":41,"tag":547,"props":792,"children":793},{"style":554},[794],{"type":47,"value":795},"      secureQueryValue1",{"type":41,"tag":547,"props":797,"children":798},{"style":560},[799],{"type":47,"value":563},{"type":41,"tag":547,"props":801,"children":802},{"style":560},[803],{"type":47,"value":804}," '",{"type":41,"tag":547,"props":806,"children":807},{"style":604},[808],{"type":47,"value":809},"2024-01-01",{"type":41,"tag":547,"props":811,"children":812},{"style":560},[813],{"type":47,"value":814},"'\n",{"type":41,"tag":78,"props":816,"children":817},{"id":19},[818],{"type":47,"value":18},{"type":41,"tag":50,"props":820,"children":821},{},[822,824,828,830,835],{"type":47,"value":823},"On the ",{"type":41,"tag":95,"props":825,"children":826},{},[827],{"type":47,"value":18},{"type":47,"value":829}," page, pick an ",{"type":41,"tag":95,"props":831,"children":832},{},[833],{"type":47,"value":834},"Auth type",{"type":47,"value":836}," card that matches your API. The\nfields that appear below the cards change with the selected method. The available auth\ntypes are:",{"type":41,"tag":154,"props":838,"children":839},{},[840,866],{"type":41,"tag":158,"props":841,"children":842},{},[843],{"type":41,"tag":162,"props":844,"children":845},{},[846,850,861],{"type":41,"tag":166,"props":847,"children":848},{},[849],{"type":47,"value":834},{"type":41,"tag":166,"props":851,"children":852},{},[853,859],{"type":41,"tag":61,"props":854,"children":856},{"className":855},[],[857],{"type":47,"value":858},"auth_method",{"type":47,"value":860}," value",{"type":41,"tag":166,"props":862,"children":863},{},[864],{"type":47,"value":865},"Use it when…",{"type":41,"tag":177,"props":867,"children":868},{},[869,894,926,959,998,1023,1048,1073,1105],{"type":41,"tag":162,"props":870,"children":871},{},[872,880,889],{"type":41,"tag":184,"props":873,"children":874},{},[875],{"type":41,"tag":95,"props":876,"children":877},{},[878],{"type":47,"value":879},"No Auth",{"type":41,"tag":184,"props":881,"children":882},{},[883],{"type":41,"tag":61,"props":884,"children":886},{"className":885},[],[887],{"type":47,"value":888},"none",{"type":41,"tag":184,"props":890,"children":891},{},[892],{"type":47,"value":893},"The API is public and needs no credentials.",{"type":41,"tag":162,"props":895,"children":896},{},[897,905,914],{"type":41,"tag":184,"props":898,"children":899},{},[900],{"type":41,"tag":95,"props":901,"children":902},{},[903],{"type":47,"value":904},"Basic Authentication",{"type":41,"tag":184,"props":906,"children":907},{},[908],{"type":41,"tag":61,"props":909,"children":911},{"className":910},[],[912],{"type":47,"value":913},"basicAuth",{"type":41,"tag":184,"props":915,"children":916},{},[917,919,925],{"type":47,"value":918},"The API expects a username and password (",{"type":41,"tag":61,"props":920,"children":922},{"className":921},[],[923],{"type":47,"value":924},"Authorization: Basic …",{"type":47,"value":203},{"type":41,"tag":162,"props":927,"children":928},{},[929,937,946],{"type":41,"tag":184,"props":930,"children":931},{},[932],{"type":41,"tag":95,"props":933,"children":934},{},[935],{"type":47,"value":936},"Bearer Token",{"type":41,"tag":184,"props":938,"children":939},{},[940],{"type":41,"tag":61,"props":941,"children":943},{"className":942},[],[944],{"type":47,"value":945},"bearerToken",{"type":41,"tag":184,"props":947,"children":948},{},[949,951,957],{"type":47,"value":950},"The API expects ",{"type":41,"tag":61,"props":952,"children":954},{"className":953},[],[955],{"type":47,"value":956},"Authorization: Bearer \u003Ctoken>",{"type":47,"value":958}," (JWT, PAT, etc.).",{"type":41,"tag":162,"props":960,"children":961},{},[962,970,979],{"type":41,"tag":184,"props":963,"children":964},{},[965],{"type":41,"tag":95,"props":966,"children":967},{},[968],{"type":47,"value":969},"API Key Value pair",{"type":41,"tag":184,"props":971,"children":972},{},[973],{"type":41,"tag":61,"props":974,"children":976},{"className":975},[],[977],{"type":47,"value":978},"apiKey",{"type":41,"tag":184,"props":980,"children":981},{},[982,984,989,991,996],{"type":47,"value":983},"The API expects a key\u002Fvalue pair in a ",{"type":41,"tag":95,"props":985,"children":986},{},[987],{"type":47,"value":988},"header",{"type":47,"value":990}," or ",{"type":41,"tag":95,"props":992,"children":993},{},[994],{"type":47,"value":995},"query",{"type":47,"value":997}," parameter.",{"type":41,"tag":162,"props":999,"children":1000},{},[1001,1009,1018],{"type":41,"tag":184,"props":1002,"children":1003},{},[1004],{"type":41,"tag":95,"props":1005,"children":1006},{},[1007],{"type":47,"value":1008},"Digest Auth",{"type":41,"tag":184,"props":1010,"children":1011},{},[1012],{"type":41,"tag":61,"props":1013,"children":1015},{"className":1014},[],[1016],{"type":47,"value":1017},"digestAuth",{"type":41,"tag":184,"props":1019,"children":1020},{},[1021],{"type":47,"value":1022},"The API uses RFC 7616 HTTP Digest auth (username + password).",{"type":41,"tag":162,"props":1024,"children":1025},{},[1026,1034,1043],{"type":41,"tag":184,"props":1027,"children":1028},{},[1029],{"type":41,"tag":95,"props":1030,"children":1031},{},[1032],{"type":47,"value":1033},"Forward OAuth",{"type":41,"tag":184,"props":1035,"children":1036},{},[1037],{"type":41,"tag":61,"props":1038,"children":1040},{"className":1039},[],[1041],{"type":47,"value":1042},"oauthPassThru",{"type":41,"tag":184,"props":1044,"children":1045},{},[1046],{"type":47,"value":1047},"Forward the Grafana user's existing OAuth identity token to the API.",{"type":41,"tag":162,"props":1049,"children":1050},{},[1051,1059,1068],{"type":41,"tag":184,"props":1052,"children":1053},{},[1054],{"type":41,"tag":95,"props":1055,"children":1056},{},[1057],{"type":47,"value":1058},"OAuth2",{"type":41,"tag":184,"props":1060,"children":1061},{},[1062],{"type":41,"tag":61,"props":1063,"children":1065},{"className":1064},[],[1066],{"type":47,"value":1067},"oauth2",{"type":41,"tag":184,"props":1069,"children":1070},{},[1071],{"type":47,"value":1072},"Machine-to-machine OAuth — Client Credentials, JWT, or another grant.",{"type":41,"tag":162,"props":1074,"children":1075},{},[1076,1084,1093],{"type":41,"tag":184,"props":1077,"children":1078},{},[1079],{"type":41,"tag":95,"props":1080,"children":1081},{},[1082],{"type":47,"value":1083},"AWS",{"type":41,"tag":184,"props":1085,"children":1086},{},[1087],{"type":41,"tag":61,"props":1088,"children":1090},{"className":1089},[],[1091],{"type":47,"value":1092},"aws",{"type":41,"tag":184,"props":1094,"children":1095},{},[1096,1098,1104],{"type":47,"value":1097},"The API is an AWS signed endpoint (for example CloudWatch \u002F ",{"type":41,"tag":61,"props":1099,"children":1101},{"className":1100},[],[1102],{"type":47,"value":1103},"monitoring",{"type":47,"value":203},{"type":41,"tag":162,"props":1106,"children":1107},{},[1108,1116,1125],{"type":41,"tag":184,"props":1109,"children":1110},{},[1111],{"type":41,"tag":95,"props":1112,"children":1113},{},[1114],{"type":47,"value":1115},"Azure Blob",{"type":41,"tag":184,"props":1117,"children":1118},{},[1119],{"type":41,"tag":61,"props":1120,"children":1122},{"className":1121},[],[1123],{"type":47,"value":1124},"azureBlob",{"type":41,"tag":184,"props":1126,"children":1127},{},[1128],{"type":47,"value":1129},"You are reading data from Azure Blob Storage.",{"type":41,"tag":1131,"props":1132,"children":1133},"blockquote",{},[1134],{"type":41,"tag":50,"props":1135,"children":1136},{},[1137,1142,1144,1148,1150,1154,1156,1160,1162,1166,1168,1172,1174,1178,1179,1183],{"type":41,"tag":95,"props":1138,"children":1139},{},[1140],{"type":47,"value":1141},"Allowed hosts requirement.",{"type":47,"value":1143}," Every method except ",{"type":41,"tag":95,"props":1145,"children":1146},{},[1147],{"type":47,"value":879},{"type":47,"value":1149}," and ",{"type":41,"tag":95,"props":1151,"children":1152},{},[1153],{"type":47,"value":1115},{"type":47,"value":1155},"\nrequires you to list the target host under ",{"type":41,"tag":95,"props":1157,"children":1158},{},[1159],{"type":47,"value":506},{"type":47,"value":1161}," (on the ",{"type":41,"tag":95,"props":1163,"children":1164},{},[1165],{"type":47,"value":246},{"type":47,"value":1167},"\npage) unless you set a ",{"type":41,"tag":95,"props":1169,"children":1170},{},[1171],{"type":47,"value":355},{"type":47,"value":1173},". If neither is set, queries are blocked. See\n",{"type":41,"tag":197,"props":1175,"children":1176},{"href":254},[1177],{"type":47,"value":246},{"type":47,"value":1149},{"type":41,"tag":197,"props":1180,"children":1181},{"href":503},[1182],{"type":47,"value":506},{"type":47,"value":76},{"type":41,"tag":1185,"props":1186,"children":1188},"h3",{"id":1187},"no-auth-none",[1189,1191,1196],{"type":47,"value":1190},"No Auth (",{"type":41,"tag":61,"props":1192,"children":1194},{"className":1193},[],[1195],{"type":47,"value":888},{"type":47,"value":1197},")",{"type":41,"tag":50,"props":1199,"children":1200},{},[1201,1203,1207],{"type":47,"value":1202},"No credentials are sent. Use for public APIs. ",{"type":41,"tag":95,"props":1204,"children":1205},{},[1206],{"type":47,"value":506},{"type":47,"value":1208}," is not required for the\nauth method itself, but may still be required if you enable TLS, custom headers, custom\nquery params, or kept cookies.",{"type":41,"tag":536,"props":1210,"children":1212},{"className":538,"code":1211,"language":540,"meta":541,"style":541},"apiVersion: 1\ndatasources:\n  - name: Infinity\n    type: yesoreyeram-infinity-datasource\n    jsonData:\n      auth_method: none\n",[1213],{"type":41,"tag":61,"props":1214,"children":1215},{"__ignoreMap":541},[1216,1231,1242,1261,1276,1287],{"type":41,"tag":547,"props":1217,"children":1218},{"class":549,"line":550},[1219,1223,1227],{"type":41,"tag":547,"props":1220,"children":1221},{"style":554},[1222],{"type":47,"value":557},{"type":41,"tag":547,"props":1224,"children":1225},{"style":560},[1226],{"type":47,"value":563},{"type":41,"tag":547,"props":1228,"children":1229},{"style":566},[1230],{"type":47,"value":569},{"type":41,"tag":547,"props":1232,"children":1233},{"class":549,"line":572},[1234,1238],{"type":41,"tag":547,"props":1235,"children":1236},{"style":554},[1237],{"type":47,"value":578},{"type":41,"tag":547,"props":1239,"children":1240},{"style":560},[1241],{"type":47,"value":583},{"type":41,"tag":547,"props":1243,"children":1244},{"class":549,"line":586},[1245,1249,1253,1257],{"type":41,"tag":547,"props":1246,"children":1247},{"style":560},[1248],{"type":47,"value":592},{"type":41,"tag":547,"props":1250,"children":1251},{"style":554},[1252],{"type":47,"value":597},{"type":41,"tag":547,"props":1254,"children":1255},{"style":560},[1256],{"type":47,"value":563},{"type":41,"tag":547,"props":1258,"children":1259},{"style":604},[1260],{"type":47,"value":607},{"type":41,"tag":547,"props":1262,"children":1263},{"class":549,"line":610},[1264,1268,1272],{"type":41,"tag":547,"props":1265,"children":1266},{"style":554},[1267],{"type":47,"value":616},{"type":41,"tag":547,"props":1269,"children":1270},{"style":560},[1271],{"type":47,"value":563},{"type":41,"tag":547,"props":1273,"children":1274},{"style":604},[1275],{"type":47,"value":625},{"type":41,"tag":547,"props":1277,"children":1278},{"class":549,"line":628},[1279,1283],{"type":41,"tag":547,"props":1280,"children":1281},{"style":554},[1282],{"type":47,"value":634},{"type":41,"tag":547,"props":1284,"children":1285},{"style":560},[1286],{"type":47,"value":583},{"type":41,"tag":547,"props":1288,"children":1289},{"class":549,"line":641},[1290,1295,1299],{"type":41,"tag":547,"props":1291,"children":1292},{"style":554},[1293],{"type":47,"value":1294},"      auth_method",{"type":41,"tag":547,"props":1296,"children":1297},{"style":560},[1298],{"type":47,"value":563},{"type":41,"tag":547,"props":1300,"children":1301},{"style":604},[1302],{"type":47,"value":1303}," none\n",{"type":41,"tag":1185,"props":1305,"children":1307},{"id":1306},"basic-authentication-basicauth",[1308,1310,1315],{"type":47,"value":1309},"Basic Authentication (",{"type":41,"tag":61,"props":1311,"children":1313},{"className":1312},[],[1314],{"type":47,"value":913},{"type":47,"value":1197},{"type":41,"tag":50,"props":1317,"children":1318},{},[1319,1321,1327],{"type":47,"value":1320},"Sends ",{"type":41,"tag":61,"props":1322,"children":1324},{"className":1323},[],[1325],{"type":47,"value":1326},"Authorization: Basic \u003Cbase64(user:password)>",{"type":47,"value":76},{"type":41,"tag":154,"props":1329,"children":1330},{},[1331,1346],{"type":41,"tag":158,"props":1332,"children":1333},{},[1334],{"type":41,"tag":162,"props":1335,"children":1336},{},[1337,1342],{"type":41,"tag":166,"props":1338,"children":1339},{},[1340],{"type":47,"value":1341},"Field",{"type":41,"tag":166,"props":1343,"children":1344},{},[1345],{"type":47,"value":341},{"type":41,"tag":177,"props":1347,"children":1348},{},[1349,1370],{"type":41,"tag":162,"props":1350,"children":1351},{},[1352,1360],{"type":41,"tag":184,"props":1353,"children":1354},{},[1355],{"type":41,"tag":95,"props":1356,"children":1357},{},[1358],{"type":47,"value":1359},"User Name",{"type":41,"tag":184,"props":1361,"children":1362},{},[1363,1369],{"type":41,"tag":61,"props":1364,"children":1366},{"className":1365},[],[1367],{"type":47,"value":1368},"basicAuthUser",{"type":47,"value":394},{"type":41,"tag":162,"props":1371,"children":1372},{},[1373,1381],{"type":41,"tag":184,"props":1374,"children":1375},{},[1376],{"type":41,"tag":95,"props":1377,"children":1378},{},[1379],{"type":47,"value":1380},"Password",{"type":41,"tag":184,"props":1382,"children":1383},{},[1384,1390],{"type":41,"tag":61,"props":1385,"children":1387},{"className":1386},[],[1388],{"type":47,"value":1389},"basicAuthPassword",{"type":47,"value":429},{"type":41,"tag":50,"props":1392,"children":1393},{},[1394,1396,1402,1404,1408],{"type":47,"value":1395},"A missing or empty password produces ",{"type":41,"tag":61,"props":1397,"children":1399},{"className":1398},[],[1400],{"type":47,"value":1401},"invalid or empty password detected",{"type":47,"value":1403}," on\n",{"type":41,"tag":95,"props":1405,"children":1406},{},[1407],{"type":47,"value":134},{"type":47,"value":76},{"type":41,"tag":536,"props":1410,"children":1412},{"className":538,"code":1411,"language":540,"meta":541,"style":541},"apiVersion: 1\ndatasources:\n  - name: Infinity\n    type: yesoreyeram-infinity-datasource\n    basicAuth: true\n    basicAuthUser: my-user\n    jsonData:\n      auth_method: basicAuth\n      allowedHosts:\n        - https:\u002F\u002Fapi.example.com\n    secureJsonData:\n      basicAuthPassword: ${BASIC_AUTH_PASSWORD}\n",[1413],{"type":41,"tag":61,"props":1414,"children":1415},{"__ignoreMap":541},[1416,1431,1442,1461,1476,1494,1511,1522,1538,1549,1561,1572],{"type":41,"tag":547,"props":1417,"children":1418},{"class":549,"line":550},[1419,1423,1427],{"type":41,"tag":547,"props":1420,"children":1421},{"style":554},[1422],{"type":47,"value":557},{"type":41,"tag":547,"props":1424,"children":1425},{"style":560},[1426],{"type":47,"value":563},{"type":41,"tag":547,"props":1428,"children":1429},{"style":566},[1430],{"type":47,"value":569},{"type":41,"tag":547,"props":1432,"children":1433},{"class":549,"line":572},[1434,1438],{"type":41,"tag":547,"props":1435,"children":1436},{"style":554},[1437],{"type":47,"value":578},{"type":41,"tag":547,"props":1439,"children":1440},{"style":560},[1441],{"type":47,"value":583},{"type":41,"tag":547,"props":1443,"children":1444},{"class":549,"line":586},[1445,1449,1453,1457],{"type":41,"tag":547,"props":1446,"children":1447},{"style":560},[1448],{"type":47,"value":592},{"type":41,"tag":547,"props":1450,"children":1451},{"style":554},[1452],{"type":47,"value":597},{"type":41,"tag":547,"props":1454,"children":1455},{"style":560},[1456],{"type":47,"value":563},{"type":41,"tag":547,"props":1458,"children":1459},{"style":604},[1460],{"type":47,"value":607},{"type":41,"tag":547,"props":1462,"children":1463},{"class":549,"line":610},[1464,1468,1472],{"type":41,"tag":547,"props":1465,"children":1466},{"style":554},[1467],{"type":47,"value":616},{"type":41,"tag":547,"props":1469,"children":1470},{"style":560},[1471],{"type":47,"value":563},{"type":41,"tag":547,"props":1473,"children":1474},{"style":604},[1475],{"type":47,"value":625},{"type":41,"tag":547,"props":1477,"children":1478},{"class":549,"line":628},[1479,1484,1488],{"type":41,"tag":547,"props":1480,"children":1481},{"style":554},[1482],{"type":47,"value":1483},"    basicAuth",{"type":41,"tag":547,"props":1485,"children":1486},{"style":560},[1487],{"type":47,"value":563},{"type":41,"tag":547,"props":1489,"children":1491},{"style":1490},"--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC",[1492],{"type":47,"value":1493}," true\n",{"type":41,"tag":547,"props":1495,"children":1496},{"class":549,"line":641},[1497,1502,1506],{"type":41,"tag":547,"props":1498,"children":1499},{"style":554},[1500],{"type":47,"value":1501},"    basicAuthUser",{"type":41,"tag":547,"props":1503,"children":1504},{"style":560},[1505],{"type":47,"value":563},{"type":41,"tag":547,"props":1507,"children":1508},{"style":604},[1509],{"type":47,"value":1510}," my-user\n",{"type":41,"tag":547,"props":1512,"children":1513},{"class":549,"line":659},[1514,1518],{"type":41,"tag":547,"props":1515,"children":1516},{"style":554},[1517],{"type":47,"value":634},{"type":41,"tag":547,"props":1519,"children":1520},{"style":560},[1521],{"type":47,"value":583},{"type":41,"tag":547,"props":1523,"children":1524},{"class":549,"line":672},[1525,1529,1533],{"type":41,"tag":547,"props":1526,"children":1527},{"style":554},[1528],{"type":47,"value":1294},{"type":41,"tag":547,"props":1530,"children":1531},{"style":560},[1532],{"type":47,"value":563},{"type":41,"tag":547,"props":1534,"children":1535},{"style":604},[1536],{"type":47,"value":1537}," basicAuth\n",{"type":41,"tag":547,"props":1539,"children":1540},{"class":549,"line":686},[1541,1545],{"type":41,"tag":547,"props":1542,"children":1543},{"style":554},[1544],{"type":47,"value":738},{"type":41,"tag":547,"props":1546,"children":1547},{"style":560},[1548],{"type":47,"value":583},{"type":41,"tag":547,"props":1550,"children":1551},{"class":549,"line":696},[1552,1556],{"type":41,"tag":547,"props":1553,"children":1554},{"style":560},[1555],{"type":47,"value":678},{"type":41,"tag":547,"props":1557,"children":1558},{"style":604},[1559],{"type":47,"value":1560}," https:\u002F\u002Fapi.example.com\n",{"type":41,"tag":547,"props":1562,"children":1563},{"class":549,"line":714},[1564,1568],{"type":41,"tag":547,"props":1565,"children":1566},{"style":554},[1567],{"type":47,"value":764},{"type":41,"tag":547,"props":1569,"children":1570},{"style":560},[1571],{"type":47,"value":583},{"type":41,"tag":547,"props":1573,"children":1574},{"class":549,"line":732},[1575,1580,1584],{"type":41,"tag":547,"props":1576,"children":1577},{"style":554},[1578],{"type":47,"value":1579},"      basicAuthPassword",{"type":41,"tag":547,"props":1581,"children":1582},{"style":560},[1583],{"type":47,"value":563},{"type":41,"tag":547,"props":1585,"children":1586},{"style":604},[1587],{"type":47,"value":1588}," ${BASIC_AUTH_PASSWORD}\n",{"type":41,"tag":1185,"props":1590,"children":1592},{"id":1591},"bearer-token-bearertoken",[1593,1595,1600],{"type":47,"value":1594},"Bearer Token (",{"type":41,"tag":61,"props":1596,"children":1598},{"className":1597},[],[1599],{"type":47,"value":945},{"type":47,"value":1197},{"type":41,"tag":50,"props":1602,"children":1603},{},[1604,1605,1610,1612,1618],{"type":47,"value":1320},{"type":41,"tag":61,"props":1606,"children":1608},{"className":1607},[],[1609],{"type":47,"value":956},{"type":47,"value":1611}," exactly. Use this only when the API expects the\nliteral ",{"type":41,"tag":61,"props":1613,"children":1615},{"className":1614},[],[1616],{"type":47,"value":1617},"Bearer ",{"type":47,"value":1619}," prefix.",{"type":41,"tag":154,"props":1621,"children":1622},{},[1623,1637],{"type":41,"tag":158,"props":1624,"children":1625},{},[1626],{"type":41,"tag":162,"props":1627,"children":1628},{},[1629,1633],{"type":41,"tag":166,"props":1630,"children":1631},{},[1632],{"type":47,"value":1341},{"type":41,"tag":166,"props":1634,"children":1635},{},[1636],{"type":47,"value":341},{"type":41,"tag":177,"props":1638,"children":1639},{},[1640],{"type":41,"tag":162,"props":1641,"children":1642},{},[1643,1651],{"type":41,"tag":184,"props":1644,"children":1645},{},[1646],{"type":41,"tag":95,"props":1647,"children":1648},{},[1649],{"type":47,"value":1650},"Token",{"type":41,"tag":184,"props":1652,"children":1653},{},[1654,1659],{"type":41,"tag":61,"props":1655,"children":1657},{"className":1656},[],[1658],{"type":47,"value":945},{"type":47,"value":429},{"type":41,"tag":50,"props":1661,"children":1662},{},[1663,1665,1671],{"type":47,"value":1664},"A missing or empty token produces ",{"type":41,"tag":61,"props":1666,"children":1668},{"className":1667},[],[1669],{"type":47,"value":1670},"invalid or empty bearer token detected",{"type":47,"value":76},{"type":41,"tag":536,"props":1673,"children":1675},{"className":538,"code":1674,"language":540,"meta":541,"style":541},"apiVersion: 1\ndatasources:\n  - name: Infinity\n    type: yesoreyeram-infinity-datasource\n    jsonData:\n      auth_method: bearerToken\n      allowedHosts:\n        - https:\u002F\u002Fapi.example.com\n    secureJsonData:\n      bearerToken: ${BEARER_TOKEN}\n",[1676],{"type":41,"tag":61,"props":1677,"children":1678},{"__ignoreMap":541},[1679,1694,1705,1724,1739,1750,1766,1777,1788,1799],{"type":41,"tag":547,"props":1680,"children":1681},{"class":549,"line":550},[1682,1686,1690],{"type":41,"tag":547,"props":1683,"children":1684},{"style":554},[1685],{"type":47,"value":557},{"type":41,"tag":547,"props":1687,"children":1688},{"style":560},[1689],{"type":47,"value":563},{"type":41,"tag":547,"props":1691,"children":1692},{"style":566},[1693],{"type":47,"value":569},{"type":41,"tag":547,"props":1695,"children":1696},{"class":549,"line":572},[1697,1701],{"type":41,"tag":547,"props":1698,"children":1699},{"style":554},[1700],{"type":47,"value":578},{"type":41,"tag":547,"props":1702,"children":1703},{"style":560},[1704],{"type":47,"value":583},{"type":41,"tag":547,"props":1706,"children":1707},{"class":549,"line":586},[1708,1712,1716,1720],{"type":41,"tag":547,"props":1709,"children":1710},{"style":560},[1711],{"type":47,"value":592},{"type":41,"tag":547,"props":1713,"children":1714},{"style":554},[1715],{"type":47,"value":597},{"type":41,"tag":547,"props":1717,"children":1718},{"style":560},[1719],{"type":47,"value":563},{"type":41,"tag":547,"props":1721,"children":1722},{"style":604},[1723],{"type":47,"value":607},{"type":41,"tag":547,"props":1725,"children":1726},{"class":549,"line":610},[1727,1731,1735],{"type":41,"tag":547,"props":1728,"children":1729},{"style":554},[1730],{"type":47,"value":616},{"type":41,"tag":547,"props":1732,"children":1733},{"style":560},[1734],{"type":47,"value":563},{"type":41,"tag":547,"props":1736,"children":1737},{"style":604},[1738],{"type":47,"value":625},{"type":41,"tag":547,"props":1740,"children":1741},{"class":549,"line":628},[1742,1746],{"type":41,"tag":547,"props":1743,"children":1744},{"style":554},[1745],{"type":47,"value":634},{"type":41,"tag":547,"props":1747,"children":1748},{"style":560},[1749],{"type":47,"value":583},{"type":41,"tag":547,"props":1751,"children":1752},{"class":549,"line":641},[1753,1757,1761],{"type":41,"tag":547,"props":1754,"children":1755},{"style":554},[1756],{"type":47,"value":1294},{"type":41,"tag":547,"props":1758,"children":1759},{"style":560},[1760],{"type":47,"value":563},{"type":41,"tag":547,"props":1762,"children":1763},{"style":604},[1764],{"type":47,"value":1765}," bearerToken\n",{"type":41,"tag":547,"props":1767,"children":1768},{"class":549,"line":659},[1769,1773],{"type":41,"tag":547,"props":1770,"children":1771},{"style":554},[1772],{"type":47,"value":738},{"type":41,"tag":547,"props":1774,"children":1775},{"style":560},[1776],{"type":47,"value":583},{"type":41,"tag":547,"props":1778,"children":1779},{"class":549,"line":672},[1780,1784],{"type":41,"tag":547,"props":1781,"children":1782},{"style":560},[1783],{"type":47,"value":678},{"type":41,"tag":547,"props":1785,"children":1786},{"style":604},[1787],{"type":47,"value":1560},{"type":41,"tag":547,"props":1789,"children":1790},{"class":549,"line":686},[1791,1795],{"type":41,"tag":547,"props":1792,"children":1793},{"style":554},[1794],{"type":47,"value":764},{"type":41,"tag":547,"props":1796,"children":1797},{"style":560},[1798],{"type":47,"value":583},{"type":41,"tag":547,"props":1800,"children":1801},{"class":549,"line":696},[1802,1807,1811],{"type":41,"tag":547,"props":1803,"children":1804},{"style":554},[1805],{"type":47,"value":1806},"      bearerToken",{"type":41,"tag":547,"props":1808,"children":1809},{"style":560},[1810],{"type":47,"value":563},{"type":41,"tag":547,"props":1812,"children":1813},{"style":604},[1814],{"type":47,"value":1815}," ${BEARER_TOKEN}\n",{"type":41,"tag":1185,"props":1817,"children":1819},{"id":1818},"api-key-value-pair-apikey",[1820,1822,1827],{"type":47,"value":1821},"API Key Value pair (",{"type":41,"tag":61,"props":1823,"children":1825},{"className":1824},[],[1826],{"type":47,"value":978},{"type":47,"value":1197},{"type":41,"tag":50,"props":1829,"children":1830},{},[1831,1833,1839,1841,1847],{"type":47,"value":1832},"Sends an arbitrary key\u002Fvalue either as a header or as a query string parameter. Use this\nwhen the API needs a custom header name (for example ",{"type":41,"tag":61,"props":1834,"children":1836},{"className":1835},[],[1837],{"type":47,"value":1838},"X-API-Key",{"type":47,"value":1840},"), a non-",{"type":41,"tag":61,"props":1842,"children":1844},{"className":1843},[],[1845],{"type":47,"value":1846},"Bearer",{"type":47,"value":1848},"\nprefix, or the key passed in the URL.",{"type":41,"tag":154,"props":1850,"children":1851},{},[1852,1871],{"type":41,"tag":158,"props":1853,"children":1854},{},[1855],{"type":41,"tag":162,"props":1856,"children":1857},{},[1858,1862,1866],{"type":41,"tag":166,"props":1859,"children":1860},{},[1861],{"type":47,"value":1341},{"type":41,"tag":166,"props":1863,"children":1864},{},[1865],{"type":47,"value":341},{"type":41,"tag":166,"props":1867,"children":1868},{},[1869],{"type":47,"value":1870},"Notes",{"type":41,"tag":177,"props":1872,"children":1873},{},[1874,1900,1926],{"type":41,"tag":162,"props":1875,"children":1876},{},[1877,1885,1895],{"type":41,"tag":184,"props":1878,"children":1879},{},[1880],{"type":41,"tag":95,"props":1881,"children":1882},{},[1883],{"type":47,"value":1884},"Key",{"type":41,"tag":184,"props":1886,"children":1887},{},[1888,1894],{"type":41,"tag":61,"props":1889,"children":1891},{"className":1890},[],[1892],{"type":47,"value":1893},"apiKeyKey",{"type":47,"value":394},{"type":41,"tag":184,"props":1896,"children":1897},{},[1898],{"type":47,"value":1899},"Header name or query-parameter name.",{"type":41,"tag":162,"props":1901,"children":1902},{},[1903,1911,1921],{"type":41,"tag":184,"props":1904,"children":1905},{},[1906],{"type":41,"tag":95,"props":1907,"children":1908},{},[1909],{"type":47,"value":1910},"Value",{"type":41,"tag":184,"props":1912,"children":1913},{},[1914,1920],{"type":41,"tag":61,"props":1915,"children":1917},{"className":1916},[],[1918],{"type":47,"value":1919},"apiKeyValue",{"type":47,"value":429},{"type":41,"tag":184,"props":1922,"children":1923},{},[1924],{"type":47,"value":1925},"The secret key value.",{"type":41,"tag":162,"props":1927,"children":1928},{},[1929,1937,1960],{"type":41,"tag":184,"props":1930,"children":1931},{},[1932],{"type":41,"tag":95,"props":1933,"children":1934},{},[1935],{"type":47,"value":1936},"In",{"type":41,"tag":184,"props":1938,"children":1939},{},[1940,1946,1948,1953,1955],{"type":41,"tag":61,"props":1941,"children":1943},{"className":1942},[],[1944],{"type":47,"value":1945},"apiKeyType",{"type":47,"value":1947}," (jsonData): ",{"type":41,"tag":61,"props":1949,"children":1951},{"className":1950},[],[1952],{"type":47,"value":988},{"type":47,"value":1954}," | ",{"type":41,"tag":61,"props":1956,"children":1958},{"className":1957},[],[1959],{"type":47,"value":995},{"type":41,"tag":184,"props":1961,"children":1962},{},[1963],{"type":47,"value":1964},"Whether the pair is added as a header or query.",{"type":41,"tag":50,"props":1966,"children":1967},{},[1968,1970,1976],{"type":47,"value":1969},"A missing key or value produces ",{"type":41,"tag":61,"props":1971,"children":1973},{"className":1972},[],[1974],{"type":47,"value":1975},"invalid API key specified",{"type":47,"value":76},{"type":41,"tag":536,"props":1978,"children":1980},{"className":538,"code":1979,"language":540,"meta":541,"style":541},"apiVersion: 1\ndatasources:\n  - name: Infinity\n    type: yesoreyeram-infinity-datasource\n    jsonData:\n      auth_method: apiKey\n      apiKeyKey: X-API-Key\n      apiKeyType: header # or: query\n      allowedHosts:\n        - https:\u002F\u002Fapi.example.com\n    secureJsonData:\n      apiKeyValue: ${API_KEY}\n",[1981],{"type":41,"tag":61,"props":1982,"children":1983},{"__ignoreMap":541},[1984,1999,2010,2029,2044,2055,2071,2088,2110,2121,2132,2143],{"type":41,"tag":547,"props":1985,"children":1986},{"class":549,"line":550},[1987,1991,1995],{"type":41,"tag":547,"props":1988,"children":1989},{"style":554},[1990],{"type":47,"value":557},{"type":41,"tag":547,"props":1992,"children":1993},{"style":560},[1994],{"type":47,"value":563},{"type":41,"tag":547,"props":1996,"children":1997},{"style":566},[1998],{"type":47,"value":569},{"type":41,"tag":547,"props":2000,"children":2001},{"class":549,"line":572},[2002,2006],{"type":41,"tag":547,"props":2003,"children":2004},{"style":554},[2005],{"type":47,"value":578},{"type":41,"tag":547,"props":2007,"children":2008},{"style":560},[2009],{"type":47,"value":583},{"type":41,"tag":547,"props":2011,"children":2012},{"class":549,"line":586},[2013,2017,2021,2025],{"type":41,"tag":547,"props":2014,"children":2015},{"style":560},[2016],{"type":47,"value":592},{"type":41,"tag":547,"props":2018,"children":2019},{"style":554},[2020],{"type":47,"value":597},{"type":41,"tag":547,"props":2022,"children":2023},{"style":560},[2024],{"type":47,"value":563},{"type":41,"tag":547,"props":2026,"children":2027},{"style":604},[2028],{"type":47,"value":607},{"type":41,"tag":547,"props":2030,"children":2031},{"class":549,"line":610},[2032,2036,2040],{"type":41,"tag":547,"props":2033,"children":2034},{"style":554},[2035],{"type":47,"value":616},{"type":41,"tag":547,"props":2037,"children":2038},{"style":560},[2039],{"type":47,"value":563},{"type":41,"tag":547,"props":2041,"children":2042},{"style":604},[2043],{"type":47,"value":625},{"type":41,"tag":547,"props":2045,"children":2046},{"class":549,"line":628},[2047,2051],{"type":41,"tag":547,"props":2048,"children":2049},{"style":554},[2050],{"type":47,"value":634},{"type":41,"tag":547,"props":2052,"children":2053},{"style":560},[2054],{"type":47,"value":583},{"type":41,"tag":547,"props":2056,"children":2057},{"class":549,"line":641},[2058,2062,2066],{"type":41,"tag":547,"props":2059,"children":2060},{"style":554},[2061],{"type":47,"value":1294},{"type":41,"tag":547,"props":2063,"children":2064},{"style":560},[2065],{"type":47,"value":563},{"type":41,"tag":547,"props":2067,"children":2068},{"style":604},[2069],{"type":47,"value":2070}," apiKey\n",{"type":41,"tag":547,"props":2072,"children":2073},{"class":549,"line":659},[2074,2079,2083],{"type":41,"tag":547,"props":2075,"children":2076},{"style":554},[2077],{"type":47,"value":2078},"      apiKeyKey",{"type":41,"tag":547,"props":2080,"children":2081},{"style":560},[2082],{"type":47,"value":563},{"type":41,"tag":547,"props":2084,"children":2085},{"style":604},[2086],{"type":47,"value":2087}," X-API-Key\n",{"type":41,"tag":547,"props":2089,"children":2090},{"class":549,"line":672},[2091,2096,2100,2105],{"type":41,"tag":547,"props":2092,"children":2093},{"style":554},[2094],{"type":47,"value":2095},"      apiKeyType",{"type":41,"tag":547,"props":2097,"children":2098},{"style":560},[2099],{"type":47,"value":563},{"type":41,"tag":547,"props":2101,"children":2102},{"style":604},[2103],{"type":47,"value":2104}," header",{"type":41,"tag":547,"props":2106,"children":2107},{"style":690},[2108],{"type":47,"value":2109}," # or: query\n",{"type":41,"tag":547,"props":2111,"children":2112},{"class":549,"line":686},[2113,2117],{"type":41,"tag":547,"props":2114,"children":2115},{"style":554},[2116],{"type":47,"value":738},{"type":41,"tag":547,"props":2118,"children":2119},{"style":560},[2120],{"type":47,"value":583},{"type":41,"tag":547,"props":2122,"children":2123},{"class":549,"line":696},[2124,2128],{"type":41,"tag":547,"props":2125,"children":2126},{"style":560},[2127],{"type":47,"value":678},{"type":41,"tag":547,"props":2129,"children":2130},{"style":604},[2131],{"type":47,"value":1560},{"type":41,"tag":547,"props":2133,"children":2134},{"class":549,"line":714},[2135,2139],{"type":41,"tag":547,"props":2136,"children":2137},{"style":554},[2138],{"type":47,"value":764},{"type":41,"tag":547,"props":2140,"children":2141},{"style":560},[2142],{"type":47,"value":583},{"type":41,"tag":547,"props":2144,"children":2145},{"class":549,"line":732},[2146,2151,2155],{"type":41,"tag":547,"props":2147,"children":2148},{"style":554},[2149],{"type":47,"value":2150},"      apiKeyValue",{"type":41,"tag":547,"props":2152,"children":2153},{"style":560},[2154],{"type":47,"value":563},{"type":41,"tag":547,"props":2156,"children":2157},{"style":604},[2158],{"type":47,"value":2159}," ${API_KEY}\n",{"type":41,"tag":1185,"props":2161,"children":2163},{"id":2162},"digest-auth-digestauth",[2164,2166,2171],{"type":47,"value":2165},"Digest Auth (",{"type":41,"tag":61,"props":2167,"children":2169},{"className":2168},[],[2170],{"type":47,"value":1017},{"type":47,"value":1197},{"type":41,"tag":50,"props":2173,"children":2174},{},[2175,2177,2181,2183,2187,2189,2194,2195,2200,2202,2208],{"type":47,"value":2176},"HTTP Digest authentication (RFC 7616). Same fields as Basic Authentication\n(",{"type":41,"tag":95,"props":2178,"children":2179},{},[2180],{"type":47,"value":1359},{"type":47,"value":2182}," + ",{"type":41,"tag":95,"props":2184,"children":2185},{},[2186],{"type":47,"value":1380},{"type":47,"value":2188},", stored in ",{"type":41,"tag":61,"props":2190,"children":2192},{"className":2191},[],[2193],{"type":47,"value":1368},{"type":47,"value":421},{"type":41,"tag":61,"props":2196,"children":2198},{"className":2197},[],[2199],{"type":47,"value":1389},{"type":47,"value":2201},"), but the\nDigest challenge\u002Fresponse handshake is used instead of ",{"type":41,"tag":61,"props":2203,"children":2205},{"className":2204},[],[2206],{"type":47,"value":2207},"Basic",{"type":47,"value":76},{"type":41,"tag":536,"props":2210,"children":2212},{"className":538,"code":2211,"language":540,"meta":541,"style":541},"apiVersion: 1\ndatasources:\n  - name: Infinity\n    type: yesoreyeram-infinity-datasource\n    basicAuth: true\n    basicAuthUser: my-user\n    jsonData:\n      auth_method: digestAuth\n      allowedHosts:\n        - https:\u002F\u002Fapi.example.com\n    secureJsonData:\n      basicAuthPassword: ${DIGEST_PASSWORD}\n",[2213],{"type":41,"tag":61,"props":2214,"children":2215},{"__ignoreMap":541},[2216,2231,2242,2261,2276,2291,2306,2317,2333,2344,2355,2366],{"type":41,"tag":547,"props":2217,"children":2218},{"class":549,"line":550},[2219,2223,2227],{"type":41,"tag":547,"props":2220,"children":2221},{"style":554},[2222],{"type":47,"value":557},{"type":41,"tag":547,"props":2224,"children":2225},{"style":560},[2226],{"type":47,"value":563},{"type":41,"tag":547,"props":2228,"children":2229},{"style":566},[2230],{"type":47,"value":569},{"type":41,"tag":547,"props":2232,"children":2233},{"class":549,"line":572},[2234,2238],{"type":41,"tag":547,"props":2235,"children":2236},{"style":554},[2237],{"type":47,"value":578},{"type":41,"tag":547,"props":2239,"children":2240},{"style":560},[2241],{"type":47,"value":583},{"type":41,"tag":547,"props":2243,"children":2244},{"class":549,"line":586},[2245,2249,2253,2257],{"type":41,"tag":547,"props":2246,"children":2247},{"style":560},[2248],{"type":47,"value":592},{"type":41,"tag":547,"props":2250,"children":2251},{"style":554},[2252],{"type":47,"value":597},{"type":41,"tag":547,"props":2254,"children":2255},{"style":560},[2256],{"type":47,"value":563},{"type":41,"tag":547,"props":2258,"children":2259},{"style":604},[2260],{"type":47,"value":607},{"type":41,"tag":547,"props":2262,"children":2263},{"class":549,"line":610},[2264,2268,2272],{"type":41,"tag":547,"props":2265,"children":2266},{"style":554},[2267],{"type":47,"value":616},{"type":41,"tag":547,"props":2269,"children":2270},{"style":560},[2271],{"type":47,"value":563},{"type":41,"tag":547,"props":2273,"children":2274},{"style":604},[2275],{"type":47,"value":625},{"type":41,"tag":547,"props":2277,"children":2278},{"class":549,"line":628},[2279,2283,2287],{"type":41,"tag":547,"props":2280,"children":2281},{"style":554},[2282],{"type":47,"value":1483},{"type":41,"tag":547,"props":2284,"children":2285},{"style":560},[2286],{"type":47,"value":563},{"type":41,"tag":547,"props":2288,"children":2289},{"style":1490},[2290],{"type":47,"value":1493},{"type":41,"tag":547,"props":2292,"children":2293},{"class":549,"line":641},[2294,2298,2302],{"type":41,"tag":547,"props":2295,"children":2296},{"style":554},[2297],{"type":47,"value":1501},{"type":41,"tag":547,"props":2299,"children":2300},{"style":560},[2301],{"type":47,"value":563},{"type":41,"tag":547,"props":2303,"children":2304},{"style":604},[2305],{"type":47,"value":1510},{"type":41,"tag":547,"props":2307,"children":2308},{"class":549,"line":659},[2309,2313],{"type":41,"tag":547,"props":2310,"children":2311},{"style":554},[2312],{"type":47,"value":634},{"type":41,"tag":547,"props":2314,"children":2315},{"style":560},[2316],{"type":47,"value":583},{"type":41,"tag":547,"props":2318,"children":2319},{"class":549,"line":672},[2320,2324,2328],{"type":41,"tag":547,"props":2321,"children":2322},{"style":554},[2323],{"type":47,"value":1294},{"type":41,"tag":547,"props":2325,"children":2326},{"style":560},[2327],{"type":47,"value":563},{"type":41,"tag":547,"props":2329,"children":2330},{"style":604},[2331],{"type":47,"value":2332}," digestAuth\n",{"type":41,"tag":547,"props":2334,"children":2335},{"class":549,"line":686},[2336,2340],{"type":41,"tag":547,"props":2337,"children":2338},{"style":554},[2339],{"type":47,"value":738},{"type":41,"tag":547,"props":2341,"children":2342},{"style":560},[2343],{"type":47,"value":583},{"type":41,"tag":547,"props":2345,"children":2346},{"class":549,"line":696},[2347,2351],{"type":41,"tag":547,"props":2348,"children":2349},{"style":560},[2350],{"type":47,"value":678},{"type":41,"tag":547,"props":2352,"children":2353},{"style":604},[2354],{"type":47,"value":1560},{"type":41,"tag":547,"props":2356,"children":2357},{"class":549,"line":714},[2358,2362],{"type":41,"tag":547,"props":2359,"children":2360},{"style":554},[2361],{"type":47,"value":764},{"type":41,"tag":547,"props":2363,"children":2364},{"style":560},[2365],{"type":47,"value":583},{"type":41,"tag":547,"props":2367,"children":2368},{"class":549,"line":732},[2369,2373,2377],{"type":41,"tag":547,"props":2370,"children":2371},{"style":554},[2372],{"type":47,"value":1579},{"type":41,"tag":547,"props":2374,"children":2375},{"style":560},[2376],{"type":47,"value":563},{"type":41,"tag":547,"props":2378,"children":2379},{"style":604},[2380],{"type":47,"value":2381}," ${DIGEST_PASSWORD}\n",{"type":41,"tag":1185,"props":2383,"children":2385},{"id":2384},"forward-oauth-oauthpassthru",[2386,2388,2393],{"type":47,"value":2387},"Forward OAuth (",{"type":41,"tag":61,"props":2389,"children":2391},{"className":2390},[],[2392],{"type":47,"value":1042},{"type":47,"value":1197},{"type":41,"tag":50,"props":2395,"children":2396},{},[2397,2399,2405],{"type":47,"value":2398},"Forwards the OAuth identity token of the currently signed-in Grafana user to the API. No\ncredential fields are shown; Grafana must be configured with an OAuth provider and the\nuser must have a valid token. Sets ",{"type":41,"tag":61,"props":2400,"children":2402},{"className":2401},[],[2403],{"type":47,"value":2404},"oauthPassThru: true",{"type":47,"value":2406}," in jsonData.",{"type":41,"tag":536,"props":2408,"children":2410},{"className":538,"code":2409,"language":540,"meta":541,"style":541},"apiVersion: 1\ndatasources:\n  - name: Infinity\n    type: yesoreyeram-infinity-datasource\n    jsonData:\n      auth_method: oauthPassThru\n      oauthPassThru: true\n      allowedHosts:\n        - https:\u002F\u002Fapi.example.com\n",[2411],{"type":41,"tag":61,"props":2412,"children":2413},{"__ignoreMap":541},[2414,2429,2440,2459,2474,2485,2501,2517,2528],{"type":41,"tag":547,"props":2415,"children":2416},{"class":549,"line":550},[2417,2421,2425],{"type":41,"tag":547,"props":2418,"children":2419},{"style":554},[2420],{"type":47,"value":557},{"type":41,"tag":547,"props":2422,"children":2423},{"style":560},[2424],{"type":47,"value":563},{"type":41,"tag":547,"props":2426,"children":2427},{"style":566},[2428],{"type":47,"value":569},{"type":41,"tag":547,"props":2430,"children":2431},{"class":549,"line":572},[2432,2436],{"type":41,"tag":547,"props":2433,"children":2434},{"style":554},[2435],{"type":47,"value":578},{"type":41,"tag":547,"props":2437,"children":2438},{"style":560},[2439],{"type":47,"value":583},{"type":41,"tag":547,"props":2441,"children":2442},{"class":549,"line":586},[2443,2447,2451,2455],{"type":41,"tag":547,"props":2444,"children":2445},{"style":560},[2446],{"type":47,"value":592},{"type":41,"tag":547,"props":2448,"children":2449},{"style":554},[2450],{"type":47,"value":597},{"type":41,"tag":547,"props":2452,"children":2453},{"style":560},[2454],{"type":47,"value":563},{"type":41,"tag":547,"props":2456,"children":2457},{"style":604},[2458],{"type":47,"value":607},{"type":41,"tag":547,"props":2460,"children":2461},{"class":549,"line":610},[2462,2466,2470],{"type":41,"tag":547,"props":2463,"children":2464},{"style":554},[2465],{"type":47,"value":616},{"type":41,"tag":547,"props":2467,"children":2468},{"style":560},[2469],{"type":47,"value":563},{"type":41,"tag":547,"props":2471,"children":2472},{"style":604},[2473],{"type":47,"value":625},{"type":41,"tag":547,"props":2475,"children":2476},{"class":549,"line":628},[2477,2481],{"type":41,"tag":547,"props":2478,"children":2479},{"style":554},[2480],{"type":47,"value":634},{"type":41,"tag":547,"props":2482,"children":2483},{"style":560},[2484],{"type":47,"value":583},{"type":41,"tag":547,"props":2486,"children":2487},{"class":549,"line":641},[2488,2492,2496],{"type":41,"tag":547,"props":2489,"children":2490},{"style":554},[2491],{"type":47,"value":1294},{"type":41,"tag":547,"props":2493,"children":2494},{"style":560},[2495],{"type":47,"value":563},{"type":41,"tag":547,"props":2497,"children":2498},{"style":604},[2499],{"type":47,"value":2500}," oauthPassThru\n",{"type":41,"tag":547,"props":2502,"children":2503},{"class":549,"line":659},[2504,2509,2513],{"type":41,"tag":547,"props":2505,"children":2506},{"style":554},[2507],{"type":47,"value":2508},"      oauthPassThru",{"type":41,"tag":547,"props":2510,"children":2511},{"style":560},[2512],{"type":47,"value":563},{"type":41,"tag":547,"props":2514,"children":2515},{"style":1490},[2516],{"type":47,"value":1493},{"type":41,"tag":547,"props":2518,"children":2519},{"class":549,"line":672},[2520,2524],{"type":41,"tag":547,"props":2521,"children":2522},{"style":554},[2523],{"type":47,"value":738},{"type":41,"tag":547,"props":2525,"children":2526},{"style":560},[2527],{"type":47,"value":583},{"type":41,"tag":547,"props":2529,"children":2530},{"class":549,"line":686},[2531,2535],{"type":41,"tag":547,"props":2532,"children":2533},{"style":560},[2534],{"type":47,"value":678},{"type":41,"tag":547,"props":2536,"children":2537},{"style":604},[2538],{"type":47,"value":1560},{"type":41,"tag":1185,"props":2540,"children":2542},{"id":2541},"oauth2-oauth2",[2543,2545,2550],{"type":47,"value":2544},"OAuth2 (",{"type":41,"tag":61,"props":2546,"children":2548},{"className":2547},[],[2549],{"type":47,"value":1067},{"type":47,"value":1197},{"type":41,"tag":50,"props":2552,"children":2553},{},[2554,2556,2560,2562,2567],{"type":47,"value":2555},"Selecting ",{"type":41,"tag":95,"props":2557,"children":2558},{},[2559],{"type":47,"value":1058},{"type":47,"value":2561}," reveals a ",{"type":41,"tag":95,"props":2563,"children":2564},{},[2565],{"type":47,"value":2566},"Grant type",{"type":47,"value":2568}," selector with three options:",{"type":41,"tag":2570,"props":2571,"children":2573},"h4",{"id":2572},"client-credentials-oauth2_type-client_credentials",[2574,2576,2582],{"type":47,"value":2575},"Client credentials (",{"type":41,"tag":61,"props":2577,"children":2579},{"className":2578},[],[2580],{"type":47,"value":2581},"oauth2_type: client_credentials",{"type":47,"value":1197},{"type":41,"tag":50,"props":2584,"children":2585},{},[2586],{"type":47,"value":2587},"Machine-to-machine flow. Infinity fetches a token from the token URL and attaches it to\neach request.",{"type":41,"tag":154,"props":2589,"children":2590},{},[2591,2609],{"type":41,"tag":158,"props":2592,"children":2593},{},[2594],{"type":41,"tag":162,"props":2595,"children":2596},{},[2597,2601,2605],{"type":41,"tag":166,"props":2598,"children":2599},{},[2600],{"type":47,"value":1341},{"type":41,"tag":166,"props":2602,"children":2603},{},[2604],{"type":47,"value":341},{"type":41,"tag":166,"props":2606,"children":2607},{},[2608],{"type":47,"value":1870},{"type":41,"tag":177,"props":2610,"children":2611},{},[2612,2636,2660,2686,2712,2760],{"type":41,"tag":162,"props":2613,"children":2614},{},[2615,2623,2633],{"type":41,"tag":184,"props":2616,"children":2617},{},[2618],{"type":41,"tag":95,"props":2619,"children":2620},{},[2621],{"type":47,"value":2622},"Client ID",{"type":41,"tag":184,"props":2624,"children":2625},{},[2626,2632],{"type":41,"tag":61,"props":2627,"children":2629},{"className":2628},[],[2630],{"type":47,"value":2631},"oauth2.client_id",{"type":47,"value":394},{"type":41,"tag":184,"props":2634,"children":2635},{},[],{"type":41,"tag":162,"props":2637,"children":2638},{},[2639,2647,2657],{"type":41,"tag":184,"props":2640,"children":2641},{},[2642],{"type":41,"tag":95,"props":2643,"children":2644},{},[2645],{"type":47,"value":2646},"Client Secret",{"type":41,"tag":184,"props":2648,"children":2649},{},[2650,2656],{"type":41,"tag":61,"props":2651,"children":2653},{"className":2652},[],[2654],{"type":47,"value":2655},"oauth2ClientSecret",{"type":47,"value":429},{"type":41,"tag":184,"props":2658,"children":2659},{},[],{"type":41,"tag":162,"props":2661,"children":2662},{},[2663,2671,2681],{"type":41,"tag":184,"props":2664,"children":2665},{},[2666],{"type":41,"tag":95,"props":2667,"children":2668},{},[2669],{"type":47,"value":2670},"Token URL",{"type":41,"tag":184,"props":2672,"children":2673},{},[2674,2680],{"type":41,"tag":61,"props":2675,"children":2677},{"className":2676},[],[2678],{"type":47,"value":2679},"oauth2.token_url",{"type":47,"value":394},{"type":41,"tag":184,"props":2682,"children":2683},{},[2684],{"type":47,"value":2685},"The OAuth token endpoint.",{"type":41,"tag":162,"props":2687,"children":2688},{},[2689,2697,2707],{"type":41,"tag":184,"props":2690,"children":2691},{},[2692],{"type":41,"tag":95,"props":2693,"children":2694},{},[2695],{"type":47,"value":2696},"Scopes",{"type":41,"tag":184,"props":2698,"children":2699},{},[2700,2706],{"type":41,"tag":61,"props":2701,"children":2703},{"className":2702},[],[2704],{"type":47,"value":2705},"oauth2.scopes",{"type":47,"value":489},{"type":41,"tag":184,"props":2708,"children":2709},{},[2710],{"type":47,"value":2711},"One or more scopes.",{"type":41,"tag":162,"props":2713,"children":2714},{},[2715,2723,2733],{"type":41,"tag":184,"props":2716,"children":2717},{},[2718],{"type":41,"tag":95,"props":2719,"children":2720},{},[2721],{"type":47,"value":2722},"Auth Style",{"type":41,"tag":184,"props":2724,"children":2725},{},[2726,2732],{"type":41,"tag":61,"props":2727,"children":2729},{"className":2728},[],[2730],{"type":47,"value":2731},"oauth2.authStyle",{"type":47,"value":394},{"type":41,"tag":184,"props":2734,"children":2735},{},[2736,2742,2744,2750,2752,2758],{"type":41,"tag":61,"props":2737,"children":2739},{"className":2738},[],[2740],{"type":47,"value":2741},"0",{"type":47,"value":2743}," Auto, ",{"type":41,"tag":61,"props":2745,"children":2747},{"className":2746},[],[2748],{"type":47,"value":2749},"1",{"type":47,"value":2751}," In Params (body), ",{"type":41,"tag":61,"props":2753,"children":2755},{"className":2754},[],[2756],{"type":47,"value":2757},"2",{"type":47,"value":2759}," In Header (basic auth on token).",{"type":41,"tag":162,"props":2761,"children":2762},{},[2763,2771,2788],{"type":41,"tag":184,"props":2764,"children":2765},{},[2766],{"type":41,"tag":95,"props":2767,"children":2768},{},[2769],{"type":47,"value":2770},"Endpoint params",{"type":41,"tag":184,"props":2772,"children":2773},{},[2774,2780,2781,2787],{"type":41,"tag":61,"props":2775,"children":2777},{"className":2776},[],[2778],{"type":47,"value":2779},"oauth2EndPointParamsName{N}",{"type":47,"value":421},{"type":41,"tag":61,"props":2782,"children":2784},{"className":2783},[],[2785],{"type":47,"value":2786},"oauth2EndPointParamsValue{N}",{"type":47,"value":429},{"type":41,"tag":184,"props":2789,"children":2790},{},[2791],{"type":47,"value":2792},"Extra parameters sent to the token endpoint.",{"type":41,"tag":536,"props":2794,"children":2796},{"className":538,"code":2795,"language":540,"meta":541,"style":541},"apiVersion: 1\ndatasources:\n  - name: Infinity\n    type: yesoreyeram-infinity-datasource\n    jsonData:\n      auth_method: oauth2\n      oauth2:\n        oauth2_type: client_credentials\n        client_id: my-client-id\n        token_url: https:\u002F\u002Fapi.example.com\u002Foauth2\u002Ftoken\n        scopes:\n          - read\n        authStyle: 0 # 0 Auto, 1 In Params, 2 In Header\n      allowedHosts:\n        - https:\u002F\u002Fapi.example.com\n    secureJsonData:\n      oauth2ClientSecret: ${OAUTH2_CLIENT_SECRET}\n",[2797],{"type":41,"tag":61,"props":2798,"children":2799},{"__ignoreMap":541},[2800,2815,2826,2845,2860,2871,2887,2899,2916,2933,2950,2962,2975,2997,3008,3019,3030],{"type":41,"tag":547,"props":2801,"children":2802},{"class":549,"line":550},[2803,2807,2811],{"type":41,"tag":547,"props":2804,"children":2805},{"style":554},[2806],{"type":47,"value":557},{"type":41,"tag":547,"props":2808,"children":2809},{"style":560},[2810],{"type":47,"value":563},{"type":41,"tag":547,"props":2812,"children":2813},{"style":566},[2814],{"type":47,"value":569},{"type":41,"tag":547,"props":2816,"children":2817},{"class":549,"line":572},[2818,2822],{"type":41,"tag":547,"props":2819,"children":2820},{"style":554},[2821],{"type":47,"value":578},{"type":41,"tag":547,"props":2823,"children":2824},{"style":560},[2825],{"type":47,"value":583},{"type":41,"tag":547,"props":2827,"children":2828},{"class":549,"line":586},[2829,2833,2837,2841],{"type":41,"tag":547,"props":2830,"children":2831},{"style":560},[2832],{"type":47,"value":592},{"type":41,"tag":547,"props":2834,"children":2835},{"style":554},[2836],{"type":47,"value":597},{"type":41,"tag":547,"props":2838,"children":2839},{"style":560},[2840],{"type":47,"value":563},{"type":41,"tag":547,"props":2842,"children":2843},{"style":604},[2844],{"type":47,"value":607},{"type":41,"tag":547,"props":2846,"children":2847},{"class":549,"line":610},[2848,2852,2856],{"type":41,"tag":547,"props":2849,"children":2850},{"style":554},[2851],{"type":47,"value":616},{"type":41,"tag":547,"props":2853,"children":2854},{"style":560},[2855],{"type":47,"value":563},{"type":41,"tag":547,"props":2857,"children":2858},{"style":604},[2859],{"type":47,"value":625},{"type":41,"tag":547,"props":2861,"children":2862},{"class":549,"line":628},[2863,2867],{"type":41,"tag":547,"props":2864,"children":2865},{"style":554},[2866],{"type":47,"value":634},{"type":41,"tag":547,"props":2868,"children":2869},{"style":560},[2870],{"type":47,"value":583},{"type":41,"tag":547,"props":2872,"children":2873},{"class":549,"line":641},[2874,2878,2882],{"type":41,"tag":547,"props":2875,"children":2876},{"style":554},[2877],{"type":47,"value":1294},{"type":41,"tag":547,"props":2879,"children":2880},{"style":560},[2881],{"type":47,"value":563},{"type":41,"tag":547,"props":2883,"children":2884},{"style":604},[2885],{"type":47,"value":2886}," oauth2\n",{"type":41,"tag":547,"props":2888,"children":2889},{"class":549,"line":659},[2890,2895],{"type":41,"tag":547,"props":2891,"children":2892},{"style":554},[2893],{"type":47,"value":2894},"      oauth2",{"type":41,"tag":547,"props":2896,"children":2897},{"style":560},[2898],{"type":47,"value":583},{"type":41,"tag":547,"props":2900,"children":2901},{"class":549,"line":672},[2902,2907,2911],{"type":41,"tag":547,"props":2903,"children":2904},{"style":554},[2905],{"type":47,"value":2906},"        oauth2_type",{"type":41,"tag":547,"props":2908,"children":2909},{"style":560},[2910],{"type":47,"value":563},{"type":41,"tag":547,"props":2912,"children":2913},{"style":604},[2914],{"type":47,"value":2915}," client_credentials\n",{"type":41,"tag":547,"props":2917,"children":2918},{"class":549,"line":686},[2919,2924,2928],{"type":41,"tag":547,"props":2920,"children":2921},{"style":554},[2922],{"type":47,"value":2923},"        client_id",{"type":41,"tag":547,"props":2925,"children":2926},{"style":560},[2927],{"type":47,"value":563},{"type":41,"tag":547,"props":2929,"children":2930},{"style":604},[2931],{"type":47,"value":2932}," my-client-id\n",{"type":41,"tag":547,"props":2934,"children":2935},{"class":549,"line":696},[2936,2941,2945],{"type":41,"tag":547,"props":2937,"children":2938},{"style":554},[2939],{"type":47,"value":2940},"        token_url",{"type":41,"tag":547,"props":2942,"children":2943},{"style":560},[2944],{"type":47,"value":563},{"type":41,"tag":547,"props":2946,"children":2947},{"style":604},[2948],{"type":47,"value":2949}," https:\u002F\u002Fapi.example.com\u002Foauth2\u002Ftoken\n",{"type":41,"tag":547,"props":2951,"children":2952},{"class":549,"line":714},[2953,2958],{"type":41,"tag":547,"props":2954,"children":2955},{"style":554},[2956],{"type":47,"value":2957},"        scopes",{"type":41,"tag":547,"props":2959,"children":2960},{"style":560},[2961],{"type":47,"value":583},{"type":41,"tag":547,"props":2963,"children":2964},{"class":549,"line":732},[2965,2970],{"type":41,"tag":547,"props":2966,"children":2967},{"style":560},[2968],{"type":47,"value":2969},"          -",{"type":41,"tag":547,"props":2971,"children":2972},{"style":604},[2973],{"type":47,"value":2974}," read\n",{"type":41,"tag":547,"props":2976,"children":2977},{"class":549,"line":745},[2978,2983,2987,2992],{"type":41,"tag":547,"props":2979,"children":2980},{"style":554},[2981],{"type":47,"value":2982},"        authStyle",{"type":41,"tag":547,"props":2984,"children":2985},{"style":560},[2986],{"type":47,"value":563},{"type":41,"tag":547,"props":2988,"children":2989},{"style":566},[2990],{"type":47,"value":2991}," 0",{"type":41,"tag":547,"props":2993,"children":2994},{"style":690},[2995],{"type":47,"value":2996}," # 0 Auto, 1 In Params, 2 In Header\n",{"type":41,"tag":547,"props":2998,"children":2999},{"class":549,"line":758},[3000,3004],{"type":41,"tag":547,"props":3001,"children":3002},{"style":554},[3003],{"type":47,"value":738},{"type":41,"tag":547,"props":3005,"children":3006},{"style":560},[3007],{"type":47,"value":583},{"type":41,"tag":547,"props":3009,"children":3010},{"class":549,"line":771},[3011,3015],{"type":41,"tag":547,"props":3012,"children":3013},{"style":560},[3014],{"type":47,"value":678},{"type":41,"tag":547,"props":3016,"children":3017},{"style":604},[3018],{"type":47,"value":1560},{"type":41,"tag":547,"props":3020,"children":3021},{"class":549,"line":789},[3022,3026],{"type":41,"tag":547,"props":3023,"children":3024},{"style":554},[3025],{"type":47,"value":764},{"type":41,"tag":547,"props":3027,"children":3028},{"style":560},[3029],{"type":47,"value":583},{"type":41,"tag":547,"props":3031,"children":3033},{"class":549,"line":3032},17,[3034,3039,3043],{"type":41,"tag":547,"props":3035,"children":3036},{"style":554},[3037],{"type":47,"value":3038},"      oauth2ClientSecret",{"type":41,"tag":547,"props":3040,"children":3041},{"style":560},[3042],{"type":47,"value":563},{"type":41,"tag":547,"props":3044,"children":3045},{"style":604},[3046],{"type":47,"value":3047}," ${OAUTH2_CLIENT_SECRET}\n",{"type":41,"tag":2570,"props":3049,"children":3051},{"id":3050},"jwt-oauth2_type-jwt",[3052,3054,3060],{"type":47,"value":3053},"JWT (",{"type":41,"tag":61,"props":3055,"children":3057},{"className":3056},[],[3058],{"type":47,"value":3059},"oauth2_type: jwt",{"type":47,"value":1197},{"type":41,"tag":50,"props":3062,"children":3063},{},[3064],{"type":47,"value":3065},"Two-legged JWT bearer flow (for example Google service accounts).",{"type":41,"tag":154,"props":3067,"children":3068},{},[3069,3083],{"type":41,"tag":158,"props":3070,"children":3071},{},[3072],{"type":41,"tag":162,"props":3073,"children":3074},{},[3075,3079],{"type":41,"tag":166,"props":3076,"children":3077},{},[3078],{"type":47,"value":1341},{"type":41,"tag":166,"props":3080,"children":3081},{},[3082],{"type":47,"value":341},{"type":41,"tag":177,"props":3084,"children":3085},{},[3086,3107,3128,3149,3168,3189],{"type":41,"tag":162,"props":3087,"children":3088},{},[3089,3097],{"type":41,"tag":184,"props":3090,"children":3091},{},[3092],{"type":41,"tag":95,"props":3093,"children":3094},{},[3095],{"type":47,"value":3096},"Email",{"type":41,"tag":184,"props":3098,"children":3099},{},[3100,3106],{"type":41,"tag":61,"props":3101,"children":3103},{"className":3102},[],[3104],{"type":47,"value":3105},"oauth2.email",{"type":47,"value":394},{"type":41,"tag":162,"props":3108,"children":3109},{},[3110,3118],{"type":41,"tag":184,"props":3111,"children":3112},{},[3113],{"type":41,"tag":95,"props":3114,"children":3115},{},[3116],{"type":47,"value":3117},"Private Key Identifier",{"type":41,"tag":184,"props":3119,"children":3120},{},[3121,3127],{"type":41,"tag":61,"props":3122,"children":3124},{"className":3123},[],[3125],{"type":47,"value":3126},"oauth2.private_key_id",{"type":47,"value":394},{"type":41,"tag":162,"props":3129,"children":3130},{},[3131,3139],{"type":41,"tag":184,"props":3132,"children":3133},{},[3134],{"type":41,"tag":95,"props":3135,"children":3136},{},[3137],{"type":47,"value":3138},"Private Key",{"type":41,"tag":184,"props":3140,"children":3141},{},[3142,3148],{"type":41,"tag":61,"props":3143,"children":3145},{"className":3144},[],[3146],{"type":47,"value":3147},"oauth2JWTPrivateKey",{"type":47,"value":429},{"type":41,"tag":162,"props":3150,"children":3151},{},[3152,3159],{"type":41,"tag":184,"props":3153,"children":3154},{},[3155],{"type":41,"tag":95,"props":3156,"children":3157},{},[3158],{"type":47,"value":2670},{"type":41,"tag":184,"props":3160,"children":3161},{},[3162,3167],{"type":41,"tag":61,"props":3163,"children":3165},{"className":3164},[],[3166],{"type":47,"value":2679},{"type":47,"value":394},{"type":41,"tag":162,"props":3169,"children":3170},{},[3171,3179],{"type":41,"tag":184,"props":3172,"children":3173},{},[3174],{"type":41,"tag":95,"props":3175,"children":3176},{},[3177],{"type":47,"value":3178},"Subject",{"type":41,"tag":184,"props":3180,"children":3181},{},[3182,3188],{"type":41,"tag":61,"props":3183,"children":3185},{"className":3184},[],[3186],{"type":47,"value":3187},"oauth2.subject",{"type":47,"value":394},{"type":41,"tag":162,"props":3190,"children":3191},{},[3192,3199],{"type":41,"tag":184,"props":3193,"children":3194},{},[3195],{"type":41,"tag":95,"props":3196,"children":3197},{},[3198],{"type":47,"value":2696},{"type":41,"tag":184,"props":3200,"children":3201},{},[3202,3207],{"type":41,"tag":61,"props":3203,"children":3205},{"className":3204},[],[3206],{"type":47,"value":2705},{"type":47,"value":489},{"type":41,"tag":536,"props":3209,"children":3211},{"className":538,"code":3210,"language":540,"meta":541,"style":541},"apiVersion: 1\ndatasources:\n  - name: Infinity\n    type: yesoreyeram-infinity-datasource\n    jsonData:\n      auth_method: oauth2\n      oauth2:\n        oauth2_type: jwt\n        email: my-service-account@project.iam.gserviceaccount.com\n        private_key_id: my-private-key-id\n        token_url: https:\u002F\u002Foauth2.googleapis.com\u002Ftoken\n        subject: my-subject\n        scopes:\n          - https:\u002F\u002Fwww.googleapis.com\u002Fauth\u002Fspreadsheets.readonly\n      allowedHosts:\n        - https:\u002F\u002Fsheets.googleapis.com\n    secureJsonData:\n      oauth2JWTPrivateKey: ${OAUTH2_JWT_PRIVATE_KEY}\n",[3212],{"type":41,"tag":61,"props":3213,"children":3214},{"__ignoreMap":541},[3215,3230,3241,3260,3275,3286,3301,3312,3328,3345,3362,3378,3395,3406,3418,3429,3441,3452],{"type":41,"tag":547,"props":3216,"children":3217},{"class":549,"line":550},[3218,3222,3226],{"type":41,"tag":547,"props":3219,"children":3220},{"style":554},[3221],{"type":47,"value":557},{"type":41,"tag":547,"props":3223,"children":3224},{"style":560},[3225],{"type":47,"value":563},{"type":41,"tag":547,"props":3227,"children":3228},{"style":566},[3229],{"type":47,"value":569},{"type":41,"tag":547,"props":3231,"children":3232},{"class":549,"line":572},[3233,3237],{"type":41,"tag":547,"props":3234,"children":3235},{"style":554},[3236],{"type":47,"value":578},{"type":41,"tag":547,"props":3238,"children":3239},{"style":560},[3240],{"type":47,"value":583},{"type":41,"tag":547,"props":3242,"children":3243},{"class":549,"line":586},[3244,3248,3252,3256],{"type":41,"tag":547,"props":3245,"children":3246},{"style":560},[3247],{"type":47,"value":592},{"type":41,"tag":547,"props":3249,"children":3250},{"style":554},[3251],{"type":47,"value":597},{"type":41,"tag":547,"props":3253,"children":3254},{"style":560},[3255],{"type":47,"value":563},{"type":41,"tag":547,"props":3257,"children":3258},{"style":604},[3259],{"type":47,"value":607},{"type":41,"tag":547,"props":3261,"children":3262},{"class":549,"line":610},[3263,3267,3271],{"type":41,"tag":547,"props":3264,"children":3265},{"style":554},[3266],{"type":47,"value":616},{"type":41,"tag":547,"props":3268,"children":3269},{"style":560},[3270],{"type":47,"value":563},{"type":41,"tag":547,"props":3272,"children":3273},{"style":604},[3274],{"type":47,"value":625},{"type":41,"tag":547,"props":3276,"children":3277},{"class":549,"line":628},[3278,3282],{"type":41,"tag":547,"props":3279,"children":3280},{"style":554},[3281],{"type":47,"value":634},{"type":41,"tag":547,"props":3283,"children":3284},{"style":560},[3285],{"type":47,"value":583},{"type":41,"tag":547,"props":3287,"children":3288},{"class":549,"line":641},[3289,3293,3297],{"type":41,"tag":547,"props":3290,"children":3291},{"style":554},[3292],{"type":47,"value":1294},{"type":41,"tag":547,"props":3294,"children":3295},{"style":560},[3296],{"type":47,"value":563},{"type":41,"tag":547,"props":3298,"children":3299},{"style":604},[3300],{"type":47,"value":2886},{"type":41,"tag":547,"props":3302,"children":3303},{"class":549,"line":659},[3304,3308],{"type":41,"tag":547,"props":3305,"children":3306},{"style":554},[3307],{"type":47,"value":2894},{"type":41,"tag":547,"props":3309,"children":3310},{"style":560},[3311],{"type":47,"value":583},{"type":41,"tag":547,"props":3313,"children":3314},{"class":549,"line":672},[3315,3319,3323],{"type":41,"tag":547,"props":3316,"children":3317},{"style":554},[3318],{"type":47,"value":2906},{"type":41,"tag":547,"props":3320,"children":3321},{"style":560},[3322],{"type":47,"value":563},{"type":41,"tag":547,"props":3324,"children":3325},{"style":604},[3326],{"type":47,"value":3327}," jwt\n",{"type":41,"tag":547,"props":3329,"children":3330},{"class":549,"line":686},[3331,3336,3340],{"type":41,"tag":547,"props":3332,"children":3333},{"style":554},[3334],{"type":47,"value":3335},"        email",{"type":41,"tag":547,"props":3337,"children":3338},{"style":560},[3339],{"type":47,"value":563},{"type":41,"tag":547,"props":3341,"children":3342},{"style":604},[3343],{"type":47,"value":3344}," my-service-account@project.iam.gserviceaccount.com\n",{"type":41,"tag":547,"props":3346,"children":3347},{"class":549,"line":696},[3348,3353,3357],{"type":41,"tag":547,"props":3349,"children":3350},{"style":554},[3351],{"type":47,"value":3352},"        private_key_id",{"type":41,"tag":547,"props":3354,"children":3355},{"style":560},[3356],{"type":47,"value":563},{"type":41,"tag":547,"props":3358,"children":3359},{"style":604},[3360],{"type":47,"value":3361}," my-private-key-id\n",{"type":41,"tag":547,"props":3363,"children":3364},{"class":549,"line":714},[3365,3369,3373],{"type":41,"tag":547,"props":3366,"children":3367},{"style":554},[3368],{"type":47,"value":2940},{"type":41,"tag":547,"props":3370,"children":3371},{"style":560},[3372],{"type":47,"value":563},{"type":41,"tag":547,"props":3374,"children":3375},{"style":604},[3376],{"type":47,"value":3377}," https:\u002F\u002Foauth2.googleapis.com\u002Ftoken\n",{"type":41,"tag":547,"props":3379,"children":3380},{"class":549,"line":732},[3381,3386,3390],{"type":41,"tag":547,"props":3382,"children":3383},{"style":554},[3384],{"type":47,"value":3385},"        subject",{"type":41,"tag":547,"props":3387,"children":3388},{"style":560},[3389],{"type":47,"value":563},{"type":41,"tag":547,"props":3391,"children":3392},{"style":604},[3393],{"type":47,"value":3394}," my-subject\n",{"type":41,"tag":547,"props":3396,"children":3397},{"class":549,"line":745},[3398,3402],{"type":41,"tag":547,"props":3399,"children":3400},{"style":554},[3401],{"type":47,"value":2957},{"type":41,"tag":547,"props":3403,"children":3404},{"style":560},[3405],{"type":47,"value":583},{"type":41,"tag":547,"props":3407,"children":3408},{"class":549,"line":758},[3409,3413],{"type":41,"tag":547,"props":3410,"children":3411},{"style":560},[3412],{"type":47,"value":2969},{"type":41,"tag":547,"props":3414,"children":3415},{"style":604},[3416],{"type":47,"value":3417}," https:\u002F\u002Fwww.googleapis.com\u002Fauth\u002Fspreadsheets.readonly\n",{"type":41,"tag":547,"props":3419,"children":3420},{"class":549,"line":771},[3421,3425],{"type":41,"tag":547,"props":3422,"children":3423},{"style":554},[3424],{"type":47,"value":738},{"type":41,"tag":547,"props":3426,"children":3427},{"style":560},[3428],{"type":47,"value":583},{"type":41,"tag":547,"props":3430,"children":3431},{"class":549,"line":789},[3432,3436],{"type":41,"tag":547,"props":3433,"children":3434},{"style":560},[3435],{"type":47,"value":678},{"type":41,"tag":547,"props":3437,"children":3438},{"style":604},[3439],{"type":47,"value":3440}," https:\u002F\u002Fsheets.googleapis.com\n",{"type":41,"tag":547,"props":3442,"children":3443},{"class":549,"line":3032},[3444,3448],{"type":41,"tag":547,"props":3445,"children":3446},{"style":554},[3447],{"type":47,"value":764},{"type":41,"tag":547,"props":3449,"children":3450},{"style":560},[3451],{"type":47,"value":583},{"type":41,"tag":547,"props":3453,"children":3455},{"class":549,"line":3454},18,[3456,3461,3465],{"type":41,"tag":547,"props":3457,"children":3458},{"style":554},[3459],{"type":47,"value":3460},"      oauth2JWTPrivateKey",{"type":41,"tag":547,"props":3462,"children":3463},{"style":560},[3464],{"type":47,"value":563},{"type":41,"tag":547,"props":3466,"children":3467},{"style":604},[3468],{"type":47,"value":3469}," ${OAUTH2_JWT_PRIVATE_KEY}\n",{"type":41,"tag":1131,"props":3471,"children":3472},{},[3473],{"type":41,"tag":50,"props":3474,"children":3475},{},[3476,3481,3483,3489,3490,3496,3498,3506],{"type":41,"tag":95,"props":3477,"children":3478},{},[3479],{"type":47,"value":3480},"Advanced token customization.",{"type":47,"value":3482}," For all OAuth2 grants you can override how the token\nis attached — a custom token header name, a custom token value template, and extra\ntoken-request headers (",{"type":41,"tag":61,"props":3484,"children":3486},{"className":3485},[],[3487],{"type":47,"value":3488},"oauth2TokenHeadersName{N}",{"type":47,"value":421},{"type":41,"tag":61,"props":3491,"children":3493},{"className":3492},[],[3494],{"type":47,"value":3495},"oauth2TokenHeadersValue{N}",{"type":47,"value":3497},").\nSee ",{"type":41,"tag":197,"props":3499,"children":3503},{"href":3500,"rel":3501},"https:\u002F\u002Fgrafana.com\u002Fdocs\u002Fplugins\u002Fyesoreyeram-infinity-datasource\u002Flatest\u002Fadvanced-features\u002Foauth2-custom-tokens\u002F",[3502],"nofollow",[3504],{"type":47,"value":3505},"OAuth2 Custom Tokens",{"type":47,"value":76},{"type":41,"tag":1185,"props":3508,"children":3510},{"id":3509},"aws-aws",[3511,3513,3518],{"type":47,"value":3512},"AWS (",{"type":41,"tag":61,"props":3514,"children":3516},{"className":3515},[],[3517],{"type":47,"value":1092},{"type":47,"value":1197},{"type":41,"tag":50,"props":3520,"children":3521},{},[3522],{"type":47,"value":3523},"Signs requests with AWS Signature V4 using static access keys.",{"type":41,"tag":154,"props":3525,"children":3526},{},[3527,3545],{"type":41,"tag":158,"props":3528,"children":3529},{},[3530],{"type":41,"tag":162,"props":3531,"children":3532},{},[3533,3537,3541],{"type":41,"tag":166,"props":3534,"children":3535},{},[3536],{"type":47,"value":1341},{"type":41,"tag":166,"props":3538,"children":3539},{},[3540],{"type":47,"value":341},{"type":41,"tag":166,"props":3542,"children":3543},{},[3544],{"type":47,"value":1870},{"type":41,"tag":177,"props":3546,"children":3547},{},[3548,3581,3613,3646],{"type":41,"tag":162,"props":3549,"children":3550},{},[3551,3559,3569],{"type":41,"tag":184,"props":3552,"children":3553},{},[3554],{"type":41,"tag":95,"props":3555,"children":3556},{},[3557],{"type":47,"value":3558},"Region",{"type":41,"tag":184,"props":3560,"children":3561},{},[3562,3568],{"type":41,"tag":61,"props":3563,"children":3565},{"className":3564},[],[3566],{"type":47,"value":3567},"aws.region",{"type":47,"value":394},{"type":41,"tag":184,"props":3570,"children":3571},{},[3572,3574,3580],{"type":47,"value":3573},"For example ",{"type":41,"tag":61,"props":3575,"children":3577},{"className":3576},[],[3578],{"type":47,"value":3579},"us-east-1",{"type":47,"value":76},{"type":41,"tag":162,"props":3582,"children":3583},{},[3584,3592,3602],{"type":41,"tag":184,"props":3585,"children":3586},{},[3587],{"type":41,"tag":95,"props":3588,"children":3589},{},[3590],{"type":47,"value":3591},"Service",{"type":41,"tag":184,"props":3593,"children":3594},{},[3595,3601],{"type":41,"tag":61,"props":3596,"children":3598},{"className":3597},[],[3599],{"type":47,"value":3600},"aws.service",{"type":47,"value":394},{"type":41,"tag":184,"props":3603,"children":3604},{},[3605,3607,3612],{"type":47,"value":3606},"The AWS service name, for example ",{"type":41,"tag":61,"props":3608,"children":3610},{"className":3609},[],[3611],{"type":47,"value":1103},{"type":47,"value":76},{"type":41,"tag":162,"props":3614,"children":3615},{},[3616,3624,3634],{"type":41,"tag":184,"props":3617,"children":3618},{},[3619],{"type":41,"tag":95,"props":3620,"children":3621},{},[3622],{"type":47,"value":3623},"Access Key",{"type":41,"tag":184,"props":3625,"children":3626},{},[3627,3633],{"type":41,"tag":61,"props":3628,"children":3630},{"className":3629},[],[3631],{"type":47,"value":3632},"awsAccessKey",{"type":47,"value":429},{"type":41,"tag":184,"props":3635,"children":3636},{},[3637,3639,3645],{"type":47,"value":3638},"A missing value yields ",{"type":41,"tag":61,"props":3640,"children":3642},{"className":3641},[],[3643],{"type":47,"value":3644},"invalid\u002Fempty AWS access key",{"type":47,"value":76},{"type":41,"tag":162,"props":3647,"children":3648},{},[3649,3657,3667],{"type":41,"tag":184,"props":3650,"children":3651},{},[3652],{"type":41,"tag":95,"props":3653,"children":3654},{},[3655],{"type":47,"value":3656},"Secret Key",{"type":41,"tag":184,"props":3658,"children":3659},{},[3660,3666],{"type":41,"tag":61,"props":3661,"children":3663},{"className":3662},[],[3664],{"type":47,"value":3665},"awsSecretKey",{"type":47,"value":429},{"type":41,"tag":184,"props":3668,"children":3669},{},[3670,3671,3677],{"type":47,"value":3638},{"type":41,"tag":61,"props":3672,"children":3674},{"className":3673},[],[3675],{"type":47,"value":3676},"invalid\u002Fempty AWS secret key",{"type":47,"value":76},{"type":41,"tag":50,"props":3679,"children":3680},{},[3681,3683,3689],{"type":47,"value":3682},"The auth type is fixed to access keys (",{"type":41,"tag":61,"props":3684,"children":3686},{"className":3685},[],[3687],{"type":47,"value":3688},"aws.authType: keys",{"type":47,"value":203},{"type":41,"tag":536,"props":3691,"children":3693},{"className":538,"code":3692,"language":540,"meta":541,"style":541},"apiVersion: 1\ndatasources:\n  - name: Infinity\n    type: yesoreyeram-infinity-datasource\n    jsonData:\n      auth_method: aws\n      aws:\n        authType: keys\n        region: us-east-1\n        service: monitoring\n      allowedHosts:\n        - https:\u002F\u002Fmonitoring.us-east-1.amazonaws.com\n    secureJsonData:\n      awsAccessKey: ${AWS_ACCESS_KEY}\n      awsSecretKey: ${AWS_SECRET_KEY}\n",[3694],{"type":41,"tag":61,"props":3695,"children":3696},{"__ignoreMap":541},[3697,3712,3723,3742,3757,3768,3784,3796,3813,3830,3847,3858,3870,3881,3898],{"type":41,"tag":547,"props":3698,"children":3699},{"class":549,"line":550},[3700,3704,3708],{"type":41,"tag":547,"props":3701,"children":3702},{"style":554},[3703],{"type":47,"value":557},{"type":41,"tag":547,"props":3705,"children":3706},{"style":560},[3707],{"type":47,"value":563},{"type":41,"tag":547,"props":3709,"children":3710},{"style":566},[3711],{"type":47,"value":569},{"type":41,"tag":547,"props":3713,"children":3714},{"class":549,"line":572},[3715,3719],{"type":41,"tag":547,"props":3716,"children":3717},{"style":554},[3718],{"type":47,"value":578},{"type":41,"tag":547,"props":3720,"children":3721},{"style":560},[3722],{"type":47,"value":583},{"type":41,"tag":547,"props":3724,"children":3725},{"class":549,"line":586},[3726,3730,3734,3738],{"type":41,"tag":547,"props":3727,"children":3728},{"style":560},[3729],{"type":47,"value":592},{"type":41,"tag":547,"props":3731,"children":3732},{"style":554},[3733],{"type":47,"value":597},{"type":41,"tag":547,"props":3735,"children":3736},{"style":560},[3737],{"type":47,"value":563},{"type":41,"tag":547,"props":3739,"children":3740},{"style":604},[3741],{"type":47,"value":607},{"type":41,"tag":547,"props":3743,"children":3744},{"class":549,"line":610},[3745,3749,3753],{"type":41,"tag":547,"props":3746,"children":3747},{"style":554},[3748],{"type":47,"value":616},{"type":41,"tag":547,"props":3750,"children":3751},{"style":560},[3752],{"type":47,"value":563},{"type":41,"tag":547,"props":3754,"children":3755},{"style":604},[3756],{"type":47,"value":625},{"type":41,"tag":547,"props":3758,"children":3759},{"class":549,"line":628},[3760,3764],{"type":41,"tag":547,"props":3761,"children":3762},{"style":554},[3763],{"type":47,"value":634},{"type":41,"tag":547,"props":3765,"children":3766},{"style":560},[3767],{"type":47,"value":583},{"type":41,"tag":547,"props":3769,"children":3770},{"class":549,"line":641},[3771,3775,3779],{"type":41,"tag":547,"props":3772,"children":3773},{"style":554},[3774],{"type":47,"value":1294},{"type":41,"tag":547,"props":3776,"children":3777},{"style":560},[3778],{"type":47,"value":563},{"type":41,"tag":547,"props":3780,"children":3781},{"style":604},[3782],{"type":47,"value":3783}," aws\n",{"type":41,"tag":547,"props":3785,"children":3786},{"class":549,"line":659},[3787,3792],{"type":41,"tag":547,"props":3788,"children":3789},{"style":554},[3790],{"type":47,"value":3791},"      aws",{"type":41,"tag":547,"props":3793,"children":3794},{"style":560},[3795],{"type":47,"value":583},{"type":41,"tag":547,"props":3797,"children":3798},{"class":549,"line":672},[3799,3804,3808],{"type":41,"tag":547,"props":3800,"children":3801},{"style":554},[3802],{"type":47,"value":3803},"        authType",{"type":41,"tag":547,"props":3805,"children":3806},{"style":560},[3807],{"type":47,"value":563},{"type":41,"tag":547,"props":3809,"children":3810},{"style":604},[3811],{"type":47,"value":3812}," keys\n",{"type":41,"tag":547,"props":3814,"children":3815},{"class":549,"line":686},[3816,3821,3825],{"type":41,"tag":547,"props":3817,"children":3818},{"style":554},[3819],{"type":47,"value":3820},"        region",{"type":41,"tag":547,"props":3822,"children":3823},{"style":560},[3824],{"type":47,"value":563},{"type":41,"tag":547,"props":3826,"children":3827},{"style":604},[3828],{"type":47,"value":3829}," us-east-1\n",{"type":41,"tag":547,"props":3831,"children":3832},{"class":549,"line":696},[3833,3838,3842],{"type":41,"tag":547,"props":3834,"children":3835},{"style":554},[3836],{"type":47,"value":3837},"        service",{"type":41,"tag":547,"props":3839,"children":3840},{"style":560},[3841],{"type":47,"value":563},{"type":41,"tag":547,"props":3843,"children":3844},{"style":604},[3845],{"type":47,"value":3846}," monitoring\n",{"type":41,"tag":547,"props":3848,"children":3849},{"class":549,"line":714},[3850,3854],{"type":41,"tag":547,"props":3851,"children":3852},{"style":554},[3853],{"type":47,"value":738},{"type":41,"tag":547,"props":3855,"children":3856},{"style":560},[3857],{"type":47,"value":583},{"type":41,"tag":547,"props":3859,"children":3860},{"class":549,"line":732},[3861,3865],{"type":41,"tag":547,"props":3862,"children":3863},{"style":560},[3864],{"type":47,"value":678},{"type":41,"tag":547,"props":3866,"children":3867},{"style":604},[3868],{"type":47,"value":3869}," https:\u002F\u002Fmonitoring.us-east-1.amazonaws.com\n",{"type":41,"tag":547,"props":3871,"children":3872},{"class":549,"line":745},[3873,3877],{"type":41,"tag":547,"props":3874,"children":3875},{"style":554},[3876],{"type":47,"value":764},{"type":41,"tag":547,"props":3878,"children":3879},{"style":560},[3880],{"type":47,"value":583},{"type":41,"tag":547,"props":3882,"children":3883},{"class":549,"line":758},[3884,3889,3893],{"type":41,"tag":547,"props":3885,"children":3886},{"style":554},[3887],{"type":47,"value":3888},"      awsAccessKey",{"type":41,"tag":547,"props":3890,"children":3891},{"style":560},[3892],{"type":47,"value":563},{"type":41,"tag":547,"props":3894,"children":3895},{"style":604},[3896],{"type":47,"value":3897}," ${AWS_ACCESS_KEY}\n",{"type":41,"tag":547,"props":3899,"children":3900},{"class":549,"line":771},[3901,3906,3910],{"type":41,"tag":547,"props":3902,"children":3903},{"style":554},[3904],{"type":47,"value":3905},"      awsSecretKey",{"type":41,"tag":547,"props":3907,"children":3908},{"style":560},[3909],{"type":47,"value":563},{"type":41,"tag":547,"props":3911,"children":3912},{"style":604},[3913],{"type":47,"value":3914}," ${AWS_SECRET_KEY}\n",{"type":41,"tag":1185,"props":3916,"children":3918},{"id":3917},"azure-blob-azureblob",[3919,3921,3926],{"type":47,"value":3920},"Azure Blob (",{"type":41,"tag":61,"props":3922,"children":3924},{"className":3923},[],[3925],{"type":47,"value":1124},{"type":47,"value":1197},{"type":41,"tag":50,"props":3928,"children":3929},{},[3930,3932,3936,3938,3944],{"type":47,"value":3931},"Reads from Azure Blob Storage. ",{"type":41,"tag":95,"props":3933,"children":3934},{},[3935],{"type":47,"value":506},{"type":47,"value":3937}," is ",{"type":41,"tag":3939,"props":3940,"children":3941},"em",{},[3942],{"type":47,"value":3943},"not",{"type":47,"value":3945}," required for this method.",{"type":41,"tag":154,"props":3947,"children":3948},{},[3949,3967],{"type":41,"tag":158,"props":3950,"children":3951},{},[3952],{"type":41,"tag":162,"props":3953,"children":3954},{},[3955,3959,3963],{"type":41,"tag":166,"props":3956,"children":3957},{},[3958],{"type":47,"value":1341},{"type":41,"tag":166,"props":3960,"children":3961},{},[3962],{"type":47,"value":341},{"type":41,"tag":166,"props":3964,"children":3965},{},[3966],{"type":47,"value":1870},{"type":41,"tag":177,"props":3968,"children":3969},{},[3970,4017,4049],{"type":41,"tag":162,"props":3971,"children":3972},{},[3973,3981,3991],{"type":41,"tag":184,"props":3974,"children":3975},{},[3976],{"type":41,"tag":95,"props":3977,"children":3978},{},[3979],{"type":47,"value":3980},"Azure cloud",{"type":41,"tag":184,"props":3982,"children":3983},{},[3984,3990],{"type":41,"tag":61,"props":3985,"children":3987},{"className":3986},[],[3988],{"type":47,"value":3989},"azureBlobCloudType",{"type":47,"value":394},{"type":41,"tag":184,"props":3992,"children":3993},{},[3994,4000,4002,4008,4010,4016],{"type":41,"tag":61,"props":3995,"children":3997},{"className":3996},[],[3998],{"type":47,"value":3999},"AzureCloud",{"type":47,"value":4001},", ",{"type":41,"tag":61,"props":4003,"children":4005},{"className":4004},[],[4006],{"type":47,"value":4007},"AzureUSGovernment",{"type":47,"value":4009},", or ",{"type":41,"tag":61,"props":4011,"children":4013},{"className":4012},[],[4014],{"type":47,"value":4015},"AzureChinaCloud",{"type":47,"value":76},{"type":41,"tag":162,"props":4018,"children":4019},{},[4020,4028,4038],{"type":41,"tag":184,"props":4021,"children":4022},{},[4023],{"type":41,"tag":95,"props":4024,"children":4025},{},[4026],{"type":47,"value":4027},"Storage account name",{"type":41,"tag":184,"props":4029,"children":4030},{},[4031,4037],{"type":41,"tag":61,"props":4032,"children":4034},{"className":4033},[],[4035],{"type":47,"value":4036},"azureBlobAccountName",{"type":47,"value":394},{"type":41,"tag":184,"props":4039,"children":4040},{},[4041,4042,4048],{"type":47,"value":3638},{"type":41,"tag":61,"props":4043,"children":4045},{"className":4044},[],[4046],{"type":47,"value":4047},"invalid\u002Fempty azure blob account name",{"type":47,"value":76},{"type":41,"tag":162,"props":4050,"children":4051},{},[4052,4060,4070],{"type":41,"tag":184,"props":4053,"children":4054},{},[4055],{"type":41,"tag":95,"props":4056,"children":4057},{},[4058],{"type":47,"value":4059},"Storage account key",{"type":41,"tag":184,"props":4061,"children":4062},{},[4063,4069],{"type":41,"tag":61,"props":4064,"children":4066},{"className":4065},[],[4067],{"type":47,"value":4068},"azureBlobAccountKey",{"type":47,"value":429},{"type":41,"tag":184,"props":4071,"children":4072},{},[4073,4074,4080],{"type":47,"value":3638},{"type":41,"tag":61,"props":4075,"children":4077},{"className":4076},[],[4078],{"type":47,"value":4079},"invalid\u002Fempty azure blob key",{"type":47,"value":76},{"type":41,"tag":50,"props":4082,"children":4083},{},[4084,4086,4092],{"type":47,"value":4085},"An HTTP 403 from Azure surfaces as ",{"type":41,"tag":61,"props":4087,"children":4089},{"className":4088},[],[4090],{"type":47,"value":4091},"http 403. check azure blob storage key",{"type":47,"value":76},{"type":41,"tag":536,"props":4094,"children":4096},{"className":538,"code":4095,"language":540,"meta":541,"style":541},"apiVersion: 1\ndatasources:\n  - name: Infinity\n    type: yesoreyeram-infinity-datasource\n    jsonData:\n      auth_method: azureBlob\n      azureBlobCloudType: AzureCloud # or: AzureUSGovernment, AzureChinaCloud\n      azureBlobAccountName: mystorageaccount\n    secureJsonData:\n      azureBlobAccountKey: ${AZURE_BLOB_ACCOUNT_KEY}\n",[4097],{"type":41,"tag":61,"props":4098,"children":4099},{"__ignoreMap":541},[4100,4115,4126,4145,4160,4171,4187,4209,4226,4237],{"type":41,"tag":547,"props":4101,"children":4102},{"class":549,"line":550},[4103,4107,4111],{"type":41,"tag":547,"props":4104,"children":4105},{"style":554},[4106],{"type":47,"value":557},{"type":41,"tag":547,"props":4108,"children":4109},{"style":560},[4110],{"type":47,"value":563},{"type":41,"tag":547,"props":4112,"children":4113},{"style":566},[4114],{"type":47,"value":569},{"type":41,"tag":547,"props":4116,"children":4117},{"class":549,"line":572},[4118,4122],{"type":41,"tag":547,"props":4119,"children":4120},{"style":554},[4121],{"type":47,"value":578},{"type":41,"tag":547,"props":4123,"children":4124},{"style":560},[4125],{"type":47,"value":583},{"type":41,"tag":547,"props":4127,"children":4128},{"class":549,"line":586},[4129,4133,4137,4141],{"type":41,"tag":547,"props":4130,"children":4131},{"style":560},[4132],{"type":47,"value":592},{"type":41,"tag":547,"props":4134,"children":4135},{"style":554},[4136],{"type":47,"value":597},{"type":41,"tag":547,"props":4138,"children":4139},{"style":560},[4140],{"type":47,"value":563},{"type":41,"tag":547,"props":4142,"children":4143},{"style":604},[4144],{"type":47,"value":607},{"type":41,"tag":547,"props":4146,"children":4147},{"class":549,"line":610},[4148,4152,4156],{"type":41,"tag":547,"props":4149,"children":4150},{"style":554},[4151],{"type":47,"value":616},{"type":41,"tag":547,"props":4153,"children":4154},{"style":560},[4155],{"type":47,"value":563},{"type":41,"tag":547,"props":4157,"children":4158},{"style":604},[4159],{"type":47,"value":625},{"type":41,"tag":547,"props":4161,"children":4162},{"class":549,"line":628},[4163,4167],{"type":41,"tag":547,"props":4164,"children":4165},{"style":554},[4166],{"type":47,"value":634},{"type":41,"tag":547,"props":4168,"children":4169},{"style":560},[4170],{"type":47,"value":583},{"type":41,"tag":547,"props":4172,"children":4173},{"class":549,"line":641},[4174,4178,4182],{"type":41,"tag":547,"props":4175,"children":4176},{"style":554},[4177],{"type":47,"value":1294},{"type":41,"tag":547,"props":4179,"children":4180},{"style":560},[4181],{"type":47,"value":563},{"type":41,"tag":547,"props":4183,"children":4184},{"style":604},[4185],{"type":47,"value":4186}," azureBlob\n",{"type":41,"tag":547,"props":4188,"children":4189},{"class":549,"line":659},[4190,4195,4199,4204],{"type":41,"tag":547,"props":4191,"children":4192},{"style":554},[4193],{"type":47,"value":4194},"      azureBlobCloudType",{"type":41,"tag":547,"props":4196,"children":4197},{"style":560},[4198],{"type":47,"value":563},{"type":41,"tag":547,"props":4200,"children":4201},{"style":604},[4202],{"type":47,"value":4203}," AzureCloud",{"type":41,"tag":547,"props":4205,"children":4206},{"style":690},[4207],{"type":47,"value":4208}," # or: AzureUSGovernment, AzureChinaCloud\n",{"type":41,"tag":547,"props":4210,"children":4211},{"class":549,"line":672},[4212,4217,4221],{"type":41,"tag":547,"props":4213,"children":4214},{"style":554},[4215],{"type":47,"value":4216},"      azureBlobAccountName",{"type":41,"tag":547,"props":4218,"children":4219},{"style":560},[4220],{"type":47,"value":563},{"type":41,"tag":547,"props":4222,"children":4223},{"style":604},[4224],{"type":47,"value":4225}," mystorageaccount\n",{"type":41,"tag":547,"props":4227,"children":4228},{"class":549,"line":686},[4229,4233],{"type":41,"tag":547,"props":4230,"children":4231},{"style":554},[4232],{"type":47,"value":764},{"type":41,"tag":547,"props":4234,"children":4235},{"style":560},[4236],{"type":47,"value":583},{"type":41,"tag":547,"props":4238,"children":4239},{"class":549,"line":696},[4240,4245,4249],{"type":41,"tag":547,"props":4241,"children":4242},{"style":554},[4243],{"type":47,"value":4244},"      azureBlobAccountKey",{"type":41,"tag":547,"props":4246,"children":4247},{"style":560},[4248],{"type":47,"value":563},{"type":41,"tag":547,"props":4250,"children":4251},{"style":604},[4252],{"type":47,"value":4253}," ${AZURE_BLOB_ACCOUNT_KEY}\n",{"type":41,"tag":1185,"props":4255,"children":4257},{"id":4256},"other-auth-providers",[4258],{"type":47,"value":4259},"Other Auth Providers",{"type":41,"tag":50,"props":4261,"children":4262},{},[4263,4265,4269],{"type":47,"value":4264},"The ",{"type":41,"tag":95,"props":4266,"children":4267},{},[4268],{"type":47,"value":4259},{"type":47,"value":4270}," card opens a guided dialog for common providers:",{"type":41,"tag":4272,"props":4273,"children":4274},"ul",{},[4275,4290],{"type":41,"tag":89,"props":4276,"children":4277},{},[4278,4283,4285,4289],{"type":41,"tag":95,"props":4279,"children":4280},{},[4281],{"type":47,"value":4282},"GitHub",{"type":47,"value":4284}," — guided Basic Authentication setup that also pre-fills the GitHub host\nunder ",{"type":41,"tag":95,"props":4286,"children":4287},{},[4288],{"type":47,"value":506},{"type":47,"value":76},{"type":41,"tag":89,"props":4291,"children":4292},{},[4293,4298],{"type":41,"tag":95,"props":4294,"children":4295},{},[4296],{"type":47,"value":4297},"Google JWT",{"type":47,"value":4299}," — guided OAuth2 JWT setup for Google service accounts.",{"type":41,"tag":50,"props":4301,"children":4302},{},[4303,4305,4309,4311,4316],{"type":47,"value":4304},"These guides simply pre-configure the underlying auth methods described above. To\nprovision them, use the ",{"type":41,"tag":95,"props":4306,"children":4307},{},[4308],{"type":47,"value":904},{"type":47,"value":4310}," example (GitHub) or the OAuth2 ",{"type":41,"tag":95,"props":4312,"children":4313},{},[4314],{"type":47,"value":4315},"JWT",{"type":47,"value":4317},"\nexample (Google JWT) shown above.",{"type":41,"tag":1185,"props":4319,"children":4321},{"id":4320},"choosing-between-methods",[4322],{"type":47,"value":4323},"Choosing between methods",{"type":41,"tag":4272,"props":4325,"children":4326},{},[4327,4362],{"type":41,"tag":89,"props":4328,"children":4329},{},[4330,4335,4337,4342,4344,4348,4350,4355,4357,4361],{"type":41,"tag":95,"props":4331,"children":4332},{},[4333],{"type":47,"value":4334},"Bearer vs API key",{"type":47,"value":4336},": If the API expects the literal ",{"type":41,"tag":61,"props":4338,"children":4340},{"className":4339},[],[4341],{"type":47,"value":956},{"type":47,"value":4343},",\nuse ",{"type":41,"tag":95,"props":4345,"children":4346},{},[4347],{"type":47,"value":936},{"type":47,"value":4349},". If it needs a different header name, a non-",{"type":41,"tag":61,"props":4351,"children":4353},{"className":4352},[],[4354],{"type":47,"value":1846},{"type":47,"value":4356}," prefix, or\nthe credential in the query string, use ",{"type":41,"tag":95,"props":4358,"children":4359},{},[4360],{"type":47,"value":969},{"type":47,"value":76},{"type":41,"tag":89,"props":4363,"children":4364},{},[4365,4367,4371,4372,4376,4378,4382,4384,4388],{"type":47,"value":4366},"After choosing any method other than ",{"type":41,"tag":95,"props":4368,"children":4369},{},[4370],{"type":47,"value":879},{"type":47,"value":990},{"type":41,"tag":95,"props":4373,"children":4374},{},[4375],{"type":47,"value":1115},{"type":47,"value":4377},", add the target\nhost under ",{"type":41,"tag":95,"props":4379,"children":4380},{},[4381],{"type":47,"value":506},{"type":47,"value":4383}," (or set a ",{"type":41,"tag":95,"props":4385,"children":4386},{},[4387],{"type":47,"value":355},{"type":47,"value":4389},") or queries will be blocked.",{"type":41,"tag":78,"props":4391,"children":4393},{"id":4392},"network",[4394],{"type":47,"value":230},{"type":41,"tag":50,"props":4396,"children":4397},{},[4398,4399,4403],{"type":47,"value":4264},{"type":41,"tag":95,"props":4400,"children":4401},{},[4402],{"type":47,"value":230},{"type":47,"value":4404}," page controls how requests reach the upstream API.",{"type":41,"tag":1185,"props":4406,"children":4408},{"id":4407},"timeout",[4409],{"type":47,"value":4410},"Timeout",{"type":41,"tag":50,"props":4412,"children":4413},{},[4414,4419,4421,4426,4428,4434,4436,4442,4443,4449],{"type":41,"tag":95,"props":4415,"children":4416},{},[4417],{"type":47,"value":4418},"Timeout (in seconds)",{"type":47,"value":4420}," sets the per-request timeout. The default is 60 seconds; ",{"type":41,"tag":61,"props":4422,"children":4424},{"className":4423},[],[4425],{"type":47,"value":2741},{"type":47,"value":4427},"\nmeans no timeout. Stored as ",{"type":41,"tag":61,"props":4429,"children":4431},{"className":4430},[],[4432],{"type":47,"value":4433},"timeoutInSeconds",{"type":47,"value":4435}," (jsonData). Requests that exceed it fail\nwith a ",{"type":41,"tag":61,"props":4437,"children":4439},{"className":4438},[],[4440],{"type":47,"value":4441},"context deadline exceeded",{"type":47,"value":421},{"type":41,"tag":61,"props":4444,"children":4446},{"className":4445},[],[4447],{"type":47,"value":4448},"connection timed out",{"type":47,"value":4450}," error.",{"type":41,"tag":1185,"props":4452,"children":4454},{"id":4453},"tls-ssl-settings",[4455],{"type":47,"value":4456},"TLS \u002F SSL settings",{"type":41,"tag":50,"props":4458,"children":4459},{},[4460],{"type":47,"value":4461},"Configure these when your API requires client certificates or a custom CA:",{"type":41,"tag":154,"props":4463,"children":4464},{},[4465,4483],{"type":41,"tag":158,"props":4466,"children":4467},{},[4468],{"type":41,"tag":162,"props":4469,"children":4470},{},[4471,4475,4479],{"type":41,"tag":166,"props":4472,"children":4473},{},[4474],{"type":47,"value":331},{"type":41,"tag":166,"props":4476,"children":4477},{},[4478],{"type":47,"value":336},{"type":41,"tag":166,"props":4480,"children":4481},{},[4482],{"type":47,"value":341},{"type":41,"tag":177,"props":4484,"children":4485},{},[4486,4511,4536,4561,4586,4612,4638],{"type":41,"tag":162,"props":4487,"children":4488},{},[4489,4497,4502],{"type":41,"tag":184,"props":4490,"children":4491},{},[4492],{"type":41,"tag":95,"props":4493,"children":4494},{},[4495],{"type":47,"value":4496},"Skip TLS Verify",{"type":41,"tag":184,"props":4498,"children":4499},{},[4500],{"type":47,"value":4501},"Skips certificate verification (not recommended for production).",{"type":41,"tag":184,"props":4503,"children":4504},{},[4505],{"type":41,"tag":61,"props":4506,"children":4508},{"className":4507},[],[4509],{"type":47,"value":4510},"tlsSkipVerify",{"type":41,"tag":162,"props":4512,"children":4513},{},[4514,4522,4527],{"type":41,"tag":184,"props":4515,"children":4516},{},[4517],{"type":41,"tag":95,"props":4518,"children":4519},{},[4520],{"type":47,"value":4521},"TLS Client Auth",{"type":41,"tag":184,"props":4523,"children":4524},{},[4525],{"type":47,"value":4526},"Enables client-certificate authentication.",{"type":41,"tag":184,"props":4528,"children":4529},{},[4530],{"type":41,"tag":61,"props":4531,"children":4533},{"className":4532},[],[4534],{"type":47,"value":4535},"tlsAuth",{"type":41,"tag":162,"props":4537,"children":4538},{},[4539,4547,4552],{"type":41,"tag":184,"props":4540,"children":4541},{},[4542],{"type":41,"tag":95,"props":4543,"children":4544},{},[4545],{"type":47,"value":4546},"With CA Cert",{"type":41,"tag":184,"props":4548,"children":4549},{},[4550],{"type":47,"value":4551},"Uses a custom CA certificate.",{"type":41,"tag":184,"props":4553,"children":4554},{},[4555],{"type":41,"tag":61,"props":4556,"children":4558},{"className":4557},[],[4559],{"type":47,"value":4560},"tlsAuthWithCACert",{"type":41,"tag":162,"props":4562,"children":4563},{},[4564,4572,4577],{"type":41,"tag":184,"props":4565,"children":4566},{},[4567],{"type":41,"tag":95,"props":4568,"children":4569},{},[4570],{"type":47,"value":4571},"ServerName",{"type":41,"tag":184,"props":4573,"children":4574},{},[4575],{"type":47,"value":4576},"Server name matching the certificate (required with a custom CA cert).",{"type":41,"tag":184,"props":4578,"children":4579},{},[4580],{"type":41,"tag":61,"props":4581,"children":4583},{"className":4582},[],[4584],{"type":47,"value":4585},"serverName",{"type":41,"tag":162,"props":4587,"children":4588},{},[4589,4597,4602],{"type":41,"tag":184,"props":4590,"children":4591},{},[4592],{"type":41,"tag":95,"props":4593,"children":4594},{},[4595],{"type":47,"value":4596},"CA Cert",{"type":41,"tag":184,"props":4598,"children":4599},{},[4600],{"type":47,"value":4601},"The CA certificate contents.",{"type":41,"tag":184,"props":4603,"children":4604},{},[4605,4611],{"type":41,"tag":61,"props":4606,"children":4608},{"className":4607},[],[4609],{"type":47,"value":4610},"tlsCACert",{"type":47,"value":429},{"type":41,"tag":162,"props":4613,"children":4614},{},[4615,4623,4628],{"type":41,"tag":184,"props":4616,"children":4617},{},[4618],{"type":41,"tag":95,"props":4619,"children":4620},{},[4621],{"type":47,"value":4622},"Client Cert",{"type":41,"tag":184,"props":4624,"children":4625},{},[4626],{"type":47,"value":4627},"The client certificate contents.",{"type":41,"tag":184,"props":4629,"children":4630},{},[4631,4637],{"type":41,"tag":61,"props":4632,"children":4634},{"className":4633},[],[4635],{"type":47,"value":4636},"tlsClientCert",{"type":47,"value":429},{"type":41,"tag":162,"props":4639,"children":4640},{},[4641,4649,4654],{"type":41,"tag":184,"props":4642,"children":4643},{},[4644],{"type":41,"tag":95,"props":4645,"children":4646},{},[4647],{"type":47,"value":4648},"Client Key",{"type":41,"tag":184,"props":4650,"children":4651},{},[4652],{"type":47,"value":4653},"The client private-key contents.",{"type":41,"tag":184,"props":4655,"children":4656},{},[4657,4663],{"type":41,"tag":61,"props":4658,"children":4660},{"className":4659},[],[4661],{"type":47,"value":4662},"tlsClientKey",{"type":47,"value":429},{"type":41,"tag":1131,"props":4665,"children":4666},{},[4667],{"type":41,"tag":50,"props":4668,"children":4669},{},[4670,4672,4676,4678,4682],{"type":47,"value":4671},"Enabling any TLS option requires the target host to be added under\n",{"type":41,"tag":197,"props":4673,"children":4674},{"href":503},[4675],{"type":47,"value":506},{"type":47,"value":4677}," (or a ",{"type":41,"tag":95,"props":4679,"children":4680},{},[4681],{"type":47,"value":355},{"type":47,"value":4683}," to be set).",{"type":41,"tag":1185,"props":4685,"children":4687},{"id":4686},"proxy",[4688],{"type":47,"value":4689},"Proxy",{"type":41,"tag":154,"props":4691,"children":4692},{},[4693,4711],{"type":41,"tag":158,"props":4694,"children":4695},{},[4696],{"type":41,"tag":162,"props":4697,"children":4698},{},[4699,4703,4707],{"type":41,"tag":166,"props":4700,"children":4701},{},[4702],{"type":47,"value":331},{"type":41,"tag":166,"props":4704,"children":4705},{},[4706],{"type":47,"value":336},{"type":41,"tag":166,"props":4708,"children":4709},{},[4710],{"type":47,"value":341},{"type":41,"tag":177,"props":4712,"children":4713},{},[4714,4776,4812,4845],{"type":41,"tag":162,"props":4715,"children":4716},{},[4717,4725,4767],{"type":41,"tag":184,"props":4718,"children":4719},{},[4720],{"type":41,"tag":95,"props":4721,"children":4722},{},[4723],{"type":47,"value":4724},"Proxy type",{"type":41,"tag":184,"props":4726,"children":4727},{},[4728,4734,4735,4741,4743,4749,4751,4757,4759,4765],{"type":41,"tag":61,"props":4729,"children":4731},{"className":4730},[],[4732],{"type":47,"value":4733},"None",{"type":47,"value":4001},{"type":41,"tag":61,"props":4736,"children":4738},{"className":4737},[],[4739],{"type":47,"value":4740},"Environment",{"type":47,"value":4742}," (use ",{"type":41,"tag":61,"props":4744,"children":4746},{"className":4745},[],[4747],{"type":47,"value":4748},"HTTP_PROXY",{"type":47,"value":4750},"\u002F",{"type":41,"tag":61,"props":4752,"children":4754},{"className":4753},[],[4755],{"type":47,"value":4756},"HTTPS_PROXY",{"type":47,"value":4758}," env vars), or ",{"type":41,"tag":61,"props":4760,"children":4762},{"className":4761},[],[4763],{"type":47,"value":4764},"URL",{"type":47,"value":4766}," (explicit proxy).",{"type":41,"tag":184,"props":4768,"children":4769},{},[4770],{"type":41,"tag":61,"props":4771,"children":4773},{"className":4772},[],[4774],{"type":47,"value":4775},"proxy_type",{"type":41,"tag":162,"props":4777,"children":4778},{},[4779,4787,4803],{"type":41,"tag":184,"props":4780,"children":4781},{},[4782],{"type":41,"tag":95,"props":4783,"children":4784},{},[4785],{"type":47,"value":4786},"Proxy URL",{"type":41,"tag":184,"props":4788,"children":4789},{},[4790,4792,4796,4797,4802],{"type":47,"value":4791},"Explicit proxy address when ",{"type":41,"tag":95,"props":4793,"children":4794},{},[4795],{"type":47,"value":4724},{"type":47,"value":3937},{"type":41,"tag":61,"props":4798,"children":4800},{"className":4799},[],[4801],{"type":47,"value":4764},{"type":47,"value":76},{"type":41,"tag":184,"props":4804,"children":4805},{},[4806],{"type":41,"tag":61,"props":4807,"children":4809},{"className":4808},[],[4810],{"type":47,"value":4811},"proxy_url",{"type":41,"tag":162,"props":4813,"children":4814},{},[4815,4823,4828],{"type":41,"tag":184,"props":4816,"children":4817},{},[4818],{"type":41,"tag":95,"props":4819,"children":4820},{},[4821],{"type":47,"value":4822},"Proxy user\u002Fpassword",{"type":41,"tag":184,"props":4824,"children":4825},{},[4826],{"type":47,"value":4827},"Optional credentials for the proxy.",{"type":41,"tag":184,"props":4829,"children":4830},{},[4831,4837,4838,4844],{"type":41,"tag":61,"props":4832,"children":4834},{"className":4833},[],[4835],{"type":47,"value":4836},"proxyUserName",{"type":47,"value":421},{"type":41,"tag":61,"props":4839,"children":4841},{"className":4840},[],[4842],{"type":47,"value":4843},"proxyUserPassword",{"type":47,"value":429},{"type":41,"tag":162,"props":4846,"children":4847},{},[4848,4856,4861],{"type":41,"tag":184,"props":4849,"children":4850},{},[4851],{"type":41,"tag":95,"props":4852,"children":4853},{},[4854],{"type":47,"value":4855},"Secure SOCKS proxy",{"type":41,"tag":184,"props":4857,"children":4858},{},[4859],{"type":47,"value":4860},"Optionally route traffic through Grafana's secure SOCKS proxy.",{"type":41,"tag":184,"props":4862,"children":4863},{},[4864],{"type":41,"tag":61,"props":4865,"children":4867},{"className":4866},[],[4868],{"type":47,"value":4869},"enableSecureSocksProxy",{"type":41,"tag":78,"props":4871,"children":4873},{"id":4872},"security-settings",[4874],{"type":47,"value":4875},"Security settings",{"type":41,"tag":50,"props":4877,"children":4878},{},[4879,4880,4884],{"type":47,"value":4264},{"type":41,"tag":95,"props":4881,"children":4882},{},[4883],{"type":47,"value":246},{"type":47,"value":4885}," page controls which hosts are reachable and how unsecured queries are\nhandled.",{"type":41,"tag":1185,"props":4887,"children":4889},{"id":4888},"allowed-hosts",[4890],{"type":47,"value":506},{"type":41,"tag":50,"props":4892,"children":4893},{},[4894,4898],{"type":41,"tag":95,"props":4895,"children":4896},{},[4897],{"type":47,"value":506},{"type":47,"value":4899}," is an allow-list of URL prefixes the data source may connect to. When a\nquery URL does not start with one of the listed prefixes, the request is rejected.",{"type":41,"tag":4272,"props":4901,"children":4902},{},[4903,4922,4937,5003],{"type":41,"tag":89,"props":4904,"children":4905},{},[4906,4908,4913,4915,4921],{"type":47,"value":4907},"Enter the ",{"type":41,"tag":95,"props":4909,"children":4910},{},[4911],{"type":47,"value":4912},"full base URL",{"type":47,"value":4914},", including scheme, for each host — for example\n",{"type":41,"tag":61,"props":4916,"children":4918},{"className":4917},[],[4919],{"type":47,"value":4920},"https:\u002F\u002Fapi.example.com",{"type":47,"value":76},{"type":41,"tag":89,"props":4923,"children":4924},{},[4925,4926,4930,4931,4935],{"type":47,"value":494},{"type":41,"tag":95,"props":4927,"children":4928},{},[4929],{"type":47,"value":355},{"type":47,"value":1161},{"type":41,"tag":95,"props":4932,"children":4933},{},[4934],{"type":47,"value":214},{"type":47,"value":4936}," page) also satisfies this\nrequirement for that host.",{"type":41,"tag":89,"props":4938,"children":4939},{},[4940,4945,4947],{"type":41,"tag":95,"props":4941,"children":4942},{},[4943],{"type":47,"value":4944},"Allowed hosts is required",{"type":47,"value":4946}," when any of the following is true:\n",{"type":41,"tag":4272,"props":4948,"children":4949},{},[4950,4966,4971,4989,4994],{"type":41,"tag":89,"props":4951,"children":4952},{},[4953,4955,4959,4960,4964],{"type":47,"value":4954},"An auth method other than ",{"type":41,"tag":95,"props":4956,"children":4957},{},[4958],{"type":47,"value":879},{"type":47,"value":990},{"type":41,"tag":95,"props":4961,"children":4962},{},[4963],{"type":47,"value":1115},{"type":47,"value":4965}," is selected.",{"type":41,"tag":89,"props":4967,"children":4968},{},[4969],{"type":47,"value":4970},"TLS \u002F SSL options are enabled.",{"type":41,"tag":89,"props":4972,"children":4973},{},[4974,4976,4981,4982,4987],{"type":47,"value":4975},"Custom HTTP headers (other than ",{"type":41,"tag":61,"props":4977,"children":4979},{"className":4978},[],[4980],{"type":47,"value":514},{"type":47,"value":421},{"type":41,"tag":61,"props":4983,"children":4985},{"className":4984},[],[4986],{"type":47,"value":521},{"type":47,"value":4988},") are configured.",{"type":41,"tag":89,"props":4990,"children":4991},{},[4992],{"type":47,"value":4993},"Custom URL query params are configured.",{"type":41,"tag":89,"props":4995,"children":4996},{},[4997,5001],{"type":41,"tag":95,"props":4998,"children":4999},{},[5000],{"type":47,"value":473},{"type":47,"value":5002}," are configured.",{"type":41,"tag":89,"props":5004,"children":5005},{},[5006,5008,5012],{"type":47,"value":5007},"If none of those apply and no ",{"type":41,"tag":95,"props":5009,"children":5010},{},[5011],{"type":47,"value":355},{"type":47,"value":5013}," is set, all hosts are allowed.",{"type":41,"tag":1185,"props":5015,"children":5017},{"id":5016},"unsecured-query-handling",[5018],{"type":47,"value":5019},"Unsecured query handling",{"type":41,"tag":50,"props":5021,"children":5022},{},[5023,5025,5030,5031,5036,5037,5042,5044,5050],{"type":47,"value":5024},"Controls how inline\u002Funsecured queries (where the URL or data is supplied in the query\nitself) are treated: ",{"type":41,"tag":95,"props":5026,"children":5027},{},[5028],{"type":47,"value":5029},"Warn",{"type":47,"value":4001},{"type":41,"tag":95,"props":5032,"children":5033},{},[5034],{"type":47,"value":5035},"Allow",{"type":47,"value":4009},{"type":41,"tag":95,"props":5038,"children":5039},{},[5040],{"type":47,"value":5041},"Deny",{"type":47,"value":5043},". Stored as\n",{"type":41,"tag":61,"props":5045,"children":5047},{"className":5046},[],[5048],{"type":47,"value":5049},"unsecuredQueryHandling",{"type":47,"value":5051}," (jsonData).",{"type":41,"tag":1185,"props":5053,"children":5055},{"id":5054},"other-security-options",[5056],{"type":47,"value":5057},"Other security options",{"type":41,"tag":4272,"props":5059,"children":5060},{},[5061],{"type":41,"tag":89,"props":5062,"children":5063},{},[5064,5069,5071,5077,5078,5084,5086,5092,5094,5100,5102,5108,5109,5115,5117,5123],{"type":41,"tag":95,"props":5065,"children":5066},{},[5067],{"type":47,"value":5068},"Allowed dangerous HTTP methods",{"type":47,"value":5070}," — Enables ",{"type":41,"tag":61,"props":5072,"children":5074},{"className":5073},[],[5075],{"type":47,"value":5076},"PUT",{"type":47,"value":4001},{"type":41,"tag":61,"props":5079,"children":5081},{"className":5080},[],[5082],{"type":47,"value":5083},"PATCH",{"type":47,"value":5085},", and ",{"type":41,"tag":61,"props":5087,"children":5089},{"className":5088},[],[5090],{"type":47,"value":5091},"DELETE",{"type":47,"value":5093}," in queries\n(",{"type":41,"tag":61,"props":5095,"children":5097},{"className":5096},[],[5098],{"type":47,"value":5099},"allowDangerousHTTPMethods",{"type":47,"value":5101},", off by default). When disabled, only ",{"type":41,"tag":61,"props":5103,"children":5105},{"className":5104},[],[5106],{"type":47,"value":5107},"GET",{"type":47,"value":1149},{"type":41,"tag":61,"props":5110,"children":5112},{"className":5111},[],[5113],{"type":47,"value":5114},"POST",{"type":47,"value":5116},"\nare permitted; other methods fail with ",{"type":41,"tag":61,"props":5118,"children":5120},{"className":5119},[],[5121],{"type":47,"value":5122},"only GET and POST HTTP methods are allowed",{"type":47,"value":76},{"type":41,"tag":78,"props":5125,"children":5127},{"id":5126},"custom-health-check",[5128],{"type":47,"value":279},{"type":41,"tag":50,"props":5130,"children":5131},{},[5132,5134,5138,5140,5145,5147,5151,5153,5157],{"type":47,"value":5133},"By default, ",{"type":41,"tag":95,"props":5135,"children":5136},{},[5137],{"type":47,"value":134},{"type":47,"value":5139}," verifies the data source without calling a specific URL.\nEnable ",{"type":41,"tag":95,"props":5141,"children":5142},{},[5143],{"type":47,"value":5144},"custom health check",{"type":47,"value":5146}," to point the test at a real endpoint so ",{"type":41,"tag":95,"props":5148,"children":5149},{},[5150],{"type":47,"value":134},{"type":47,"value":5152},"\nconfirms reachability and authentication against a URL you choose. Set the health check\nURL, then click ",{"type":41,"tag":95,"props":5154,"children":5155},{},[5156],{"type":47,"value":134},{"type":47,"value":76},{"type":41,"tag":78,"props":5159,"children":5161},{"id":5160},"reference-data-and-global-queries",[5162],{"type":47,"value":5163},"Reference data and global queries",{"type":41,"tag":50,"props":5165,"children":5166},{},[5167],{"type":47,"value":5168},"Two configuration features support reusable queries:",{"type":41,"tag":4272,"props":5170,"children":5171},{},[5172,5195],{"type":41,"tag":89,"props":5173,"children":5174},{},[5175,5179,5181,5186,5188,5194],{"type":41,"tag":95,"props":5176,"children":5177},{},[5178],{"type":47,"value":291},{"type":47,"value":5180}," — Define named inline datasets you can query later with the\n",{"type":41,"tag":95,"props":5182,"children":5183},{},[5184],{"type":47,"value":5185},"Reference",{"type":47,"value":5187}," source. See ",{"type":41,"tag":197,"props":5189,"children":5192},{"href":5190,"rel":5191},"https:\u002F\u002Fgrafana.com\u002Fdocs\u002Fplugins\u002Fyesoreyeram-infinity-datasource\u002Flatest\u002Fadvanced-features\u002Freference-data\u002F",[3502],[5193],{"type":47,"value":291},{"type":47,"value":76},{"type":41,"tag":89,"props":5196,"children":5197},{},[5198,5202,5204,5210],{"type":41,"tag":95,"props":5199,"children":5200},{},[5201],{"type":47,"value":307},{"type":47,"value":5203}," — Define named queries you can reuse across panels. See\n",{"type":41,"tag":197,"props":5205,"children":5208},{"href":5206,"rel":5207},"https:\u002F\u002Fgrafana.com\u002Fdocs\u002Fplugins\u002Fyesoreyeram-infinity-datasource\u002Flatest\u002Fadvanced-features\u002Fglobal-queries\u002F",[3502],[5209],{"type":47,"value":307},{"type":47,"value":76},{"type":41,"tag":78,"props":5212,"children":5214},{"id":5213},"provisioning-with-a-config-file",[5215],{"type":47,"value":5216},"Provisioning with a config file",{"type":41,"tag":50,"props":5218,"children":5219},{},[5220,5222,5228,5230,5235,5236,5241],{"type":47,"value":5221},"Instead of using the UI, provision the Infinity data source from a YAML file in\nGrafana's ",{"type":41,"tag":61,"props":5223,"children":5225},{"className":5224},[],[5226],{"type":47,"value":5227},"provisioning\u002Fdatasources\u002F",{"type":47,"value":5229}," directory. The data source ",{"type":41,"tag":61,"props":5231,"children":5233},{"className":5232},[],[5234],{"type":47,"value":66},{"type":47,"value":68},{"type":41,"tag":61,"props":5237,"children":5239},{"className":5238},[],[5240],{"type":47,"value":74},{"type":47,"value":76},{"type":41,"tag":50,"props":5243,"children":5244},{},[5245],{"type":47,"value":5246},"Minimal example (public endpoints, no auth):",{"type":41,"tag":536,"props":5248,"children":5250},{"className":538,"code":5249,"language":540,"meta":541,"style":541},"apiVersion: 1\ndatasources:\n  - name: Infinity\n    type: yesoreyeram-infinity-datasource\n",[5251],{"type":41,"tag":61,"props":5252,"children":5253},{"__ignoreMap":541},[5254,5269,5280,5299],{"type":41,"tag":547,"props":5255,"children":5256},{"class":549,"line":550},[5257,5261,5265],{"type":41,"tag":547,"props":5258,"children":5259},{"style":554},[5260],{"type":47,"value":557},{"type":41,"tag":547,"props":5262,"children":5263},{"style":560},[5264],{"type":47,"value":563},{"type":41,"tag":547,"props":5266,"children":5267},{"style":566},[5268],{"type":47,"value":569},{"type":41,"tag":547,"props":5270,"children":5271},{"class":549,"line":572},[5272,5276],{"type":41,"tag":547,"props":5273,"children":5274},{"style":554},[5275],{"type":47,"value":578},{"type":41,"tag":547,"props":5277,"children":5278},{"style":560},[5279],{"type":47,"value":583},{"type":41,"tag":547,"props":5281,"children":5282},{"class":549,"line":586},[5283,5287,5291,5295],{"type":41,"tag":547,"props":5284,"children":5285},{"style":560},[5286],{"type":47,"value":592},{"type":41,"tag":547,"props":5288,"children":5289},{"style":554},[5290],{"type":47,"value":597},{"type":41,"tag":547,"props":5292,"children":5293},{"style":560},[5294],{"type":47,"value":563},{"type":41,"tag":547,"props":5296,"children":5297},{"style":604},[5298],{"type":47,"value":607},{"type":41,"tag":547,"props":5300,"children":5301},{"class":549,"line":610},[5302,5306,5310],{"type":41,"tag":547,"props":5303,"children":5304},{"style":554},[5305],{"type":47,"value":616},{"type":41,"tag":547,"props":5307,"children":5308},{"style":560},[5309],{"type":47,"value":563},{"type":41,"tag":547,"props":5311,"children":5312},{"style":604},[5313],{"type":47,"value":625},{"type":41,"tag":50,"props":5315,"children":5316},{},[5317],{"type":47,"value":5318},"Example with API key authentication and an allowed host:",{"type":41,"tag":536,"props":5320,"children":5322},{"className":538,"code":5321,"language":540,"meta":541,"style":541},"apiVersion: 1\ndatasources:\n  - name: Infinity\n    type: yesoreyeram-infinity-datasource\n    jsonData:\n      auth_method: apiKey\n      apiKeyKey: X-API-Key\n      apiKeyType: header\n      allowedHosts:\n        - https:\u002F\u002Fapi.example.com\n    secureJsonData:\n      apiKeyValue: ${API_KEY}\n",[5323],{"type":41,"tag":61,"props":5324,"children":5325},{"__ignoreMap":541},[5326,5341,5352,5371,5386,5397,5412,5427,5443,5454,5465,5476],{"type":41,"tag":547,"props":5327,"children":5328},{"class":549,"line":550},[5329,5333,5337],{"type":41,"tag":547,"props":5330,"children":5331},{"style":554},[5332],{"type":47,"value":557},{"type":41,"tag":547,"props":5334,"children":5335},{"style":560},[5336],{"type":47,"value":563},{"type":41,"tag":547,"props":5338,"children":5339},{"style":566},[5340],{"type":47,"value":569},{"type":41,"tag":547,"props":5342,"children":5343},{"class":549,"line":572},[5344,5348],{"type":41,"tag":547,"props":5345,"children":5346},{"style":554},[5347],{"type":47,"value":578},{"type":41,"tag":547,"props":5349,"children":5350},{"style":560},[5351],{"type":47,"value":583},{"type":41,"tag":547,"props":5353,"children":5354},{"class":549,"line":586},[5355,5359,5363,5367],{"type":41,"tag":547,"props":5356,"children":5357},{"style":560},[5358],{"type":47,"value":592},{"type":41,"tag":547,"props":5360,"children":5361},{"style":554},[5362],{"type":47,"value":597},{"type":41,"tag":547,"props":5364,"children":5365},{"style":560},[5366],{"type":47,"value":563},{"type":41,"tag":547,"props":5368,"children":5369},{"style":604},[5370],{"type":47,"value":607},{"type":41,"tag":547,"props":5372,"children":5373},{"class":549,"line":610},[5374,5378,5382],{"type":41,"tag":547,"props":5375,"children":5376},{"style":554},[5377],{"type":47,"value":616},{"type":41,"tag":547,"props":5379,"children":5380},{"style":560},[5381],{"type":47,"value":563},{"type":41,"tag":547,"props":5383,"children":5384},{"style":604},[5385],{"type":47,"value":625},{"type":41,"tag":547,"props":5387,"children":5388},{"class":549,"line":628},[5389,5393],{"type":41,"tag":547,"props":5390,"children":5391},{"style":554},[5392],{"type":47,"value":634},{"type":41,"tag":547,"props":5394,"children":5395},{"style":560},[5396],{"type":47,"value":583},{"type":41,"tag":547,"props":5398,"children":5399},{"class":549,"line":641},[5400,5404,5408],{"type":41,"tag":547,"props":5401,"children":5402},{"style":554},[5403],{"type":47,"value":1294},{"type":41,"tag":547,"props":5405,"children":5406},{"style":560},[5407],{"type":47,"value":563},{"type":41,"tag":547,"props":5409,"children":5410},{"style":604},[5411],{"type":47,"value":2070},{"type":41,"tag":547,"props":5413,"children":5414},{"class":549,"line":659},[5415,5419,5423],{"type":41,"tag":547,"props":5416,"children":5417},{"style":554},[5418],{"type":47,"value":2078},{"type":41,"tag":547,"props":5420,"children":5421},{"style":560},[5422],{"type":47,"value":563},{"type":41,"tag":547,"props":5424,"children":5425},{"style":604},[5426],{"type":47,"value":2087},{"type":41,"tag":547,"props":5428,"children":5429},{"class":549,"line":672},[5430,5434,5438],{"type":41,"tag":547,"props":5431,"children":5432},{"style":554},[5433],{"type":47,"value":2095},{"type":41,"tag":547,"props":5435,"children":5436},{"style":560},[5437],{"type":47,"value":563},{"type":41,"tag":547,"props":5439,"children":5440},{"style":604},[5441],{"type":47,"value":5442}," header\n",{"type":41,"tag":547,"props":5444,"children":5445},{"class":549,"line":686},[5446,5450],{"type":41,"tag":547,"props":5447,"children":5448},{"style":554},[5449],{"type":47,"value":738},{"type":41,"tag":547,"props":5451,"children":5452},{"style":560},[5453],{"type":47,"value":583},{"type":41,"tag":547,"props":5455,"children":5456},{"class":549,"line":696},[5457,5461],{"type":41,"tag":547,"props":5458,"children":5459},{"style":560},[5460],{"type":47,"value":678},{"type":41,"tag":547,"props":5462,"children":5463},{"style":604},[5464],{"type":47,"value":1560},{"type":41,"tag":547,"props":5466,"children":5467},{"class":549,"line":714},[5468,5472],{"type":41,"tag":547,"props":5469,"children":5470},{"style":554},[5471],{"type":47,"value":764},{"type":41,"tag":547,"props":5473,"children":5474},{"style":560},[5475],{"type":47,"value":583},{"type":41,"tag":547,"props":5477,"children":5478},{"class":549,"line":732},[5479,5483,5487],{"type":41,"tag":547,"props":5480,"children":5481},{"style":554},[5482],{"type":47,"value":2150},{"type":41,"tag":547,"props":5484,"children":5485},{"style":560},[5486],{"type":47,"value":563},{"type":41,"tag":547,"props":5488,"children":5489},{"style":604},[5490],{"type":47,"value":2159},{"type":41,"tag":50,"props":5492,"children":5493},{},[5494,5496,5502,5504,5509,5510,5516,5518,5523,5524,5529,5530,5536,5537,5543,5544,5549,5550,5556,5557,5563,5565,5571,5573,5578,5579,5584,5585,5590,5591,5596,5597,5602,5603,5608],{"type":47,"value":5495},"Non-secret options go under ",{"type":41,"tag":61,"props":5497,"children":5499},{"className":5498},[],[5500],{"type":47,"value":5501},"jsonData",{"type":47,"value":5503}," (for example ",{"type":41,"tag":61,"props":5505,"children":5507},{"className":5506},[],[5508],{"type":47,"value":858},{"type":47,"value":4001},{"type":41,"tag":61,"props":5511,"children":5513},{"className":5512},[],[5514],{"type":47,"value":5515},"allowedHosts",{"type":47,"value":5517},",\n",{"type":41,"tag":61,"props":5519,"children":5521},{"className":5520},[],[5522],{"type":47,"value":4433},{"type":47,"value":4001},{"type":41,"tag":61,"props":5525,"children":5527},{"className":5526},[],[5528],{"type":47,"value":4775},{"type":47,"value":4001},{"type":41,"tag":61,"props":5531,"children":5533},{"className":5532},[],[5534],{"type":47,"value":5535},"customHealthCheckEnabled",{"type":47,"value":4001},{"type":41,"tag":61,"props":5538,"children":5540},{"className":5539},[],[5541],{"type":47,"value":5542},"customHealthCheckUrl",{"type":47,"value":5517},{"type":41,"tag":61,"props":5545,"children":5547},{"className":5546},[],[5548],{"type":47,"value":4510},{"type":47,"value":4001},{"type":41,"tag":61,"props":5551,"children":5553},{"className":5552},[],[5554],{"type":47,"value":5555},"global_queries",{"type":47,"value":4001},{"type":41,"tag":61,"props":5558,"children":5560},{"className":5559},[],[5561],{"type":47,"value":5562},"refData",{"type":47,"value":5564},"). Secrets go under ",{"type":41,"tag":61,"props":5566,"children":5568},{"className":5567},[],[5569],{"type":47,"value":5570},"secureJsonData",{"type":47,"value":5572}," (for\nexample ",{"type":41,"tag":61,"props":5574,"children":5576},{"className":5575},[],[5577],{"type":47,"value":1919},{"type":47,"value":4001},{"type":41,"tag":61,"props":5580,"children":5582},{"className":5581},[],[5583],{"type":47,"value":945},{"type":47,"value":4001},{"type":41,"tag":61,"props":5586,"children":5588},{"className":5587},[],[5589],{"type":47,"value":1389},{"type":47,"value":4001},{"type":41,"tag":61,"props":5592,"children":5594},{"className":5593},[],[5595],{"type":47,"value":2655},{"type":47,"value":5517},{"type":41,"tag":61,"props":5598,"children":5600},{"className":5599},[],[5601],{"type":47,"value":3665},{"type":47,"value":4001},{"type":41,"tag":61,"props":5604,"children":5606},{"className":5605},[],[5607],{"type":47,"value":4662},{"type":47,"value":203},{"type":41,"tag":50,"props":5610,"children":5611},{},[5612],{"type":47,"value":5613},"Provisioning changes are applied when Grafana starts or when you reload provisioning, so\nrestart Grafana (or trigger a provisioning reload) after editing the file.",{"type":41,"tag":78,"props":5615,"children":5617},{"id":5616},"after-saving",[5618],{"type":47,"value":5619},"After saving",{"type":41,"tag":4272,"props":5621,"children":5622},{},[5623,5634],{"type":41,"tag":89,"props":5624,"children":5625},{},[5626,5628,5632],{"type":47,"value":5627},"Changes take effect when you click ",{"type":41,"tag":95,"props":5629,"children":5630},{},[5631],{"type":47,"value":134},{"type":47,"value":5633},"; no Grafana restart is needed for\nUI-based changes.",{"type":41,"tag":89,"props":5635,"children":5636},{},[5637],{"type":47,"value":5638},"Use the data source in panels and dashboards as you would any other.",{"type":41,"tag":78,"props":5640,"children":5642},{"id":5641},"troubleshooting",[5643],{"type":47,"value":5644},"Troubleshooting",{"type":41,"tag":50,"props":5646,"children":5647},{},[5648,5650,5654],{"type":47,"value":5649},"Match the error message you see (on ",{"type":41,"tag":95,"props":5651,"children":5652},{},[5653],{"type":47,"value":134},{"type":47,"value":5655}," or in a panel) to the cause and fix\nbelow.",{"type":41,"tag":1185,"props":5657,"children":5659},{"id":5658},"allowed-hosts-blocked-urls",[5660],{"type":47,"value":5661},"Allowed hosts \u002F blocked URLs",{"type":41,"tag":4272,"props":5663,"children":5664},{},[5665],{"type":41,"tag":89,"props":5666,"children":5667},{},[5668,5677,5679,5684,5686,5691,5693,5697,5699,5703],{"type":41,"tag":95,"props":5669,"children":5670},{},[5671],{"type":41,"tag":61,"props":5672,"children":5674},{"className":5673},[],[5675],{"type":47,"value":5676},"requested URL not allowed. To allow this URL, update the data source config in the Security tab, Allowed hosts section",{"type":47,"value":5678}," — The query URL does not start with any\nconfigured prefix. Add the full base URL (for example ",{"type":41,"tag":61,"props":5680,"children":5682},{"className":5681},[],[5683],{"type":47,"value":4920},{"type":47,"value":5685},") under\n",{"type":41,"tag":95,"props":5687,"children":5688},{},[5689],{"type":47,"value":5690},"Security → Allowed hosts",{"type":47,"value":5692},", or set a ",{"type":41,"tag":95,"props":5694,"children":5695},{},[5696],{"type":47,"value":355},{"type":47,"value":5698},". Remember that any auth method\n(except No Auth \u002F Azure Blob), TLS, custom headers, custom query params, or kept\ncookies makes ",{"type":41,"tag":95,"props":5700,"children":5701},{},[5702],{"type":47,"value":506},{"type":47,"value":5704}," mandatory.",{"type":41,"tag":1185,"props":5706,"children":5708},{"id":5707},"authentication-errors",[5709],{"type":47,"value":5710},"Authentication errors",{"type":41,"tag":4272,"props":5712,"children":5713},{},[5714,5732,5750,5780,5824,5856,5869],{"type":41,"tag":89,"props":5715,"children":5716},{},[5717,5725,5727,5731],{"type":41,"tag":95,"props":5718,"children":5719},{},[5720],{"type":41,"tag":61,"props":5721,"children":5723},{"className":5722},[],[5724],{"type":47,"value":1401},{"type":47,"value":5726}," — Basic \u002F Digest auth: enter the ",{"type":41,"tag":95,"props":5728,"children":5729},{},[5730],{"type":47,"value":1380},{"type":47,"value":76},{"type":41,"tag":89,"props":5733,"children":5734},{},[5735,5743,5745,5749],{"type":41,"tag":95,"props":5736,"children":5737},{},[5738],{"type":41,"tag":61,"props":5739,"children":5741},{"className":5740},[],[5742],{"type":47,"value":1670},{"type":47,"value":5744}," — Bearer Token auth: enter the ",{"type":41,"tag":95,"props":5746,"children":5747},{},[5748],{"type":47,"value":1650},{"type":47,"value":76},{"type":41,"tag":89,"props":5751,"children":5752},{},[5753,5761,5763,5767,5768,5772,5774,5778],{"type":41,"tag":95,"props":5754,"children":5755},{},[5756],{"type":41,"tag":61,"props":5757,"children":5759},{"className":5758},[],[5760],{"type":47,"value":1975},{"type":47,"value":5762}," — API Key auth: set both ",{"type":41,"tag":95,"props":5764,"children":5765},{},[5766],{"type":47,"value":1884},{"type":47,"value":1149},{"type":41,"tag":95,"props":5769,"children":5770},{},[5771],{"type":47,"value":1910},{"type":47,"value":5773}," and\npick the correct ",{"type":41,"tag":95,"props":5775,"children":5776},{},[5777],{"type":47,"value":1936},{"type":47,"value":5779}," (Header or Query Param).",{"type":41,"tag":89,"props":5781,"children":5782},{},[5783,5791,5792,5800,5802,5806,5807,5811,5813,5817,5819,5823],{"type":41,"tag":95,"props":5784,"children":5785},{},[5786],{"type":41,"tag":61,"props":5787,"children":5789},{"className":5788},[],[5790],{"type":47,"value":3644},{"type":47,"value":421},{"type":41,"tag":95,"props":5793,"children":5794},{},[5795],{"type":41,"tag":61,"props":5796,"children":5798},{"className":5797},[],[5799],{"type":47,"value":3676},{"type":47,"value":5801}," — AWS auth:\nenter both the ",{"type":41,"tag":95,"props":5803,"children":5804},{},[5805],{"type":47,"value":3623},{"type":47,"value":1149},{"type":41,"tag":95,"props":5808,"children":5809},{},[5810],{"type":47,"value":3656},{"type":47,"value":5812}," (and the correct ",{"type":41,"tag":95,"props":5814,"children":5815},{},[5816],{"type":47,"value":3558},{"type":47,"value":5818}," \u002F\n",{"type":41,"tag":95,"props":5820,"children":5821},{},[5822],{"type":47,"value":3591},{"type":47,"value":203},{"type":41,"tag":89,"props":5825,"children":5826},{},[5827,5835,5836,5844,5846,5850,5851,5855],{"type":41,"tag":95,"props":5828,"children":5829},{},[5830],{"type":41,"tag":61,"props":5831,"children":5833},{"className":5832},[],[5834],{"type":47,"value":4047},{"type":47,"value":421},{"type":41,"tag":95,"props":5837,"children":5838},{},[5839],{"type":41,"tag":61,"props":5840,"children":5842},{"className":5841},[],[5843],{"type":47,"value":4079},{"type":47,"value":5845}," —\nAzure Blob auth: enter the ",{"type":41,"tag":95,"props":5847,"children":5848},{},[5849],{"type":47,"value":4027},{"type":47,"value":1149},{"type":41,"tag":95,"props":5852,"children":5853},{},[5854],{"type":47,"value":4059},{"type":47,"value":76},{"type":41,"tag":89,"props":5857,"children":5858},{},[5859,5867],{"type":41,"tag":95,"props":5860,"children":5861},{},[5862],{"type":41,"tag":61,"props":5863,"children":5865},{"className":5864},[],[5866],{"type":47,"value":4091},{"type":47,"value":5868}," — Azure returned 403; the storage account\nkey is wrong or lacks permission.",{"type":41,"tag":89,"props":5870,"children":5871},{},[5872,5877,5879,5883,5885,5891,5892,5896,5898,5903],{"type":41,"tag":95,"props":5873,"children":5874},{},[5875],{"type":47,"value":5876},"Wrong header sent",{"type":47,"value":5878}," — If the API rejects the token, confirm you chose the right\nmethod: use ",{"type":41,"tag":95,"props":5880,"children":5881},{},[5882],{"type":47,"value":936},{"type":47,"value":5884}," for a literal ",{"type":41,"tag":61,"props":5886,"children":5888},{"className":5887},[],[5889],{"type":47,"value":5890},"Bearer \u003Ctoken>",{"type":47,"value":4009},{"type":41,"tag":95,"props":5893,"children":5894},{},[5895],{"type":47,"value":969},{"type":47,"value":5897},"\nfor a custom header name \u002F non-",{"type":41,"tag":61,"props":5899,"children":5901},{"className":5900},[],[5902],{"type":47,"value":1846},{"type":47,"value":5904}," prefix \u002F query-string credential.",{"type":41,"tag":1185,"props":5906,"children":5908},{"id":5907},"http-method-errors",[5909],{"type":47,"value":5910},"HTTP method errors",{"type":41,"tag":4272,"props":5912,"children":5913},{},[5914],{"type":41,"tag":89,"props":5915,"children":5916},{},[5917,5926,5928,5933,5935,5940,5941,5946,5947,5952],{"type":41,"tag":95,"props":5918,"children":5919},{},[5920],{"type":41,"tag":61,"props":5921,"children":5923},{"className":5922},[],[5924],{"type":47,"value":5925},"only GET and POST HTTP methods are allowed for this data source. To make use other methods, enable the \"Allow dangerous HTTP methods\" in the data source configuration",{"type":47,"value":5927},"\n— Enable ",{"type":41,"tag":95,"props":5929,"children":5930},{},[5931],{"type":47,"value":5932},"Security → Allowed dangerous HTTP methods",{"type":47,"value":5934}," to use ",{"type":41,"tag":61,"props":5936,"children":5938},{"className":5937},[],[5939],{"type":47,"value":5076},{"type":47,"value":421},{"type":41,"tag":61,"props":5942,"children":5944},{"className":5943},[],[5945],{"type":47,"value":5083},{"type":47,"value":5818},{"type":41,"tag":61,"props":5948,"children":5950},{"className":5949},[],[5951],{"type":47,"value":5091},{"type":47,"value":76},{"type":41,"tag":1185,"props":5954,"children":5956},{"id":5955},"network-and-tls-errors",[5957],{"type":47,"value":5958},"Network and TLS errors",{"type":41,"tag":4272,"props":5960,"children":5961},{},[5962,5976,6000,6029,6051],{"type":41,"tag":89,"props":5963,"children":5964},{},[5965,5974],{"type":41,"tag":95,"props":5966,"children":5967},{},[5968],{"type":41,"tag":61,"props":5969,"children":5971},{"className":5970},[],[5972],{"type":47,"value":5973},"no such host",{"type":47,"value":5975}," — DNS could not resolve the host. Check the URL \u002F Base URL.",{"type":41,"tag":89,"props":5977,"children":5978},{},[5979,5988,5989,5998],{"type":41,"tag":95,"props":5980,"children":5981},{},[5982],{"type":41,"tag":61,"props":5983,"children":5985},{"className":5984},[],[5986],{"type":47,"value":5987},"network is unreachable",{"type":47,"value":421},{"type":41,"tag":95,"props":5990,"children":5991},{},[5992],{"type":41,"tag":61,"props":5993,"children":5995},{"className":5994},[],[5996],{"type":47,"value":5997},"connection refused",{"type":47,"value":5999}," — The host is not reachable\nfrom Grafana; check firewalls and that the service is up.",{"type":41,"tag":89,"props":6001,"children":6002},{},[6003,6011,6012,6020,6022,6027],{"type":41,"tag":95,"props":6004,"children":6005},{},[6006],{"type":41,"tag":61,"props":6007,"children":6009},{"className":6008},[],[6010],{"type":47,"value":4441},{"type":47,"value":421},{"type":41,"tag":95,"props":6013,"children":6014},{},[6015],{"type":41,"tag":61,"props":6016,"children":6018},{"className":6017},[],[6019],{"type":47,"value":4448},{"type":47,"value":6021}," — The request exceeded the\nconfigured timeout. Increase ",{"type":41,"tag":95,"props":6023,"children":6024},{},[6025],{"type":47,"value":6026},"Network → Timeout (in seconds)",{"type":47,"value":6028}," or check upstream\nlatency.",{"type":41,"tag":89,"props":6030,"children":6031},{},[6032,6043,6045,6049],{"type":41,"tag":95,"props":6033,"children":6034},{},[6035,6041],{"type":41,"tag":61,"props":6036,"children":6038},{"className":6037},[],[6039],{"type":47,"value":6040},"socks connect",{"type":47,"value":6042}," errors",{"type":47,"value":6044}," — Check the proxy configuration on the ",{"type":41,"tag":95,"props":6046,"children":6047},{},[6048],{"type":47,"value":230},{"type":47,"value":6050}," page.",{"type":41,"tag":89,"props":6052,"children":6053},{},[6054,6059,6061,6065,6067,6071],{"type":41,"tag":95,"props":6055,"children":6056},{},[6057],{"type":47,"value":6058},"TLS \u002F certificate errors",{"type":47,"value":6060}," — Verify the CA cert, client cert\u002Fkey, and ",{"type":41,"tag":95,"props":6062,"children":6063},{},[6064],{"type":47,"value":4571},{"type":47,"value":6066},".\nAs a last resort (non-production), enable ",{"type":41,"tag":95,"props":6068,"children":6069},{},[6070],{"type":47,"value":4496},{"type":47,"value":76},{"type":41,"tag":1185,"props":6073,"children":6075},{"id":6074},"other",[6076],{"type":47,"value":6077},"Other",{"type":41,"tag":4272,"props":6079,"children":6080},{},[6081,6095,6122],{"type":41,"tag":89,"props":6082,"children":6083},{},[6084,6093],{"type":41,"tag":95,"props":6085,"children":6086},{},[6087],{"type":41,"tag":61,"props":6088,"children":6090},{"className":6089},[],[6091],{"type":47,"value":6092},"unsuccessful HTTP response code",{"type":47,"value":6094}," — The API returned a non-2xx status. Inspect the\nendpoint; optionally enable status-code handling for endpoints that return non-2xx on\nsuccess.",{"type":41,"tag":89,"props":6096,"children":6097},{},[6098,6107,6109,6114,6115,6120],{"type":41,"tag":95,"props":6099,"children":6100},{},[6101],{"type":41,"tag":61,"props":6102,"children":6104},{"className":6103},[],[6105],{"type":47,"value":6106},"unable to parse response body as JSON",{"type":47,"value":6108}," — The response is not the format the query\nexpects. Confirm the query ",{"type":41,"tag":95,"props":6110,"children":6111},{},[6112],{"type":47,"value":6113},"Type",{"type":47,"value":4750},{"type":41,"tag":95,"props":6116,"children":6117},{},[6118],{"type":47,"value":6119},"Parser",{"type":47,"value":6121}," matches the actual payload.",{"type":41,"tag":89,"props":6123,"children":6124},{},[6125,6130],{"type":41,"tag":95,"props":6126,"children":6127},{},[6128],{"type":47,"value":6129},"Provisioned changes don't appear",{"type":47,"value":6131}," — Provisioning is applied only when Grafana starts\nor when you reload provisioning. Restart Grafana (or trigger a provisioning reload)\nafter editing the YAML file.",{"type":41,"tag":78,"props":6133,"children":6135},{"id":6134},"references",[6136],{"type":47,"value":6137},"References",{"type":41,"tag":4272,"props":6139,"children":6140},{},[6141,6151,6161],{"type":41,"tag":89,"props":6142,"children":6143},{},[6144],{"type":41,"tag":197,"props":6145,"children":6148},{"href":6146,"rel":6147},"https:\u002F\u002Fgrafana.com\u002Fdocs\u002Fplugins\u002Fyesoreyeram-infinity-datasource\u002Flatest\u002Fconfigure\u002F",[3502],[6149],{"type":47,"value":6150},"Configure the Infinity data source",{"type":41,"tag":89,"props":6152,"children":6153},{},[6154],{"type":41,"tag":197,"props":6155,"children":6158},{"href":6156,"rel":6157},"https:\u002F\u002Fgrafana.com\u002Fdocs\u002Fgrafana\u002Flatest\u002Fadministration\u002Fdata-source-management\u002F",[3502],[6159],{"type":47,"value":6160},"Grafana data source management",{"type":41,"tag":89,"props":6162,"children":6163},{},[6164],{"type":41,"tag":197,"props":6165,"children":6168},{"href":6166,"rel":6167},"https:\u002F\u002Fgrafana.com\u002Fdocs\u002Fgrafana\u002Flatest\u002Fadministration\u002Fprovisioning\u002F#data-sources",[3502],[6169],{"type":47,"value":6170},"Provisioning data sources",{"type":41,"tag":78,"props":6172,"children":6174},{"id":6173},"see-also",[6175],{"type":47,"value":6176},"See also",{"type":41,"tag":4272,"props":6178,"children":6179},{},[6180],{"type":41,"tag":89,"props":6181,"children":6182},{},[6183,6189],{"type":41,"tag":61,"props":6184,"children":6186},{"className":6185},[],[6187],{"type":47,"value":6188},"querying-yesoreyeram-infinity-datasource",{"type":47,"value":6190}," — build queries, choose types\u002Fparsers\u002Fsources, and\nshape results into data frames.",{"type":41,"tag":6192,"props":6193,"children":6194},"style",{},[6195],{"type":47,"value":6196},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":6198,"total":572},[6199,6206],{"slug":4,"name":4,"fn":5,"description":6,"org":6200,"tags":6201,"stars":23,"repoUrl":24,"updatedAt":25},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[6202,6203,6204,6205],{"name":21,"slug":22,"type":15},{"name":18,"slug":19,"type":15},{"name":13,"slug":14,"type":15},{"name":9,"slug":8,"type":15},{"slug":6188,"name":6188,"fn":6207,"description":6208,"org":6209,"tags":6210,"stars":23,"repoUrl":24,"updatedAt":6224},"query data with Infinity datasource","Build queries with the Infinity data source — the query types (JSON, CSV, TSV, XML, GraphQL, HTML, UQL, GROQ, Google Sheets, Series, Transformations), the parsers (Frontend\u002Fsimple, Backend JSONata, JQ, UQL, GROQ) and which support alerting, the sources (URL, Inline, Reference, Azure Blob, Random walk), output formats (table, timeseries, logs, trace, node graph, dataframe), root selector and columns, computed columns\u002Ffilters\u002Fsummarize, pagination, and template variables. Use when a user asks how to query Infinity; how to fetch JSON\u002FCSV\u002FXML\u002FGraphQL\u002FHTML from a URL or inline; how to select rows and columns; how to transform data with UQL\u002FGROQ\u002FJSONata\u002FJQ; how to make a query work with alerting; how to paginate; or how to use variables in a query.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[6211,6214,6217,6218,6221],{"name":6212,"slug":6213,"type":15},"CSV","csv",{"name":6215,"slug":6216,"type":15},"Data Analysis","data-analysis",{"name":9,"slug":8,"type":15},{"name":6219,"slug":6220,"type":15},"GraphQL","graphql",{"name":6222,"slug":6223,"type":15},"JSON","json","2026-07-15T05:34:05.773947",{"items":6226,"total":6393},[6227,6247,6254,6262,6277,6293,6306,6321,6338,6353,6366,6381],{"slug":6228,"name":6228,"fn":6229,"description":6230,"org":6231,"tags":6232,"stars":6244,"repoUrl":6245,"updatedAt":6246},"faro-setup-web","instrument web apps with Grafana Faro","Instruments a web app with Grafana Faro Web SDK for frontend observability. Use when setting up error tracking, Web Vitals, session monitoring, or distributed tracing in a browser app.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[6233,6236,6239,6241],{"name":6234,"slug":6235,"type":15},"Distributed Tracing","distributed-tracing",{"name":6237,"slug":6238,"type":15},"Frontend","frontend",{"name":6240,"slug":1103,"type":15},"Monitoring",{"name":6242,"slug":6243,"type":15},"Observability","observability",1103,"https:\u002F\u002Fgithub.com\u002Fgrafana\u002Ffaro-web-sdk","2026-07-12T07:43:24.63314",{"slug":4,"name":4,"fn":5,"description":6,"org":6248,"tags":6249,"stars":23,"repoUrl":24,"updatedAt":25},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[6250,6251,6252,6253],{"name":21,"slug":22,"type":15},{"name":18,"slug":19,"type":15},{"name":13,"slug":14,"type":15},{"name":9,"slug":8,"type":15},{"slug":6188,"name":6188,"fn":6207,"description":6208,"org":6255,"tags":6256,"stars":23,"repoUrl":24,"updatedAt":6224},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[6257,6258,6259,6260,6261],{"name":6212,"slug":6213,"type":15},{"name":6215,"slug":6216,"type":15},{"name":9,"slug":8,"type":15},{"name":6219,"slug":6220,"type":15},{"name":6222,"slug":6223,"type":15},{"slug":6263,"name":6263,"fn":6264,"description":6265,"org":6266,"tags":6267,"stars":6274,"repoUrl":6275,"updatedAt":6276},"agento11y","manage Grafana Agent Observability resources","Inspects and manages Grafana Agent Observability resources via gcx: conversations, generations, evaluators, rules, scores, and templates. Use when the user wants to list or search conversations, inspect generations, manage evaluators (upsert, test, delete), set up evaluation rules, check scores, or browse evaluator templates. Trigger on phrases like \"list conversations\", \"search generations\", \"what did the agent do\", \"debug LLM conversation\", \"create evaluator\", \"set up evaluation rule\", \"test evaluator\", \"check scores\", \"evaluate generation quality\", or \"set up online evaluation\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[6268,6271,6272,6273],{"name":6269,"slug":6270,"type":15},"Agents","agents",{"name":9,"slug":8,"type":15},{"name":6240,"slug":1103,"type":15},{"name":6242,"slug":6243,"type":15},430,"https:\u002F\u002Fgithub.com\u002Fgrafana\u002Fgcx","2026-07-25T05:30:40.29622",{"slug":6278,"name":6278,"fn":6279,"description":6280,"org":6281,"tags":6282,"stars":6274,"repoUrl":6275,"updatedAt":6292},"agento11y-instrument","instrument LLM apps for agent observability","Sets up and instruments a developer's own LLM app or agent to send generations and agentic workflow to Grafana Agent Observability (the Agent Observability SDKs) — greenfield setup, fixing broken instrumentation, or filling gaps in existing instrumentation. Uses gcx for the parts a static prompt can't do: `gcx login` \u002F `gcx cloud stacks` to find the stack, and `gcx agento11y agents|conversations|generations` to VERIFY that data actually lands — so it iterates (instrument → run → verify → fix) until generations arrive, not blindly. Reads the app's code, detects language\u002Fframework, classifies instrumentation state (none \u002F partial \u002F broken), then runs a fixed gap checklist whose #1 item is the silent failure no other prompt catches: the SDK emits OTel spans\u002Fmetrics but never creates a TracerProvider\u002FMeterProvider, so without them all metrics go to a no-op and are lost. Also checks agent_version (required for per-version Performance charts), set_result completeness, SYNC vs STREAM, parent_generation_ids DAG links, and workflow-step coverage. Recommends changes citing file:line and, only with explicit confirmation, applies minimal diffs that don't change app behavior. Pulls SDK reference from agento11y's llms.txt rather than restating it, and hands off to `agento11y-test-starter` once data flows. It does NOT write test suites or set up tenant evaluations, rules, or guards — offline test suites are `agento11y-test-starter`, tenant eval rules + guards are `agento11y-prod-setup`; does NOT install coding-agent telemetry plugins (that is llms.txt \"Path A\"); does NOT mint or store credentials or invent endpoints. Trigger on phrases like \"instrument my app\", \"send my agent's traces to Grafana\", \"set up AI observability for my app\", \"my generations aren't showing up\", \"why is Performance empty\", \"add Agent Observability to my code\", \"fix my instrumentation\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[6283,6284,6285,6288,6291],{"name":6269,"slug":6270,"type":15},{"name":9,"slug":8,"type":15},{"name":6286,"slug":6287,"type":15},"Instrumentation","instrumentation",{"name":6289,"slug":6290,"type":15},"LLM","llm",{"name":6242,"slug":6243,"type":15},"2026-07-31T05:53:52.580237",{"slug":6294,"name":6294,"fn":6295,"description":6296,"org":6297,"tags":6298,"stars":6274,"repoUrl":6275,"updatedAt":6305},"agento11y-prod-setup","setup production evaluation for AI agents","Sets up production evaluation and guardrails for a DEPLOYED AI agent in Grafana Agent Observability, grounded in the agent's own code and its real ingested traffic. The judgment layer on top of the `agento11y` skill: it reads the agent's source (system prompt, tools, entrypoint) AND samples its live traffic via gcx, checks what evaluators\u002Frules\u002Fguards already exist, then recommends only what's missing — online eval rules (score live conversations for regressions) and guards (warn-first request-path policies that redact \u002F tool-filter and may later be promoted to deny). It drafts reviewable YAML and, only with explicit confirmation, applies via `gcx agento11y`. New guards are drafted in warn mode (safe on live traffic — warn records but never blocks). It DOES create stack-level objects — that is the point — but every write is confirmed. It never rewrites or redeploys the agent. Trigger on phrases like \"set up production evaluation\", \"my agent is in prod what should I evaluate\", \"catch quality regressions\", \"add guardrails to my agent\", \"redact PII from my agent\", \"block dangerous tools\", \"set up online evals and guards\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[6299,6300,6303,6304],{"name":6269,"slug":6270,"type":15},{"name":6301,"slug":6302,"type":15},"Evals","evals",{"name":9,"slug":8,"type":15},{"name":6242,"slug":6243,"type":15},"2026-07-31T05:53:53.576347",{"slug":6307,"name":6307,"fn":6308,"description":6309,"org":6310,"tags":6311,"stars":6274,"repoUrl":6275,"updatedAt":6320},"agento11y-test-starter","build and run agent test suites","Use early in an AI-agent project — before ship, before real traffic — to build a starter test suite for the agent and run it offline. Reads the agent's own code (system prompt, tools, task), writes a labeled draft suite of test cases (happy\u002Fedge\u002Fadversarial) grounded in real lines, and recommends how to score each case (the evaluators\u002Fjudges the offline runner uses). Assesses how runnable the agent is: for an easily-invoked agent it generates a runner stub (run_experiment.py) with two holes to fill and can optionally run it (only with permission, only against the endpoint the developer configured); for agents needing a harness or full runtime it points to the existing eval infra. It runs OFFLINE and never creates tenant-level evaluators, rules, or guards — that is `agento11y-prod-setup`, for a deployed agent with real traffic. Trigger on phrases like \"how do I test my agent before shipping\", \"write test cases for my agent\", \"set up tests for my agent\", \"check my agent before prod\", \"I have no traffic yet, how do I evaluate it\", \"test my agent offline\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[6312,6313,6314,6317],{"name":6269,"slug":6270,"type":15},{"name":9,"slug":8,"type":15},{"name":6315,"slug":6316,"type":15},"QA","qa",{"name":6318,"slug":6319,"type":15},"Testing","testing","2026-07-31T05:53:51.62785",{"slug":6322,"name":6322,"fn":6323,"description":6324,"org":6325,"tags":6326,"stars":6274,"repoUrl":6275,"updatedAt":6337},"create-dashboard","create Grafana dashboards with gcx","Designs and creates Grafana dashboards with gcx, using `gcx dashboards snapshot` as a visual feedback loop. Use when the user wants to create a new Grafana dashboard, add panels, variables, or annotations to an existing dashboard, design dashboard panels, variables, queries, or layout, or make a material visual redesign. Triggers on \"create dashboard\", \"new dashboard\", \"build dashboard\", \"dashboard for \u003Cservice>\", \"add panels\", \"add variable\", \"add annotation\", \"improve this dashboard\", or \"iterate on a dashboard\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[6327,6330,6333,6336],{"name":6328,"slug":6329,"type":15},"Dashboards","dashboards",{"name":6331,"slug":6332,"type":15},"Data Visualization","data-visualization",{"name":6334,"slug":6335,"type":15},"Design","design",{"name":9,"slug":8,"type":15},"2026-07-25T05:30:46.289717",{"slug":6339,"name":6339,"fn":6340,"description":6341,"org":6342,"tags":6343,"stars":6274,"repoUrl":6275,"updatedAt":6352},"debug-with-grafana","investigate application issues with Grafana","Structured workflow for investigating application problems with Grafana observability data (metrics, logs, traces) via gcx. Covers live firefighting AND retrospective incident analysis: incident triage, root-cause analysis, blast-radius checks (did an incident spill into other services), verifying whether a deployment or rollout triggered an incident, finding which service, endpoint, or path owns the most errors or slow requests, checking whether retries or queue backlogs piled up, and quantifying error or latency shares over a time window. Trigger on: \"my API is returning 500 errors\", \"latency is spiking\", \"investigate why requests are failing\", \"triage the incident\", \"blast radius\", \"root cause\", \"did the rollout cause it\", \"which endpoint owns the most 5xx\", \"did retries pile up\", or any request to analyse an earlier incident window using telemetry. For authoring dashboards use create-dashboard; for dashboard inventory use manage-dashboards.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[6344,6347,6348,6351],{"name":6345,"slug":6346,"type":15},"Debugging","debugging",{"name":9,"slug":8,"type":15},{"name":6349,"slug":6350,"type":15},"Incident Response","incident-response",{"name":6242,"slug":6243,"type":15},"2026-07-18T05:11:10.445428",{"slug":6354,"name":6354,"fn":6355,"description":6356,"org":6357,"tags":6358,"stars":6274,"repoUrl":6275,"updatedAt":6365},"diagnose-entity-graph","diagnose Grafana Entity Graph issues","Diagnose Entity Graph problems: missing entities, missing edges, disconnected clusters, or filtering issues. Use when the user reports that Entity Graph doesn't look right, services are missing, edges aren't appearing, or environments can't be filtered. Triggers for: \"entity graph is empty\", \"services missing from entity graph\", \"no edges in entity graph\", \"disconnected services\", \"can't filter entity graph\", \"entity graph not working\", \"diagnose entity graph\", \"debug knowledge graph\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[6359,6360,6361,6364],{"name":6345,"slug":6346,"type":15},{"name":9,"slug":8,"type":15},{"name":6362,"slug":6363,"type":15},"Graph Analysis","graph-analysis",{"name":6242,"slug":6243,"type":15},"2026-07-25T05:30:39.380934",{"slug":6367,"name":6367,"fn":6368,"description":6369,"org":6370,"tags":6371,"stars":6274,"repoUrl":6275,"updatedAt":6380},"gcx","manage Grafana Cloud resources via gcx","Manages Grafana Cloud resources via the gcx CLI. Trigger when the user wants to inspect, create, update, delete, query, or automate any Grafana resource - dashboards, datasources, alerts, SLOs, synthetic checks, oncall, incidents, fleet, k6, knowledge graph, or adaptive telemetry.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[6372,6375,6376,6377],{"name":6373,"slug":6374,"type":15},"CLI","cli",{"name":9,"slug":8,"type":15},{"name":6240,"slug":1103,"type":15},{"name":6378,"slug":6379,"type":15},"Operations","operations","2026-07-31T05:53:50.587304",{"slug":6382,"name":6382,"fn":6383,"description":6384,"org":6385,"tags":6386,"stars":6274,"repoUrl":6275,"updatedAt":6392},"gcx-demo","present gcx demo tours","Run a narrated, read-only demo tour of gcx for customer or colleague presentations. Showcases the breadth of gcx across every Grafana Cloud product area — resources, datasources, metrics, logs, traces, SLOs, alerts, synthetic monitoring, IRM, k6, fleet, and more. All commands are strictly read-only. Trigger when the user says \"demo gcx\", \"show off gcx\", \"customer demo\", \"gcx tour\", or \"\u002Fgcx-demo\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[6387,6388,6389],{"name":6373,"slug":6374,"type":15},{"name":9,"slug":8,"type":15},{"name":6390,"slug":6391,"type":15},"Presentations","presentations","2026-07-25T05:30:45.282458",80]