[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-grafana-querying-yesoreyeram-infinity-datasource":3,"mdc-pt1bp3-key":38,"related-repo-grafana-querying-yesoreyeram-infinity-datasource":1582,"related-org-grafana-querying-yesoreyeram-infinity-datasource":1609},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":26,"repoUrl":27,"updatedAt":28,"license":29,"forks":30,"topics":31,"repo":33,"sourceUrl":36,"mdContent":37},"querying-yesoreyeram-infinity-datasource","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},"grafana","Grafana","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fgrafana.jpg",[12,16,19,22,25],{"name":13,"slug":14,"type":15},"CSV","csv","tag",{"name":17,"slug":18,"type":15},"GraphQL","graphql",{"name":20,"slug":21,"type":15},"JSON","json",{"name":23,"slug":24,"type":15},"Data Analysis","data-analysis",{"name":9,"slug":8,"type":15},1056,"https:\u002F\u002Fgithub.com\u002Fgrafana\u002Fgrafana-infinity-datasource","2026-07-15T05:34:05.773947",null,148,[32],"group-datasources",{"repoUrl":27,"stars":26,"forks":30,"topics":34,"description":35},[32],"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\u002Fquerying-yesoreyeram-infinity-datasource","---\nname: querying-yesoreyeram-infinity-datasource\ndescription: 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.\n---\n\n# Querying the Infinity data source\n\nThe Infinity data source retrieves data from HTTP endpoints (and other sources) and\nturns it into Grafana data frames. Every query is defined by four core choices in the\nquery editor: a **Type** (the data format), a **Parser** (how the data is processed), a\n**Source** (where the data comes from), and a **Format** (the output shape).\n\n## The four core choices\n\n| Choice      | Options                                                                                              |\n| ----------- | ---------------------------------------------------------------------------------------------------- |\n| **Type**    | JSON, CSV, TSV, XML, GraphQL, HTML, UQL, GROQ, Google Sheets, Series (mock), Transformations.        |\n| **Parser**  | Frontend (simple), Backend (JSONata), Backend (JQ), UQL, GROQ — availability depends on the type.    |\n| **Source**  | URL, Inline, Reference, Azure Blob, Random walk (for Series).                                        |\n| **Format**  | Table, Time series, Logs, Trace, Node graph (nodes\u002Fedges), Data frame, As-is.                        |\n\n## Query types\n\n| Type               | Use it to…                                                                       |\n| ------------------ | -------------------------------------------------------------------------------- |\n| **JSON**           | Query JSON APIs (the most common type).                                          |\n| **CSV \u002F TSV**      | Query comma\u002Ftab-separated data, with options for delimiter, headers, comments.   |\n| **XML**            | Query XML responses.                                                             |\n| **GraphQL**        | Send a GraphQL query and parse the JSON response.                                |\n| **HTML**           | Scrape data from HTML pages.                                                      |\n| **UQL**            | Transform any response with Unstructured Query Language.                          |\n| **GROQ**           | Transform any response with GROQ.                                                 |\n| **Google Sheets**  | Read a spreadsheet by ID, sheet name, and range.                                 |\n| **Series**         | Generate mock series (random walk or expression) without a backend API.          |\n| **Transformations**| Apply limit, filter, computed column, and summarize steps to other query results.|\n\n## Parsers (and alerting)\n\nThe **Parser** controls where and how the response is processed. This determines\n**alerting** support, because alerting evaluates queries on the backend.\n\n| Parser                 | Runs in  | Alerting | Best for                                      |\n| ---------------------- | -------- | -------- | --------------------------------------------- |\n| **Backend (JSONata)**  | Backend  | Yes      | Complex transformations; alerting (default).  |\n| **Backend (JQ)**       | Backend  | Yes      | JQ-style expressions; alerting.               |\n| **UQL**                | Frontend | No       | SQL-like queries, pivoting, reshaping.        |\n| **GROQ**               | Frontend | No       | GROQ expressions.                             |\n| **Frontend (simple)**  | Frontend | No       | Simple selector + column mapping.             |\n\n**To use a query in alerts, recording rules, or expressions, choose a backend parser\n(JSONata or JQ).** Frontend, UQL, and GROQ parsers run in the browser and aren't\navailable to alerting.\n\n## Sources\n\nPick where the data comes from:\n\n- **URL** — Fetch from an HTTP endpoint. Set the **Method** (`GET` or `POST`; `PUT`,\n  `PATCH`, and `DELETE` require **Allow dangerous HTTP methods** in the data source\n  config). Configure **Headers**, **Request params**, and (for POST) a request **Body**\n  (none, form-data, x-www-form-urlencoded, raw, or GraphQL).\n- **Inline** — Paste the data directly into the editor (useful for testing or static\n  data).\n- **Reference** — Use a named dataset defined in the data source's reference data.\n- **Azure Blob** — Read a blob by container and blob name (requires Azure Blob auth in\n  the data source config).\n- **Random walk** — For the **Series** type only; generates mock data.\n\n### Use variables and macros in URLs\n\nURLs support Grafana template variables and time macros, for example:\n\n```\nhttps:\u002F\u002Fapi.example.com\u002Fdata?from=${__timeFrom}&to=${__timeTo}\n```\n\nSee [URL configuration](https:\u002F\u002Fgrafana.com\u002Fdocs\u002Fplugins\u002Fyesoreyeram-infinity-datasource\u002Flatest\u002Fadvanced-features\u002Furl\u002F)\nand [macros](https:\u002F\u002Fgrafana.com\u002Fdocs\u002Fplugins\u002Fyesoreyeram-infinity-datasource\u002Flatest\u002Fquery\u002Fmacros\u002F).\n\n## Output format\n\nSet **Format** to match your panel:\n\n- **Table** — Tabular data (default for most queries).\n- **Time series** — Data with a time field for time-series panels.\n- **Logs** — Log lines for the Logs panel \u002F Explore.\n- **Trace** — Trace data.\n- **Node graph (nodes \u002F edges)** — Two queries that together build a node graph.\n- **Data frame** — Pass-through data frame.\n- **As-is** — Return the response with minimal processing.\n\n## Selecting rows and columns\n\nFor JSON\u002FCSV\u002FXML\u002FGraphQL\u002FHTML, the **Parsing options & Result fields** section extracts\nthe data:\n\n- **Rows \u002F Root** (root selector) — A selector that returns the array of elements to\n  turn into rows. For JSON this is a path into the response; leave it empty when the\n  root is already an array.\n- **Columns** — Click **Add Columns** to define each output field:\n  - **Selector** — Path to the field within each row.\n  - **Title** — Display name for the column.\n  - **Type** — String, Number, Time, Time (UNIX ms), Time (UNIX s), or Boolean. Use a\n    time type for the field your time-series panel should use as time.\n\nCSV\u002FTSV add options such as **delimiter**, skip empty lines, skip lines with errors,\nrelax column count, header columns, and comment character.\n\n## Computed columns, filters, and summarize (backend parsers)\n\nWhen using a **backend** parser (JSONata or JQ), the **Computed columns, Filter, Group\nby** section adds transformations:\n\n| Feature              | Description                                              | Example          |\n| -------------------- | -------------------------------------------------------- | ---------------- |\n| **Computed Columns** | Create a new field from an expression.                   | `price * qty`    |\n| **Filter**           | Keep rows matching an expression.                        | `age >= 18`      |\n| **Summarize**        | Aggregate with functions like `sum()`, `count()`, `mean()`. | `sum(amount)` |\n| **Summarize By**     | Group the aggregation by a field.                        | `country`        |\n| **Summarize Alias**  | Name for the summarized result column.                   | `total`          |\n\nSee [JSONata backend parser](https:\u002F\u002Fgrafana.com\u002Fdocs\u002Fplugins\u002Fyesoreyeram-infinity-datasource\u002Flatest\u002Fquery\u002Fbackend\u002F)\nand [JQ backend parser](https:\u002F\u002Fgrafana.com\u002Fdocs\u002Fplugins\u002Fyesoreyeram-infinity-datasource\u002Flatest\u002Fquery\u002Fjq-backend\u002F).\n\n## Filters\n\nBeyond backend expressions, you can add field-level **filters** that keep rows where a\nfield matches an operator and value. See\n[Filters](https:\u002F\u002Fgrafana.com\u002Fdocs\u002Fplugins\u002Fyesoreyeram-infinity-datasource\u002Flatest\u002Fquery\u002Ffilters\u002F).\n\n## Pagination\n\nFor paged APIs (backend parsers), configure **pagination** so Infinity fetches multiple\npages automatically. Supported modes:\n\n- **None** — Single request (default).\n- **Offset** — Increment an offset parameter.\n- **Page** — Increment a page-number parameter.\n- **Cursor** — Follow a cursor value extracted from each response.\n- **List** — Iterate a fixed list of values.\n\nEach mode lets you set the parameter names, where they're sent (query, header, body, or\nURL replace), and a **max pages** limit.\n\n## UQL and GROQ\n\nFor advanced reshaping, set the **Type** (or parser) to **UQL** or **GROQ** and write an\nexpression that transforms the response:\n\n- **UQL** — SQL-like commands for parsing, projecting, pivoting, and summarizing. See\n  [UQL](https:\u002F\u002Fgrafana.com\u002Fdocs\u002Fplugins\u002Fyesoreyeram-infinity-datasource\u002Flatest\u002Fquery\u002Fuql\u002F).\n- **GROQ** — GROQ query expressions. See\n  [GROQ](https:\u002F\u002Fgrafana.com\u002Fdocs\u002Fplugins\u002Fyesoreyeram-infinity-datasource\u002Flatest\u002Fquery\u002Fgroq\u002F).\n\n## Template variables\n\nInfinity queries support Grafana template variables and time macros (for example\n`${__timeFrom}`, `${__timeTo}`, and dashboard variables like `$region`) in URLs,\nheaders, params, bodies, and selectors. You can also create Infinity-based **variables**\nthat query an API for dropdown values. See\n[Template variables](https:\u002F\u002Fgrafana.com\u002Fdocs\u002Fplugins\u002Fyesoreyeram-infinity-datasource\u002Flatest\u002Fvariables\u002Ftemplate-variables\u002F).\n\n## Tips and troubleshooting\n\n- **My alert can't use this query**: Switch the **Parser** to a backend parser (JSONata\n  or JQ). UQL, GROQ, and Frontend parsers run in the browser and aren't available to\n  alerting.\n- **Query is blocked \u002F \"host not allowed\"**: When the data source uses auth, custom\n  headers, or TLS, add the target host to **Allowed hosts** in the data source config.\n- **No rows returned**: Check the **Rows \u002F Root** selector — it must point to the array\n  of elements. Leave it empty if the root response is already an array.\n- **Wrong time axis**: Set the time field's column **Type** to a time type (Time, Time\n  (UNIX ms), or Time (UNIX s)) and set **Format** to **Time series**.\n- **`PUT` \u002F `PATCH` \u002F `DELETE` missing**: Enable **Allow dangerous HTTP methods** in the\n  data source configuration.\n- **Only some pages of data appear**: Configure **pagination** (backend parsers) and\n  raise the **max pages** limit if needed.\n\n## References\n\n- [Query editor](https:\u002F\u002Fgrafana.com\u002Fdocs\u002Fplugins\u002Fyesoreyeram-infinity-datasource\u002Flatest\u002Fquery\u002F)\n- [Data formats (JSON, CSV, XML, GraphQL, HTML, Azure Blob)](https:\u002F\u002Fgrafana.com\u002Fdocs\u002Fplugins\u002Fyesoreyeram-infinity-datasource\u002Flatest\u002Fdata-formats\u002F)\n- [Backend (JSONata) parser](https:\u002F\u002Fgrafana.com\u002Fdocs\u002Fplugins\u002Fyesoreyeram-infinity-datasource\u002Flatest\u002Fquery\u002Fbackend\u002F)\n- [UQL](https:\u002F\u002Fgrafana.com\u002Fdocs\u002Fplugins\u002Fyesoreyeram-infinity-datasource\u002Flatest\u002Fquery\u002Fuql\u002F) ·\n  [GROQ](https:\u002F\u002Fgrafana.com\u002Fdocs\u002Fplugins\u002Fyesoreyeram-infinity-datasource\u002Flatest\u002Fquery\u002Fgroq\u002F)\n\n## See also\n\n- `configuring-yesoreyeram-infinity-datasource` — set up the data source, authentication, allowed\n  hosts, TLS, network settings, the health check, and provisioning.\n",{"data":39,"body":40},{"name":4,"description":6},{"type":41,"children":42},"root",[43,52,87,94,182,188,367,373,391,544,554,560,565,702,709,714,726,751,757,768,841,847,859,921,933,939,958,1131,1151,1157,1175,1181,1192,1245,1257,1263,1285,1320,1326,1368,1374,1509,1515,1562,1568],{"type":44,"tag":45,"props":46,"children":48},"element","h1",{"id":47},"querying-the-infinity-data-source",[49],{"type":50,"value":51},"text","Querying the Infinity data source",{"type":44,"tag":53,"props":54,"children":55},"p",{},[56,58,64,66,71,73,78,80,85],{"type":50,"value":57},"The Infinity data source retrieves data from HTTP endpoints (and other sources) and\nturns it into Grafana data frames. Every query is defined by four core choices in the\nquery editor: a ",{"type":44,"tag":59,"props":60,"children":61},"strong",{},[62],{"type":50,"value":63},"Type",{"type":50,"value":65}," (the data format), a ",{"type":44,"tag":59,"props":67,"children":68},{},[69],{"type":50,"value":70},"Parser",{"type":50,"value":72}," (how the data is processed), a\n",{"type":44,"tag":59,"props":74,"children":75},{},[76],{"type":50,"value":77},"Source",{"type":50,"value":79}," (where the data comes from), and a ",{"type":44,"tag":59,"props":81,"children":82},{},[83],{"type":50,"value":84},"Format",{"type":50,"value":86}," (the output shape).",{"type":44,"tag":88,"props":89,"children":91},"h2",{"id":90},"the-four-core-choices",[92],{"type":50,"value":93},"The four core choices",{"type":44,"tag":95,"props":96,"children":97},"table",{},[98,117],{"type":44,"tag":99,"props":100,"children":101},"thead",{},[102],{"type":44,"tag":103,"props":104,"children":105},"tr",{},[106,112],{"type":44,"tag":107,"props":108,"children":109},"th",{},[110],{"type":50,"value":111},"Choice",{"type":44,"tag":107,"props":113,"children":114},{},[115],{"type":50,"value":116},"Options",{"type":44,"tag":118,"props":119,"children":120},"tbody",{},[121,137,152,167],{"type":44,"tag":103,"props":122,"children":123},{},[124,132],{"type":44,"tag":125,"props":126,"children":127},"td",{},[128],{"type":44,"tag":59,"props":129,"children":130},{},[131],{"type":50,"value":63},{"type":44,"tag":125,"props":133,"children":134},{},[135],{"type":50,"value":136},"JSON, CSV, TSV, XML, GraphQL, HTML, UQL, GROQ, Google Sheets, Series (mock), Transformations.",{"type":44,"tag":103,"props":138,"children":139},{},[140,147],{"type":44,"tag":125,"props":141,"children":142},{},[143],{"type":44,"tag":59,"props":144,"children":145},{},[146],{"type":50,"value":70},{"type":44,"tag":125,"props":148,"children":149},{},[150],{"type":50,"value":151},"Frontend (simple), Backend (JSONata), Backend (JQ), UQL, GROQ — availability depends on the type.",{"type":44,"tag":103,"props":153,"children":154},{},[155,162],{"type":44,"tag":125,"props":156,"children":157},{},[158],{"type":44,"tag":59,"props":159,"children":160},{},[161],{"type":50,"value":77},{"type":44,"tag":125,"props":163,"children":164},{},[165],{"type":50,"value":166},"URL, Inline, Reference, Azure Blob, Random walk (for Series).",{"type":44,"tag":103,"props":168,"children":169},{},[170,177],{"type":44,"tag":125,"props":171,"children":172},{},[173],{"type":44,"tag":59,"props":174,"children":175},{},[176],{"type":50,"value":84},{"type":44,"tag":125,"props":178,"children":179},{},[180],{"type":50,"value":181},"Table, Time series, Logs, Trace, Node graph (nodes\u002Fedges), Data frame, As-is.",{"type":44,"tag":88,"props":183,"children":185},{"id":184},"query-types",[186],{"type":50,"value":187},"Query types",{"type":44,"tag":95,"props":189,"children":190},{},[191,206],{"type":44,"tag":99,"props":192,"children":193},{},[194],{"type":44,"tag":103,"props":195,"children":196},{},[197,201],{"type":44,"tag":107,"props":198,"children":199},{},[200],{"type":50,"value":63},{"type":44,"tag":107,"props":202,"children":203},{},[204],{"type":50,"value":205},"Use it to…",{"type":44,"tag":118,"props":207,"children":208},{},[209,224,240,256,271,287,303,319,335,351],{"type":44,"tag":103,"props":210,"children":211},{},[212,219],{"type":44,"tag":125,"props":213,"children":214},{},[215],{"type":44,"tag":59,"props":216,"children":217},{},[218],{"type":50,"value":20},{"type":44,"tag":125,"props":220,"children":221},{},[222],{"type":50,"value":223},"Query JSON APIs (the most common type).",{"type":44,"tag":103,"props":225,"children":226},{},[227,235],{"type":44,"tag":125,"props":228,"children":229},{},[230],{"type":44,"tag":59,"props":231,"children":232},{},[233],{"type":50,"value":234},"CSV \u002F TSV",{"type":44,"tag":125,"props":236,"children":237},{},[238],{"type":50,"value":239},"Query comma\u002Ftab-separated data, with options for delimiter, headers, comments.",{"type":44,"tag":103,"props":241,"children":242},{},[243,251],{"type":44,"tag":125,"props":244,"children":245},{},[246],{"type":44,"tag":59,"props":247,"children":248},{},[249],{"type":50,"value":250},"XML",{"type":44,"tag":125,"props":252,"children":253},{},[254],{"type":50,"value":255},"Query XML responses.",{"type":44,"tag":103,"props":257,"children":258},{},[259,266],{"type":44,"tag":125,"props":260,"children":261},{},[262],{"type":44,"tag":59,"props":263,"children":264},{},[265],{"type":50,"value":17},{"type":44,"tag":125,"props":267,"children":268},{},[269],{"type":50,"value":270},"Send a GraphQL query and parse the JSON response.",{"type":44,"tag":103,"props":272,"children":273},{},[274,282],{"type":44,"tag":125,"props":275,"children":276},{},[277],{"type":44,"tag":59,"props":278,"children":279},{},[280],{"type":50,"value":281},"HTML",{"type":44,"tag":125,"props":283,"children":284},{},[285],{"type":50,"value":286},"Scrape data from HTML pages.",{"type":44,"tag":103,"props":288,"children":289},{},[290,298],{"type":44,"tag":125,"props":291,"children":292},{},[293],{"type":44,"tag":59,"props":294,"children":295},{},[296],{"type":50,"value":297},"UQL",{"type":44,"tag":125,"props":299,"children":300},{},[301],{"type":50,"value":302},"Transform any response with Unstructured Query Language.",{"type":44,"tag":103,"props":304,"children":305},{},[306,314],{"type":44,"tag":125,"props":307,"children":308},{},[309],{"type":44,"tag":59,"props":310,"children":311},{},[312],{"type":50,"value":313},"GROQ",{"type":44,"tag":125,"props":315,"children":316},{},[317],{"type":50,"value":318},"Transform any response with GROQ.",{"type":44,"tag":103,"props":320,"children":321},{},[322,330],{"type":44,"tag":125,"props":323,"children":324},{},[325],{"type":44,"tag":59,"props":326,"children":327},{},[328],{"type":50,"value":329},"Google Sheets",{"type":44,"tag":125,"props":331,"children":332},{},[333],{"type":50,"value":334},"Read a spreadsheet by ID, sheet name, and range.",{"type":44,"tag":103,"props":336,"children":337},{},[338,346],{"type":44,"tag":125,"props":339,"children":340},{},[341],{"type":44,"tag":59,"props":342,"children":343},{},[344],{"type":50,"value":345},"Series",{"type":44,"tag":125,"props":347,"children":348},{},[349],{"type":50,"value":350},"Generate mock series (random walk or expression) without a backend API.",{"type":44,"tag":103,"props":352,"children":353},{},[354,362],{"type":44,"tag":125,"props":355,"children":356},{},[357],{"type":44,"tag":59,"props":358,"children":359},{},[360],{"type":50,"value":361},"Transformations",{"type":44,"tag":125,"props":363,"children":364},{},[365],{"type":50,"value":366},"Apply limit, filter, computed column, and summarize steps to other query results.",{"type":44,"tag":88,"props":368,"children":370},{"id":369},"parsers-and-alerting",[371],{"type":50,"value":372},"Parsers (and alerting)",{"type":44,"tag":53,"props":374,"children":375},{},[376,378,382,384,389],{"type":50,"value":377},"The ",{"type":44,"tag":59,"props":379,"children":380},{},[381],{"type":50,"value":70},{"type":50,"value":383}," controls where and how the response is processed. This determines\n",{"type":44,"tag":59,"props":385,"children":386},{},[387],{"type":50,"value":388},"alerting",{"type":50,"value":390}," support, because alerting evaluates queries on the backend.",{"type":44,"tag":95,"props":392,"children":393},{},[394,419],{"type":44,"tag":99,"props":395,"children":396},{},[397],{"type":44,"tag":103,"props":398,"children":399},{},[400,404,409,414],{"type":44,"tag":107,"props":401,"children":402},{},[403],{"type":50,"value":70},{"type":44,"tag":107,"props":405,"children":406},{},[407],{"type":50,"value":408},"Runs in",{"type":44,"tag":107,"props":410,"children":411},{},[412],{"type":50,"value":413},"Alerting",{"type":44,"tag":107,"props":415,"children":416},{},[417],{"type":50,"value":418},"Best for",{"type":44,"tag":118,"props":420,"children":421},{},[422,448,472,497,520],{"type":44,"tag":103,"props":423,"children":424},{},[425,433,438,443],{"type":44,"tag":125,"props":426,"children":427},{},[428],{"type":44,"tag":59,"props":429,"children":430},{},[431],{"type":50,"value":432},"Backend (JSONata)",{"type":44,"tag":125,"props":434,"children":435},{},[436],{"type":50,"value":437},"Backend",{"type":44,"tag":125,"props":439,"children":440},{},[441],{"type":50,"value":442},"Yes",{"type":44,"tag":125,"props":444,"children":445},{},[446],{"type":50,"value":447},"Complex transformations; alerting (default).",{"type":44,"tag":103,"props":449,"children":450},{},[451,459,463,467],{"type":44,"tag":125,"props":452,"children":453},{},[454],{"type":44,"tag":59,"props":455,"children":456},{},[457],{"type":50,"value":458},"Backend (JQ)",{"type":44,"tag":125,"props":460,"children":461},{},[462],{"type":50,"value":437},{"type":44,"tag":125,"props":464,"children":465},{},[466],{"type":50,"value":442},{"type":44,"tag":125,"props":468,"children":469},{},[470],{"type":50,"value":471},"JQ-style expressions; alerting.",{"type":44,"tag":103,"props":473,"children":474},{},[475,482,487,492],{"type":44,"tag":125,"props":476,"children":477},{},[478],{"type":44,"tag":59,"props":479,"children":480},{},[481],{"type":50,"value":297},{"type":44,"tag":125,"props":483,"children":484},{},[485],{"type":50,"value":486},"Frontend",{"type":44,"tag":125,"props":488,"children":489},{},[490],{"type":50,"value":491},"No",{"type":44,"tag":125,"props":493,"children":494},{},[495],{"type":50,"value":496},"SQL-like queries, pivoting, reshaping.",{"type":44,"tag":103,"props":498,"children":499},{},[500,507,511,515],{"type":44,"tag":125,"props":501,"children":502},{},[503],{"type":44,"tag":59,"props":504,"children":505},{},[506],{"type":50,"value":313},{"type":44,"tag":125,"props":508,"children":509},{},[510],{"type":50,"value":486},{"type":44,"tag":125,"props":512,"children":513},{},[514],{"type":50,"value":491},{"type":44,"tag":125,"props":516,"children":517},{},[518],{"type":50,"value":519},"GROQ expressions.",{"type":44,"tag":103,"props":521,"children":522},{},[523,531,535,539],{"type":44,"tag":125,"props":524,"children":525},{},[526],{"type":44,"tag":59,"props":527,"children":528},{},[529],{"type":50,"value":530},"Frontend (simple)",{"type":44,"tag":125,"props":532,"children":533},{},[534],{"type":50,"value":486},{"type":44,"tag":125,"props":536,"children":537},{},[538],{"type":50,"value":491},{"type":44,"tag":125,"props":540,"children":541},{},[542],{"type":50,"value":543},"Simple selector + column mapping.",{"type":44,"tag":53,"props":545,"children":546},{},[547,552],{"type":44,"tag":59,"props":548,"children":549},{},[550],{"type":50,"value":551},"To use a query in alerts, recording rules, or expressions, choose a backend parser\n(JSONata or JQ).",{"type":50,"value":553}," Frontend, UQL, and GROQ parsers run in the browser and aren't\navailable to alerting.",{"type":44,"tag":88,"props":555,"children":557},{"id":556},"sources",[558],{"type":50,"value":559},"Sources",{"type":44,"tag":53,"props":561,"children":562},{},[563],{"type":50,"value":564},"Pick where the data comes from:",{"type":44,"tag":566,"props":567,"children":568},"ul",{},[569,656,666,676,686],{"type":44,"tag":570,"props":571,"children":572},"li",{},[573,578,580,585,587,594,596,602,604,610,612,618,620,626,628,633,635,640,642,647,649,654],{"type":44,"tag":59,"props":574,"children":575},{},[576],{"type":50,"value":577},"URL",{"type":50,"value":579}," — Fetch from an HTTP endpoint. Set the ",{"type":44,"tag":59,"props":581,"children":582},{},[583],{"type":50,"value":584},"Method",{"type":50,"value":586}," (",{"type":44,"tag":588,"props":589,"children":591},"code",{"className":590},[],[592],{"type":50,"value":593},"GET",{"type":50,"value":595}," or ",{"type":44,"tag":588,"props":597,"children":599},{"className":598},[],[600],{"type":50,"value":601},"POST",{"type":50,"value":603},"; ",{"type":44,"tag":588,"props":605,"children":607},{"className":606},[],[608],{"type":50,"value":609},"PUT",{"type":50,"value":611},",\n",{"type":44,"tag":588,"props":613,"children":615},{"className":614},[],[616],{"type":50,"value":617},"PATCH",{"type":50,"value":619},", and ",{"type":44,"tag":588,"props":621,"children":623},{"className":622},[],[624],{"type":50,"value":625},"DELETE",{"type":50,"value":627}," require ",{"type":44,"tag":59,"props":629,"children":630},{},[631],{"type":50,"value":632},"Allow dangerous HTTP methods",{"type":50,"value":634}," in the data source\nconfig). Configure ",{"type":44,"tag":59,"props":636,"children":637},{},[638],{"type":50,"value":639},"Headers",{"type":50,"value":641},", ",{"type":44,"tag":59,"props":643,"children":644},{},[645],{"type":50,"value":646},"Request params",{"type":50,"value":648},", and (for POST) a request ",{"type":44,"tag":59,"props":650,"children":651},{},[652],{"type":50,"value":653},"Body",{"type":50,"value":655},"\n(none, form-data, x-www-form-urlencoded, raw, or GraphQL).",{"type":44,"tag":570,"props":657,"children":658},{},[659,664],{"type":44,"tag":59,"props":660,"children":661},{},[662],{"type":50,"value":663},"Inline",{"type":50,"value":665}," — Paste the data directly into the editor (useful for testing or static\ndata).",{"type":44,"tag":570,"props":667,"children":668},{},[669,674],{"type":44,"tag":59,"props":670,"children":671},{},[672],{"type":50,"value":673},"Reference",{"type":50,"value":675}," — Use a named dataset defined in the data source's reference data.",{"type":44,"tag":570,"props":677,"children":678},{},[679,684],{"type":44,"tag":59,"props":680,"children":681},{},[682],{"type":50,"value":683},"Azure Blob",{"type":50,"value":685}," — Read a blob by container and blob name (requires Azure Blob auth in\nthe data source config).",{"type":44,"tag":570,"props":687,"children":688},{},[689,694,696,700],{"type":44,"tag":59,"props":690,"children":691},{},[692],{"type":50,"value":693},"Random walk",{"type":50,"value":695}," — For the ",{"type":44,"tag":59,"props":697,"children":698},{},[699],{"type":50,"value":345},{"type":50,"value":701}," type only; generates mock data.",{"type":44,"tag":703,"props":704,"children":706},"h3",{"id":705},"use-variables-and-macros-in-urls",[707],{"type":50,"value":708},"Use variables and macros in URLs",{"type":44,"tag":53,"props":710,"children":711},{},[712],{"type":50,"value":713},"URLs support Grafana template variables and time macros, for example:",{"type":44,"tag":715,"props":716,"children":720},"pre",{"className":717,"code":719,"language":50},[718],"language-text","https:\u002F\u002Fapi.example.com\u002Fdata?from=${__timeFrom}&to=${__timeTo}\n",[721],{"type":44,"tag":588,"props":722,"children":724},{"__ignoreMap":723},"",[725],{"type":50,"value":719},{"type":44,"tag":53,"props":727,"children":728},{},[729,731,740,742,749],{"type":50,"value":730},"See ",{"type":44,"tag":732,"props":733,"children":737},"a",{"href":734,"rel":735},"https:\u002F\u002Fgrafana.com\u002Fdocs\u002Fplugins\u002Fyesoreyeram-infinity-datasource\u002Flatest\u002Fadvanced-features\u002Furl\u002F",[736],"nofollow",[738],{"type":50,"value":739},"URL configuration",{"type":50,"value":741},"\nand ",{"type":44,"tag":732,"props":743,"children":746},{"href":744,"rel":745},"https:\u002F\u002Fgrafana.com\u002Fdocs\u002Fplugins\u002Fyesoreyeram-infinity-datasource\u002Flatest\u002Fquery\u002Fmacros\u002F",[736],[747],{"type":50,"value":748},"macros",{"type":50,"value":750},".",{"type":44,"tag":88,"props":752,"children":754},{"id":753},"output-format",[755],{"type":50,"value":756},"Output format",{"type":44,"tag":53,"props":758,"children":759},{},[760,762,766],{"type":50,"value":761},"Set ",{"type":44,"tag":59,"props":763,"children":764},{},[765],{"type":50,"value":84},{"type":50,"value":767}," to match your panel:",{"type":44,"tag":566,"props":769,"children":770},{},[771,781,791,801,811,821,831],{"type":44,"tag":570,"props":772,"children":773},{},[774,779],{"type":44,"tag":59,"props":775,"children":776},{},[777],{"type":50,"value":778},"Table",{"type":50,"value":780}," — Tabular data (default for most queries).",{"type":44,"tag":570,"props":782,"children":783},{},[784,789],{"type":44,"tag":59,"props":785,"children":786},{},[787],{"type":50,"value":788},"Time series",{"type":50,"value":790}," — Data with a time field for time-series panels.",{"type":44,"tag":570,"props":792,"children":793},{},[794,799],{"type":44,"tag":59,"props":795,"children":796},{},[797],{"type":50,"value":798},"Logs",{"type":50,"value":800}," — Log lines for the Logs panel \u002F Explore.",{"type":44,"tag":570,"props":802,"children":803},{},[804,809],{"type":44,"tag":59,"props":805,"children":806},{},[807],{"type":50,"value":808},"Trace",{"type":50,"value":810}," — Trace data.",{"type":44,"tag":570,"props":812,"children":813},{},[814,819],{"type":44,"tag":59,"props":815,"children":816},{},[817],{"type":50,"value":818},"Node graph (nodes \u002F edges)",{"type":50,"value":820}," — Two queries that together build a node graph.",{"type":44,"tag":570,"props":822,"children":823},{},[824,829],{"type":44,"tag":59,"props":825,"children":826},{},[827],{"type":50,"value":828},"Data frame",{"type":50,"value":830}," — Pass-through data frame.",{"type":44,"tag":570,"props":832,"children":833},{},[834,839],{"type":44,"tag":59,"props":835,"children":836},{},[837],{"type":50,"value":838},"As-is",{"type":50,"value":840}," — Return the response with minimal processing.",{"type":44,"tag":88,"props":842,"children":844},{"id":843},"selecting-rows-and-columns",[845],{"type":50,"value":846},"Selecting rows and columns",{"type":44,"tag":53,"props":848,"children":849},{},[850,852,857],{"type":50,"value":851},"For JSON\u002FCSV\u002FXML\u002FGraphQL\u002FHTML, the ",{"type":44,"tag":59,"props":853,"children":854},{},[855],{"type":50,"value":856},"Parsing options & Result fields",{"type":50,"value":858}," section extracts\nthe data:",{"type":44,"tag":566,"props":860,"children":861},{},[862,872],{"type":44,"tag":570,"props":863,"children":864},{},[865,870],{"type":44,"tag":59,"props":866,"children":867},{},[868],{"type":50,"value":869},"Rows \u002F Root",{"type":50,"value":871}," (root selector) — A selector that returns the array of elements to\nturn into rows. For JSON this is a path into the response; leave it empty when the\nroot is already an array.",{"type":44,"tag":570,"props":873,"children":874},{},[875,880,882,887,889],{"type":44,"tag":59,"props":876,"children":877},{},[878],{"type":50,"value":879},"Columns",{"type":50,"value":881}," — Click ",{"type":44,"tag":59,"props":883,"children":884},{},[885],{"type":50,"value":886},"Add Columns",{"type":50,"value":888}," to define each output field:\n",{"type":44,"tag":566,"props":890,"children":891},{},[892,902,912],{"type":44,"tag":570,"props":893,"children":894},{},[895,900],{"type":44,"tag":59,"props":896,"children":897},{},[898],{"type":50,"value":899},"Selector",{"type":50,"value":901}," — Path to the field within each row.",{"type":44,"tag":570,"props":903,"children":904},{},[905,910],{"type":44,"tag":59,"props":906,"children":907},{},[908],{"type":50,"value":909},"Title",{"type":50,"value":911}," — Display name for the column.",{"type":44,"tag":570,"props":913,"children":914},{},[915,919],{"type":44,"tag":59,"props":916,"children":917},{},[918],{"type":50,"value":63},{"type":50,"value":920}," — String, Number, Time, Time (UNIX ms), Time (UNIX s), or Boolean. Use a\ntime type for the field your time-series panel should use as time.",{"type":44,"tag":53,"props":922,"children":923},{},[924,926,931],{"type":50,"value":925},"CSV\u002FTSV add options such as ",{"type":44,"tag":59,"props":927,"children":928},{},[929],{"type":50,"value":930},"delimiter",{"type":50,"value":932},", skip empty lines, skip lines with errors,\nrelax column count, header columns, and comment character.",{"type":44,"tag":88,"props":934,"children":936},{"id":935},"computed-columns-filters-and-summarize-backend-parsers",[937],{"type":50,"value":938},"Computed columns, filters, and summarize (backend parsers)",{"type":44,"tag":53,"props":940,"children":941},{},[942,944,949,951,956],{"type":50,"value":943},"When using a ",{"type":44,"tag":59,"props":945,"children":946},{},[947],{"type":50,"value":948},"backend",{"type":50,"value":950}," parser (JSONata or JQ), the ",{"type":44,"tag":59,"props":952,"children":953},{},[954],{"type":50,"value":955},"Computed columns, Filter, Group\nby",{"type":50,"value":957}," section adds transformations:",{"type":44,"tag":95,"props":959,"children":960},{},[961,982],{"type":44,"tag":99,"props":962,"children":963},{},[964],{"type":44,"tag":103,"props":965,"children":966},{},[967,972,977],{"type":44,"tag":107,"props":968,"children":969},{},[970],{"type":50,"value":971},"Feature",{"type":44,"tag":107,"props":973,"children":974},{},[975],{"type":50,"value":976},"Description",{"type":44,"tag":107,"props":978,"children":979},{},[980],{"type":50,"value":981},"Example",{"type":44,"tag":118,"props":983,"children":984},{},[985,1010,1035,1081,1106],{"type":44,"tag":103,"props":986,"children":987},{},[988,996,1001],{"type":44,"tag":125,"props":989,"children":990},{},[991],{"type":44,"tag":59,"props":992,"children":993},{},[994],{"type":50,"value":995},"Computed Columns",{"type":44,"tag":125,"props":997,"children":998},{},[999],{"type":50,"value":1000},"Create a new field from an expression.",{"type":44,"tag":125,"props":1002,"children":1003},{},[1004],{"type":44,"tag":588,"props":1005,"children":1007},{"className":1006},[],[1008],{"type":50,"value":1009},"price * qty",{"type":44,"tag":103,"props":1011,"children":1012},{},[1013,1021,1026],{"type":44,"tag":125,"props":1014,"children":1015},{},[1016],{"type":44,"tag":59,"props":1017,"children":1018},{},[1019],{"type":50,"value":1020},"Filter",{"type":44,"tag":125,"props":1022,"children":1023},{},[1024],{"type":50,"value":1025},"Keep rows matching an expression.",{"type":44,"tag":125,"props":1027,"children":1028},{},[1029],{"type":44,"tag":588,"props":1030,"children":1032},{"className":1031},[],[1033],{"type":50,"value":1034},"age >= 18",{"type":44,"tag":103,"props":1036,"children":1037},{},[1038,1046,1072],{"type":44,"tag":125,"props":1039,"children":1040},{},[1041],{"type":44,"tag":59,"props":1042,"children":1043},{},[1044],{"type":50,"value":1045},"Summarize",{"type":44,"tag":125,"props":1047,"children":1048},{},[1049,1051,1057,1058,1064,1065,1071],{"type":50,"value":1050},"Aggregate with functions like ",{"type":44,"tag":588,"props":1052,"children":1054},{"className":1053},[],[1055],{"type":50,"value":1056},"sum()",{"type":50,"value":641},{"type":44,"tag":588,"props":1059,"children":1061},{"className":1060},[],[1062],{"type":50,"value":1063},"count()",{"type":50,"value":641},{"type":44,"tag":588,"props":1066,"children":1068},{"className":1067},[],[1069],{"type":50,"value":1070},"mean()",{"type":50,"value":750},{"type":44,"tag":125,"props":1073,"children":1074},{},[1075],{"type":44,"tag":588,"props":1076,"children":1078},{"className":1077},[],[1079],{"type":50,"value":1080},"sum(amount)",{"type":44,"tag":103,"props":1082,"children":1083},{},[1084,1092,1097],{"type":44,"tag":125,"props":1085,"children":1086},{},[1087],{"type":44,"tag":59,"props":1088,"children":1089},{},[1090],{"type":50,"value":1091},"Summarize By",{"type":44,"tag":125,"props":1093,"children":1094},{},[1095],{"type":50,"value":1096},"Group the aggregation by a field.",{"type":44,"tag":125,"props":1098,"children":1099},{},[1100],{"type":44,"tag":588,"props":1101,"children":1103},{"className":1102},[],[1104],{"type":50,"value":1105},"country",{"type":44,"tag":103,"props":1107,"children":1108},{},[1109,1117,1122],{"type":44,"tag":125,"props":1110,"children":1111},{},[1112],{"type":44,"tag":59,"props":1113,"children":1114},{},[1115],{"type":50,"value":1116},"Summarize Alias",{"type":44,"tag":125,"props":1118,"children":1119},{},[1120],{"type":50,"value":1121},"Name for the summarized result column.",{"type":44,"tag":125,"props":1123,"children":1124},{},[1125],{"type":44,"tag":588,"props":1126,"children":1128},{"className":1127},[],[1129],{"type":50,"value":1130},"total",{"type":44,"tag":53,"props":1132,"children":1133},{},[1134,1135,1142,1143,1150],{"type":50,"value":730},{"type":44,"tag":732,"props":1136,"children":1139},{"href":1137,"rel":1138},"https:\u002F\u002Fgrafana.com\u002Fdocs\u002Fplugins\u002Fyesoreyeram-infinity-datasource\u002Flatest\u002Fquery\u002Fbackend\u002F",[736],[1140],{"type":50,"value":1141},"JSONata backend parser",{"type":50,"value":741},{"type":44,"tag":732,"props":1144,"children":1147},{"href":1145,"rel":1146},"https:\u002F\u002Fgrafana.com\u002Fdocs\u002Fplugins\u002Fyesoreyeram-infinity-datasource\u002Flatest\u002Fquery\u002Fjq-backend\u002F",[736],[1148],{"type":50,"value":1149},"JQ backend parser",{"type":50,"value":750},{"type":44,"tag":88,"props":1152,"children":1154},{"id":1153},"filters",[1155],{"type":50,"value":1156},"Filters",{"type":44,"tag":53,"props":1158,"children":1159},{},[1160,1162,1166,1168,1174],{"type":50,"value":1161},"Beyond backend expressions, you can add field-level ",{"type":44,"tag":59,"props":1163,"children":1164},{},[1165],{"type":50,"value":1153},{"type":50,"value":1167}," that keep rows where a\nfield matches an operator and value. See\n",{"type":44,"tag":732,"props":1169,"children":1172},{"href":1170,"rel":1171},"https:\u002F\u002Fgrafana.com\u002Fdocs\u002Fplugins\u002Fyesoreyeram-infinity-datasource\u002Flatest\u002Fquery\u002Ffilters\u002F",[736],[1173],{"type":50,"value":1156},{"type":50,"value":750},{"type":44,"tag":88,"props":1176,"children":1178},{"id":1177},"pagination",[1179],{"type":50,"value":1180},"Pagination",{"type":44,"tag":53,"props":1182,"children":1183},{},[1184,1186,1190],{"type":50,"value":1185},"For paged APIs (backend parsers), configure ",{"type":44,"tag":59,"props":1187,"children":1188},{},[1189],{"type":50,"value":1177},{"type":50,"value":1191}," so Infinity fetches multiple\npages automatically. Supported modes:",{"type":44,"tag":566,"props":1193,"children":1194},{},[1195,1205,1215,1225,1235],{"type":44,"tag":570,"props":1196,"children":1197},{},[1198,1203],{"type":44,"tag":59,"props":1199,"children":1200},{},[1201],{"type":50,"value":1202},"None",{"type":50,"value":1204}," — Single request (default).",{"type":44,"tag":570,"props":1206,"children":1207},{},[1208,1213],{"type":44,"tag":59,"props":1209,"children":1210},{},[1211],{"type":50,"value":1212},"Offset",{"type":50,"value":1214}," — Increment an offset parameter.",{"type":44,"tag":570,"props":1216,"children":1217},{},[1218,1223],{"type":44,"tag":59,"props":1219,"children":1220},{},[1221],{"type":50,"value":1222},"Page",{"type":50,"value":1224}," — Increment a page-number parameter.",{"type":44,"tag":570,"props":1226,"children":1227},{},[1228,1233],{"type":44,"tag":59,"props":1229,"children":1230},{},[1231],{"type":50,"value":1232},"Cursor",{"type":50,"value":1234}," — Follow a cursor value extracted from each response.",{"type":44,"tag":570,"props":1236,"children":1237},{},[1238,1243],{"type":44,"tag":59,"props":1239,"children":1240},{},[1241],{"type":50,"value":1242},"List",{"type":50,"value":1244}," — Iterate a fixed list of values.",{"type":44,"tag":53,"props":1246,"children":1247},{},[1248,1250,1255],{"type":50,"value":1249},"Each mode lets you set the parameter names, where they're sent (query, header, body, or\nURL replace), and a ",{"type":44,"tag":59,"props":1251,"children":1252},{},[1253],{"type":50,"value":1254},"max pages",{"type":50,"value":1256}," limit.",{"type":44,"tag":88,"props":1258,"children":1260},{"id":1259},"uql-and-groq",[1261],{"type":50,"value":1262},"UQL and GROQ",{"type":44,"tag":53,"props":1264,"children":1265},{},[1266,1268,1272,1274,1278,1279,1283],{"type":50,"value":1267},"For advanced reshaping, set the ",{"type":44,"tag":59,"props":1269,"children":1270},{},[1271],{"type":50,"value":63},{"type":50,"value":1273}," (or parser) to ",{"type":44,"tag":59,"props":1275,"children":1276},{},[1277],{"type":50,"value":297},{"type":50,"value":595},{"type":44,"tag":59,"props":1280,"children":1281},{},[1282],{"type":50,"value":313},{"type":50,"value":1284}," and write an\nexpression that transforms the response:",{"type":44,"tag":566,"props":1286,"children":1287},{},[1288,1304],{"type":44,"tag":570,"props":1289,"children":1290},{},[1291,1295,1297,1303],{"type":44,"tag":59,"props":1292,"children":1293},{},[1294],{"type":50,"value":297},{"type":50,"value":1296}," — SQL-like commands for parsing, projecting, pivoting, and summarizing. See\n",{"type":44,"tag":732,"props":1298,"children":1301},{"href":1299,"rel":1300},"https:\u002F\u002Fgrafana.com\u002Fdocs\u002Fplugins\u002Fyesoreyeram-infinity-datasource\u002Flatest\u002Fquery\u002Fuql\u002F",[736],[1302],{"type":50,"value":297},{"type":50,"value":750},{"type":44,"tag":570,"props":1305,"children":1306},{},[1307,1311,1313,1319],{"type":44,"tag":59,"props":1308,"children":1309},{},[1310],{"type":50,"value":313},{"type":50,"value":1312}," — GROQ query expressions. See\n",{"type":44,"tag":732,"props":1314,"children":1317},{"href":1315,"rel":1316},"https:\u002F\u002Fgrafana.com\u002Fdocs\u002Fplugins\u002Fyesoreyeram-infinity-datasource\u002Flatest\u002Fquery\u002Fgroq\u002F",[736],[1318],{"type":50,"value":313},{"type":50,"value":750},{"type":44,"tag":88,"props":1321,"children":1323},{"id":1322},"template-variables",[1324],{"type":50,"value":1325},"Template variables",{"type":44,"tag":53,"props":1327,"children":1328},{},[1329,1331,1337,1338,1344,1346,1352,1354,1359,1361,1367],{"type":50,"value":1330},"Infinity queries support Grafana template variables and time macros (for example\n",{"type":44,"tag":588,"props":1332,"children":1334},{"className":1333},[],[1335],{"type":50,"value":1336},"${__timeFrom}",{"type":50,"value":641},{"type":44,"tag":588,"props":1339,"children":1341},{"className":1340},[],[1342],{"type":50,"value":1343},"${__timeTo}",{"type":50,"value":1345},", and dashboard variables like ",{"type":44,"tag":588,"props":1347,"children":1349},{"className":1348},[],[1350],{"type":50,"value":1351},"$region",{"type":50,"value":1353},") in URLs,\nheaders, params, bodies, and selectors. You can also create Infinity-based ",{"type":44,"tag":59,"props":1355,"children":1356},{},[1357],{"type":50,"value":1358},"variables",{"type":50,"value":1360},"\nthat query an API for dropdown values. See\n",{"type":44,"tag":732,"props":1362,"children":1365},{"href":1363,"rel":1364},"https:\u002F\u002Fgrafana.com\u002Fdocs\u002Fplugins\u002Fyesoreyeram-infinity-datasource\u002Flatest\u002Fvariables\u002Ftemplate-variables\u002F",[736],[1366],{"type":50,"value":1325},{"type":50,"value":750},{"type":44,"tag":88,"props":1369,"children":1371},{"id":1370},"tips-and-troubleshooting",[1372],{"type":50,"value":1373},"Tips and troubleshooting",{"type":44,"tag":566,"props":1375,"children":1376},{},[1377,1393,1410,1426,1453,1487],{"type":44,"tag":570,"props":1378,"children":1379},{},[1380,1385,1387,1391],{"type":44,"tag":59,"props":1381,"children":1382},{},[1383],{"type":50,"value":1384},"My alert can't use this query",{"type":50,"value":1386},": Switch the ",{"type":44,"tag":59,"props":1388,"children":1389},{},[1390],{"type":50,"value":70},{"type":50,"value":1392}," to a backend parser (JSONata\nor JQ). UQL, GROQ, and Frontend parsers run in the browser and aren't available to\nalerting.",{"type":44,"tag":570,"props":1394,"children":1395},{},[1396,1401,1403,1408],{"type":44,"tag":59,"props":1397,"children":1398},{},[1399],{"type":50,"value":1400},"Query is blocked \u002F \"host not allowed\"",{"type":50,"value":1402},": When the data source uses auth, custom\nheaders, or TLS, add the target host to ",{"type":44,"tag":59,"props":1404,"children":1405},{},[1406],{"type":50,"value":1407},"Allowed hosts",{"type":50,"value":1409}," in the data source config.",{"type":44,"tag":570,"props":1411,"children":1412},{},[1413,1418,1420,1424],{"type":44,"tag":59,"props":1414,"children":1415},{},[1416],{"type":50,"value":1417},"No rows returned",{"type":50,"value":1419},": Check the ",{"type":44,"tag":59,"props":1421,"children":1422},{},[1423],{"type":50,"value":869},{"type":50,"value":1425}," selector — it must point to the array\nof elements. Leave it empty if the root response is already an array.",{"type":44,"tag":570,"props":1427,"children":1428},{},[1429,1434,1436,1440,1442,1446,1448,1452],{"type":44,"tag":59,"props":1430,"children":1431},{},[1432],{"type":50,"value":1433},"Wrong time axis",{"type":50,"value":1435},": Set the time field's column ",{"type":44,"tag":59,"props":1437,"children":1438},{},[1439],{"type":50,"value":63},{"type":50,"value":1441}," to a time type (Time, Time\n(UNIX ms), or Time (UNIX s)) and set ",{"type":44,"tag":59,"props":1443,"children":1444},{},[1445],{"type":50,"value":84},{"type":50,"value":1447}," to ",{"type":44,"tag":59,"props":1449,"children":1450},{},[1451],{"type":50,"value":788},{"type":50,"value":750},{"type":44,"tag":570,"props":1454,"children":1455},{},[1456,1479,1481,1485],{"type":44,"tag":59,"props":1457,"children":1458},{},[1459,1464,1466,1471,1472,1477],{"type":44,"tag":588,"props":1460,"children":1462},{"className":1461},[],[1463],{"type":50,"value":609},{"type":50,"value":1465}," \u002F ",{"type":44,"tag":588,"props":1467,"children":1469},{"className":1468},[],[1470],{"type":50,"value":617},{"type":50,"value":1465},{"type":44,"tag":588,"props":1473,"children":1475},{"className":1474},[],[1476],{"type":50,"value":625},{"type":50,"value":1478}," missing",{"type":50,"value":1480},": Enable ",{"type":44,"tag":59,"props":1482,"children":1483},{},[1484],{"type":50,"value":632},{"type":50,"value":1486}," in the\ndata source configuration.",{"type":44,"tag":570,"props":1488,"children":1489},{},[1490,1495,1497,1501,1503,1507],{"type":44,"tag":59,"props":1491,"children":1492},{},[1493],{"type":50,"value":1494},"Only some pages of data appear",{"type":50,"value":1496},": Configure ",{"type":44,"tag":59,"props":1498,"children":1499},{},[1500],{"type":50,"value":1177},{"type":50,"value":1502}," (backend parsers) and\nraise the ",{"type":44,"tag":59,"props":1504,"children":1505},{},[1506],{"type":50,"value":1254},{"type":50,"value":1508}," limit if needed.",{"type":44,"tag":88,"props":1510,"children":1512},{"id":1511},"references",[1513],{"type":50,"value":1514},"References",{"type":44,"tag":566,"props":1516,"children":1517},{},[1518,1528,1538,1547],{"type":44,"tag":570,"props":1519,"children":1520},{},[1521],{"type":44,"tag":732,"props":1522,"children":1525},{"href":1523,"rel":1524},"https:\u002F\u002Fgrafana.com\u002Fdocs\u002Fplugins\u002Fyesoreyeram-infinity-datasource\u002Flatest\u002Fquery\u002F",[736],[1526],{"type":50,"value":1527},"Query editor",{"type":44,"tag":570,"props":1529,"children":1530},{},[1531],{"type":44,"tag":732,"props":1532,"children":1535},{"href":1533,"rel":1534},"https:\u002F\u002Fgrafana.com\u002Fdocs\u002Fplugins\u002Fyesoreyeram-infinity-datasource\u002Flatest\u002Fdata-formats\u002F",[736],[1536],{"type":50,"value":1537},"Data formats (JSON, CSV, XML, GraphQL, HTML, Azure Blob)",{"type":44,"tag":570,"props":1539,"children":1540},{},[1541],{"type":44,"tag":732,"props":1542,"children":1544},{"href":1137,"rel":1543},[736],[1545],{"type":50,"value":1546},"Backend (JSONata) parser",{"type":44,"tag":570,"props":1548,"children":1549},{},[1550,1555,1557],{"type":44,"tag":732,"props":1551,"children":1553},{"href":1299,"rel":1552},[736],[1554],{"type":50,"value":297},{"type":50,"value":1556}," ·\n",{"type":44,"tag":732,"props":1558,"children":1560},{"href":1315,"rel":1559},[736],[1561],{"type":50,"value":313},{"type":44,"tag":88,"props":1563,"children":1565},{"id":1564},"see-also",[1566],{"type":50,"value":1567},"See also",{"type":44,"tag":566,"props":1569,"children":1570},{},[1571],{"type":44,"tag":570,"props":1572,"children":1573},{},[1574,1580],{"type":44,"tag":588,"props":1575,"children":1577},{"className":1576},[],[1578],{"type":50,"value":1579},"configuring-yesoreyeram-infinity-datasource",{"type":50,"value":1581}," — set up the data source, authentication, allowed\nhosts, TLS, network settings, the health check, and provisioning.",{"items":1583,"total":1608},[1584,1600],{"slug":1579,"name":1579,"fn":1585,"description":1586,"org":1587,"tags":1588,"stars":26,"repoUrl":27,"updatedAt":1599},"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},[1589,1592,1595,1598],{"name":1590,"slug":1591,"type":15},"API Development","api-development",{"name":1593,"slug":1594,"type":15},"Authentication","authentication",{"name":1596,"slug":1597,"type":15},"Configuration","configuration",{"name":9,"slug":8,"type":15},"2026-07-12T07:43:25.939136",{"slug":4,"name":4,"fn":5,"description":6,"org":1601,"tags":1602,"stars":26,"repoUrl":27,"updatedAt":28},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1603,1604,1605,1606,1607],{"name":13,"slug":14,"type":15},{"name":23,"slug":24,"type":15},{"name":9,"slug":8,"type":15},{"name":17,"slug":18,"type":15},{"name":20,"slug":21,"type":15},2,{"items":1610,"total":1777},[1611,1631,1638,1646,1661,1677,1690,1705,1722,1737,1750,1765],{"slug":1612,"name":1612,"fn":1613,"description":1614,"org":1615,"tags":1616,"stars":1628,"repoUrl":1629,"updatedAt":1630},"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},[1617,1620,1622,1625],{"name":1618,"slug":1619,"type":15},"Distributed Tracing","distributed-tracing",{"name":486,"slug":1621,"type":15},"frontend",{"name":1623,"slug":1624,"type":15},"Monitoring","monitoring",{"name":1626,"slug":1627,"type":15},"Observability","observability",1103,"https:\u002F\u002Fgithub.com\u002Fgrafana\u002Ffaro-web-sdk","2026-07-12T07:43:24.63314",{"slug":1579,"name":1579,"fn":1585,"description":1586,"org":1632,"tags":1633,"stars":26,"repoUrl":27,"updatedAt":1599},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1634,1635,1636,1637],{"name":1590,"slug":1591,"type":15},{"name":1593,"slug":1594,"type":15},{"name":1596,"slug":1597,"type":15},{"name":9,"slug":8,"type":15},{"slug":4,"name":4,"fn":5,"description":6,"org":1639,"tags":1640,"stars":26,"repoUrl":27,"updatedAt":28},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1641,1642,1643,1644,1645],{"name":13,"slug":14,"type":15},{"name":23,"slug":24,"type":15},{"name":9,"slug":8,"type":15},{"name":17,"slug":18,"type":15},{"name":20,"slug":21,"type":15},{"slug":1647,"name":1647,"fn":1648,"description":1649,"org":1650,"tags":1651,"stars":1658,"repoUrl":1659,"updatedAt":1660},"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},[1652,1655,1656,1657],{"name":1653,"slug":1654,"type":15},"Agents","agents",{"name":9,"slug":8,"type":15},{"name":1623,"slug":1624,"type":15},{"name":1626,"slug":1627,"type":15},430,"https:\u002F\u002Fgithub.com\u002Fgrafana\u002Fgcx","2026-07-25T05:30:40.29622",{"slug":1662,"name":1662,"fn":1663,"description":1664,"org":1665,"tags":1666,"stars":1658,"repoUrl":1659,"updatedAt":1676},"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},[1667,1668,1669,1672,1675],{"name":1653,"slug":1654,"type":15},{"name":9,"slug":8,"type":15},{"name":1670,"slug":1671,"type":15},"Instrumentation","instrumentation",{"name":1673,"slug":1674,"type":15},"LLM","llm",{"name":1626,"slug":1627,"type":15},"2026-07-31T05:53:52.580237",{"slug":1678,"name":1678,"fn":1679,"description":1680,"org":1681,"tags":1682,"stars":1658,"repoUrl":1659,"updatedAt":1689},"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},[1683,1684,1687,1688],{"name":1653,"slug":1654,"type":15},{"name":1685,"slug":1686,"type":15},"Evals","evals",{"name":9,"slug":8,"type":15},{"name":1626,"slug":1627,"type":15},"2026-07-31T05:53:53.576347",{"slug":1691,"name":1691,"fn":1692,"description":1693,"org":1694,"tags":1695,"stars":1658,"repoUrl":1659,"updatedAt":1704},"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},[1696,1697,1698,1701],{"name":1653,"slug":1654,"type":15},{"name":9,"slug":8,"type":15},{"name":1699,"slug":1700,"type":15},"QA","qa",{"name":1702,"slug":1703,"type":15},"Testing","testing","2026-07-31T05:53:51.62785",{"slug":1706,"name":1706,"fn":1707,"description":1708,"org":1709,"tags":1710,"stars":1658,"repoUrl":1659,"updatedAt":1721},"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},[1711,1714,1717,1720],{"name":1712,"slug":1713,"type":15},"Dashboards","dashboards",{"name":1715,"slug":1716,"type":15},"Data Visualization","data-visualization",{"name":1718,"slug":1719,"type":15},"Design","design",{"name":9,"slug":8,"type":15},"2026-07-25T05:30:46.289717",{"slug":1723,"name":1723,"fn":1724,"description":1725,"org":1726,"tags":1727,"stars":1658,"repoUrl":1659,"updatedAt":1736},"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},[1728,1731,1732,1735],{"name":1729,"slug":1730,"type":15},"Debugging","debugging",{"name":9,"slug":8,"type":15},{"name":1733,"slug":1734,"type":15},"Incident Response","incident-response",{"name":1626,"slug":1627,"type":15},"2026-07-18T05:11:10.445428",{"slug":1738,"name":1738,"fn":1739,"description":1740,"org":1741,"tags":1742,"stars":1658,"repoUrl":1659,"updatedAt":1749},"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},[1743,1744,1745,1748],{"name":1729,"slug":1730,"type":15},{"name":9,"slug":8,"type":15},{"name":1746,"slug":1747,"type":15},"Graph Analysis","graph-analysis",{"name":1626,"slug":1627,"type":15},"2026-07-25T05:30:39.380934",{"slug":1751,"name":1751,"fn":1752,"description":1753,"org":1754,"tags":1755,"stars":1658,"repoUrl":1659,"updatedAt":1764},"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},[1756,1759,1760,1761],{"name":1757,"slug":1758,"type":15},"CLI","cli",{"name":9,"slug":8,"type":15},{"name":1623,"slug":1624,"type":15},{"name":1762,"slug":1763,"type":15},"Operations","operations","2026-07-31T05:53:50.587304",{"slug":1766,"name":1766,"fn":1767,"description":1768,"org":1769,"tags":1770,"stars":1658,"repoUrl":1659,"updatedAt":1776},"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},[1771,1772,1773],{"name":1757,"slug":1758,"type":15},{"name":9,"slug":8,"type":15},{"name":1774,"slug":1775,"type":15},"Presentations","presentations","2026-07-25T05:30:45.282458",80]