@intentius/chant-lexicon-grafana 0.97.0 → 0.99.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (451) hide show
  1. package/README.md +15 -5
  2. package/dist/actions/grafana.d.ts +24 -0
  3. package/dist/actions/grafana.d.ts.map +1 -0
  4. package/dist/actions/index.d.ts +2 -0
  5. package/dist/actions/index.d.ts.map +1 -0
  6. package/dist/alerting-build.d.ts +128 -0
  7. package/dist/alerting-build.d.ts.map +1 -0
  8. package/dist/alerting.d.ts +273 -0
  9. package/dist/alerting.d.ts.map +1 -0
  10. package/dist/api/apply.d.ts +156 -0
  11. package/dist/api/apply.d.ts.map +1 -0
  12. package/dist/api/bind.d.ts +32 -0
  13. package/dist/api/bind.d.ts.map +1 -0
  14. package/dist/api/client.d.ts +76 -0
  15. package/dist/api/client.d.ts.map +1 -0
  16. package/dist/api/converge.d.ts +33 -0
  17. package/dist/api/converge.d.ts.map +1 -0
  18. package/dist/api/dashboards.d.ts +102 -0
  19. package/dist/api/dashboards.d.ts.map +1 -0
  20. package/dist/api/datasources.d.ts +26 -0
  21. package/dist/api/datasources.d.ts.map +1 -0
  22. package/dist/api/fake-grafana-writes.d.ts +41 -0
  23. package/dist/api/fake-grafana-writes.d.ts.map +1 -0
  24. package/dist/api/fake-grafana.d.ts +61 -0
  25. package/dist/api/fake-grafana.d.ts.map +1 -0
  26. package/dist/api/folders.d.ts +110 -0
  27. package/dist/api/folders.d.ts.map +1 -0
  28. package/dist/api/library-panels.d.ts +52 -0
  29. package/dist/api/library-panels.d.ts.map +1 -0
  30. package/dist/build.d.ts +30 -2
  31. package/dist/build.d.ts.map +1 -1
  32. package/dist/catalog.d.ts +1 -1
  33. package/dist/catalog.d.ts.map +1 -1
  34. package/dist/codegen/docs.d.ts.map +1 -1
  35. package/dist/codegen/schema-types.d.ts +3 -3
  36. package/dist/codegen/schema-types.d.ts.map +1 -1
  37. package/dist/composites/agent-dashboard.d.ts.map +1 -1
  38. package/dist/composites/catalog.d.ts.map +1 -1
  39. package/dist/composites/index.d.ts +4 -2
  40. package/dist/composites/index.d.ts.map +1 -1
  41. package/dist/composites/red-dashboard.d.ts +21 -2
  42. package/dist/composites/red-dashboard.d.ts.map +1 -1
  43. package/dist/composites/shared.d.ts +7 -0
  44. package/dist/composites/shared.d.ts.map +1 -1
  45. package/dist/composites/slo-alert-rules.d.ts +92 -0
  46. package/dist/composites/slo-alert-rules.d.ts.map +1 -0
  47. package/dist/config.d.ts +111 -0
  48. package/dist/config.d.ts.map +1 -0
  49. package/dist/contact-point-secrets.d.ts +17 -0
  50. package/dist/contact-point-secrets.d.ts.map +1 -0
  51. package/dist/dashboard.d.ts +16 -2
  52. package/dist/dashboard.d.ts.map +1 -1
  53. package/dist/datasource-refs.d.ts +95 -0
  54. package/dist/datasource-refs.d.ts.map +1 -0
  55. package/dist/datasource.d.ts +29 -0
  56. package/dist/datasource.d.ts.map +1 -1
  57. package/dist/deep-observe-hooks.d.ts +64 -0
  58. package/dist/deep-observe-hooks.d.ts.map +1 -0
  59. package/dist/deep-observe.d.ts +42 -0
  60. package/dist/deep-observe.d.ts.map +1 -0
  61. package/dist/describe-resources.d.ts +49 -0
  62. package/dist/describe-resources.d.ts.map +1 -0
  63. package/dist/detect.d.ts +28 -1
  64. package/dist/detect.d.ts.map +1 -1
  65. package/dist/export-resources.d.ts +38 -0
  66. package/dist/export-resources.d.ts.map +1 -0
  67. package/dist/import/alerting.d.ts +40 -0
  68. package/dist/import/alerting.d.ts.map +1 -0
  69. package/dist/import/edits.d.ts +47 -0
  70. package/dist/import/edits.d.ts.map +1 -0
  71. package/dist/import/embedded.d.ts +14 -0
  72. package/dist/import/embedded.d.ts.map +1 -0
  73. package/dist/import/generator.d.ts +60 -0
  74. package/dist/import/generator.d.ts.map +1 -0
  75. package/dist/import/live-export.d.ts +108 -0
  76. package/dist/import/live-export.d.ts.map +1 -0
  77. package/dist/import/mappings.d.ts +83 -0
  78. package/dist/import/mappings.d.ts.map +1 -0
  79. package/dist/import/model.d.ts +98 -0
  80. package/dist/import/model.d.ts.map +1 -0
  81. package/dist/import/normalize-alerting.d.ts +26 -0
  82. package/dist/import/normalize-alerting.d.ts.map +1 -0
  83. package/dist/import/normalize.d.ts +74 -0
  84. package/dist/import/normalize.d.ts.map +1 -0
  85. package/dist/import/parser.d.ts +110 -0
  86. package/dist/import/parser.d.ts.map +1 -0
  87. package/dist/import/report.d.ts +26 -0
  88. package/dist/import/report.d.ts.map +1 -0
  89. package/dist/import/testdata/fixtures.d.ts +35 -0
  90. package/dist/import/testdata/fixtures.d.ts.map +1 -0
  91. package/dist/import/v2.d.ts +72 -0
  92. package/dist/import/v2.d.ts.map +1 -0
  93. package/dist/index.d.ts +26 -9
  94. package/dist/index.d.ts.map +1 -1
  95. package/dist/integrity.json +18 -10
  96. package/dist/k8s.d.ts +107 -0
  97. package/dist/k8s.d.ts.map +1 -0
  98. package/dist/lint/audit-catalog.d.ts +2 -1
  99. package/dist/lint/audit-catalog.d.ts.map +1 -1
  100. package/dist/lint/post-synth/graf101.d.ts +2 -2
  101. package/dist/lint/post-synth/graf102.d.ts +1 -1
  102. package/dist/lint/post-synth/graf107.d.ts +1 -1
  103. package/dist/lint/post-synth/graf108.d.ts +8 -0
  104. package/dist/lint/post-synth/graf108.d.ts.map +1 -0
  105. package/dist/lint/post-synth/graf109.d.ts +8 -0
  106. package/dist/lint/post-synth/graf109.d.ts.map +1 -0
  107. package/dist/lint/post-synth/graf111.d.ts +8 -0
  108. package/dist/lint/post-synth/graf111.d.ts.map +1 -0
  109. package/dist/lint/post-synth/graf112.d.ts +8 -0
  110. package/dist/lint/post-synth/graf112.d.ts.map +1 -0
  111. package/dist/lint/post-synth/graf113.d.ts +8 -0
  112. package/dist/lint/post-synth/graf113.d.ts.map +1 -0
  113. package/dist/lint/post-synth/graf114.d.ts +8 -0
  114. package/dist/lint/post-synth/graf114.d.ts.map +1 -0
  115. package/dist/lint/post-synth/graf115.d.ts +8 -0
  116. package/dist/lint/post-synth/graf115.d.ts.map +1 -0
  117. package/dist/lint/post-synth/grafana-helpers.d.ts +7 -5
  118. package/dist/lint/post-synth/grafana-helpers.d.ts.map +1 -1
  119. package/dist/lint/post-synth/index.d.ts.map +1 -1
  120. package/dist/lint/rules/literal-secret.d.ts +7 -3
  121. package/dist/lint/rules/literal-secret.d.ts.map +1 -1
  122. package/dist/lsp/hover.d.ts.map +1 -1
  123. package/dist/manifest.json +1 -1
  124. package/dist/members.d.ts +27 -0
  125. package/dist/members.d.ts.map +1 -0
  126. package/dist/meta.json +135 -0
  127. package/dist/okf/index.md +36 -2
  128. package/dist/okf/rules/GRAF002.md +3 -2
  129. package/dist/okf/rules/GRAF101.md +3 -2
  130. package/dist/okf/rules/GRAF102.md +1 -0
  131. package/dist/okf/rules/GRAF108.md +11 -0
  132. package/dist/okf/rules/GRAF109.md +15 -0
  133. package/dist/okf/rules/GRAF111.md +11 -0
  134. package/dist/okf/rules/GRAF112.md +16 -0
  135. package/dist/okf/rules/GRAF113.md +16 -0
  136. package/dist/okf/rules/GRAF114.md +11 -0
  137. package/dist/okf/rules/GRAF115.md +11 -0
  138. package/dist/okf/types/AlertListPanel.md +9 -0
  139. package/dist/okf/types/AlertQuery.md +9 -0
  140. package/dist/okf/types/AlertRule.md +9 -0
  141. package/dist/okf/types/AlertRuleGroup.md +9 -0
  142. package/dist/okf/types/BarChartPanel.md +9 -0
  143. package/dist/okf/types/BarGaugePanel.md +9 -0
  144. package/dist/okf/types/CanvasPanel.md +9 -0
  145. package/dist/okf/types/ClassicConditionsExpression.md +9 -0
  146. package/dist/okf/types/ContactPoint.md +14 -0
  147. package/dist/okf/types/Dashboard.md +1 -0
  148. package/dist/okf/types/Datasource.md +3 -2
  149. package/dist/okf/types/ExternalDatasource.md +15 -0
  150. package/dist/okf/types/FlameGraphPanel.md +9 -0
  151. package/dist/okf/types/GeomapPanel.md +9 -0
  152. package/dist/okf/types/HistogramPanel.md +9 -0
  153. package/dist/okf/types/MathExpression.md +9 -0
  154. package/dist/okf/types/MuteTiming.md +13 -0
  155. package/dist/okf/types/NodeGraphPanel.md +9 -0
  156. package/dist/okf/types/NotificationPolicy.md +9 -0
  157. package/dist/okf/types/NotificationTemplate.md +9 -0
  158. package/dist/okf/types/PieChartPanel.md +9 -0
  159. package/dist/okf/types/ReduceExpression.md +9 -0
  160. package/dist/okf/types/ResampleExpression.md +9 -0
  161. package/dist/okf/types/SqlExpression.md +9 -0
  162. package/dist/okf/types/StateTimelinePanel.md +9 -0
  163. package/dist/okf/types/StatusHistoryPanel.md +9 -0
  164. package/dist/okf/types/ThresholdExpression.md +9 -0
  165. package/dist/okf/types/TrendPanel.md +9 -0
  166. package/dist/okf/types/XYChartPanel.md +9 -0
  167. package/dist/op/activities/grafana-apply.d.ts +75 -0
  168. package/dist/op/activities/grafana-apply.d.ts.map +1 -0
  169. package/dist/op/activities/index.d.ts +9 -0
  170. package/dist/op/activities/index.d.ts.map +1 -0
  171. package/dist/op/builders.d.ts +24 -0
  172. package/dist/op/builders.d.ts.map +1 -0
  173. package/dist/ownership.d.ts +67 -0
  174. package/dist/ownership.d.ts.map +1 -0
  175. package/dist/panel-options.d.ts +65 -0
  176. package/dist/panel-options.d.ts.map +1 -0
  177. package/dist/panels.d.ts +46 -9
  178. package/dist/panels.d.ts.map +1 -1
  179. package/dist/pin.d.ts +29 -7
  180. package/dist/pin.d.ts.map +1 -1
  181. package/dist/plugin.d.ts.map +1 -1
  182. package/dist/promql-check.d.ts +51 -0
  183. package/dist/promql-check.d.ts.map +1 -0
  184. package/dist/query.d.ts +9 -8
  185. package/dist/query.d.ts.map +1 -1
  186. package/dist/rules/graf101.ts +3 -3
  187. package/dist/rules/graf102.ts +1 -1
  188. package/dist/rules/graf107.ts +1 -1
  189. package/dist/rules/graf108.ts +17 -0
  190. package/dist/rules/graf109.ts +17 -0
  191. package/dist/rules/graf111.ts +17 -0
  192. package/dist/rules/graf112.ts +17 -0
  193. package/dist/rules/graf113.ts +17 -0
  194. package/dist/rules/graf114.ts +17 -0
  195. package/dist/rules/graf115.ts +17 -0
  196. package/dist/rules/grafana-helpers.ts +15 -8
  197. package/dist/rules/literal-secret.ts +60 -6
  198. package/dist/schema/barchart.gen.d.ts +198 -0
  199. package/dist/schema/barchart.gen.d.ts.map +1 -0
  200. package/dist/schema/bargauge.gen.d.ts +97 -0
  201. package/dist/schema/bargauge.gen.d.ts.map +1 -0
  202. package/dist/schema/canvas.gen.d.ts +152 -0
  203. package/dist/schema/canvas.gen.d.ts.map +1 -0
  204. package/dist/schema/dashboard.gen.d.ts +196 -21
  205. package/dist/schema/dashboard.gen.d.ts.map +1 -1
  206. package/dist/schema/expr.gen.d.ts +606 -0
  207. package/dist/schema/expr.gen.d.ts.map +1 -0
  208. package/dist/schema/gauge.gen.d.ts.map +1 -1
  209. package/dist/schema/geomap.gen.d.ts +100 -0
  210. package/dist/schema/geomap.gen.d.ts.map +1 -0
  211. package/dist/schema/heatmap.gen.d.ts.map +1 -1
  212. package/dist/schema/histogram.gen.d.ts +132 -0
  213. package/dist/schema/histogram.gen.d.ts.map +1 -0
  214. package/dist/schema/index.d.ts +12 -0
  215. package/dist/schema/index.d.ts.map +1 -1
  216. package/dist/schema/logs.gen.d.ts +1 -0
  217. package/dist/schema/logs.gen.d.ts.map +1 -1
  218. package/dist/schema/loki.gen.d.ts.map +1 -1
  219. package/dist/schema/nodegraph.gen.d.ts +49 -0
  220. package/dist/schema/nodegraph.gen.d.ts.map +1 -0
  221. package/dist/schema/piechart.gen.d.ts +127 -0
  222. package/dist/schema/piechart.gen.d.ts.map +1 -0
  223. package/dist/schema/prometheus.gen.d.ts.map +1 -1
  224. package/dist/schema/stat.gen.d.ts.map +1 -1
  225. package/dist/schema/statetimeline.gen.d.ts +124 -0
  226. package/dist/schema/statetimeline.gen.d.ts.map +1 -0
  227. package/dist/schema/statushistory.gen.d.ts +114 -0
  228. package/dist/schema/statushistory.gen.d.ts.map +1 -0
  229. package/dist/schema/table.gen.d.ts +22 -3
  230. package/dist/schema/table.gen.d.ts.map +1 -1
  231. package/dist/schema/tempo.gen.d.ts.map +1 -1
  232. package/dist/schema/text.gen.d.ts.map +1 -1
  233. package/dist/schema/timeseries.gen.d.ts +5 -1
  234. package/dist/schema/timeseries.gen.d.ts.map +1 -1
  235. package/dist/schema/trend.gen.d.ts +180 -0
  236. package/dist/schema/trend.gen.d.ts.map +1 -0
  237. package/dist/schema/xychart.gen.d.ts +145 -0
  238. package/dist/schema/xychart.gen.d.ts.map +1 -0
  239. package/dist/schema-validate.d.ts +30 -4
  240. package/dist/schema-validate.d.ts.map +1 -1
  241. package/dist/serializer.d.ts +11 -3
  242. package/dist/serializer.d.ts.map +1 -1
  243. package/dist/skill-defs.d.ts.map +1 -1
  244. package/dist/skills/chant-grafana-alerting.md +49 -0
  245. package/dist/skills/chant-grafana-provisioning.md +3 -3
  246. package/dist/skills/chant-grafana.md +12 -6
  247. package/dist/spec/fetch-units-cli.d.ts +3 -0
  248. package/dist/spec/fetch-units-cli.d.ts.map +1 -0
  249. package/dist/spec/overlay.d.ts +43 -0
  250. package/dist/spec/overlay.d.ts.map +1 -0
  251. package/dist/spec/schemas.d.ts +13 -7
  252. package/dist/spec/schemas.d.ts.map +1 -1
  253. package/dist/spec/units.d.ts +35 -0
  254. package/dist/spec/units.d.ts.map +1 -0
  255. package/dist/spec/units.gen.d.ts +2 -0
  256. package/dist/spec/units.gen.d.ts.map +1 -0
  257. package/dist/transformations.d.ts +459 -0
  258. package/dist/transformations.d.ts.map +1 -0
  259. package/dist/util.d.ts +6 -0
  260. package/dist/util.d.ts.map +1 -1
  261. package/dist/validate-alerting.d.ts +65 -0
  262. package/dist/validate-alerting.d.ts.map +1 -0
  263. package/dist/validate-output.d.ts +49 -9
  264. package/dist/validate-output.d.ts.map +1 -1
  265. package/dist/validate.d.ts.map +1 -1
  266. package/dist/variables.d.ts +7 -2
  267. package/dist/variables.d.ts.map +1 -1
  268. package/package.json +12 -4
  269. package/src/actions/actions.test.ts +24 -0
  270. package/src/actions/grafana.ts +40 -0
  271. package/src/actions/index.ts +1 -0
  272. package/src/alerting-build.ts +376 -0
  273. package/src/alerting.e2e.test.ts +212 -0
  274. package/src/alerting.test.ts +272 -0
  275. package/src/alerting.ts +435 -0
  276. package/src/api/apply.test.ts +238 -0
  277. package/src/api/apply.ts +384 -0
  278. package/src/api/bind.ts +58 -0
  279. package/src/api/client.ts +148 -0
  280. package/src/api/converge.ts +63 -0
  281. package/src/api/dashboards.ts +247 -0
  282. package/src/api/datasources.ts +33 -0
  283. package/src/api/fake-grafana-writes.ts +201 -0
  284. package/src/api/fake-grafana.ts +186 -0
  285. package/src/api/folders.ts +265 -0
  286. package/src/api/library-panels.ts +101 -0
  287. package/src/build.test.ts +210 -5
  288. package/src/build.ts +180 -43
  289. package/src/catalog.ts +86 -2
  290. package/src/codegen/docs.ts +42 -9
  291. package/src/codegen/schema-types.ts +16 -6
  292. package/src/composites/agent-dashboard.ts +6 -3
  293. package/src/composites/catalog.test.ts +2 -2
  294. package/src/composites/catalog.ts +82 -0
  295. package/src/composites/composites.test.ts +73 -9
  296. package/src/composites/index.ts +4 -2
  297. package/src/composites/queries.e2e.test.ts +374 -0
  298. package/src/composites/red-dashboard.ts +83 -12
  299. package/src/composites/shared.ts +11 -0
  300. package/src/composites/slo-alert-rules.ts +149 -0
  301. package/src/config.test.ts +61 -0
  302. package/src/config.ts +138 -0
  303. package/src/contact-point-secrets.ts +63 -0
  304. package/src/dashboard.ts +16 -2
  305. package/src/datasource-refs.test.ts +56 -0
  306. package/src/datasource-refs.ts +189 -0
  307. package/src/datasource.ts +52 -0
  308. package/src/deep-observe-hooks.ts +252 -0
  309. package/src/deep-observe.test.ts +265 -0
  310. package/src/deep-observe.ts +164 -0
  311. package/src/describe-resources.test.ts +255 -0
  312. package/src/describe-resources.ts +209 -0
  313. package/src/detect.ts +79 -2
  314. package/src/export-resources.test.ts +129 -0
  315. package/src/export-resources.ts +84 -0
  316. package/src/generated/lexicon-grafana.json +135 -0
  317. package/src/import/alerting-roundtrip.test.ts +161 -0
  318. package/src/import/alerting.ts +500 -0
  319. package/src/import/edits.ts +95 -0
  320. package/src/import/embedded.test.ts +45 -0
  321. package/src/import/embedded.ts +47 -0
  322. package/src/import/generated-types.e2e.test.ts +118 -0
  323. package/src/import/generator.test.ts +210 -0
  324. package/src/import/generator.ts +462 -0
  325. package/src/import/live-export.ts +264 -0
  326. package/src/import/mappings.ts +264 -0
  327. package/src/import/model.ts +110 -0
  328. package/src/import/normalize-alerting.ts +101 -0
  329. package/src/import/normalize.test.ts +117 -0
  330. package/src/import/normalize.ts +364 -0
  331. package/src/import/parser.test.ts +440 -0
  332. package/src/import/parser.ts +1236 -0
  333. package/src/import/report.ts +62 -0
  334. package/src/import/roundtrip.test.ts +468 -0
  335. package/src/import/testdata/fixtures.ts +129 -0
  336. package/src/import/v2.test.ts +292 -0
  337. package/src/import/v2.ts +803 -0
  338. package/src/import.e2e.test.ts +31 -84
  339. package/src/import.test.ts +9 -3
  340. package/src/index.ts +190 -5
  341. package/src/k8s.test.ts +98 -0
  342. package/src/k8s.ts +197 -0
  343. package/src/lint/audit-catalog.ts +60 -3
  344. package/src/lint/core-lint.test.ts +43 -0
  345. package/src/lint/post-synth/graf101.ts +3 -3
  346. package/src/lint/post-synth/graf102.ts +1 -1
  347. package/src/lint/post-synth/graf107.ts +1 -1
  348. package/src/lint/post-synth/graf108.ts +17 -0
  349. package/src/lint/post-synth/graf109.ts +17 -0
  350. package/src/lint/post-synth/graf111.ts +17 -0
  351. package/src/lint/post-synth/graf112.ts +17 -0
  352. package/src/lint/post-synth/graf113.ts +17 -0
  353. package/src/lint/post-synth/graf114.ts +17 -0
  354. package/src/lint/post-synth/graf115.ts +17 -0
  355. package/src/lint/post-synth/grafana-helpers.ts +15 -8
  356. package/src/lint/post-synth/index.ts +14 -0
  357. package/src/lint/post-synth/post-synth.test.ts +235 -11
  358. package/src/lint/rules/literal-secret.ts +60 -6
  359. package/src/lint/rules/rules.test.ts +27 -0
  360. package/src/lsp/completions.test.ts +5 -0
  361. package/src/lsp/hover.test.ts +7 -0
  362. package/src/lsp/hover.ts +8 -1
  363. package/src/members.ts +68 -0
  364. package/src/observe.e2e.test.ts +255 -0
  365. package/src/op/activities/grafana-apply.e2e.test.ts +175 -0
  366. package/src/op/activities/grafana-apply.test.ts +229 -0
  367. package/src/op/activities/grafana-apply.ts +171 -0
  368. package/src/op/activities/index.ts +8 -0
  369. package/src/op/builders.test.ts +40 -0
  370. package/src/op/builders.ts +34 -0
  371. package/src/ownership.ts +103 -0
  372. package/src/panel-options.ts +66 -0
  373. package/src/panels.test.ts +51 -0
  374. package/src/panels.ts +148 -10
  375. package/src/pin.ts +57 -6
  376. package/src/plugin.test.ts +5 -2
  377. package/src/plugin.ts +66 -0
  378. package/src/promql-check.test.ts +108 -0
  379. package/src/promql-check.ts +189 -0
  380. package/src/query.ts +13 -8
  381. package/src/schema/barchart.gen.ts +221 -0
  382. package/src/schema/bargauge.gen.ts +111 -0
  383. package/src/schema/canvas.gen.ts +176 -0
  384. package/src/schema/dashboard.gen.ts +206 -22
  385. package/src/schema/expr.gen.ts +618 -0
  386. package/src/schema/gauge.gen.ts +2 -1
  387. package/src/schema/geomap.gen.ts +112 -0
  388. package/src/schema/heatmap.gen.ts +2 -1
  389. package/src/schema/histogram.gen.ts +151 -0
  390. package/src/schema/index.ts +12 -0
  391. package/src/schema/logs.gen.ts +3 -1
  392. package/src/schema/loki.gen.ts +2 -1
  393. package/src/schema/nodegraph.gen.ts +58 -0
  394. package/src/schema/piechart.gen.ts +146 -0
  395. package/src/schema/prometheus.gen.ts +2 -1
  396. package/src/schema/stat.gen.ts +2 -1
  397. package/src/schema/statetimeline.gen.ts +143 -0
  398. package/src/schema/statushistory.gen.ts +132 -0
  399. package/src/schema/table.gen.ts +27 -4
  400. package/src/schema/tempo.gen.ts +2 -1
  401. package/src/schema/text.gen.ts +2 -1
  402. package/src/schema/timeseries.gen.ts +7 -2
  403. package/src/schema/trend.gen.ts +208 -0
  404. package/src/schema/xychart.gen.ts +167 -0
  405. package/src/schema-overlay.test.ts +282 -0
  406. package/src/schema-validate.ts +141 -50
  407. package/src/schema.test.ts +4 -2
  408. package/src/serializer.test.ts +13 -1
  409. package/src/serializer.ts +11 -3
  410. package/src/skill-defs.ts +17 -0
  411. package/src/skills/chant-grafana-alerting.md +49 -0
  412. package/src/skills/chant-grafana-provisioning.md +3 -3
  413. package/src/skills/chant-grafana.md +12 -6
  414. package/src/spec/fetch-cli.ts +3 -3
  415. package/src/spec/fetch-units-cli.ts +37 -0
  416. package/src/spec/overlay/canvas.overlay.json +142 -0
  417. package/src/spec/overlay/dashboard.overlay.json +378 -0
  418. package/src/spec/overlay/expr.overlay.json +14 -0
  419. package/src/spec/overlay/geomap.overlay.json +35 -0
  420. package/src/spec/overlay/logs.overlay.json +14 -0
  421. package/src/spec/overlay/nodegraph.overlay.json +31 -0
  422. package/src/spec/overlay/piechart.overlay.json +17 -0
  423. package/src/spec/overlay/table.overlay.json +84 -0
  424. package/src/spec/overlay/timeseries.overlay.json +21 -0
  425. package/src/spec/overlay/trend.overlay.json +17 -0
  426. package/src/spec/overlay/xychart.overlay.json +16 -0
  427. package/src/spec/overlay.ts +105 -0
  428. package/src/spec/schemas/barchart.jsonschema.json +419 -0
  429. package/src/spec/schemas/bargauge.jsonschema.json +224 -0
  430. package/src/spec/schemas/canvas.jsonschema.json +356 -0
  431. package/src/spec/schemas/dashboardv2.jsonschema.json +3387 -0
  432. package/src/spec/schemas/expr.jsonschema.json +987 -0
  433. package/src/spec/schemas/geomap.jsonschema.json +220 -0
  434. package/src/spec/schemas/histogram.jsonschema.json +308 -0
  435. package/src/spec/schemas/nodegraph.jsonschema.json +77 -0
  436. package/src/spec/schemas/piechart.jsonschema.json +275 -0
  437. package/src/spec/schemas/statetimeline.jsonschema.json +324 -0
  438. package/src/spec/schemas/statushistory.jsonschema.json +292 -0
  439. package/src/spec/schemas/trend.jsonschema.json +449 -0
  440. package/src/spec/schemas/xychart.jsonschema.json +428 -0
  441. package/src/spec/schemas.ts +22 -10
  442. package/src/spec/units.gen.ts +281 -0
  443. package/src/spec/units.ts +77 -0
  444. package/src/transformations.test.ts +65 -0
  445. package/src/transformations.ts +574 -0
  446. package/src/util.ts +8 -0
  447. package/src/validate-alerting.test.ts +255 -0
  448. package/src/validate-alerting.ts +428 -0
  449. package/src/validate-output.ts +332 -101
  450. package/src/validate.ts +14 -0
  451. package/src/variables.ts +7 -2
@@ -0,0 +1,987 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$ref": "#/definitions/expr",
4
+ "definitions": {
5
+ "expr": {
6
+ "oneOf": [
7
+ {
8
+ "$ref": "#/definitions/TypeMath"
9
+ },
10
+ {
11
+ "$ref": "#/definitions/TypeReduce"
12
+ },
13
+ {
14
+ "$ref": "#/definitions/TypeResample"
15
+ },
16
+ {
17
+ "$ref": "#/definitions/TypeClassicConditions"
18
+ },
19
+ {
20
+ "$ref": "#/definitions/TypeThreshold"
21
+ },
22
+ {
23
+ "$ref": "#/definitions/TypeSql"
24
+ }
25
+ ]
26
+ },
27
+ "TypeMath": {
28
+ "type": "object",
29
+ "additionalProperties": false,
30
+ "required": [
31
+ "expression",
32
+ "type"
33
+ ],
34
+ "properties": {
35
+ "datasource": {
36
+ "$ref": "#/definitions/DataSourceRef",
37
+ "description": "The datasource"
38
+ },
39
+ "expression": {
40
+ "type": "string",
41
+ "minLength": 1,
42
+ "description": "General math expression"
43
+ },
44
+ "hide": {
45
+ "type": "boolean",
46
+ "description": "true if query is disabled (ie should not be returned to the dashboard)\nNOTE: this does not always imply that the query should not be executed since\nthe results from a hidden query may be used as the input to other queries (SSE etc)"
47
+ },
48
+ "intervalMs": {
49
+ "type": "number",
50
+ "description": "Interval is the suggested duration between time points in a time series query.\nNOTE: the values for intervalMs is not saved in the query model. It is typically calculated\nfrom the interval required to fill a pixels in the visualization"
51
+ },
52
+ "maxDataPoints": {
53
+ "type": "integer",
54
+ "description": "MaxDataPoints is the maximum number of data points that should be returned from a time series query.\nNOTE: the values for maxDataPoints is not saved in the query model. It is typically calculated\nfrom the number of pixels visible in a visualization"
55
+ },
56
+ "queryType": {
57
+ "type": "string",
58
+ "description": "QueryType is an optional identifier for the type of query.\nIt can be used to distinguish different types of queries."
59
+ },
60
+ "refId": {
61
+ "anyOf": [
62
+ {
63
+ "type": "string"
64
+ },
65
+ {
66
+ "type": "null"
67
+ }
68
+ ],
69
+ "description": "RefID is the unique identifier of the query, set by the frontend call."
70
+ },
71
+ "resultAssertions": {
72
+ "type": "object",
73
+ "additionalProperties": false,
74
+ "required": [
75
+ "typeVersion"
76
+ ],
77
+ "properties": {
78
+ "maxFrames": {
79
+ "type": "integer",
80
+ "description": "Maximum frame count"
81
+ },
82
+ "type": {
83
+ "enum": [
84
+ "",
85
+ "timeseries-wide",
86
+ "timeseries-long",
87
+ "timeseries-many",
88
+ "timeseries-multi",
89
+ "directory-listing",
90
+ "table",
91
+ "numeric-wide",
92
+ "numeric-multi",
93
+ "numeric-long",
94
+ "log-lines"
95
+ ],
96
+ "type": "string",
97
+ "description": "Type asserts that the frame matches a known type structure.\nPossible enum values:\n - `\"\"` \n - `\"timeseries-wide\"` \n - `\"timeseries-long\"` \n - `\"timeseries-many\"` \n - `\"timeseries-multi\"` \n - `\"directory-listing\"` \n - `\"table\"` \n - `\"numeric-wide\"` \n - `\"numeric-multi\"` \n - `\"numeric-long\"` \n - `\"log-lines\"` "
98
+ },
99
+ "typeVersion": {
100
+ "type": "array",
101
+ "items": {
102
+ "type": "integer"
103
+ },
104
+ "description": "TypeVersion is the version of the Type property. Versions greater than 0.0 correspond to the dataplane\ncontract documentation https://grafana.github.io/dataplane/contract/."
105
+ }
106
+ },
107
+ "description": "Optionally define expected query result behavior"
108
+ },
109
+ "timeRange": {
110
+ "type": "object",
111
+ "additionalProperties": false,
112
+ "required": [
113
+ "from",
114
+ "to"
115
+ ],
116
+ "properties": {
117
+ "from": {
118
+ "type": "string",
119
+ "description": "From is the start time of the query.",
120
+ "default": "now-6h"
121
+ },
122
+ "to": {
123
+ "type": "string",
124
+ "description": "To is the end time of the query.",
125
+ "default": "now"
126
+ }
127
+ },
128
+ "description": "TimeRange represents the query range\nNOTE: unlike generic /ds/query, we can now send explicit time values in each query\nNOTE: the values for timeRange are not saved in a dashboard, they are constructed on the fly"
129
+ },
130
+ "type": {
131
+ "type": "string",
132
+ "const": "math"
133
+ }
134
+ }
135
+ },
136
+ "TypeReduce": {
137
+ "type": "object",
138
+ "additionalProperties": false,
139
+ "required": [
140
+ "expression",
141
+ "reducer",
142
+ "type"
143
+ ],
144
+ "properties": {
145
+ "datasource": {
146
+ "$ref": "#/definitions/DataSourceRef",
147
+ "description": "The datasource"
148
+ },
149
+ "expression": {
150
+ "type": "string",
151
+ "minLength": 1,
152
+ "description": "Reference to single query result"
153
+ },
154
+ "hide": {
155
+ "type": "boolean",
156
+ "description": "true if query is disabled (ie should not be returned to the dashboard)\nNOTE: this does not always imply that the query should not be executed since\nthe results from a hidden query may be used as the input to other queries (SSE etc)"
157
+ },
158
+ "intervalMs": {
159
+ "type": "number",
160
+ "description": "Interval is the suggested duration between time points in a time series query.\nNOTE: the values for intervalMs is not saved in the query model. It is typically calculated\nfrom the interval required to fill a pixels in the visualization"
161
+ },
162
+ "maxDataPoints": {
163
+ "type": "integer",
164
+ "description": "MaxDataPoints is the maximum number of data points that should be returned from a time series query.\nNOTE: the values for maxDataPoints is not saved in the query model. It is typically calculated\nfrom the number of pixels visible in a visualization"
165
+ },
166
+ "queryType": {
167
+ "type": "string",
168
+ "description": "QueryType is an optional identifier for the type of query.\nIt can be used to distinguish different types of queries."
169
+ },
170
+ "reducer": {
171
+ "enum": [
172
+ "sum",
173
+ "mean",
174
+ "min",
175
+ "max",
176
+ "count",
177
+ "last",
178
+ "median"
179
+ ],
180
+ "type": "string",
181
+ "description": "The reducer\nPossible enum values:\n - `\"sum\"` \n - `\"mean\"` \n - `\"min\"` \n - `\"max\"` \n - `\"count\"` \n - `\"last\"` \n - `\"median\"` "
182
+ },
183
+ "refId": {
184
+ "anyOf": [
185
+ {
186
+ "type": "string"
187
+ },
188
+ {
189
+ "type": "null"
190
+ }
191
+ ],
192
+ "description": "RefID is the unique identifier of the query, set by the frontend call."
193
+ },
194
+ "resultAssertions": {
195
+ "type": "object",
196
+ "additionalProperties": false,
197
+ "required": [
198
+ "typeVersion"
199
+ ],
200
+ "properties": {
201
+ "maxFrames": {
202
+ "type": "integer",
203
+ "description": "Maximum frame count"
204
+ },
205
+ "type": {
206
+ "enum": [
207
+ "",
208
+ "timeseries-wide",
209
+ "timeseries-long",
210
+ "timeseries-many",
211
+ "timeseries-multi",
212
+ "directory-listing",
213
+ "table",
214
+ "numeric-wide",
215
+ "numeric-multi",
216
+ "numeric-long",
217
+ "log-lines"
218
+ ],
219
+ "type": "string",
220
+ "description": "Type asserts that the frame matches a known type structure.\nPossible enum values:\n - `\"\"` \n - `\"timeseries-wide\"` \n - `\"timeseries-long\"` \n - `\"timeseries-many\"` \n - `\"timeseries-multi\"` \n - `\"directory-listing\"` \n - `\"table\"` \n - `\"numeric-wide\"` \n - `\"numeric-multi\"` \n - `\"numeric-long\"` \n - `\"log-lines\"` "
221
+ },
222
+ "typeVersion": {
223
+ "type": "array",
224
+ "items": {
225
+ "type": "integer"
226
+ },
227
+ "description": "TypeVersion is the version of the Type property. Versions greater than 0.0 correspond to the dataplane\ncontract documentation https://grafana.github.io/dataplane/contract/."
228
+ }
229
+ },
230
+ "description": "Optionally define expected query result behavior"
231
+ },
232
+ "settings": {
233
+ "type": "object",
234
+ "additionalProperties": false,
235
+ "required": [
236
+ "mode"
237
+ ],
238
+ "properties": {
239
+ "mode": {
240
+ "enum": [
241
+ "dropNN",
242
+ "replaceNN"
243
+ ],
244
+ "type": "string",
245
+ "description": "Non-number reduce behavior\nPossible enum values:\n - `\"dropNN\"` Drop non-numbers\n - `\"replaceNN\"` Replace non-numbers"
246
+ },
247
+ "replaceWithValue": {
248
+ "type": "number",
249
+ "description": "Only valid when mode is replace"
250
+ }
251
+ },
252
+ "description": "Reducer Options"
253
+ },
254
+ "timeRange": {
255
+ "type": "object",
256
+ "additionalProperties": false,
257
+ "required": [
258
+ "from",
259
+ "to"
260
+ ],
261
+ "properties": {
262
+ "from": {
263
+ "type": "string",
264
+ "description": "From is the start time of the query.",
265
+ "default": "now-6h"
266
+ },
267
+ "to": {
268
+ "type": "string",
269
+ "description": "To is the end time of the query.",
270
+ "default": "now"
271
+ }
272
+ },
273
+ "description": "TimeRange represents the query range\nNOTE: unlike generic /ds/query, we can now send explicit time values in each query\nNOTE: the values for timeRange are not saved in a dashboard, they are constructed on the fly"
274
+ },
275
+ "type": {
276
+ "type": "string",
277
+ "const": "reduce"
278
+ }
279
+ }
280
+ },
281
+ "TypeResample": {
282
+ "type": "object",
283
+ "additionalProperties": false,
284
+ "required": [
285
+ "downsampler",
286
+ "expression",
287
+ "type",
288
+ "upsampler",
289
+ "window"
290
+ ],
291
+ "properties": {
292
+ "datasource": {
293
+ "$ref": "#/definitions/DataSourceRef",
294
+ "description": "The datasource"
295
+ },
296
+ "downsampler": {
297
+ "enum": [
298
+ "sum",
299
+ "mean",
300
+ "min",
301
+ "max",
302
+ "count",
303
+ "last",
304
+ "median"
305
+ ],
306
+ "type": "string",
307
+ "description": "The downsample function\nPossible enum values:\n - `\"sum\"` \n - `\"mean\"` \n - `\"min\"` \n - `\"max\"` \n - `\"count\"` \n - `\"last\"` \n - `\"median\"` "
308
+ },
309
+ "expression": {
310
+ "type": "string",
311
+ "minLength": 1,
312
+ "description": "The math expression"
313
+ },
314
+ "hide": {
315
+ "type": "boolean",
316
+ "description": "true if query is disabled (ie should not be returned to the dashboard)\nNOTE: this does not always imply that the query should not be executed since\nthe results from a hidden query may be used as the input to other queries (SSE etc)"
317
+ },
318
+ "intervalMs": {
319
+ "type": "number",
320
+ "description": "Interval is the suggested duration between time points in a time series query.\nNOTE: the values for intervalMs is not saved in the query model. It is typically calculated\nfrom the interval required to fill a pixels in the visualization"
321
+ },
322
+ "maxDataPoints": {
323
+ "type": "integer",
324
+ "description": "MaxDataPoints is the maximum number of data points that should be returned from a time series query.\nNOTE: the values for maxDataPoints is not saved in the query model. It is typically calculated\nfrom the number of pixels visible in a visualization"
325
+ },
326
+ "queryType": {
327
+ "type": "string",
328
+ "description": "QueryType is an optional identifier for the type of query.\nIt can be used to distinguish different types of queries."
329
+ },
330
+ "refId": {
331
+ "anyOf": [
332
+ {
333
+ "type": "string"
334
+ },
335
+ {
336
+ "type": "null"
337
+ }
338
+ ],
339
+ "description": "RefID is the unique identifier of the query, set by the frontend call."
340
+ },
341
+ "resultAssertions": {
342
+ "type": "object",
343
+ "additionalProperties": false,
344
+ "required": [
345
+ "typeVersion"
346
+ ],
347
+ "properties": {
348
+ "maxFrames": {
349
+ "type": "integer",
350
+ "description": "Maximum frame count"
351
+ },
352
+ "type": {
353
+ "enum": [
354
+ "",
355
+ "timeseries-wide",
356
+ "timeseries-long",
357
+ "timeseries-many",
358
+ "timeseries-multi",
359
+ "directory-listing",
360
+ "table",
361
+ "numeric-wide",
362
+ "numeric-multi",
363
+ "numeric-long",
364
+ "log-lines"
365
+ ],
366
+ "type": "string",
367
+ "description": "Type asserts that the frame matches a known type structure.\nPossible enum values:\n - `\"\"` \n - `\"timeseries-wide\"` \n - `\"timeseries-long\"` \n - `\"timeseries-many\"` \n - `\"timeseries-multi\"` \n - `\"directory-listing\"` \n - `\"table\"` \n - `\"numeric-wide\"` \n - `\"numeric-multi\"` \n - `\"numeric-long\"` \n - `\"log-lines\"` "
368
+ },
369
+ "typeVersion": {
370
+ "type": "array",
371
+ "items": {
372
+ "type": "integer"
373
+ },
374
+ "description": "TypeVersion is the version of the Type property. Versions greater than 0.0 correspond to the dataplane\ncontract documentation https://grafana.github.io/dataplane/contract/."
375
+ }
376
+ },
377
+ "description": "Optionally define expected query result behavior"
378
+ },
379
+ "timeRange": {
380
+ "type": "object",
381
+ "additionalProperties": false,
382
+ "required": [
383
+ "from",
384
+ "to"
385
+ ],
386
+ "properties": {
387
+ "from": {
388
+ "type": "string",
389
+ "description": "From is the start time of the query.",
390
+ "default": "now-6h"
391
+ },
392
+ "to": {
393
+ "type": "string",
394
+ "description": "To is the end time of the query.",
395
+ "default": "now"
396
+ }
397
+ },
398
+ "description": "TimeRange represents the query range\nNOTE: unlike generic /ds/query, we can now send explicit time values in each query\nNOTE: the values for timeRange are not saved in a dashboard, they are constructed on the fly"
399
+ },
400
+ "type": {
401
+ "type": "string",
402
+ "const": "resample"
403
+ },
404
+ "upsampler": {
405
+ "enum": [
406
+ "pad",
407
+ "backfilling",
408
+ "fillna"
409
+ ],
410
+ "type": "string",
411
+ "description": "The upsample function\nPossible enum values:\n - `\"pad\"` Use the last seen value\n - `\"backfilling\"` backfill\n - `\"fillna\"` Do not fill values (nill)"
412
+ },
413
+ "window": {
414
+ "type": "string",
415
+ "minLength": 1,
416
+ "description": "The time duration"
417
+ }
418
+ }
419
+ },
420
+ "TypeClassicConditions": {
421
+ "type": "object",
422
+ "additionalProperties": false,
423
+ "required": [
424
+ "conditions",
425
+ "type"
426
+ ],
427
+ "properties": {
428
+ "conditions": {
429
+ "type": "array",
430
+ "items": {
431
+ "type": "object",
432
+ "additionalProperties": false,
433
+ "required": [
434
+ "evaluator",
435
+ "operator",
436
+ "query",
437
+ "reducer"
438
+ ],
439
+ "properties": {
440
+ "evaluator": {
441
+ "type": "object",
442
+ "additionalProperties": false,
443
+ "required": [
444
+ "params",
445
+ "type"
446
+ ],
447
+ "properties": {
448
+ "params": {
449
+ "type": "array",
450
+ "items": {
451
+ "type": "number"
452
+ }
453
+ },
454
+ "type": {
455
+ "type": "string",
456
+ "description": "e.g. \"gt\""
457
+ }
458
+ }
459
+ },
460
+ "operator": {
461
+ "type": "object",
462
+ "additionalProperties": false,
463
+ "required": [
464
+ "type"
465
+ ],
466
+ "properties": {
467
+ "type": {
468
+ "enum": [
469
+ "and",
470
+ "or",
471
+ "logic-or"
472
+ ],
473
+ "type": "string"
474
+ }
475
+ }
476
+ },
477
+ "query": {
478
+ "type": "object",
479
+ "additionalProperties": false,
480
+ "required": [
481
+ "params"
482
+ ],
483
+ "properties": {
484
+ "params": {
485
+ "type": "array",
486
+ "items": {
487
+ "type": "string"
488
+ }
489
+ }
490
+ }
491
+ },
492
+ "reducer": {
493
+ "type": "object",
494
+ "additionalProperties": false,
495
+ "required": [
496
+ "type"
497
+ ],
498
+ "properties": {
499
+ "type": {
500
+ "type": "string"
501
+ }
502
+ }
503
+ }
504
+ }
505
+ }
506
+ },
507
+ "datasource": {
508
+ "$ref": "#/definitions/DataSourceRef",
509
+ "description": "The datasource"
510
+ },
511
+ "hide": {
512
+ "type": "boolean",
513
+ "description": "true if query is disabled (ie should not be returned to the dashboard)\nNOTE: this does not always imply that the query should not be executed since\nthe results from a hidden query may be used as the input to other queries (SSE etc)"
514
+ },
515
+ "intervalMs": {
516
+ "type": "number",
517
+ "description": "Interval is the suggested duration between time points in a time series query.\nNOTE: the values for intervalMs is not saved in the query model. It is typically calculated\nfrom the interval required to fill a pixels in the visualization"
518
+ },
519
+ "maxDataPoints": {
520
+ "type": "integer",
521
+ "description": "MaxDataPoints is the maximum number of data points that should be returned from a time series query.\nNOTE: the values for maxDataPoints is not saved in the query model. It is typically calculated\nfrom the number of pixels visible in a visualization"
522
+ },
523
+ "queryType": {
524
+ "type": "string",
525
+ "description": "QueryType is an optional identifier for the type of query.\nIt can be used to distinguish different types of queries."
526
+ },
527
+ "refId": {
528
+ "anyOf": [
529
+ {
530
+ "type": "string"
531
+ },
532
+ {
533
+ "type": "null"
534
+ }
535
+ ],
536
+ "description": "RefID is the unique identifier of the query, set by the frontend call."
537
+ },
538
+ "resultAssertions": {
539
+ "type": "object",
540
+ "additionalProperties": false,
541
+ "required": [
542
+ "typeVersion"
543
+ ],
544
+ "properties": {
545
+ "maxFrames": {
546
+ "type": "integer",
547
+ "description": "Maximum frame count"
548
+ },
549
+ "type": {
550
+ "enum": [
551
+ "",
552
+ "timeseries-wide",
553
+ "timeseries-long",
554
+ "timeseries-many",
555
+ "timeseries-multi",
556
+ "directory-listing",
557
+ "table",
558
+ "numeric-wide",
559
+ "numeric-multi",
560
+ "numeric-long",
561
+ "log-lines"
562
+ ],
563
+ "type": "string",
564
+ "description": "Type asserts that the frame matches a known type structure.\nPossible enum values:\n - `\"\"` \n - `\"timeseries-wide\"` \n - `\"timeseries-long\"` \n - `\"timeseries-many\"` \n - `\"timeseries-multi\"` \n - `\"directory-listing\"` \n - `\"table\"` \n - `\"numeric-wide\"` \n - `\"numeric-multi\"` \n - `\"numeric-long\"` \n - `\"log-lines\"` "
565
+ },
566
+ "typeVersion": {
567
+ "type": "array",
568
+ "items": {
569
+ "type": "integer"
570
+ },
571
+ "description": "TypeVersion is the version of the Type property. Versions greater than 0.0 correspond to the dataplane\ncontract documentation https://grafana.github.io/dataplane/contract/."
572
+ }
573
+ },
574
+ "description": "Optionally define expected query result behavior"
575
+ },
576
+ "timeRange": {
577
+ "type": "object",
578
+ "additionalProperties": false,
579
+ "required": [
580
+ "from",
581
+ "to"
582
+ ],
583
+ "properties": {
584
+ "from": {
585
+ "type": "string",
586
+ "description": "From is the start time of the query.",
587
+ "default": "now-6h"
588
+ },
589
+ "to": {
590
+ "type": "string",
591
+ "description": "To is the end time of the query.",
592
+ "default": "now"
593
+ }
594
+ },
595
+ "description": "TimeRange represents the query range\nNOTE: unlike generic /ds/query, we can now send explicit time values in each query\nNOTE: the values for timeRange are not saved in a dashboard, they are constructed on the fly"
596
+ },
597
+ "type": {
598
+ "type": "string",
599
+ "const": "classic_conditions"
600
+ }
601
+ }
602
+ },
603
+ "TypeThreshold": {
604
+ "type": "object",
605
+ "additionalProperties": false,
606
+ "required": [
607
+ "conditions",
608
+ "expression",
609
+ "type"
610
+ ],
611
+ "properties": {
612
+ "conditions": {
613
+ "type": "array",
614
+ "items": {
615
+ "type": "object",
616
+ "additionalProperties": false,
617
+ "required": [
618
+ "evaluator"
619
+ ],
620
+ "properties": {
621
+ "evaluator": {
622
+ "type": "object",
623
+ "additionalProperties": false,
624
+ "required": [
625
+ "params",
626
+ "type"
627
+ ],
628
+ "properties": {
629
+ "params": {
630
+ "type": "array",
631
+ "items": {
632
+ "type": "number"
633
+ }
634
+ },
635
+ "type": {
636
+ "enum": [
637
+ "gt",
638
+ "lt",
639
+ "eq",
640
+ "ne",
641
+ "gte",
642
+ "lte",
643
+ "within_range",
644
+ "outside_range",
645
+ "within_range_included",
646
+ "outside_range_included"
647
+ ],
648
+ "type": "string",
649
+ "description": "e.g. \"gt\""
650
+ }
651
+ }
652
+ },
653
+ "loadedDimensions": {
654
+ "type": "object",
655
+ "additionalProperties": {}
656
+ },
657
+ "unloadEvaluator": {
658
+ "type": "object",
659
+ "additionalProperties": false,
660
+ "required": [
661
+ "params",
662
+ "type"
663
+ ],
664
+ "properties": {
665
+ "params": {
666
+ "type": "array",
667
+ "items": {
668
+ "type": "number"
669
+ }
670
+ },
671
+ "type": {
672
+ "enum": [
673
+ "gt",
674
+ "lt",
675
+ "eq",
676
+ "ne",
677
+ "gte",
678
+ "lte",
679
+ "within_range",
680
+ "outside_range",
681
+ "within_range_included",
682
+ "outside_range_included"
683
+ ],
684
+ "type": "string",
685
+ "description": "e.g. \"gt\""
686
+ }
687
+ }
688
+ }
689
+ }
690
+ },
691
+ "description": "Threshold Conditions"
692
+ },
693
+ "datasource": {
694
+ "$ref": "#/definitions/DataSourceRef",
695
+ "description": "The datasource"
696
+ },
697
+ "expression": {
698
+ "type": "string",
699
+ "minLength": 1,
700
+ "description": "Reference to single query result"
701
+ },
702
+ "hide": {
703
+ "type": "boolean",
704
+ "description": "true if query is disabled (ie should not be returned to the dashboard)\nNOTE: this does not always imply that the query should not be executed since\nthe results from a hidden query may be used as the input to other queries (SSE etc)"
705
+ },
706
+ "intervalMs": {
707
+ "type": "number",
708
+ "description": "Interval is the suggested duration between time points in a time series query.\nNOTE: the values for intervalMs is not saved in the query model. It is typically calculated\nfrom the interval required to fill a pixels in the visualization"
709
+ },
710
+ "maxDataPoints": {
711
+ "type": "integer",
712
+ "description": "MaxDataPoints is the maximum number of data points that should be returned from a time series query.\nNOTE: the values for maxDataPoints is not saved in the query model. It is typically calculated\nfrom the number of pixels visible in a visualization"
713
+ },
714
+ "queryType": {
715
+ "type": "string",
716
+ "description": "QueryType is an optional identifier for the type of query.\nIt can be used to distinguish different types of queries."
717
+ },
718
+ "refId": {
719
+ "anyOf": [
720
+ {
721
+ "type": "string"
722
+ },
723
+ {
724
+ "type": "null"
725
+ }
726
+ ],
727
+ "description": "RefID is the unique identifier of the query, set by the frontend call."
728
+ },
729
+ "resultAssertions": {
730
+ "type": "object",
731
+ "additionalProperties": false,
732
+ "required": [
733
+ "typeVersion"
734
+ ],
735
+ "properties": {
736
+ "maxFrames": {
737
+ "type": "integer",
738
+ "description": "Maximum frame count"
739
+ },
740
+ "type": {
741
+ "enum": [
742
+ "",
743
+ "timeseries-wide",
744
+ "timeseries-long",
745
+ "timeseries-many",
746
+ "timeseries-multi",
747
+ "directory-listing",
748
+ "table",
749
+ "numeric-wide",
750
+ "numeric-multi",
751
+ "numeric-long",
752
+ "log-lines"
753
+ ],
754
+ "type": "string",
755
+ "description": "Type asserts that the frame matches a known type structure.\nPossible enum values:\n - `\"\"` \n - `\"timeseries-wide\"` \n - `\"timeseries-long\"` \n - `\"timeseries-many\"` \n - `\"timeseries-multi\"` \n - `\"directory-listing\"` \n - `\"table\"` \n - `\"numeric-wide\"` \n - `\"numeric-multi\"` \n - `\"numeric-long\"` \n - `\"log-lines\"` "
756
+ },
757
+ "typeVersion": {
758
+ "type": "array",
759
+ "items": {
760
+ "type": "integer"
761
+ },
762
+ "description": "TypeVersion is the version of the Type property. Versions greater than 0.0 correspond to the dataplane\ncontract documentation https://grafana.github.io/dataplane/contract/."
763
+ }
764
+ },
765
+ "description": "Optionally define expected query result behavior"
766
+ },
767
+ "timeRange": {
768
+ "type": "object",
769
+ "additionalProperties": false,
770
+ "required": [
771
+ "from",
772
+ "to"
773
+ ],
774
+ "properties": {
775
+ "from": {
776
+ "type": "string",
777
+ "description": "From is the start time of the query.",
778
+ "default": "now-6h"
779
+ },
780
+ "to": {
781
+ "type": "string",
782
+ "description": "To is the end time of the query.",
783
+ "default": "now"
784
+ }
785
+ },
786
+ "description": "TimeRange represents the query range\nNOTE: unlike generic /ds/query, we can now send explicit time values in each query\nNOTE: the values for timeRange are not saved in a dashboard, they are constructed on the fly"
787
+ },
788
+ "type": {
789
+ "type": "string",
790
+ "const": "threshold"
791
+ }
792
+ }
793
+ },
794
+ "TypeSql": {
795
+ "type": "object",
796
+ "additionalProperties": false,
797
+ "required": [
798
+ "expression",
799
+ "format",
800
+ "type"
801
+ ],
802
+ "properties": {
803
+ "datasource": {
804
+ "$ref": "#/definitions/DataSourceRef",
805
+ "description": "The datasource"
806
+ },
807
+ "expression": {
808
+ "type": "string",
809
+ "minLength": 1
810
+ },
811
+ "format": {
812
+ "type": "string"
813
+ },
814
+ "hide": {
815
+ "type": "boolean",
816
+ "description": "true if query is disabled (ie should not be returned to the dashboard)\nNOTE: this does not always imply that the query should not be executed since\nthe results from a hidden query may be used as the input to other queries (SSE etc)"
817
+ },
818
+ "intervalMs": {
819
+ "type": "number",
820
+ "description": "Interval is the suggested duration between time points in a time series query.\nNOTE: the values for intervalMs is not saved in the query model. It is typically calculated\nfrom the interval required to fill a pixels in the visualization"
821
+ },
822
+ "maxDataPoints": {
823
+ "type": "integer",
824
+ "description": "MaxDataPoints is the maximum number of data points that should be returned from a time series query.\nNOTE: the values for maxDataPoints is not saved in the query model. It is typically calculated\nfrom the number of pixels visible in a visualization"
825
+ },
826
+ "queryType": {
827
+ "type": "string",
828
+ "description": "QueryType is an optional identifier for the type of query.\nIt can be used to distinguish different types of queries."
829
+ },
830
+ "refId": {
831
+ "anyOf": [
832
+ {
833
+ "type": "string"
834
+ },
835
+ {
836
+ "type": "null"
837
+ }
838
+ ],
839
+ "description": "RefID is the unique identifier of the query, set by the frontend call."
840
+ },
841
+ "resultAssertions": {
842
+ "type": "object",
843
+ "additionalProperties": false,
844
+ "required": [
845
+ "typeVersion"
846
+ ],
847
+ "properties": {
848
+ "maxFrames": {
849
+ "type": "integer",
850
+ "description": "Maximum frame count"
851
+ },
852
+ "type": {
853
+ "enum": [
854
+ "",
855
+ "timeseries-wide",
856
+ "timeseries-long",
857
+ "timeseries-many",
858
+ "timeseries-multi",
859
+ "directory-listing",
860
+ "table",
861
+ "numeric-wide",
862
+ "numeric-multi",
863
+ "numeric-long",
864
+ "log-lines"
865
+ ],
866
+ "type": "string",
867
+ "description": "Type asserts that the frame matches a known type structure.\nPossible enum values:\n - `\"\"` \n - `\"timeseries-wide\"` \n - `\"timeseries-long\"` \n - `\"timeseries-many\"` \n - `\"timeseries-multi\"` \n - `\"directory-listing\"` \n - `\"table\"` \n - `\"numeric-wide\"` \n - `\"numeric-multi\"` \n - `\"numeric-long\"` \n - `\"log-lines\"` "
868
+ },
869
+ "typeVersion": {
870
+ "type": "array",
871
+ "items": {
872
+ "type": "integer"
873
+ },
874
+ "description": "TypeVersion is the version of the Type property. Versions greater than 0.0 correspond to the dataplane\ncontract documentation https://grafana.github.io/dataplane/contract/."
875
+ }
876
+ },
877
+ "description": "Optionally define expected query result behavior"
878
+ },
879
+ "timeRange": {
880
+ "type": "object",
881
+ "additionalProperties": false,
882
+ "required": [
883
+ "from",
884
+ "to"
885
+ ],
886
+ "properties": {
887
+ "from": {
888
+ "type": "string",
889
+ "description": "From is the start time of the query.",
890
+ "default": "now-6h"
891
+ },
892
+ "to": {
893
+ "type": "string",
894
+ "description": "To is the end time of the query.",
895
+ "default": "now"
896
+ }
897
+ },
898
+ "description": "TimeRange represents the query range\nNOTE: unlike generic /ds/query, we can now send explicit time values in each query\nNOTE: the values for timeRange are not saved in a dashboard, they are constructed on the fly"
899
+ },
900
+ "type": {
901
+ "type": "string",
902
+ "const": "sql"
903
+ }
904
+ }
905
+ },
906
+ "TypeMathOrTypeReduceOrTypeResampleOrTypeClassicConditionsOrTypeThresholdOrTypeSql": {
907
+ "type": "object",
908
+ "additionalProperties": false,
909
+ "properties": {
910
+ "TypeMath": {
911
+ "anyOf": [
912
+ {
913
+ "$ref": "#/definitions/TypeMath"
914
+ },
915
+ {
916
+ "type": "null"
917
+ }
918
+ ]
919
+ },
920
+ "TypeReduce": {
921
+ "anyOf": [
922
+ {
923
+ "$ref": "#/definitions/TypeReduce"
924
+ },
925
+ {
926
+ "type": "null"
927
+ }
928
+ ]
929
+ },
930
+ "TypeResample": {
931
+ "anyOf": [
932
+ {
933
+ "$ref": "#/definitions/TypeResample"
934
+ },
935
+ {
936
+ "type": "null"
937
+ }
938
+ ]
939
+ },
940
+ "TypeClassicConditions": {
941
+ "anyOf": [
942
+ {
943
+ "$ref": "#/definitions/TypeClassicConditions"
944
+ },
945
+ {
946
+ "type": "null"
947
+ }
948
+ ]
949
+ },
950
+ "TypeThreshold": {
951
+ "anyOf": [
952
+ {
953
+ "$ref": "#/definitions/TypeThreshold"
954
+ },
955
+ {
956
+ "type": "null"
957
+ }
958
+ ]
959
+ },
960
+ "TypeSql": {
961
+ "anyOf": [
962
+ {
963
+ "$ref": "#/definitions/TypeSql"
964
+ },
965
+ {
966
+ "type": "null"
967
+ }
968
+ ]
969
+ }
970
+ }
971
+ },
972
+ "DataSourceRef": {
973
+ "type": "object",
974
+ "additionalProperties": false,
975
+ "properties": {
976
+ "type": {
977
+ "type": "string",
978
+ "description": "The plugin type-id"
979
+ },
980
+ "uid": {
981
+ "type": "string",
982
+ "description": "Specific datasource instance"
983
+ }
984
+ }
985
+ }
986
+ }
987
+ }