diff --git a/cspell.config.json b/cspell.config.json index b592957d..c14704c8 100644 --- a/cspell.config.json +++ b/cspell.config.json @@ -1,6 +1,13 @@ { - "ignorePaths": ["node_modules/**", "dist/**", "mage_output_file.go"], - "ignoreRegExpList": ["import\\s*\\((.|[\r\n])*?\\)", "import\\s*.*\".*?\""], + "ignorePaths": [ + "node_modules/**", + "dist/**", + "mage_output_file.go" + ], + "ignoreRegExpList": [ + "import\\s*\\((.|[\r\n])*?\\)", + "import\\s*.*\".*?\"" + ], "words": [ "araddon", "bmike", @@ -32,6 +39,7 @@ "querytype", "rgba", "RUBYGEMS", + "sdkapi", "shurcoo", "stretchr", "structs", @@ -47,6 +55,9 @@ "typecheck", "vals", "vladimirdotk", - "Wrapf" + "Wrapf", + "yesoreyeram", + "dataplane", + "schemabuilder" ] } diff --git a/go.mod b/go.mod index 67fd650c..9e7f0c32 100644 --- a/go.mod +++ b/go.mod @@ -7,75 +7,86 @@ toolchain go1.21.3 require ( github.com/google/go-github/v53 v53.2.0 github.com/gorilla/mux v1.8.0 - github.com/grafana/grafana-plugin-sdk-go v0.198.0 + github.com/grafana/grafana-plugin-sdk-go v0.213.0 github.com/influxdata/tdigest v0.0.1 github.com/pkg/errors v0.9.1 github.com/shurcooL/githubv4 v0.0.0-20230305132112-efb623903184 github.com/stretchr/testify v1.8.4 - golang.org/x/oauth2 v0.15.0 + golang.org/x/oauth2 v0.16.0 pgregory.net/rapid v1.0.0 ) require ( github.com/BurntSushi/toml v1.3.2 // indirect github.com/ProtonMail/go-crypto v0.0.0-20230217124315-7d5c6f04bbb8 // indirect - github.com/apache/arrow/go/v13 v13.0.0 // indirect + github.com/apache/arrow/go/v15 v15.0.0 // indirect + github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a // indirect + github.com/bahlo/generic-list-go v0.2.0 // indirect + github.com/buger/jsonparser v1.1.1 // indirect github.com/cenkalti/backoff/v4 v4.2.1 // indirect github.com/chromedp/cdproto v0.0.0-20220208224320-6efb837e6bc2 // indirect github.com/cloudflare/circl v1.3.7 // indirect github.com/cpuguy83/go-md2man/v2 v2.0.2 // indirect github.com/elazarl/goproxy v0.0.0-20230731152917-f99041a5c027 // indirect + github.com/emicklei/go-restful/v3 v3.8.0 // indirect github.com/fatih/color v1.15.0 // indirect github.com/getkin/kin-openapi v0.120.0 // indirect - github.com/go-logr/logr v1.3.0 // indirect + github.com/go-logr/logr v1.4.1 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/go-openapi/jsonpointer v0.19.6 // indirect + github.com/go-openapi/jsonreference v0.20.1 // indirect github.com/go-openapi/swag v0.22.4 // indirect - github.com/goccy/go-json v0.10.0 // indirect + github.com/goccy/go-json v0.10.2 // indirect github.com/gogo/protobuf v1.3.2 // indirect + github.com/google/gnostic-models v0.6.8 // indirect github.com/google/go-querystring v1.1.0 // indirect - github.com/google/uuid v1.5.0 // indirect - github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.2 // indirect + github.com/google/gofuzz v1.1.0 // indirect + github.com/google/uuid v1.6.0 // indirect + github.com/grpc-ecosystem/grpc-gateway/v2 v2.19.0 // indirect + github.com/invopop/jsonschema v0.12.0 // indirect github.com/invopop/yaml v0.2.0 // indirect github.com/josharian/intern v1.0.0 // indirect github.com/json-iterator/go v1.1.12 // indirect - github.com/klauspost/compress v1.16.0 // indirect - github.com/klauspost/cpuid/v2 v2.2.3 // indirect + github.com/klauspost/compress v1.16.7 // indirect + github.com/klauspost/cpuid/v2 v2.2.5 // indirect github.com/mailru/easyjson v0.7.7 // indirect github.com/mattn/go-colorable v0.1.13 // indirect - github.com/mattn/go-isatty v0.0.18 // indirect - github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0 // indirect + github.com/mattn/go-isatty v0.0.19 // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect github.com/modern-go/reflect2 v1.0.2 // indirect github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 // indirect github.com/perimeterx/marshmallow v1.1.5 // indirect - github.com/pierrec/lz4/v4 v4.1.17 // indirect + github.com/pierrec/lz4/v4 v4.1.18 // indirect github.com/rivo/uniseg v0.4.4 // indirect github.com/russross/blackfriday/v2 v2.1.0 // indirect github.com/unknwon/bra v0.0.0-20200517080246-1e3013ecaff8 // indirect github.com/unknwon/com v1.0.1 // indirect github.com/unknwon/log v0.0.0-20150304194804-e617c87089d3 // indirect github.com/urfave/cli v1.22.14 // indirect + github.com/wk8/go-ordered-map/v2 v2.1.8 // indirect github.com/zeebo/xxh3 v1.0.2 // indirect - go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.46.1 // indirect - go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace v0.46.1 // indirect - go.opentelemetry.io/contrib/propagators/jaeger v1.21.1 // indirect - go.opentelemetry.io/contrib/samplers/jaegerremote v0.15.1 // indirect - go.opentelemetry.io/otel v1.21.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.21.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.21.0 // indirect - go.opentelemetry.io/otel/metric v1.21.0 // indirect - go.opentelemetry.io/otel/sdk v1.21.0 // indirect - go.opentelemetry.io/otel/trace v1.21.0 // indirect - go.opentelemetry.io/proto/otlp v1.0.0 // indirect - golang.org/x/crypto v0.17.0 // indirect - golang.org/x/mod v0.9.0 // indirect - golang.org/x/tools v0.6.0 // indirect - google.golang.org/genproto v0.0.0-20231002182017-d307bd883b97 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20231002182017-d307bd883b97 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20231002182017-d307bd883b97 // indirect + go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0 // indirect + go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace v0.49.0 // indirect + go.opentelemetry.io/contrib/propagators/jaeger v1.22.0 // indirect + go.opentelemetry.io/contrib/samplers/jaegerremote v0.16.0 // indirect + go.opentelemetry.io/otel v1.24.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.24.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.24.0 // indirect + go.opentelemetry.io/otel/metric v1.24.0 // indirect + go.opentelemetry.io/otel/sdk v1.24.0 // indirect + go.opentelemetry.io/otel/trace v1.24.0 // indirect + go.opentelemetry.io/proto/otlp v1.1.0 // indirect + golang.org/x/crypto v0.19.0 // indirect + golang.org/x/exp v0.0.0-20231006140011-7918f672742d // indirect + golang.org/x/mod v0.13.0 // indirect + golang.org/x/tools v0.14.0 // indirect + google.golang.org/genproto v0.0.0-20240123012728-ef4313101c80 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20240123012728-ef4313101c80 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240123012728-ef4313101c80 // indirect gopkg.in/fsnotify/fsnotify.v1 v1.4.7 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect + k8s.io/kube-openapi v0.0.0-20240220201932-37d671a357a5 // indirect + k8s.io/utils v0.0.0-20230726121419-3b25d923346b // indirect ) require ( @@ -85,7 +96,7 @@ require ( github.com/cheekybits/genny v1.0.0 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/golang/protobuf v1.5.3 // indirect; indirect github.com/grafana/grafana-plugin-sdk-go v0.28.0 - github.com/google/flatbuffers v23.3.3+incompatible // indirect + github.com/google/flatbuffers v23.5.26+incompatible // indirect github.com/google/go-cmp v0.6.0 // indirect github.com/grpc-ecosystem/go-grpc-middleware v1.4.0 // indirect github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 // indirect @@ -101,14 +112,14 @@ require ( github.com/pmezard/go-difflib v1.0.0 // indirect github.com/prometheus/client_golang v1.18.0 // indirect github.com/prometheus/client_model v0.5.0 // indirect - github.com/prometheus/common v0.45.0 // indirect + github.com/prometheus/common v0.46.0 // indirect github.com/prometheus/procfs v0.12.0 // indirect github.com/shurcooL/graphql v0.0.0-20220606043923-3cf50f8a0a29 // indirect - golang.org/x/net v0.19.0 // indirect - golang.org/x/sys v0.15.0 // indirect + golang.org/x/net v0.21.0 // indirect + golang.org/x/sys v0.17.0 // indirect golang.org/x/text v0.14.0 // indirect golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect google.golang.org/appengine v1.6.8 // indirect - google.golang.org/grpc v1.60.1 // indirect + google.golang.org/grpc v1.62.1 // indirect google.golang.org/protobuf v1.32.0 // indirect ) diff --git a/go.sum b/go.sum index 41fa4e9f..fa44bcd6 100644 --- a/go.sum +++ b/go.sum @@ -1,23 +1,24 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go v0.110.8 h1:tyNdfIxjzaWctIiLYOTalaLKZ17SI44SKFW26QbOhME= -cloud.google.com/go/compute v1.23.0 h1:tP41Zoavr8ptEqaW6j+LQOnyBBhO7OkOMAGrgLopTwY= -cloud.google.com/go/compute v1.23.0/go.mod h1:4tCnrn48xsqlwSAiLf1HXMQk8CONslYbdiEZc9FEIbM= -cloud.google.com/go/compute/metadata v0.2.3 h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGBW5aJ7UnBMY= -cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/toml v1.3.2 h1:o7IhLm0Msx3BaB+n3Ag7L8EVlByGnpq14C4YWiu/gL8= github.com/BurntSushi/toml v1.3.2/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= github.com/ProtonMail/go-crypto v0.0.0-20230217124315-7d5c6f04bbb8 h1:wPbRQzjjwFc0ih8puEVAOFGELsn1zoIIYdxvML7mDxA= github.com/ProtonMail/go-crypto v0.0.0-20230217124315-7d5c6f04bbb8/go.mod h1:I0gYDMZ6Z5GRU7l58bNFSkPTFN6Yl12dsUlAZ8xy98g= -github.com/apache/arrow/go/v13 v13.0.0 h1:kELrvDQuKZo8csdWYqBQfyi431x6Zs/YJTEgUuSVcWk= -github.com/apache/arrow/go/v13 v13.0.0/go.mod h1:W69eByFNO0ZR30q1/7Sr9d83zcVZmF2MiP3fFYAWJOc= +github.com/apache/arrow/go/v15 v15.0.0 h1:1zZACWf85oEZY5/kd9dsQS7i+2G5zVQcbKTHgslqHNA= +github.com/apache/arrow/go/v15 v15.0.0/go.mod h1:DGXsR3ajT524njufqf95822i+KTh+yea1jass9YXgjA= github.com/araddon/dateparse v0.0.0-20210429162001-6b43995a97de h1:FxWPpzIjnTlhPwqqXc4/vE0f7GvRjuAsbW+HOIe8KnA= github.com/araddon/dateparse v0.0.0-20210429162001-6b43995a97de/go.mod h1:DCaWoUhZrYW9p1lxo/cm8EmUOOzAPSEZNGF2DK1dJgw= +github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a h1:idn718Q4B6AGu/h5Sxe66HYVdqdGu2l9Iebqhi/AEoA= +github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= +github.com/bahlo/generic-list-go v0.2.0 h1:5sz/EEAK+ls5wF+NeqDpk5+iNdMDXrh3z3nPnH1Wvgk= +github.com/bahlo/generic-list-go v0.2.0/go.mod h1:2KvAjgMlE5NNynlg/5iLrrCCZ2+5xWbdbCW3pNTGyYg= github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= github.com/bufbuild/protocompile v0.4.0 h1:LbFKd2XowZvQ/kajzguUp2DC9UEIQhIq77fZZlaQsNA= github.com/bufbuild/protocompile v0.4.0/go.mod h1:3v93+mbWn/v3xzN+31nwkJfrEpAUwp+BagBSZWx+TP8= +github.com/buger/jsonparser v1.1.1 h1:2PnMjfWD7wBILjqQbt530v576A/cAbQvEW9gGIpYMUs= +github.com/buger/jsonparser v1.1.1/go.mod h1:6RYKKt7H4d4+iWqouImQ9R2FZql3VbhNgx27UK13J/0= github.com/bwesterb/go-ristretto v1.2.0/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0= github.com/cenkalti/backoff/v4 v4.2.1 h1:y4OZtCnogmCPw98Zjyt5a6+QwPLGkiQsYW5oUqylYbM= github.com/cenkalti/backoff/v4 v4.2.1/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= @@ -34,8 +35,6 @@ github.com/cloudflare/circl v1.1.0/go.mod h1:prBCrKB9DV4poKZY1l9zBXg2QJY7mvgRvtM github.com/cloudflare/circl v1.3.7 h1:qlCDlTPz2n9fu58M0Nh1J/JzcFpfgkFHHX3O35r5vcU= github.com/cloudflare/circl v1.3.7/go.mod h1:sRTcRWXGLrKw6yIGJ+l7amYJFfAXbZG0kBSc8r4zxgA= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= -github.com/cncf/xds/go v0.0.0-20230607035331-e9ce68804cb4 h1:/inchEIKaYC1Akx+H+gqO04wryn5h75LSazbRlnya1k= -github.com/cncf/xds/go v0.0.0-20230607035331-e9ce68804cb4/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/cpuguy83/go-md2man/v2 v2.0.2 h1:p1EgwI/C7NhT0JmVkwCD2ZBK8j4aeHQX2pMHHBfMQ6w= github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= @@ -48,12 +47,12 @@ github.com/elazarl/goproxy v0.0.0-20230731152917-f99041a5c027/go.mod h1:Ro8st/El github.com/elazarl/goproxy/ext v0.0.0-20190711103511-473e67f1d7d2/go.mod h1:gNh8nYJoAm43RfaxurUnxr+N1PwuFV3ZMl/efxlIlY8= github.com/elazarl/goproxy/ext v0.0.0-20220115173737-adb46da277ac h1:9yrT5tmn9Zc0ytWPASlaPwQfQMQYnRf0RSDe1XvHw0Q= github.com/elazarl/goproxy/ext v0.0.0-20220115173737-adb46da277ac/go.mod h1:gNh8nYJoAm43RfaxurUnxr+N1PwuFV3ZMl/efxlIlY8= +github.com/emicklei/go-restful/v3 v3.8.0 h1:eCZ8ulSerjdAiaNpF7GxXIE7ZCMo1moN1qX+S609eVw= +github.com/emicklei/go-restful/v3 v3.8.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/envoyproxy/protoc-gen-validate v1.0.2 h1:QkIBuU5k+x7/QXPvPPnWXWlCdaBFApVqftFV6k087DA= -github.com/envoyproxy/protoc-gen-validate v1.0.2/go.mod h1:GpiZQP3dDbg4JouG/NNS7QWXpgx6x8QiMKdmN72jogE= github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= github.com/fatih/color v1.15.0 h1:kOqh6YHBtK8aywxGerMG2Eq3H6Qgoqeo13Bk2Mv/nBs= github.com/fatih/color v1.15.0/go.mod h1:0h5ZqXfHYED7Bhv2ZJamyIOUej9KtShiJESRwBDUSsw= @@ -66,25 +65,25 @@ github.com/getkin/kin-openapi v0.120.0/go.mod h1:PCWw/lfBrJY4HcdqE3jj+QFkaFK8ABo github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY= github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/logr v1.3.0 h1:2y3SDp0ZXuc6/cjLSZ+Q3ir+QB9T/iG5yYRXqsagWSY= -github.com/go-logr/logr v1.3.0/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/logr v1.4.1 h1:pKouT5E8xu9zeFC39JXRDukb6JFQPXM5p5I91188VAQ= +github.com/go-logr/logr v1.4.1/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/go-openapi/jsonpointer v0.19.6 h1:eCs3fxoIi3Wh6vtgmLTOjdhSpiqphQ+DaPn38N2ZdrE= github.com/go-openapi/jsonpointer v0.19.6/go.mod h1:osyAmYz/mB/C3I+WsTTSgw1ONzaLJoLCyoi6/zppojs= +github.com/go-openapi/jsonreference v0.20.1 h1:FBLnyygC4/IZZr893oiomc9XaghoveYTrLC1F86HID8= +github.com/go-openapi/jsonreference v0.20.1/go.mod h1:Bl1zwGIM8/wsvqjsOQLJ/SH+En5Ap4rVB5KVcIDZG2k= github.com/go-openapi/swag v0.22.3/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14= github.com/go-openapi/swag v0.22.4 h1:QLMzNJnMGPRNDCbySlcj1x01tzU8/9LTTL9hZZZogBU= github.com/go-openapi/swag v0.22.4/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/go-test/deep v1.0.8 h1:TDsG77qcSprGbC6vTN8OuXp5g+J+b5Pcguhf7Zt61VM= github.com/go-test/deep v1.0.8/go.mod h1:5C2ZWiW0ErCdrYzpqxLbTX7MG14M9iiw8DgHncVwcsE= -github.com/goccy/go-json v0.10.0 h1:mXKd9Qw4NuzShiRlOXKews24ufknHO7gx30lsDyokKA= -github.com/goccy/go-json v0.10.0/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= +github.com/goccy/go-json v0.10.2 h1:CrxCmQqYDkv1z7lO7Wbh2HN93uovUHgrECaO5ZrCXAU= +github.com/goccy/go-json v0.10.2/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/glog v1.1.2 h1:DVjP2PbBOzHyzA+dn3WhHIq4NdVu3Q+pvivFICf/7fo= -github.com/golang/glog v1.1.2/go.mod h1:zR+okUeTbrL6EL3xHUDxZuEtGv04p5shwip1+mL/rLQ= github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= @@ -93,8 +92,10 @@ github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaS github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= -github.com/google/flatbuffers v23.3.3+incompatible h1:5PJI/WbJkaMTvpGxsHVKG/LurN/KnWXNyGpwSCDgen0= -github.com/google/flatbuffers v23.3.3+incompatible/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= +github.com/google/flatbuffers v23.5.26+incompatible h1:M9dgRyhJemaM4Sw8+66GHBu8ioaQmyPLg1b8VwK5WJg= +github.com/google/flatbuffers v23.5.26+incompatible/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= +github.com/google/gnostic-models v0.6.8 h1:yo/ABAfM5IMRsS1VnXjTBvUb61tFIHozhlYvRgGre9I= +github.com/google/gnostic-models v0.6.8/go.mod h1:5n7qKqH0f5wFt+aWF8CW6pZLLNOfYuF5OpfBSENuI8U= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= @@ -105,20 +106,22 @@ github.com/google/go-github/v53 v53.2.0/go.mod h1:XhFRObz+m/l+UCm9b7KSIC3lT3NWSX github.com/google/go-querystring v1.1.0 h1:AnCroh3fv4ZBgVIf1Iwtovgjaw/GiKJo8M8yD/fhyJ8= github.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17icRSOU623lUBU= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/google/uuid v1.5.0 h1:1p67kYwdtXjb0gL0BPiP1Av9wiZPo5A8z2cWkTZ+eyU= -github.com/google/uuid v1.5.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/gofuzz v1.1.0 h1:Hsa8mG0dQ46ij8Sl2AYJDUv1oA9/d6Vk+3LG99Oe02g= +github.com/google/gofuzz v1.1.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= +github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/gopherjs/gopherjs v0.0.0-20181103185306-d547d1d9531e h1:JKmoR8x90Iww1ks85zJ1lfDGgIiMDuIptTOhJq+zKyg= github.com/gopherjs/gopherjs v0.0.0-20181103185306-d547d1d9531e/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI= github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= -github.com/grafana/grafana-plugin-sdk-go v0.198.0 h1:zuI6/omhNSaEG6J+h1nYU1o5dA3eNozxfdsQgJCLDdk= -github.com/grafana/grafana-plugin-sdk-go v0.198.0/go.mod h1:1NQ6Vb72ZmtryHBMLnpmM1lZbjS81FMAHcHKOZQiVZQ= +github.com/grafana/grafana-plugin-sdk-go v0.213.0 h1:K2CHl+RkjAhOs9bhJBfJqJ0fF2lSdyLSxo4wfqee/C4= +github.com/grafana/grafana-plugin-sdk-go v0.213.0/go.mod h1:YYqzzfCnzMcKdQzWgFhw4ZJBDdAcEUuu83SDw1VByz4= github.com/grpc-ecosystem/go-grpc-middleware v1.4.0 h1:UH//fgunKIs4JdUbpDl1VZCDaL56wXCB/5+wF6uHfaI= github.com/grpc-ecosystem/go-grpc-middleware v1.4.0/go.mod h1:g5qyo/la0ALbONm6Vbp88Yd8NsDy6rZz+RcrMPxvld8= github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 h1:Ovs26xHkKqVztRpIrF/92BcuyuQ/YW4NSIpoGtfXNho= github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.2 h1:dygLcbEBA+t/P7ck6a8AkXv6juQ4cK0RHBoh32jxhHM= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.2/go.mod h1:Ap9RLCIJVtgQg1/BBgVEfypOAySvvlcpcVQkSzJCH4Y= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.19.0 h1:Wqo399gCIufwto+VfwCSvsnfGpF/w5E9CNxSwbpD6No= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.19.0/go.mod h1:qmOFXW2epJhM0qSnUUYpldc7gVz2KMQwJ/QYCDIa7XU= github.com/hashicorp/go-hclog v1.6.2 h1:NOtoftovWkDheyUM/8JW3QMiXyxJK3uHRK7wV04nD2I= github.com/hashicorp/go-hclog v1.6.2/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M= github.com/hashicorp/go-plugin v1.6.0 h1:wgd4KxHJTVGGqWBq4QPB1i5BZNEx9BR8+OFmHDmTk8A= @@ -127,6 +130,8 @@ github.com/hashicorp/yamux v0.1.1 h1:yrQxtgseBDrq9Y652vSRDvsKCJKOUD+GzTS4Y0Y8pvE github.com/hashicorp/yamux v0.1.1/go.mod h1:CtWFDAQgb7dxtzFs4tWbplKIe2jSi3+5vKbgIO0SLnQ= github.com/influxdata/tdigest v0.0.1 h1:XpFptwYmnEKUqmkcDjrzffswZ3nvNeevbUSLPP/ZzIY= github.com/influxdata/tdigest v0.0.1/go.mod h1:Z0kXnxzbTC2qrx4NaIzYkE1k66+6oEDQTvL95hQFh5Y= +github.com/invopop/jsonschema v0.12.0 h1:6ovsNSuvn9wEQVOyc72aycBMVQFKz7cPdMJn10CvzRI= +github.com/invopop/jsonschema v0.12.0/go.mod h1:ffZ5Km5SWWRAIN6wbDXItl95euhFz2uON45H2qjYt+0= github.com/invopop/yaml v0.2.0 h1:7zky/qH+O0DwAyoobXUqvVBwgBFRxKoQ/3FjcVpjTMY= github.com/invopop/yaml v0.2.0/go.mod h1:2XuRLgs/ouIrW3XNzuNj7J3Nvu/Dig5MXvbCEdiBN3Q= github.com/jhump/protoreflect v1.15.1 h1:HUMERORf3I3ZdX05WaQ6MIpd/NJ434hTp5YiKgfCL6c= @@ -139,10 +144,10 @@ github.com/jtolds/gls v4.2.1+incompatible h1:fSuqC+Gmlu6l/ZYAoZzx2pyucC8Xza35fpR github.com/jtolds/gls v4.2.1+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/klauspost/compress v1.16.0 h1:iULayQNOReoYUe+1qtKOqw9CwJv3aNQu8ivo7lw1HU4= -github.com/klauspost/compress v1.16.0/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= -github.com/klauspost/cpuid/v2 v2.2.3 h1:sxCkb+qR91z4vsqw4vGGZlDgPz3G7gjaLyK3V8y70BU= -github.com/klauspost/cpuid/v2 v2.2.3/go.mod h1:RVVoqg1df56z8g3pUjL/3lE5UfnlrJX8tyFgg4nqhuY= +github.com/klauspost/compress v1.16.7 h1:2mk3MPGNzKyxErAw8YaohYh69+pa4sIQSC0fPGCFR9I= +github.com/klauspost/compress v1.16.7/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= +github.com/klauspost/cpuid/v2 v2.2.5 h1:0E5MSMDEoAulmXNFquVs//DdoomxaoTY1kUhbc/qbZg= +github.com/klauspost/cpuid/v2 v2.2.5/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= @@ -165,14 +170,12 @@ github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovk github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= -github.com/mattn/go-isatty v0.0.18 h1:DOKFKCQ7FNG2L1rbrmstDN4QVRdS89Nkh85u68Uwp98= -github.com/mattn/go-isatty v0.0.18/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/mattn/go-isatty v0.0.19 h1:JITubQf0MOLdlGRuRq+jtsDlekdYPia9ZFsB8h/APPA= +github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= github.com/mattn/go-runewidth v0.0.10/go.mod h1:RAqKPSqVFrSLVXbA8x7dzmKdmGzieGRCM46jaSJTDAk= github.com/mattn/go-runewidth v0.0.14 h1:+xnbZSEeDbOIg5/mE6JF0w6n9duR1l3/WmbinWVwUuU= github.com/mattn/go-runewidth v0.0.14/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= -github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0 h1:jWpvCLoY8Z/e3VKvlsiIGKtc+UG6U5vzxaoagmhXfyg= -github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0/go.mod h1:QUyp042oQthUoa9bqDv0ER0wrtXnBruoNd7aNjkbP+k= github.com/mitchellh/go-testing-interface v1.14.1 h1:jrgshOhYAUVNMAJiKbEu7EqAwgJJ2JqpQmpLJOu07cU= github.com/mitchellh/go-testing-interface v1.14.1/go.mod h1:gfgS7OtZj6MA4U1UrDRp04twqAjfvlZyCfX3sDjEym8= github.com/mitchellh/reflectwalk v1.0.2 h1:G2LzWKi524PWgd3mLHV8Y5k7s6XUvT0Gef6zxSIeXaQ= @@ -191,8 +194,8 @@ github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6 github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= github.com/perimeterx/marshmallow v1.1.5 h1:a2LALqQ1BlHM8PZblsDdidgv1mWi1DgC2UmX50IvK2s= github.com/perimeterx/marshmallow v1.1.5/go.mod h1:dsXbUu8CRzfYP5a87xpp0xq9S3u0Vchtcl8we9tYaXw= -github.com/pierrec/lz4/v4 v4.1.17 h1:kV4Ip+/hUBC+8T6+2EgburRtkE9ef4nbY3f4dFhGjMc= -github.com/pierrec/lz4/v4 v4.1.17/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= +github.com/pierrec/lz4/v4 v4.1.18 h1:xaKrnTkyoqfh1YItXl56+6KJNVYWlEEPuAQW9xsplYQ= +github.com/pierrec/lz4/v4 v4.1.18/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= @@ -203,8 +206,8 @@ github.com/prometheus/client_golang v1.18.0/go.mod h1:T+GXkCk5wSJyOqMIzVgvvjFDlk github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.5.0 h1:VQw1hfvPvk3Uv6Qf29VrPF32JB6rtbgI6cYPYQjL0Qw= github.com/prometheus/client_model v0.5.0/go.mod h1:dTiFglRmd66nLR9Pv9f0mZi7B7fk5Pm3gvsjB5tr+kI= -github.com/prometheus/common v0.45.0 h1:2BGz0eBc2hdMDLnO/8n0jeB3oPrt2D08CekT0lneoxM= -github.com/prometheus/common v0.45.0/go.mod h1:YJmSTw9BoKxJplESWWxlbyttQR4uaEcGyv9MZjVOJsY= +github.com/prometheus/common v0.46.0 h1:doXzt5ybi1HBKpsZOL0sSkaNHJJqkyfEWZGGqqScV0Y= +github.com/prometheus/common v0.46.0/go.mod h1:Tp0qkxpb9Jsg54QMe+EAmqXkSV7Evdy1BTn+g2pa/hQ= github.com/prometheus/procfs v0.12.0 h1:jluTpSng7V9hY0O2R9DzzJHYb2xULk9VTR1V1R/k6Bo= github.com/prometheus/procfs v0.12.0/go.mod h1:pcuDEFsWDnvcgNzo4EEweacyhjeA9Zk3cnaOZAZEfOo= github.com/rivo/uniseg v0.1.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= @@ -253,6 +256,8 @@ github.com/unknwon/log v0.0.0-20150304194804-e617c87089d3/go.mod h1:1xEUf2abjfP9 github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= github.com/urfave/cli v1.22.14 h1:ebbhrRiGK2i4naQJr+1Xj92HXZCrK7MsyTS/ob3HnAk= github.com/urfave/cli v1.22.14/go.mod h1:X0eDS6pD6Exaclxm99NJ3FiCDRED7vIHpx2mDOHLvkA= +github.com/wk8/go-ordered-map/v2 v2.1.8 h1:5h/BUHu93oj4gIdvHHHGsScSTMijfx5PeYkE/fJgbpc= +github.com/wk8/go-ordered-map/v2 v2.1.8/go.mod h1:5nJHM5DyteebpVlHnWMV0rPz6Zp7+xBAnxjb1X5vnTw= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= @@ -260,30 +265,30 @@ github.com/zeebo/assert v1.3.0 h1:g7C04CbJuIDKNPFHmsk4hwZDO5O+kntRxzaUoNXj+IQ= github.com/zeebo/assert v1.3.0/go.mod h1:Pq9JiuJQpG8JLJdtkwrJESF0Foym2/D9XMU5ciN/wJ0= github.com/zeebo/xxh3 v1.0.2 h1:xZmwmqxHZA8AI603jOQ0tMqmBr9lPeFwGg6d+xy9DC0= github.com/zeebo/xxh3 v1.0.2/go.mod h1:5NWz9Sef7zIDm2JHfFlcQvNekmcEl9ekUZQQKCYaDcA= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.46.1 h1:SpGay3w+nEwMpfVnbqOLH5gY52/foP8RE8UzTZ1pdSE= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.46.1/go.mod h1:4UoMYEZOC0yN/sPGH76KPkkU7zgiEWYWL9vwmbnTJPE= -go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace v0.46.1 h1:gbhw/u49SS3gkPWiYweQNJGm/uJN5GkI/FrosxSHT7A= -go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace v0.46.1/go.mod h1:GnOaBaFQ2we3b9AGWJpsBa7v1S5RlQzlC3O7dRMxZhM= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.46.1 h1:aFJWCqJMNjENlcleuuOkGAPH82y0yULBScfXcIEdS24= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.46.1/go.mod h1:sEGXWArGqc3tVa+ekntsN65DmVbVeW+7lTKTjZF3/Fo= -go.opentelemetry.io/contrib/propagators/jaeger v1.21.1 h1:f4beMGDKiVzg9IcX7/VuWVy+oGdjx3dNJ72YehmtY5k= -go.opentelemetry.io/contrib/propagators/jaeger v1.21.1/go.mod h1:U9jhkEl8d1LL+QXY7q3kneJWJugiN3kZJV2OWz3hkBY= -go.opentelemetry.io/contrib/samplers/jaegerremote v0.15.1 h1:Qb+5A+JbIjXwO7l4HkRUhgIn4Bzz0GNS2q+qdmSx+0c= -go.opentelemetry.io/contrib/samplers/jaegerremote v0.15.1/go.mod h1:G4vNCm7fRk0kjZ6pGNLo5SpLxAUvOfSrcaegnT8TPck= -go.opentelemetry.io/otel v1.21.0 h1:hzLeKBZEL7Okw2mGzZ0cc4k/A7Fta0uoPgaJCr8fsFc= -go.opentelemetry.io/otel v1.21.0/go.mod h1:QZzNPQPm1zLX4gZK4cMi+71eaorMSGT3A4znnUvNNEo= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.21.0 h1:cl5P5/GIfFh4t6xyruOgJP5QiA1pw4fYYdv6nc6CBWw= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.21.0/go.mod h1:zgBdWWAu7oEEMC06MMKc5NLbA/1YDXV1sMpSqEeLQLg= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.21.0 h1:tIqheXEFWAZ7O8A7m+J0aPTmpJN3YQ7qetUAdkkkKpk= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.21.0/go.mod h1:nUeKExfxAQVbiVFn32YXpXZZHZ61Cc3s3Rn1pDBGAb0= -go.opentelemetry.io/otel/metric v1.21.0 h1:tlYWfeo+Bocx5kLEloTjbcDwBuELRrIFxwdQ36PlJu4= -go.opentelemetry.io/otel/metric v1.21.0/go.mod h1:o1p3CA8nNHW8j5yuQLdc1eeqEaPfzug24uvsyIEJRWM= -go.opentelemetry.io/otel/sdk v1.21.0 h1:FTt8qirL1EysG6sTQRZ5TokkU8d0ugCj8htOgThZXQ8= -go.opentelemetry.io/otel/sdk v1.21.0/go.mod h1:Nna6Yv7PWTdgJHVRD9hIYywQBRx7pbox6nwBnZIxl/E= -go.opentelemetry.io/otel/trace v1.21.0 h1:WD9i5gzvoUPuXIXH24ZNBudiarZDKuekPqi/E8fpfLc= -go.opentelemetry.io/otel/trace v1.21.0/go.mod h1:LGbsEB0f9LGjN+OZaQQ26sohbOmiMR+BaslueVtS/qQ= -go.opentelemetry.io/proto/otlp v1.0.0 h1:T0TX0tmXU8a3CbNXzEKGeU5mIVOdf0oykP+u2lIVU/I= -go.opentelemetry.io/proto/otlp v1.0.0/go.mod h1:Sy6pihPLfYHkr3NkUbEhGHFhINUSI/v80hjKIs5JXpM= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0 h1:4Pp6oUg3+e/6M4C0A/3kJ2VYa++dsWVTtGgLVj5xtHg= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0/go.mod h1:Mjt1i1INqiaoZOMGR1RIUJN+i3ChKoFRqzrRQhlkbs0= +go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace v0.49.0 h1:RtcvQ4iw3w9NBB5yRwgA4sSa82rfId7n4atVpvKx3bY= +go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace v0.49.0/go.mod h1:f/PbKbRd4cdUICWell6DmzvVJ7QrmBgFrRHjXmAXbK4= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 h1:jq9TW8u3so/bN+JPT166wjOI6/vQPF6Xe7nMNIltagk= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0/go.mod h1:p8pYQP+m5XfbZm9fxtSKAbM6oIllS7s2AfxrChvc7iw= +go.opentelemetry.io/contrib/propagators/jaeger v1.22.0 h1:bAHX+zN/inu+Rbqk51REmC8oXLl+Dw6pp9ldQf/onaY= +go.opentelemetry.io/contrib/propagators/jaeger v1.22.0/go.mod h1:bH9GkgkN21mscXcQP6lQJYI8XnEPDxlTN/ZOBuHDjqE= +go.opentelemetry.io/contrib/samplers/jaegerremote v0.16.0 h1:bBCrzJPJI3BsFjIYQEQ6J142Woqs/WHsImQfjV1XEnI= +go.opentelemetry.io/contrib/samplers/jaegerremote v0.16.0/go.mod h1:StxwPndBVNZD2sZez0RQ0SP/129XGCd4aEmVGaw1/QM= +go.opentelemetry.io/otel v1.24.0 h1:0LAOdjNmQeSTzGBzduGe/rU4tZhMwL5rWgtp9Ku5Jfo= +go.opentelemetry.io/otel v1.24.0/go.mod h1:W7b9Ozg4nkF5tWI5zsXkaKKDjdVjpD4oAt9Qi/MArHo= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.24.0 h1:t6wl9SPayj+c7lEIFgm4ooDBZVb01IhLB4InpomhRw8= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.24.0/go.mod h1:iSDOcsnSA5INXzZtwaBPrKp/lWu/V14Dd+llD0oI2EA= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.24.0 h1:Mw5xcxMwlqoJd97vwPxA8isEaIoxsta9/Q51+TTJLGE= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.24.0/go.mod h1:CQNu9bj7o7mC6U7+CA/schKEYakYXWr79ucDHTMGhCM= +go.opentelemetry.io/otel/metric v1.24.0 h1:6EhoGWWK28x1fbpA4tYTOWBkPefTDQnb8WSGXlc88kI= +go.opentelemetry.io/otel/metric v1.24.0/go.mod h1:VYhLe1rFfxuTXLgj4CBiyz+9WYBA8pNGJgDcSFRKBco= +go.opentelemetry.io/otel/sdk v1.24.0 h1:YMPPDNymmQN3ZgczicBY3B6sf9n62Dlj9pWD3ucgoDw= +go.opentelemetry.io/otel/sdk v1.24.0/go.mod h1:KVrIYw6tEubO9E96HQpcmpTKDVn9gdv35HoYiQWGDFg= +go.opentelemetry.io/otel/trace v1.24.0 h1:CsKnnL4dUAr/0llH9FKuc698G04IrpWV0MQA/Y1YELI= +go.opentelemetry.io/otel/trace v1.24.0/go.mod h1:HPc3Xr/cOApsBI154IU0OI0HJexz+aw5uPdbs3UCjNU= +go.opentelemetry.io/proto/otlp v1.1.0 h1:2Di21piLrCqJ3U3eXGCTPHE9R8Nh+0uglSnOyxikMeI= +go.opentelemetry.io/proto/otlp v1.1.0/go.mod h1:GpBHCBWiqvVLDqmHZsoMM3C5ySeKTC7ej/RNTae6MdY= go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A= go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= @@ -294,12 +299,12 @@ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACk golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.17.0 h1:r8bRNjWL3GshPW3gkd+RpvzWrZAwPS49OmTGZ/uhM4k= -golang.org/x/crypto v0.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4= +golang.org/x/crypto v0.19.0 h1:ENy+Az/9Y1vSrlrvBSyna3PITt4tiZLf7sgCjZBX7Wo= +golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20230206171751-46f607a40771 h1:xP7rWLUr1e1n2xkK5YB4LI0hPEy3LJC6Wk+D4pGlOJg= -golang.org/x/exp v0.0.0-20230206171751-46f607a40771/go.mod h1:CxIveKay+FTh1D0yPZemJVgC/95VzuuOLq5Qi4xnoYc= +golang.org/x/exp v0.0.0-20231006140011-7918f672742d h1:jtJma62tbqLibJ5sFQz8bKtEM8rJBtfilJ2qTU199MI= +golang.org/x/exp v0.0.0-20231006140011-7918f672742d/go.mod h1:ldy0pHrwJyGW56pPQzzkH36rKxoZW1tw7ZJpeKx+hdo= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= @@ -307,8 +312,8 @@ golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHl golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= -golang.org/x/mod v0.9.0 h1:KENHtAZL2y3NLMYZeHY9DW8HW8V+kQyJsY/V9JlKvCs= -golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.13.0 h1:I/DsJXRlw/8l/0c24sM9yb0T4z9liZTduXvdAWYiysY= +golang.org/x/mod v0.13.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -319,19 +324,19 @@ golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.19.0 h1:zTwKpTd2XuCqf8huc7Fo2iSy+4RHPd10s4KzeTnVr1c= -golang.org/x/net v0.19.0/go.mod h1:CfAk/cbD4CthTvqiEl8NpboMuiuOYsAr/7NOjZJtv1U= +golang.org/x/net v0.21.0 h1:AQyQV4dYCvJ7vGmJyKki9+PBdyvhkSd8EIx/qb0AYv4= +golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= -golang.org/x/oauth2 v0.15.0 h1:s8pnnxNVzjWyrvYdFUQq5llS1PX2zhPXmccZv99h7uQ= -golang.org/x/oauth2 v0.15.0/go.mod h1:q48ptWNTY5XWf+JNten23lcvHpLJ0ZSxF5ttTHKVCAM= +golang.org/x/oauth2 v0.16.0 h1:aDkGMBSYxElaoP81NpoUoz2oo2R2wHdZpGToUxfyQrQ= +golang.org/x/oauth2 v0.16.0/go.mod h1:hqZ+0LWXsiVoZpeld6jVt06P3adbS2Uu911W1SsJv2o= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.4.0 h1:zxkM55ReGkDlKSM+Fu41A+zmbZuaPVbGMzvvdUPznYQ= -golang.org/x/sync v0.4.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= +golang.org/x/sync v0.6.0 h1:5BMeUDZ7vkXGfEr1x9B4bRcTH4lpkTkpdh0T/J+qjbQ= +golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -348,12 +353,12 @@ golang.org/x/sys v0.0.0-20211007075335-d3039528d8ac/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20211025201205-69cdffdb9359/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220704084225-05e143d24a9e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.15.0 h1:h48lPFYpsTvQJZF4EKyI4aLHaev3CxivZmv7yZig9pc= -golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.17.0 h1:25cE3gD+tdBA7lp7QfhuV+rJiE9YXTcS3VG1SqssI/Y= +golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -373,8 +378,8 @@ golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtn golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= -golang.org/x/tools v0.6.0 h1:BOw41kyTf3PuCW1pVQf8+Cyg8pMlkYB1oo9iJ6D/lKM= -golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= +golang.org/x/tools v0.14.0 h1:jvNa2pY0M4r62jkRQ6RwEZZyPcymeL9XZMLBbV7U2nc= +golang.org/x/tools v0.14.0/go.mod h1:uYBEerGOWcJyEORxN+Ek8+TT266gXkNlHdJBwexUsBg= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -392,19 +397,19 @@ google.golang.org/appengine v1.6.8/go.mod h1:1jJ3jBArFh5pcgW8gCtRJnepW8FzD1V44FJ google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20200423170343-7949de9c1215/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20231002182017-d307bd883b97 h1:SeZZZx0cP0fqUyA+oRzP9k7cSwJlvDFiROO72uwD6i0= -google.golang.org/genproto v0.0.0-20231002182017-d307bd883b97/go.mod h1:t1VqOqqvce95G3hIDCT5FeO3YUc6Q4Oe24L/+rNMxRk= -google.golang.org/genproto/googleapis/api v0.0.0-20231002182017-d307bd883b97 h1:W18sezcAYs+3tDZX4F80yctqa12jcP1PUS2gQu1zTPU= -google.golang.org/genproto/googleapis/api v0.0.0-20231002182017-d307bd883b97/go.mod h1:iargEX0SFPm3xcfMI0d1domjg0ZF4Aa0p2awqyxhvF0= -google.golang.org/genproto/googleapis/rpc v0.0.0-20231002182017-d307bd883b97 h1:6GQBEOdGkX6MMTLT9V+TjtIRZCw9VPD5Z+yHY9wMgS0= -google.golang.org/genproto/googleapis/rpc v0.0.0-20231002182017-d307bd883b97/go.mod h1:v7nGkzlmW8P3n/bKmWBn2WpBjpOEx8Q6gMueudAmKfY= +google.golang.org/genproto v0.0.0-20240123012728-ef4313101c80 h1:KAeGQVN3M9nD0/bQXnr/ClcEMJ968gUXJQ9pwfSynuQ= +google.golang.org/genproto v0.0.0-20240123012728-ef4313101c80/go.mod h1:cc8bqMqtv9gMOr0zHg2Vzff5ULhhL2IXP4sbcn32Dro= +google.golang.org/genproto/googleapis/api v0.0.0-20240123012728-ef4313101c80 h1:Lj5rbfG876hIAYFjqiJnPHfhXbv+nzTWfm04Fg/XSVU= +google.golang.org/genproto/googleapis/api v0.0.0-20240123012728-ef4313101c80/go.mod h1:4jWUdICTdgc3Ibxmr8nAJiiLHwQBY0UI0XZcEMaFKaA= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240123012728-ef4313101c80 h1:AjyfHzEPEFp/NpvfN5g+KDla3EMojjhRVZc1i7cj+oM= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240123012728-ef4313101c80/go.mod h1:PAREbraiVEVGVdTZsVWjSbbTtSyGbAgIIvni8a8CD5s= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= -google.golang.org/grpc v1.60.1 h1:26+wFr+cNqSGFcOXcabYC0lUVJVRa2Sb2ortSK7VrEU= -google.golang.org/grpc v1.60.1/go.mod h1:OlCHIeLYqSSsLi6i49B5QGdzaMZK9+M7LXN2FKz4eGM= +google.golang.org/grpc v1.62.1 h1:B4n+nfKzOICUXMgyrNd19h/I9oH0L1pizfk1d4zSgTk= +google.golang.org/grpc v1.62.1/go.mod h1:IWTG0VlJLCh1SkC58F7np9ka9mx/WNkjl4PGJaiq+QE= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.32.0 h1:pPC6BG5ex8PDFnkbrGU3EixyhKcQ2aDuBS36lqK/C7I= @@ -425,5 +430,11 @@ gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +k8s.io/kube-openapi v0.0.0-20240220201932-37d671a357a5 h1:QSpdNrZ9uRlV0VkqLvVO0Rqg8ioKi3oSw7O5P7pJV8M= +k8s.io/kube-openapi v0.0.0-20240220201932-37d671a357a5/go.mod h1:Pa1PvrP7ACSkuX6I7KYomY6cmMA0Tx86waBhDUgoKPw= +k8s.io/utils v0.0.0-20230726121419-3b25d923346b h1:sgn3ZU783SCgtaSJjpcVVlRqd6GSnlTLKgpAAttJvpI= +k8s.io/utils v0.0.0-20230726121419-3b25d923346b/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= pgregory.net/rapid v1.0.0 h1:iQaM2w5PZ6xvt6x7hbd7tiDS+nk7YPp5uCaEba+T/F4= pgregory.net/rapid v1.0.0/go.mod h1:PY5XlDGj0+V1FCq0o192FdRhpKHGTRIWBgqjDBTrq04= +sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd h1:EDPBXCAspyGV4jQlpZSudPeMmr1bNJefnuqLsRAsHZo= +sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd/go.mod h1:B8JuhiUyNFVKdsE8h686QcCxMaH6HrOAZj4vswFpcB0= diff --git a/pkg/github/query_handler.go b/pkg/github/query_handler.go index 333b207e..9df4a393 100644 --- a/pkg/github/query_handler.go +++ b/pkg/github/query_handler.go @@ -42,21 +42,21 @@ func GetQueryHandlers(s *QueryHandler) *datasource.QueryTypeMux { mux := datasource.NewQueryTypeMux() // This could be a map[models.QueryType]datasource.QueryHandlerFunc and then a loop to handle all of them. - mux.HandleFunc(models.QueryTypeCommits, s.HandleCommits) - mux.HandleFunc(models.QueryTypeIssues, s.HandleIssues) - mux.HandleFunc(models.QueryTypeContributors, s.HandleContributors) - mux.HandleFunc(models.QueryTypeLabels, s.HandleLabels) - mux.HandleFunc(models.QueryTypePullRequests, s.HandlePullRequests) - mux.HandleFunc(models.QueryTypeReleases, s.HandleReleases) - mux.HandleFunc(models.QueryTypeTags, s.HandleTags) - mux.HandleFunc(models.QueryTypePackages, s.HandlePackages) - mux.HandleFunc(models.QueryTypeMilestones, s.HandleMilestones) - mux.HandleFunc(models.QueryTypeRepositories, s.HandleRepositories) - mux.HandleFunc(models.QueryTypeVulnerabilities, s.HandleVulnerabilities) - mux.HandleFunc(models.QueryTypeProjects, s.HandleProjects) - mux.HandleFunc(models.QueryTypeStargazers, s.HandleStargazers) - mux.HandleFunc(models.QueryTypeWorkflows, s.HandleWorkflows) - mux.HandleFunc(models.QueryTypeWorkflowUsage, s.HandleWorkflowUsage) + mux.HandleFunc(string(models.QueryTypeCommits), s.HandleCommits) + mux.HandleFunc(string(models.QueryTypeIssues), s.HandleIssues) + mux.HandleFunc(string(models.QueryTypeContributors), s.HandleContributors) + mux.HandleFunc(string(models.QueryTypeLabels), s.HandleLabels) + mux.HandleFunc(string(models.QueryTypePullRequests), s.HandlePullRequests) + mux.HandleFunc(string(models.QueryTypeReleases), s.HandleReleases) + mux.HandleFunc(string(models.QueryTypeTags), s.HandleTags) + mux.HandleFunc(string(models.QueryTypePackages), s.HandlePackages) + mux.HandleFunc(string(models.QueryTypeMilestones), s.HandleMilestones) + mux.HandleFunc(string(models.QueryTypeRepositories), s.HandleRepositories) + mux.HandleFunc(string(models.QueryTypeVulnerabilities), s.HandleVulnerabilities) + mux.HandleFunc(string(models.QueryTypeProjects), s.HandleProjects) + mux.HandleFunc(string(models.QueryTypeStargazers), s.HandleStargazers) + mux.HandleFunc(string(models.QueryTypeWorkflows), s.HandleWorkflows) + mux.HandleFunc(string(models.QueryTypeWorkflowUsage), s.HandleWorkflowUsage) return mux } diff --git a/pkg/models/query.go b/pkg/models/query.go index 09332020..7224e87b 100644 --- a/pkg/models/query.go +++ b/pkg/models/query.go @@ -1,42 +1,46 @@ package models +// QueryType defines the query operation +// +enum +type QueryType string + const ( // QueryTypeCommits is sent by the frontend when querying commits in a GitHub repository - QueryTypeCommits = "Commits" + QueryTypeCommits QueryType = "Commits" // QueryTypeIssues is used when querying issues in a GitHub repository - QueryTypeIssues = "Issues" + QueryTypeIssues QueryType = "Issues" // QueryTypeContributors is used when querying contributors in a GitHub repository - QueryTypeContributors = "Contributors" + QueryTypeContributors QueryType = "Contributors" // QueryTypeTags is used when querying tags in a GitHub repository - QueryTypeTags = "Tags" + QueryTypeTags QueryType = "Tags" // QueryTypeReleases is used when querying releases in a GitHub repository - QueryTypeReleases = "Releases" + QueryTypeReleases QueryType = "Releases" // QueryTypePullRequests is used when querying pull requests in a GitHub repository - QueryTypePullRequests = "Pull_Requests" + QueryTypePullRequests QueryType = "Pull_Requests" // QueryTypeLabels is used when querying labels in a GitHub repository - QueryTypeLabels = "Labels" + QueryTypeLabels QueryType = "Labels" // QueryTypeRepositories is used when querying for a GitHub repository - QueryTypeRepositories = "Repositories" + QueryTypeRepositories QueryType = "Repositories" // QueryTypeOrganizations is used when querying for GitHub organizations - QueryTypeOrganizations = "Organizations" + QueryTypeOrganizations QueryType = "Organizations" // QueryTypeGraphQL is used when sending an ad-hoc graphql query - QueryTypeGraphQL = "GraphQL" + QueryTypeGraphQL QueryType = "GraphQL" // QueryTypePackages is used when querying for NPM / Docker / etc packages - QueryTypePackages = "Packages" + QueryTypePackages QueryType = "Packages" // QueryTypeMilestones is used when querying for milestones in a repository - QueryTypeMilestones = "Milestones" + QueryTypeMilestones QueryType = "Milestones" // QueryTypeVulnerabilities is used when querying a vulnerability for a repository - QueryTypeVulnerabilities = "Vulnerabilities" + QueryTypeVulnerabilities QueryType = "Vulnerabilities" // QueryTypeProjects is used when querying projects for an organization - QueryTypeProjects = "Projects" + QueryTypeProjects QueryType = "Projects" // QueryTypeProjectItems is used when querying projects for an organization - QueryTypeProjectItems = "ProjectItems" + QueryTypeProjectItems QueryType = "ProjectItems" // QueryTypeStargazers is used when querying stargazers for a repository - QueryTypeStargazers = "Stargazers" + QueryTypeStargazers QueryType = "Stargazers" // QueryTypeWorkflows is used when querying workflows for an organization - QueryTypeWorkflows = "Workflows" + QueryTypeWorkflows QueryType = "Workflows" // QueryTypeWorkflowUsage is used when querying a specific workflow usage - QueryTypeWorkflowUsage = "Workflow_Usage" + QueryTypeWorkflowUsage QueryType = "Workflow_Usage" ) // Query refers to the structure of a query built using the QueryEditor. diff --git a/pkg/models/query_test.go b/pkg/models/query_test.go new file mode 100644 index 00000000..17954962 --- /dev/null +++ b/pkg/models/query_test.go @@ -0,0 +1,211 @@ +package models + +import ( + "reflect" + "testing" + + data "github.com/grafana/grafana-plugin-sdk-go/experimental/apis/data/v0alpha1" + "github.com/grafana/grafana-plugin-sdk-go/experimental/schemabuilder" + "github.com/shurcooL/githubv4" + "github.com/stretchr/testify/require" +) + +func TestSchemaDefinitions(t *testing.T) { + builder, err := schemabuilder.NewSchemaBuilder( + schemabuilder.BuilderOptions{ + PluginID: []string{"grafana-github-datasource"}, + ScanCode: []schemabuilder.CodePaths{{ + BasePackage: "github.com/grafana/github-datasource/pkg/models", + CodePath: "./", + }}, + }, + ) + + common := Query{ + Repository: "github-datasource", + Owner: "grafana", + } + + require.NoError(t, err) + err = builder.AddQueries(schemabuilder.QueryTypeInfo{ + GoType: reflect.TypeOf(&PullRequestsQuery{}), + Discriminators: data.NewDiscriminators("queryType", QueryTypePullRequests), + Examples: []data.QueryExample{ + { + Name: "Simple", + SaveModel: data.AsUnstructured(PullRequestsQuery{ + Query: common, + Options: ListPullRequestsOptions{}, + }), + }, + }, + }, schemabuilder.QueryTypeInfo{ + Discriminators: data.NewDiscriminators("queryType", QueryTypeCommits), + GoType: reflect.TypeOf(&CommitsQuery{}), + Examples: []data.QueryExample{ + { + Name: "CommitsQuery", + SaveModel: data.AsUnstructured(CommitsQuery{ + Query: common, + Options: ListCommitsOptions{}, + }), + }, + }, + }, schemabuilder.QueryTypeInfo{ + Discriminators: data.NewDiscriminators("queryType", QueryTypeTags), + GoType: reflect.TypeOf(&TagsQuery{}), + Examples: []data.QueryExample{ + { + Name: "TagsQuery", + SaveModel: data.AsUnstructured(TagsQuery{ + Query: common, + Options: ListTagsOptions{}, + }), + }, + }, + }, schemabuilder.QueryTypeInfo{ + Discriminators: data.NewDiscriminators("queryType", QueryTypeLabels), + GoType: reflect.TypeOf(&LabelsQuery{}), + Examples: []data.QueryExample{ + { + Name: "LabelsQuery", + SaveModel: data.AsUnstructured(LabelsQuery{ + Query: common, + Options: ListLabelsOptions{}, + }), + }, + }, + }, schemabuilder.QueryTypeInfo{ + Discriminators: data.NewDiscriminators("queryType", QueryTypeReleases), + GoType: reflect.TypeOf(&ReleasesQuery{}), + Examples: []data.QueryExample{ + { + Name: "ReleasesQuery", + SaveModel: data.AsUnstructured(ReleasesQuery{ + Query: common, + Options: ListReleasesOptions{}, + }), + }, + }, + }, schemabuilder.QueryTypeInfo{ + Discriminators: data.NewDiscriminators("queryType", QueryTypeContributors), + GoType: reflect.TypeOf(&ContributorsQuery{}), + Examples: []data.QueryExample{ + { + Name: "ContributorsQuery", + SaveModel: data.AsUnstructured(ContributorsQuery{ + Query: common, + Options: ListContributorsOptions{Owner: "yesoreyeram"}, + }), + }, + }, + }, schemabuilder.QueryTypeInfo{ + Discriminators: data.NewDiscriminators("queryType", QueryTypeRepositories), + GoType: reflect.TypeOf(&RepositoriesQuery{}), + Examples: []data.QueryExample{ + { + Name: "RepositoriesQuery", + SaveModel: data.AsUnstructured(RepositoriesQuery{ + Query: Query{ + Owner: "yesoreyeram", + }, + }), + }, + }, + }, schemabuilder.QueryTypeInfo{ + Discriminators: data.NewDiscriminators("queryType", QueryTypeIssues), + GoType: reflect.TypeOf(&IssuesQuery{}), + Examples: []data.QueryExample{ + { + Name: "IssuesQuery", + SaveModel: data.AsUnstructured(IssuesQuery{ + Query: common, + Options: ListIssuesOptions{ + Filters: &githubv4.IssueFilters{ + States: &[]githubv4.IssueState{ + githubv4.IssueStateOpen, + }, + }, + }, + }), + }, + }, + }, schemabuilder.QueryTypeInfo{ + Discriminators: data.NewDiscriminators("queryType", QueryTypePackages), + GoType: reflect.TypeOf(&PackagesQuery{}), + Examples: []data.QueryExample{ + { + Name: "PackagesQuery", + SaveModel: data.AsUnstructured(PackagesQuery{ + Query: common, + Options: ListPackagesOptions{ + PackageType: githubv4.PackageTypeDocker, + }, + }), + }, + }, + }, schemabuilder.QueryTypeInfo{ + Discriminators: data.NewDiscriminators("queryType", QueryTypeMilestones), + GoType: reflect.TypeOf(&MilestonesQuery{}), + Examples: []data.QueryExample{ + { + Name: "MilestonesQuery", + SaveModel: data.AsUnstructured(MilestonesQuery{ + Query: common, + }), + }, + }, + }, schemabuilder.QueryTypeInfo{ + Discriminators: data.NewDiscriminators("queryType", QueryTypeVulnerabilities), + GoType: reflect.TypeOf(&VulnerabilityQuery{}), + Examples: []data.QueryExample{ + { + Name: "VulnerabilityQuery", + SaveModel: data.AsUnstructured(VulnerabilityQuery{ + Query: common, + }), + }, + }, + }, schemabuilder.QueryTypeInfo{ + Discriminators: data.NewDiscriminators("queryType", QueryTypeStargazers), + GoType: reflect.TypeOf(&StargazersQuery{}), + Examples: []data.QueryExample{ + { + Name: "StargazersQuery", + SaveModel: data.AsUnstructured(StargazersQuery{ + Query: common, + }), + }, + }, + }, schemabuilder.QueryTypeInfo{ + Discriminators: data.NewDiscriminators("queryType", QueryTypeWorkflows), + GoType: reflect.TypeOf(&WorkflowsQuery{}), + Examples: []data.QueryExample{ + { + Name: "WorkflowsQuery", + SaveModel: data.AsUnstructured(WorkflowsQuery{ + Query: common, + Options: ListWorkflowsOptions{}, + }), + }, + }, + }, schemabuilder.QueryTypeInfo{ + Discriminators: data.NewDiscriminators("queryType", QueryTypeWorkflowUsage), + GoType: reflect.TypeOf(&WorkflowUsageQuery{}), + Examples: []data.QueryExample{ + { + Name: "WorkflowUsageQuery", + SaveModel: data.AsUnstructured(WorkflowUsageQuery{ + Query: common, + Options: WorkflowUsageOptions{}, + }), + }, + }, + }, + ) + + require.NoError(t, err) + + // Update the query schemas resource + builder.UpdateQueryDefinition(t, "../../src/static/schema/") +} diff --git a/src/static/schema/query.panel.example.json b/src/static/schema/query.panel.example.json new file mode 100644 index 00000000..fa04104a --- /dev/null +++ b/src/static/schema/query.panel.example.json @@ -0,0 +1,208 @@ +{ + "type": "table", + "targets": [ + { + "refId": "A", + "datasource": { + "type": "grafana-github-datasource", + "uid": "TheUID" + }, + "queryType": "Pull_Requests", + "repository": "github-datasource", + "options": { + "owner": "", + "repository": "", + "timeField": 0 + }, + "owner": "grafana" + }, + { + "refId": "B", + "datasource": { + "type": "grafana-github-datasource", + "uid": "TheUID" + }, + "queryType": "Commits", + "options": { + "gitRef": "", + "owner": "", + "repository": "" + }, + "owner": "grafana", + "repository": "github-datasource" + }, + { + "refId": "C", + "datasource": { + "type": "grafana-github-datasource", + "uid": "TheUID" + }, + "queryType": "Tags", + "options": { + "owner": "", + "repository": "" + }, + "owner": "grafana", + "repository": "github-datasource" + }, + { + "refId": "D", + "datasource": { + "type": "grafana-github-datasource", + "uid": "TheUID" + }, + "queryType": "Labels", + "repository": "github-datasource", + "options": { + "owner": "", + "query": "", + "repository": "" + }, + "owner": "grafana" + }, + { + "refId": "E", + "datasource": { + "type": "grafana-github-datasource", + "uid": "TheUID" + }, + "queryType": "Releases", + "options": { + "owner": "", + "repository": "" + }, + "owner": "grafana", + "repository": "github-datasource" + }, + { + "refId": "F", + "datasource": { + "type": "grafana-github-datasource", + "uid": "TheUID" + }, + "queryType": "Contributors", + "options": { + "owner": "yesoreyeram", + "repository": "" + }, + "owner": "grafana", + "repository": "github-datasource" + }, + { + "refId": "G", + "datasource": { + "type": "grafana-github-datasource", + "uid": "TheUID" + }, + "queryType": "Repositories", + "owner": "yesoreyeram", + "repository": "" + }, + { + "refId": "H", + "datasource": { + "type": "grafana-github-datasource", + "uid": "TheUID" + }, + "queryType": "Issues", + "options": { + "filters": { + "states": [ + "OPEN" + ] + }, + "owner": "", + "repository": "", + "timeField": 0 + }, + "owner": "grafana", + "repository": "github-datasource" + }, + { + "refId": "I", + "datasource": { + "type": "grafana-github-datasource", + "uid": "TheUID" + }, + "queryType": "Packages", + "options": { + "names": "", + "owner": "", + "packageType": "DOCKER", + "repository": "" + }, + "owner": "grafana", + "repository": "github-datasource" + }, + { + "refId": "J", + "datasource": { + "type": "grafana-github-datasource", + "uid": "TheUID" + }, + "queryType": "Milestones", + "options": { + "owner": "", + "query": "", + "repository": "" + }, + "owner": "grafana", + "repository": "github-datasource" + }, + { + "refId": "K", + "datasource": { + "type": "grafana-github-datasource", + "uid": "TheUID" + }, + "queryType": "Vulnerabilities", + "options": { + "owner": "", + "query": "", + "repository": "" + }, + "owner": "grafana", + "repository": "github-datasource" + }, + { + "refId": "L", + "datasource": { + "type": "grafana-github-datasource", + "uid": "TheUID" + }, + "queryType": "Stargazers", + "owner": "grafana", + "repository": "github-datasource" + }, + { + "refId": "M", + "datasource": { + "type": "grafana-github-datasource", + "uid": "TheUID" + }, + "queryType": "Workflows", + "options": { + "owner": "", + "repository": "", + "timeField": 0 + }, + "owner": "grafana", + "repository": "github-datasource" + }, + { + "refId": "N", + "datasource": { + "type": "grafana-github-datasource", + "uid": "TheUID" + }, + "queryType": "Workflow_Usage", + "repository": "github-datasource", + "owner": "grafana", + "options": { + "owner": "", + "repository": "", + "workflow": "" + } + } + ] +} \ No newline at end of file diff --git a/src/static/schema/query.panel.schema.json b/src/static/schema/query.panel.schema.json new file mode 100644 index 00000000..10637284 --- /dev/null +++ b/src/static/schema/query.panel.schema.json @@ -0,0 +1,2008 @@ +{ + "type": "object", + "required": [ + "targets", + "type" + ], + "properties": { + "targets": { + "type": "array", + "items": { + "type": "object", + "oneOf": [ + { + "description": "PullRequestsQuery is used when querying for GitHub Pull Requests", + "type": "object", + "required": [ + "repository", + "owner", + "options", + "queryType", + "refId" + ], + "properties": { + "datasource": { + "description": "The datasource", + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "description": "The datasource plugin type", + "type": "string", + "pattern": "^grafana-github-datasource$" + }, + "uid": { + "description": "Datasource UID", + "type": "string" + } + }, + "additionalProperties": false + }, + "hide": { + "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)", + "type": "boolean" + }, + "options": { + "type": "object", + "required": [ + "repository", + "owner", + "timeField" + ], + "properties": { + "owner": { + "description": "Owner is the owner of the repository (ex: grafana)", + "type": "string" + }, + "query": { + "type": "string" + }, + "repository": { + "description": "Repository is the name of the repository being queried (ex: grafana)", + "type": "string" + }, + "timeField": { + "description": "TimeField defines what time field to filter by", + "type": "integer" + } + }, + "additionalProperties": false + }, + "owner": { + "type": "string" + }, + "queryType": { + "type": "string", + "pattern": "^Pull_Requests$" + }, + "refId": { + "description": "RefID is the unique identifier of the query, set by the frontend call.", + "type": "string" + }, + "repository": { + "type": "string" + }, + "resultAssertions": { + "description": "Optionally define expected query result behavior", + "type": "object", + "required": [ + "typeVersion" + ], + "properties": { + "maxFrames": { + "description": "Maximum frame count", + "type": "integer" + }, + "type": { + "description": "Type asserts that the frame matches a known type structure.\n\n\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\"` ", + "type": "string", + "enum": [ + "", + "timeseries-wide", + "timeseries-long", + "timeseries-many", + "timeseries-multi", + "directory-listing", + "table", + "numeric-wide", + "numeric-multi", + "numeric-long", + "log-lines" + ], + "x-enum-description": {} + }, + "typeVersion": { + "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/.", + "type": "array", + "maxItems": 2, + "minItems": 2, + "items": { + "type": "integer" + } + } + }, + "additionalProperties": false + }, + "timeRange": { + "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", + "type": "object", + "required": [ + "from", + "to" + ], + "properties": { + "from": { + "description": "From is the start time of the query.", + "type": "string", + "default": "now-6h", + "examples": [ + "now-1h" + ] + }, + "to": { + "description": "To is the end time of the query.", + "type": "string", + "default": "now", + "examples": [ + "now" + ] + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false, + "$schema": "https://json-schema.org/draft-04/schema" + }, + { + "description": "CommitsQuery is used when querying for GitHub commits", + "type": "object", + "required": [ + "repository", + "owner", + "options", + "queryType", + "refId" + ], + "properties": { + "datasource": { + "description": "The datasource", + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "description": "The datasource plugin type", + "type": "string", + "pattern": "^grafana-github-datasource$" + }, + "uid": { + "description": "Datasource UID", + "type": "string" + } + }, + "additionalProperties": false + }, + "hide": { + "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)", + "type": "boolean" + }, + "options": { + "type": "object", + "required": [ + "repository", + "owner", + "gitRef" + ], + "properties": { + "gitRef": { + "type": "string" + }, + "owner": { + "type": "string" + }, + "repository": { + "type": "string" + } + }, + "additionalProperties": false + }, + "owner": { + "type": "string" + }, + "queryType": { + "type": "string", + "pattern": "^Commits$" + }, + "refId": { + "description": "RefID is the unique identifier of the query, set by the frontend call.", + "type": "string" + }, + "repository": { + "type": "string" + }, + "resultAssertions": { + "description": "Optionally define expected query result behavior", + "type": "object", + "required": [ + "typeVersion" + ], + "properties": { + "maxFrames": { + "description": "Maximum frame count", + "type": "integer" + }, + "type": { + "description": "Type asserts that the frame matches a known type structure.\n\n\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\"` ", + "type": "string", + "enum": [ + "", + "timeseries-wide", + "timeseries-long", + "timeseries-many", + "timeseries-multi", + "directory-listing", + "table", + "numeric-wide", + "numeric-multi", + "numeric-long", + "log-lines" + ], + "x-enum-description": {} + }, + "typeVersion": { + "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/.", + "type": "array", + "maxItems": 2, + "minItems": 2, + "items": { + "type": "integer" + } + } + }, + "additionalProperties": false + }, + "timeRange": { + "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", + "type": "object", + "required": [ + "from", + "to" + ], + "properties": { + "from": { + "description": "From is the start time of the query.", + "type": "string", + "default": "now-6h", + "examples": [ + "now-1h" + ] + }, + "to": { + "description": "To is the end time of the query.", + "type": "string", + "default": "now", + "examples": [ + "now" + ] + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false, + "$schema": "https://json-schema.org/draft-04/schema" + }, + { + "description": "TagsQuery is used when querying for GitHub tags", + "type": "object", + "required": [ + "repository", + "owner", + "options", + "queryType", + "refId" + ], + "properties": { + "datasource": { + "description": "The datasource", + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "description": "The datasource plugin type", + "type": "string", + "pattern": "^grafana-github-datasource$" + }, + "uid": { + "description": "Datasource UID", + "type": "string" + } + }, + "additionalProperties": false + }, + "hide": { + "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)", + "type": "boolean" + }, + "options": { + "type": "object", + "required": [ + "repository", + "owner" + ], + "properties": { + "owner": { + "description": "Owner is the owner of the repository (ex: grafana)", + "type": "string" + }, + "repository": { + "description": "Repository is the name of the repository being queried (ex: grafana)", + "type": "string" + } + }, + "additionalProperties": false + }, + "owner": { + "type": "string" + }, + "queryType": { + "type": "string", + "pattern": "^Tags$" + }, + "refId": { + "description": "RefID is the unique identifier of the query, set by the frontend call.", + "type": "string" + }, + "repository": { + "type": "string" + }, + "resultAssertions": { + "description": "Optionally define expected query result behavior", + "type": "object", + "required": [ + "typeVersion" + ], + "properties": { + "maxFrames": { + "description": "Maximum frame count", + "type": "integer" + }, + "type": { + "description": "Type asserts that the frame matches a known type structure.\n\n\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\"` ", + "type": "string", + "enum": [ + "", + "timeseries-wide", + "timeseries-long", + "timeseries-many", + "timeseries-multi", + "directory-listing", + "table", + "numeric-wide", + "numeric-multi", + "numeric-long", + "log-lines" + ], + "x-enum-description": {} + }, + "typeVersion": { + "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/.", + "type": "array", + "maxItems": 2, + "minItems": 2, + "items": { + "type": "integer" + } + } + }, + "additionalProperties": false + }, + "timeRange": { + "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", + "type": "object", + "required": [ + "from", + "to" + ], + "properties": { + "from": { + "description": "From is the start time of the query.", + "type": "string", + "default": "now-6h", + "examples": [ + "now-1h" + ] + }, + "to": { + "description": "To is the end time of the query.", + "type": "string", + "default": "now", + "examples": [ + "now" + ] + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false, + "$schema": "https://json-schema.org/draft-04/schema" + }, + { + "description": "LabelsQuery is used when querying for GitHub issue labels", + "type": "object", + "required": [ + "repository", + "owner", + "options", + "queryType", + "refId" + ], + "properties": { + "datasource": { + "description": "The datasource", + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "description": "The datasource plugin type", + "type": "string", + "pattern": "^grafana-github-datasource$" + }, + "uid": { + "description": "Datasource UID", + "type": "string" + } + }, + "additionalProperties": false + }, + "hide": { + "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)", + "type": "boolean" + }, + "options": { + "type": "object", + "required": [ + "repository", + "owner", + "query" + ], + "properties": { + "owner": { + "description": "Owner is the owner of the repository (ex: grafana)", + "type": "string" + }, + "query": { + "description": "Query searches labels by name and description", + "type": "string" + }, + "repository": { + "description": "Repository is the name of the repository being queried (ex: grafana)", + "type": "string" + } + }, + "additionalProperties": false + }, + "owner": { + "type": "string" + }, + "queryType": { + "type": "string", + "pattern": "^Labels$" + }, + "refId": { + "description": "RefID is the unique identifier of the query, set by the frontend call.", + "type": "string" + }, + "repository": { + "type": "string" + }, + "resultAssertions": { + "description": "Optionally define expected query result behavior", + "type": "object", + "required": [ + "typeVersion" + ], + "properties": { + "maxFrames": { + "description": "Maximum frame count", + "type": "integer" + }, + "type": { + "description": "Type asserts that the frame matches a known type structure.\n\n\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\"` ", + "type": "string", + "enum": [ + "", + "timeseries-wide", + "timeseries-long", + "timeseries-many", + "timeseries-multi", + "directory-listing", + "table", + "numeric-wide", + "numeric-multi", + "numeric-long", + "log-lines" + ], + "x-enum-description": {} + }, + "typeVersion": { + "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/.", + "type": "array", + "maxItems": 2, + "minItems": 2, + "items": { + "type": "integer" + } + } + }, + "additionalProperties": false + }, + "timeRange": { + "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", + "type": "object", + "required": [ + "from", + "to" + ], + "properties": { + "from": { + "description": "From is the start time of the query.", + "type": "string", + "default": "now-6h", + "examples": [ + "now-1h" + ] + }, + "to": { + "description": "To is the end time of the query.", + "type": "string", + "default": "now", + "examples": [ + "now" + ] + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false, + "$schema": "https://json-schema.org/draft-04/schema" + }, + { + "description": "ReleasesQuery is used when querying for GitHub issue labels", + "type": "object", + "required": [ + "repository", + "owner", + "options", + "queryType", + "refId" + ], + "properties": { + "datasource": { + "description": "The datasource", + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "description": "The datasource plugin type", + "type": "string", + "pattern": "^grafana-github-datasource$" + }, + "uid": { + "description": "Datasource UID", + "type": "string" + } + }, + "additionalProperties": false + }, + "hide": { + "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)", + "type": "boolean" + }, + "options": { + "type": "object", + "required": [ + "repository", + "owner" + ], + "properties": { + "owner": { + "description": "Owner is the owner of the repository (ex: grafana)", + "type": "string" + }, + "repository": { + "description": "Repository is the name of the repository being queried (ex: grafana)", + "type": "string" + } + }, + "additionalProperties": false + }, + "owner": { + "type": "string" + }, + "queryType": { + "type": "string", + "pattern": "^Releases$" + }, + "refId": { + "description": "RefID is the unique identifier of the query, set by the frontend call.", + "type": "string" + }, + "repository": { + "type": "string" + }, + "resultAssertions": { + "description": "Optionally define expected query result behavior", + "type": "object", + "required": [ + "typeVersion" + ], + "properties": { + "maxFrames": { + "description": "Maximum frame count", + "type": "integer" + }, + "type": { + "description": "Type asserts that the frame matches a known type structure.\n\n\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\"` ", + "type": "string", + "enum": [ + "", + "timeseries-wide", + "timeseries-long", + "timeseries-many", + "timeseries-multi", + "directory-listing", + "table", + "numeric-wide", + "numeric-multi", + "numeric-long", + "log-lines" + ], + "x-enum-description": {} + }, + "typeVersion": { + "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/.", + "type": "array", + "maxItems": 2, + "minItems": 2, + "items": { + "type": "integer" + } + } + }, + "additionalProperties": false + }, + "timeRange": { + "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", + "type": "object", + "required": [ + "from", + "to" + ], + "properties": { + "from": { + "description": "From is the start time of the query.", + "type": "string", + "default": "now-6h", + "examples": [ + "now-1h" + ] + }, + "to": { + "description": "To is the end time of the query.", + "type": "string", + "default": "now", + "examples": [ + "now" + ] + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false, + "$schema": "https://json-schema.org/draft-04/schema" + }, + { + "description": "ContributorsQuery is used when querying for GitHub contributors", + "type": "object", + "required": [ + "repository", + "owner", + "options", + "queryType", + "refId" + ], + "properties": { + "datasource": { + "description": "The datasource", + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "description": "The datasource plugin type", + "type": "string", + "pattern": "^grafana-github-datasource$" + }, + "uid": { + "description": "Datasource UID", + "type": "string" + } + }, + "additionalProperties": false + }, + "hide": { + "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)", + "type": "boolean" + }, + "options": { + "type": "object", + "required": [ + "repository", + "owner" + ], + "properties": { + "owner": { + "description": "Owner is the owner of the repository (ex: grafana)", + "type": "string" + }, + "query": { + "type": "string" + }, + "repository": { + "description": "Repository is the name of the repository being queried (ex: grafana)", + "type": "string" + } + }, + "additionalProperties": false + }, + "owner": { + "type": "string" + }, + "queryType": { + "type": "string", + "pattern": "^Contributors$" + }, + "refId": { + "description": "RefID is the unique identifier of the query, set by the frontend call.", + "type": "string" + }, + "repository": { + "type": "string" + }, + "resultAssertions": { + "description": "Optionally define expected query result behavior", + "type": "object", + "required": [ + "typeVersion" + ], + "properties": { + "maxFrames": { + "description": "Maximum frame count", + "type": "integer" + }, + "type": { + "description": "Type asserts that the frame matches a known type structure.\n\n\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\"` ", + "type": "string", + "enum": [ + "", + "timeseries-wide", + "timeseries-long", + "timeseries-many", + "timeseries-multi", + "directory-listing", + "table", + "numeric-wide", + "numeric-multi", + "numeric-long", + "log-lines" + ], + "x-enum-description": {} + }, + "typeVersion": { + "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/.", + "type": "array", + "maxItems": 2, + "minItems": 2, + "items": { + "type": "integer" + } + } + }, + "additionalProperties": false + }, + "timeRange": { + "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", + "type": "object", + "required": [ + "from", + "to" + ], + "properties": { + "from": { + "description": "From is the start time of the query.", + "type": "string", + "default": "now-6h", + "examples": [ + "now-1h" + ] + }, + "to": { + "description": "To is the end time of the query.", + "type": "string", + "default": "now", + "examples": [ + "now" + ] + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false, + "$schema": "https://json-schema.org/draft-04/schema" + }, + { + "description": "RepositoriesQuery is used when querying for GitHub repositories", + "type": "object", + "required": [ + "repository", + "owner", + "queryType", + "refId" + ], + "properties": { + "datasource": { + "description": "The datasource", + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "description": "The datasource plugin type", + "type": "string", + "pattern": "^grafana-github-datasource$" + }, + "uid": { + "description": "Datasource UID", + "type": "string" + } + }, + "additionalProperties": false + }, + "hide": { + "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)", + "type": "boolean" + }, + "owner": { + "type": "string" + }, + "queryType": { + "type": "string", + "pattern": "^Repositories$" + }, + "refId": { + "description": "RefID is the unique identifier of the query, set by the frontend call.", + "type": "string" + }, + "repository": { + "type": "string" + }, + "resultAssertions": { + "description": "Optionally define expected query result behavior", + "type": "object", + "required": [ + "typeVersion" + ], + "properties": { + "maxFrames": { + "description": "Maximum frame count", + "type": "integer" + }, + "type": { + "description": "Type asserts that the frame matches a known type structure.\n\n\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\"` ", + "type": "string", + "enum": [ + "", + "timeseries-wide", + "timeseries-long", + "timeseries-many", + "timeseries-multi", + "directory-listing", + "table", + "numeric-wide", + "numeric-multi", + "numeric-long", + "log-lines" + ], + "x-enum-description": {} + }, + "typeVersion": { + "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/.", + "type": "array", + "maxItems": 2, + "minItems": 2, + "items": { + "type": "integer" + } + } + }, + "additionalProperties": false + }, + "timeRange": { + "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", + "type": "object", + "required": [ + "from", + "to" + ], + "properties": { + "from": { + "description": "From is the start time of the query.", + "type": "string", + "default": "now-6h", + "examples": [ + "now-1h" + ] + }, + "to": { + "description": "To is the end time of the query.", + "type": "string", + "default": "now", + "examples": [ + "now" + ] + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false, + "$schema": "https://json-schema.org/draft-04/schema" + }, + { + "description": "IssuesQuery is used when querying for GitHub issues", + "type": "object", + "required": [ + "repository", + "owner", + "options", + "queryType", + "refId" + ], + "properties": { + "datasource": { + "description": "The datasource", + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "description": "The datasource plugin type", + "type": "string", + "pattern": "^grafana-github-datasource$" + }, + "uid": { + "description": "Datasource UID", + "type": "string" + } + }, + "additionalProperties": false + }, + "hide": { + "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)", + "type": "boolean" + }, + "options": { + "type": "object", + "required": [ + "repository", + "owner", + "filters", + "timeField" + ], + "properties": { + "filters": { + "type": "object", + "properties": { + "assignee": { + "type": "string" + }, + "createdBy": { + "type": "string" + }, + "labels": { + "type": "array", + "items": { + "type": "string" + } + }, + "mentioned": { + "type": "string" + }, + "milestone": { + "type": "string" + }, + "milestoneNumber": { + "type": "string" + }, + "since": { + "type": "object", + "additionalProperties": false + }, + "states": { + "type": "array", + "items": { + "type": "string" + } + }, + "viewerSubscribed": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + "owner": { + "type": "string" + }, + "query": { + "type": "string" + }, + "repository": { + "type": "string" + }, + "timeField": { + "type": "integer" + } + }, + "additionalProperties": false + }, + "owner": { + "type": "string" + }, + "queryType": { + "type": "string", + "pattern": "^Issues$" + }, + "refId": { + "description": "RefID is the unique identifier of the query, set by the frontend call.", + "type": "string" + }, + "repository": { + "type": "string" + }, + "resultAssertions": { + "description": "Optionally define expected query result behavior", + "type": "object", + "required": [ + "typeVersion" + ], + "properties": { + "maxFrames": { + "description": "Maximum frame count", + "type": "integer" + }, + "type": { + "description": "Type asserts that the frame matches a known type structure.\n\n\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\"` ", + "type": "string", + "enum": [ + "", + "timeseries-wide", + "timeseries-long", + "timeseries-many", + "timeseries-multi", + "directory-listing", + "table", + "numeric-wide", + "numeric-multi", + "numeric-long", + "log-lines" + ], + "x-enum-description": {} + }, + "typeVersion": { + "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/.", + "type": "array", + "maxItems": 2, + "minItems": 2, + "items": { + "type": "integer" + } + } + }, + "additionalProperties": false + }, + "timeRange": { + "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", + "type": "object", + "required": [ + "from", + "to" + ], + "properties": { + "from": { + "description": "From is the start time of the query.", + "type": "string", + "default": "now-6h", + "examples": [ + "now-1h" + ] + }, + "to": { + "description": "To is the end time of the query.", + "type": "string", + "default": "now", + "examples": [ + "now" + ] + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false, + "$schema": "https://json-schema.org/draft-04/schema" + }, + { + "description": "PackagesQuery is used when querying for GitHub packages, including NPM, Maven, PyPi, Rubygems, and Docker", + "type": "object", + "required": [ + "repository", + "owner", + "options", + "queryType", + "refId" + ], + "properties": { + "datasource": { + "description": "The datasource", + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "description": "The datasource plugin type", + "type": "string", + "pattern": "^grafana-github-datasource$" + }, + "uid": { + "description": "Datasource UID", + "type": "string" + } + }, + "additionalProperties": false + }, + "hide": { + "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)", + "type": "boolean" + }, + "options": { + "type": "object", + "required": [ + "repository", + "owner", + "names", + "packageType" + ], + "properties": { + "names": { + "type": "string" + }, + "owner": { + "type": "string" + }, + "packageType": { + "type": "string" + }, + "repository": { + "type": "string" + } + }, + "additionalProperties": false + }, + "owner": { + "type": "string" + }, + "queryType": { + "type": "string", + "pattern": "^Packages$" + }, + "refId": { + "description": "RefID is the unique identifier of the query, set by the frontend call.", + "type": "string" + }, + "repository": { + "type": "string" + }, + "resultAssertions": { + "description": "Optionally define expected query result behavior", + "type": "object", + "required": [ + "typeVersion" + ], + "properties": { + "maxFrames": { + "description": "Maximum frame count", + "type": "integer" + }, + "type": { + "description": "Type asserts that the frame matches a known type structure.\n\n\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\"` ", + "type": "string", + "enum": [ + "", + "timeseries-wide", + "timeseries-long", + "timeseries-many", + "timeseries-multi", + "directory-listing", + "table", + "numeric-wide", + "numeric-multi", + "numeric-long", + "log-lines" + ], + "x-enum-description": {} + }, + "typeVersion": { + "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/.", + "type": "array", + "maxItems": 2, + "minItems": 2, + "items": { + "type": "integer" + } + } + }, + "additionalProperties": false + }, + "timeRange": { + "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", + "type": "object", + "required": [ + "from", + "to" + ], + "properties": { + "from": { + "description": "From is the start time of the query.", + "type": "string", + "default": "now-6h", + "examples": [ + "now-1h" + ] + }, + "to": { + "description": "To is the end time of the query.", + "type": "string", + "default": "now", + "examples": [ + "now" + ] + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false, + "$schema": "https://json-schema.org/draft-04/schema" + }, + { + "description": "MilestonesQuery is used when querying for GitHub milestones", + "type": "object", + "required": [ + "repository", + "owner", + "options", + "queryType", + "refId" + ], + "properties": { + "datasource": { + "description": "The datasource", + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "description": "The datasource plugin type", + "type": "string", + "pattern": "^grafana-github-datasource$" + }, + "uid": { + "description": "Datasource UID", + "type": "string" + } + }, + "additionalProperties": false + }, + "hide": { + "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)", + "type": "boolean" + }, + "options": { + "type": "object", + "required": [ + "repository", + "owner", + "query" + ], + "properties": { + "owner": { + "description": "Owner is the owner of the repository (ex: grafana)", + "type": "string" + }, + "query": { + "description": "Query searches milestones by name and description", + "type": "string" + }, + "repository": { + "description": "Repository is the name of the repository being queried (ex: grafana)", + "type": "string" + } + }, + "additionalProperties": false + }, + "owner": { + "type": "string" + }, + "queryType": { + "type": "string", + "pattern": "^Milestones$" + }, + "refId": { + "description": "RefID is the unique identifier of the query, set by the frontend call.", + "type": "string" + }, + "repository": { + "type": "string" + }, + "resultAssertions": { + "description": "Optionally define expected query result behavior", + "type": "object", + "required": [ + "typeVersion" + ], + "properties": { + "maxFrames": { + "description": "Maximum frame count", + "type": "integer" + }, + "type": { + "description": "Type asserts that the frame matches a known type structure.\n\n\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\"` ", + "type": "string", + "enum": [ + "", + "timeseries-wide", + "timeseries-long", + "timeseries-many", + "timeseries-multi", + "directory-listing", + "table", + "numeric-wide", + "numeric-multi", + "numeric-long", + "log-lines" + ], + "x-enum-description": {} + }, + "typeVersion": { + "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/.", + "type": "array", + "maxItems": 2, + "minItems": 2, + "items": { + "type": "integer" + } + } + }, + "additionalProperties": false + }, + "timeRange": { + "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", + "type": "object", + "required": [ + "from", + "to" + ], + "properties": { + "from": { + "description": "From is the start time of the query.", + "type": "string", + "default": "now-6h", + "examples": [ + "now-1h" + ] + }, + "to": { + "description": "To is the end time of the query.", + "type": "string", + "default": "now", + "examples": [ + "now" + ] + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false, + "$schema": "https://json-schema.org/draft-04/schema" + }, + { + "description": "VulnerabilityQuery is used when querying for GitHub Repository Vulnerabilities", + "type": "object", + "required": [ + "repository", + "owner", + "options", + "queryType", + "refId" + ], + "properties": { + "datasource": { + "description": "The datasource", + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "description": "The datasource plugin type", + "type": "string", + "pattern": "^grafana-github-datasource$" + }, + "uid": { + "description": "Datasource UID", + "type": "string" + } + }, + "additionalProperties": false + }, + "hide": { + "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)", + "type": "boolean" + }, + "options": { + "type": "object", + "required": [ + "repository", + "owner", + "query" + ], + "properties": { + "owner": { + "description": "Owner is the owner of the repository (ex: grafana)", + "type": "string" + }, + "query": { + "description": "Query searches x by name and description", + "type": "string" + }, + "repository": { + "description": "Repository is the name of the repository being queried (ex: grafana)", + "type": "string" + } + }, + "additionalProperties": false + }, + "owner": { + "type": "string" + }, + "queryType": { + "type": "string", + "pattern": "^Vulnerabilities$" + }, + "refId": { + "description": "RefID is the unique identifier of the query, set by the frontend call.", + "type": "string" + }, + "repository": { + "type": "string" + }, + "resultAssertions": { + "description": "Optionally define expected query result behavior", + "type": "object", + "required": [ + "typeVersion" + ], + "properties": { + "maxFrames": { + "description": "Maximum frame count", + "type": "integer" + }, + "type": { + "description": "Type asserts that the frame matches a known type structure.\n\n\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\"` ", + "type": "string", + "enum": [ + "", + "timeseries-wide", + "timeseries-long", + "timeseries-many", + "timeseries-multi", + "directory-listing", + "table", + "numeric-wide", + "numeric-multi", + "numeric-long", + "log-lines" + ], + "x-enum-description": {} + }, + "typeVersion": { + "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/.", + "type": "array", + "maxItems": 2, + "minItems": 2, + "items": { + "type": "integer" + } + } + }, + "additionalProperties": false + }, + "timeRange": { + "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", + "type": "object", + "required": [ + "from", + "to" + ], + "properties": { + "from": { + "description": "From is the start time of the query.", + "type": "string", + "default": "now-6h", + "examples": [ + "now-1h" + ] + }, + "to": { + "description": "To is the end time of the query.", + "type": "string", + "default": "now", + "examples": [ + "now" + ] + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false, + "$schema": "https://json-schema.org/draft-04/schema" + }, + { + "description": "StargazersQuery is used when querying stargazers for a repository", + "type": "object", + "required": [ + "repository", + "owner", + "queryType", + "refId" + ], + "properties": { + "datasource": { + "description": "The datasource", + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "description": "The datasource plugin type", + "type": "string", + "pattern": "^grafana-github-datasource$" + }, + "uid": { + "description": "Datasource UID", + "type": "string" + } + }, + "additionalProperties": false + }, + "hide": { + "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)", + "type": "boolean" + }, + "owner": { + "type": "string" + }, + "queryType": { + "type": "string", + "pattern": "^Stargazers$" + }, + "refId": { + "description": "RefID is the unique identifier of the query, set by the frontend call.", + "type": "string" + }, + "repository": { + "type": "string" + }, + "resultAssertions": { + "description": "Optionally define expected query result behavior", + "type": "object", + "required": [ + "typeVersion" + ], + "properties": { + "maxFrames": { + "description": "Maximum frame count", + "type": "integer" + }, + "type": { + "description": "Type asserts that the frame matches a known type structure.\n\n\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\"` ", + "type": "string", + "enum": [ + "", + "timeseries-wide", + "timeseries-long", + "timeseries-many", + "timeseries-multi", + "directory-listing", + "table", + "numeric-wide", + "numeric-multi", + "numeric-long", + "log-lines" + ], + "x-enum-description": {} + }, + "typeVersion": { + "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/.", + "type": "array", + "maxItems": 2, + "minItems": 2, + "items": { + "type": "integer" + } + } + }, + "additionalProperties": false + }, + "timeRange": { + "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", + "type": "object", + "required": [ + "from", + "to" + ], + "properties": { + "from": { + "description": "From is the start time of the query.", + "type": "string", + "default": "now-6h", + "examples": [ + "now-1h" + ] + }, + "to": { + "description": "To is the end time of the query.", + "type": "string", + "default": "now", + "examples": [ + "now" + ] + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false, + "$schema": "https://json-schema.org/draft-04/schema" + }, + { + "description": "WorkflowsQuery is used when querying workflows for an organization", + "type": "object", + "required": [ + "repository", + "owner", + "options", + "queryType", + "refId" + ], + "properties": { + "datasource": { + "description": "The datasource", + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "description": "The datasource plugin type", + "type": "string", + "pattern": "^grafana-github-datasource$" + }, + "uid": { + "description": "Datasource UID", + "type": "string" + } + }, + "additionalProperties": false + }, + "hide": { + "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)", + "type": "boolean" + }, + "options": { + "type": "object", + "required": [ + "owner", + "repository", + "timeField" + ], + "properties": { + "owner": { + "description": "Owner is the owner of the repository (ex: grafana)", + "type": "string" + }, + "repository": { + "description": "Repository is the name of the repository being queried (ex: grafana)", + "type": "string" + }, + "timeField": { + "description": "The field used to check if an entry is in the requested range.", + "type": "integer" + } + }, + "additionalProperties": false + }, + "owner": { + "type": "string" + }, + "queryType": { + "type": "string", + "pattern": "^Workflows$" + }, + "refId": { + "description": "RefID is the unique identifier of the query, set by the frontend call.", + "type": "string" + }, + "repository": { + "type": "string" + }, + "resultAssertions": { + "description": "Optionally define expected query result behavior", + "type": "object", + "required": [ + "typeVersion" + ], + "properties": { + "maxFrames": { + "description": "Maximum frame count", + "type": "integer" + }, + "type": { + "description": "Type asserts that the frame matches a known type structure.\n\n\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\"` ", + "type": "string", + "enum": [ + "", + "timeseries-wide", + "timeseries-long", + "timeseries-many", + "timeseries-multi", + "directory-listing", + "table", + "numeric-wide", + "numeric-multi", + "numeric-long", + "log-lines" + ], + "x-enum-description": {} + }, + "typeVersion": { + "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/.", + "type": "array", + "maxItems": 2, + "minItems": 2, + "items": { + "type": "integer" + } + } + }, + "additionalProperties": false + }, + "timeRange": { + "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", + "type": "object", + "required": [ + "from", + "to" + ], + "properties": { + "from": { + "description": "From is the start time of the query.", + "type": "string", + "default": "now-6h", + "examples": [ + "now-1h" + ] + }, + "to": { + "description": "To is the end time of the query.", + "type": "string", + "default": "now", + "examples": [ + "now" + ] + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false, + "$schema": "https://json-schema.org/draft-04/schema" + }, + { + "description": "WorkflowUsageQuery is used when querying a workflow usage", + "type": "object", + "required": [ + "repository", + "owner", + "options", + "queryType", + "refId" + ], + "properties": { + "datasource": { + "description": "The datasource", + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "description": "The datasource plugin type", + "type": "string", + "pattern": "^grafana-github-datasource$" + }, + "uid": { + "description": "Datasource UID", + "type": "string" + } + }, + "additionalProperties": false + }, + "hide": { + "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)", + "type": "boolean" + }, + "options": { + "type": "object", + "required": [ + "owner", + "repository", + "workflow" + ], + "properties": { + "owner": { + "description": "Owner is the owner of the repository (ex: grafana)", + "type": "string" + }, + "repository": { + "description": "Repository is the name of the repository being queried (ex: grafana)", + "type": "string" + }, + "workflow": { + "description": "Workflow is the id or the workflow file name.", + "type": "string" + } + }, + "additionalProperties": false + }, + "owner": { + "type": "string" + }, + "queryType": { + "type": "string", + "pattern": "^Workflow_Usage$" + }, + "refId": { + "description": "RefID is the unique identifier of the query, set by the frontend call.", + "type": "string" + }, + "repository": { + "type": "string" + }, + "resultAssertions": { + "description": "Optionally define expected query result behavior", + "type": "object", + "required": [ + "typeVersion" + ], + "properties": { + "maxFrames": { + "description": "Maximum frame count", + "type": "integer" + }, + "type": { + "description": "Type asserts that the frame matches a known type structure.\n\n\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\"` ", + "type": "string", + "enum": [ + "", + "timeseries-wide", + "timeseries-long", + "timeseries-many", + "timeseries-multi", + "directory-listing", + "table", + "numeric-wide", + "numeric-multi", + "numeric-long", + "log-lines" + ], + "x-enum-description": {} + }, + "typeVersion": { + "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/.", + "type": "array", + "maxItems": 2, + "minItems": 2, + "items": { + "type": "integer" + } + } + }, + "additionalProperties": false + }, + "timeRange": { + "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", + "type": "object", + "required": [ + "from", + "to" + ], + "properties": { + "from": { + "description": "From is the start time of the query.", + "type": "string", + "default": "now-6h", + "examples": [ + "now-1h" + ] + }, + "to": { + "description": "To is the end time of the query.", + "type": "string", + "default": "now", + "examples": [ + "now" + ] + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false, + "$schema": "https://json-schema.org/draft-04/schema" + } + ], + "$schema": "https://json-schema.org/draft-04/schema#" + } + }, + "type": { + "description": "the panel type", + "type": "string" + } + }, + "additionalProperties": true, + "$schema": "https://json-schema.org/draft-04/schema#" +} \ No newline at end of file diff --git a/src/static/schema/query.request.example.json b/src/static/schema/query.request.example.json new file mode 100644 index 00000000..192383a5 --- /dev/null +++ b/src/static/schema/query.request.example.json @@ -0,0 +1,181 @@ +{ + "from": "now-1h", + "to": "now", + "queries": [ + { + "refId": "A", + "queryType": "Pull_Requests", + "maxDataPoints": 1000, + "intervalMs": 5, + "repository": "github-datasource", + "options": { + "owner": "", + "repository": "", + "timeField": 0 + }, + "owner": "grafana" + }, + { + "refId": "B", + "queryType": "Commits", + "maxDataPoints": 1000, + "intervalMs": 5, + "repository": "github-datasource", + "options": { + "gitRef": "", + "owner": "", + "repository": "" + }, + "owner": "grafana" + }, + { + "refId": "C", + "queryType": "Tags", + "maxDataPoints": 1000, + "intervalMs": 5, + "options": { + "owner": "", + "repository": "" + }, + "owner": "grafana", + "repository": "github-datasource" + }, + { + "refId": "D", + "queryType": "Labels", + "maxDataPoints": 1000, + "intervalMs": 5, + "options": { + "owner": "", + "query": "", + "repository": "" + }, + "owner": "grafana", + "repository": "github-datasource" + }, + { + "refId": "E", + "queryType": "Releases", + "maxDataPoints": 1000, + "intervalMs": 5, + "options": { + "owner": "", + "repository": "" + }, + "owner": "grafana", + "repository": "github-datasource" + }, + { + "refId": "F", + "queryType": "Contributors", + "maxDataPoints": 1000, + "intervalMs": 5, + "options": { + "owner": "yesoreyeram", + "repository": "" + }, + "owner": "grafana", + "repository": "github-datasource" + }, + { + "refId": "G", + "queryType": "Repositories", + "maxDataPoints": 1000, + "intervalMs": 5, + "repository": "", + "owner": "yesoreyeram" + }, + { + "refId": "H", + "queryType": "Issues", + "maxDataPoints": 1000, + "intervalMs": 5, + "owner": "grafana", + "repository": "github-datasource", + "options": { + "filters": { + "states": [ + "OPEN" + ] + }, + "owner": "", + "repository": "", + "timeField": 0 + } + }, + { + "refId": "I", + "queryType": "Packages", + "maxDataPoints": 1000, + "intervalMs": 5, + "options": { + "names": "", + "owner": "", + "packageType": "DOCKER", + "repository": "" + }, + "owner": "grafana", + "repository": "github-datasource" + }, + { + "refId": "J", + "queryType": "Milestones", + "maxDataPoints": 1000, + "intervalMs": 5, + "options": { + "owner": "", + "query": "", + "repository": "" + }, + "owner": "grafana", + "repository": "github-datasource" + }, + { + "refId": "K", + "queryType": "Vulnerabilities", + "maxDataPoints": 1000, + "intervalMs": 5, + "repository": "github-datasource", + "options": { + "owner": "", + "query": "", + "repository": "" + }, + "owner": "grafana" + }, + { + "refId": "L", + "queryType": "Stargazers", + "maxDataPoints": 1000, + "intervalMs": 5, + "repository": "github-datasource", + "owner": "grafana" + }, + { + "refId": "M", + "queryType": "Workflows", + "maxDataPoints": 1000, + "intervalMs": 5, + "options": { + "owner": "", + "repository": "", + "timeField": 0 + }, + "owner": "grafana", + "repository": "github-datasource" + }, + { + "refId": "N", + "queryType": "Workflow_Usage", + "maxDataPoints": 1000, + "intervalMs": 5, + "options": { + "owner": "", + "repository": "", + "workflow": "" + }, + "repository": "github-datasource", + "owner": "grafana" + } + ] +} \ No newline at end of file diff --git a/src/static/schema/query.request.schema.json b/src/static/schema/query.request.schema.json new file mode 100644 index 00000000..86b5c76c --- /dev/null +++ b/src/static/schema/query.request.schema.json @@ -0,0 +1,2130 @@ +{ + "type": "object", + "required": [ + "queries" + ], + "properties": { + "$schema": { + "description": "helper", + "type": "string" + }, + "debug": { + "type": "boolean" + }, + "from": { + "description": "From Start time in epoch timestamps in milliseconds or relative using Grafana time units.", + "type": "string" + }, + "queries": { + "type": "array", + "items": { + "type": "object", + "oneOf": [ + { + "description": "PullRequestsQuery is used when querying for GitHub Pull Requests", + "type": "object", + "required": [ + "repository", + "owner", + "options", + "queryType", + "refId" + ], + "properties": { + "datasource": { + "description": "The datasource", + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "description": "The datasource plugin type", + "type": "string", + "pattern": "^grafana-github-datasource$" + }, + "uid": { + "description": "Datasource UID", + "type": "string" + } + }, + "additionalProperties": false + }, + "hide": { + "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)", + "type": "boolean" + }, + "intervalMs": { + "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", + "type": "number" + }, + "maxDataPoints": { + "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", + "type": "integer" + }, + "options": { + "type": "object", + "required": [ + "repository", + "owner", + "timeField" + ], + "properties": { + "owner": { + "description": "Owner is the owner of the repository (ex: grafana)", + "type": "string" + }, + "query": { + "type": "string" + }, + "repository": { + "description": "Repository is the name of the repository being queried (ex: grafana)", + "type": "string" + }, + "timeField": { + "description": "TimeField defines what time field to filter by", + "type": "integer" + } + }, + "additionalProperties": false + }, + "owner": { + "type": "string" + }, + "queryType": { + "type": "string", + "pattern": "^Pull_Requests$" + }, + "refId": { + "description": "RefID is the unique identifier of the query, set by the frontend call.", + "type": "string" + }, + "repository": { + "type": "string" + }, + "resultAssertions": { + "description": "Optionally define expected query result behavior", + "type": "object", + "required": [ + "typeVersion" + ], + "properties": { + "maxFrames": { + "description": "Maximum frame count", + "type": "integer" + }, + "type": { + "description": "Type asserts that the frame matches a known type structure.\n\n\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\"` ", + "type": "string", + "enum": [ + "", + "timeseries-wide", + "timeseries-long", + "timeseries-many", + "timeseries-multi", + "directory-listing", + "table", + "numeric-wide", + "numeric-multi", + "numeric-long", + "log-lines" + ], + "x-enum-description": {} + }, + "typeVersion": { + "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/.", + "type": "array", + "maxItems": 2, + "minItems": 2, + "items": { + "type": "integer" + } + } + }, + "additionalProperties": false + }, + "timeRange": { + "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", + "type": "object", + "required": [ + "from", + "to" + ], + "properties": { + "from": { + "description": "From is the start time of the query.", + "type": "string", + "default": "now-6h", + "examples": [ + "now-1h" + ] + }, + "to": { + "description": "To is the end time of the query.", + "type": "string", + "default": "now", + "examples": [ + "now" + ] + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false, + "$schema": "https://json-schema.org/draft-04/schema" + }, + { + "description": "CommitsQuery is used when querying for GitHub commits", + "type": "object", + "required": [ + "repository", + "owner", + "options", + "queryType", + "refId" + ], + "properties": { + "datasource": { + "description": "The datasource", + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "description": "The datasource plugin type", + "type": "string", + "pattern": "^grafana-github-datasource$" + }, + "uid": { + "description": "Datasource UID", + "type": "string" + } + }, + "additionalProperties": false + }, + "hide": { + "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)", + "type": "boolean" + }, + "intervalMs": { + "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", + "type": "number" + }, + "maxDataPoints": { + "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", + "type": "integer" + }, + "options": { + "type": "object", + "required": [ + "repository", + "owner", + "gitRef" + ], + "properties": { + "gitRef": { + "type": "string" + }, + "owner": { + "type": "string" + }, + "repository": { + "type": "string" + } + }, + "additionalProperties": false + }, + "owner": { + "type": "string" + }, + "queryType": { + "type": "string", + "pattern": "^Commits$" + }, + "refId": { + "description": "RefID is the unique identifier of the query, set by the frontend call.", + "type": "string" + }, + "repository": { + "type": "string" + }, + "resultAssertions": { + "description": "Optionally define expected query result behavior", + "type": "object", + "required": [ + "typeVersion" + ], + "properties": { + "maxFrames": { + "description": "Maximum frame count", + "type": "integer" + }, + "type": { + "description": "Type asserts that the frame matches a known type structure.\n\n\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\"` ", + "type": "string", + "enum": [ + "", + "timeseries-wide", + "timeseries-long", + "timeseries-many", + "timeseries-multi", + "directory-listing", + "table", + "numeric-wide", + "numeric-multi", + "numeric-long", + "log-lines" + ], + "x-enum-description": {} + }, + "typeVersion": { + "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/.", + "type": "array", + "maxItems": 2, + "minItems": 2, + "items": { + "type": "integer" + } + } + }, + "additionalProperties": false + }, + "timeRange": { + "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", + "type": "object", + "required": [ + "from", + "to" + ], + "properties": { + "from": { + "description": "From is the start time of the query.", + "type": "string", + "default": "now-6h", + "examples": [ + "now-1h" + ] + }, + "to": { + "description": "To is the end time of the query.", + "type": "string", + "default": "now", + "examples": [ + "now" + ] + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false, + "$schema": "https://json-schema.org/draft-04/schema" + }, + { + "description": "TagsQuery is used when querying for GitHub tags", + "type": "object", + "required": [ + "repository", + "owner", + "options", + "queryType", + "refId" + ], + "properties": { + "datasource": { + "description": "The datasource", + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "description": "The datasource plugin type", + "type": "string", + "pattern": "^grafana-github-datasource$" + }, + "uid": { + "description": "Datasource UID", + "type": "string" + } + }, + "additionalProperties": false + }, + "hide": { + "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)", + "type": "boolean" + }, + "intervalMs": { + "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", + "type": "number" + }, + "maxDataPoints": { + "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", + "type": "integer" + }, + "options": { + "type": "object", + "required": [ + "repository", + "owner" + ], + "properties": { + "owner": { + "description": "Owner is the owner of the repository (ex: grafana)", + "type": "string" + }, + "repository": { + "description": "Repository is the name of the repository being queried (ex: grafana)", + "type": "string" + } + }, + "additionalProperties": false + }, + "owner": { + "type": "string" + }, + "queryType": { + "type": "string", + "pattern": "^Tags$" + }, + "refId": { + "description": "RefID is the unique identifier of the query, set by the frontend call.", + "type": "string" + }, + "repository": { + "type": "string" + }, + "resultAssertions": { + "description": "Optionally define expected query result behavior", + "type": "object", + "required": [ + "typeVersion" + ], + "properties": { + "maxFrames": { + "description": "Maximum frame count", + "type": "integer" + }, + "type": { + "description": "Type asserts that the frame matches a known type structure.\n\n\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\"` ", + "type": "string", + "enum": [ + "", + "timeseries-wide", + "timeseries-long", + "timeseries-many", + "timeseries-multi", + "directory-listing", + "table", + "numeric-wide", + "numeric-multi", + "numeric-long", + "log-lines" + ], + "x-enum-description": {} + }, + "typeVersion": { + "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/.", + "type": "array", + "maxItems": 2, + "minItems": 2, + "items": { + "type": "integer" + } + } + }, + "additionalProperties": false + }, + "timeRange": { + "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", + "type": "object", + "required": [ + "from", + "to" + ], + "properties": { + "from": { + "description": "From is the start time of the query.", + "type": "string", + "default": "now-6h", + "examples": [ + "now-1h" + ] + }, + "to": { + "description": "To is the end time of the query.", + "type": "string", + "default": "now", + "examples": [ + "now" + ] + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false, + "$schema": "https://json-schema.org/draft-04/schema" + }, + { + "description": "LabelsQuery is used when querying for GitHub issue labels", + "type": "object", + "required": [ + "repository", + "owner", + "options", + "queryType", + "refId" + ], + "properties": { + "datasource": { + "description": "The datasource", + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "description": "The datasource plugin type", + "type": "string", + "pattern": "^grafana-github-datasource$" + }, + "uid": { + "description": "Datasource UID", + "type": "string" + } + }, + "additionalProperties": false + }, + "hide": { + "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)", + "type": "boolean" + }, + "intervalMs": { + "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", + "type": "number" + }, + "maxDataPoints": { + "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", + "type": "integer" + }, + "options": { + "type": "object", + "required": [ + "repository", + "owner", + "query" + ], + "properties": { + "owner": { + "description": "Owner is the owner of the repository (ex: grafana)", + "type": "string" + }, + "query": { + "description": "Query searches labels by name and description", + "type": "string" + }, + "repository": { + "description": "Repository is the name of the repository being queried (ex: grafana)", + "type": "string" + } + }, + "additionalProperties": false + }, + "owner": { + "type": "string" + }, + "queryType": { + "type": "string", + "pattern": "^Labels$" + }, + "refId": { + "description": "RefID is the unique identifier of the query, set by the frontend call.", + "type": "string" + }, + "repository": { + "type": "string" + }, + "resultAssertions": { + "description": "Optionally define expected query result behavior", + "type": "object", + "required": [ + "typeVersion" + ], + "properties": { + "maxFrames": { + "description": "Maximum frame count", + "type": "integer" + }, + "type": { + "description": "Type asserts that the frame matches a known type structure.\n\n\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\"` ", + "type": "string", + "enum": [ + "", + "timeseries-wide", + "timeseries-long", + "timeseries-many", + "timeseries-multi", + "directory-listing", + "table", + "numeric-wide", + "numeric-multi", + "numeric-long", + "log-lines" + ], + "x-enum-description": {} + }, + "typeVersion": { + "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/.", + "type": "array", + "maxItems": 2, + "minItems": 2, + "items": { + "type": "integer" + } + } + }, + "additionalProperties": false + }, + "timeRange": { + "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", + "type": "object", + "required": [ + "from", + "to" + ], + "properties": { + "from": { + "description": "From is the start time of the query.", + "type": "string", + "default": "now-6h", + "examples": [ + "now-1h" + ] + }, + "to": { + "description": "To is the end time of the query.", + "type": "string", + "default": "now", + "examples": [ + "now" + ] + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false, + "$schema": "https://json-schema.org/draft-04/schema" + }, + { + "description": "ReleasesQuery is used when querying for GitHub issue labels", + "type": "object", + "required": [ + "repository", + "owner", + "options", + "queryType", + "refId" + ], + "properties": { + "datasource": { + "description": "The datasource", + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "description": "The datasource plugin type", + "type": "string", + "pattern": "^grafana-github-datasource$" + }, + "uid": { + "description": "Datasource UID", + "type": "string" + } + }, + "additionalProperties": false + }, + "hide": { + "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)", + "type": "boolean" + }, + "intervalMs": { + "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", + "type": "number" + }, + "maxDataPoints": { + "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", + "type": "integer" + }, + "options": { + "type": "object", + "required": [ + "repository", + "owner" + ], + "properties": { + "owner": { + "description": "Owner is the owner of the repository (ex: grafana)", + "type": "string" + }, + "repository": { + "description": "Repository is the name of the repository being queried (ex: grafana)", + "type": "string" + } + }, + "additionalProperties": false + }, + "owner": { + "type": "string" + }, + "queryType": { + "type": "string", + "pattern": "^Releases$" + }, + "refId": { + "description": "RefID is the unique identifier of the query, set by the frontend call.", + "type": "string" + }, + "repository": { + "type": "string" + }, + "resultAssertions": { + "description": "Optionally define expected query result behavior", + "type": "object", + "required": [ + "typeVersion" + ], + "properties": { + "maxFrames": { + "description": "Maximum frame count", + "type": "integer" + }, + "type": { + "description": "Type asserts that the frame matches a known type structure.\n\n\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\"` ", + "type": "string", + "enum": [ + "", + "timeseries-wide", + "timeseries-long", + "timeseries-many", + "timeseries-multi", + "directory-listing", + "table", + "numeric-wide", + "numeric-multi", + "numeric-long", + "log-lines" + ], + "x-enum-description": {} + }, + "typeVersion": { + "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/.", + "type": "array", + "maxItems": 2, + "minItems": 2, + "items": { + "type": "integer" + } + } + }, + "additionalProperties": false + }, + "timeRange": { + "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", + "type": "object", + "required": [ + "from", + "to" + ], + "properties": { + "from": { + "description": "From is the start time of the query.", + "type": "string", + "default": "now-6h", + "examples": [ + "now-1h" + ] + }, + "to": { + "description": "To is the end time of the query.", + "type": "string", + "default": "now", + "examples": [ + "now" + ] + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false, + "$schema": "https://json-schema.org/draft-04/schema" + }, + { + "description": "ContributorsQuery is used when querying for GitHub contributors", + "type": "object", + "required": [ + "repository", + "owner", + "options", + "queryType", + "refId" + ], + "properties": { + "datasource": { + "description": "The datasource", + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "description": "The datasource plugin type", + "type": "string", + "pattern": "^grafana-github-datasource$" + }, + "uid": { + "description": "Datasource UID", + "type": "string" + } + }, + "additionalProperties": false + }, + "hide": { + "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)", + "type": "boolean" + }, + "intervalMs": { + "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", + "type": "number" + }, + "maxDataPoints": { + "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", + "type": "integer" + }, + "options": { + "type": "object", + "required": [ + "repository", + "owner" + ], + "properties": { + "owner": { + "description": "Owner is the owner of the repository (ex: grafana)", + "type": "string" + }, + "query": { + "type": "string" + }, + "repository": { + "description": "Repository is the name of the repository being queried (ex: grafana)", + "type": "string" + } + }, + "additionalProperties": false + }, + "owner": { + "type": "string" + }, + "queryType": { + "type": "string", + "pattern": "^Contributors$" + }, + "refId": { + "description": "RefID is the unique identifier of the query, set by the frontend call.", + "type": "string" + }, + "repository": { + "type": "string" + }, + "resultAssertions": { + "description": "Optionally define expected query result behavior", + "type": "object", + "required": [ + "typeVersion" + ], + "properties": { + "maxFrames": { + "description": "Maximum frame count", + "type": "integer" + }, + "type": { + "description": "Type asserts that the frame matches a known type structure.\n\n\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\"` ", + "type": "string", + "enum": [ + "", + "timeseries-wide", + "timeseries-long", + "timeseries-many", + "timeseries-multi", + "directory-listing", + "table", + "numeric-wide", + "numeric-multi", + "numeric-long", + "log-lines" + ], + "x-enum-description": {} + }, + "typeVersion": { + "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/.", + "type": "array", + "maxItems": 2, + "minItems": 2, + "items": { + "type": "integer" + } + } + }, + "additionalProperties": false + }, + "timeRange": { + "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", + "type": "object", + "required": [ + "from", + "to" + ], + "properties": { + "from": { + "description": "From is the start time of the query.", + "type": "string", + "default": "now-6h", + "examples": [ + "now-1h" + ] + }, + "to": { + "description": "To is the end time of the query.", + "type": "string", + "default": "now", + "examples": [ + "now" + ] + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false, + "$schema": "https://json-schema.org/draft-04/schema" + }, + { + "description": "RepositoriesQuery is used when querying for GitHub repositories", + "type": "object", + "required": [ + "repository", + "owner", + "queryType", + "refId" + ], + "properties": { + "datasource": { + "description": "The datasource", + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "description": "The datasource plugin type", + "type": "string", + "pattern": "^grafana-github-datasource$" + }, + "uid": { + "description": "Datasource UID", + "type": "string" + } + }, + "additionalProperties": false + }, + "hide": { + "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)", + "type": "boolean" + }, + "intervalMs": { + "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", + "type": "number" + }, + "maxDataPoints": { + "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", + "type": "integer" + }, + "owner": { + "type": "string" + }, + "queryType": { + "type": "string", + "pattern": "^Repositories$" + }, + "refId": { + "description": "RefID is the unique identifier of the query, set by the frontend call.", + "type": "string" + }, + "repository": { + "type": "string" + }, + "resultAssertions": { + "description": "Optionally define expected query result behavior", + "type": "object", + "required": [ + "typeVersion" + ], + "properties": { + "maxFrames": { + "description": "Maximum frame count", + "type": "integer" + }, + "type": { + "description": "Type asserts that the frame matches a known type structure.\n\n\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\"` ", + "type": "string", + "enum": [ + "", + "timeseries-wide", + "timeseries-long", + "timeseries-many", + "timeseries-multi", + "directory-listing", + "table", + "numeric-wide", + "numeric-multi", + "numeric-long", + "log-lines" + ], + "x-enum-description": {} + }, + "typeVersion": { + "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/.", + "type": "array", + "maxItems": 2, + "minItems": 2, + "items": { + "type": "integer" + } + } + }, + "additionalProperties": false + }, + "timeRange": { + "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", + "type": "object", + "required": [ + "from", + "to" + ], + "properties": { + "from": { + "description": "From is the start time of the query.", + "type": "string", + "default": "now-6h", + "examples": [ + "now-1h" + ] + }, + "to": { + "description": "To is the end time of the query.", + "type": "string", + "default": "now", + "examples": [ + "now" + ] + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false, + "$schema": "https://json-schema.org/draft-04/schema" + }, + { + "description": "IssuesQuery is used when querying for GitHub issues", + "type": "object", + "required": [ + "repository", + "owner", + "options", + "queryType", + "refId" + ], + "properties": { + "datasource": { + "description": "The datasource", + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "description": "The datasource plugin type", + "type": "string", + "pattern": "^grafana-github-datasource$" + }, + "uid": { + "description": "Datasource UID", + "type": "string" + } + }, + "additionalProperties": false + }, + "hide": { + "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)", + "type": "boolean" + }, + "intervalMs": { + "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", + "type": "number" + }, + "maxDataPoints": { + "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", + "type": "integer" + }, + "options": { + "type": "object", + "required": [ + "repository", + "owner", + "filters", + "timeField" + ], + "properties": { + "filters": { + "type": "object", + "properties": { + "assignee": { + "type": "string" + }, + "createdBy": { + "type": "string" + }, + "labels": { + "type": "array", + "items": { + "type": "string" + } + }, + "mentioned": { + "type": "string" + }, + "milestone": { + "type": "string" + }, + "milestoneNumber": { + "type": "string" + }, + "since": { + "type": "object", + "additionalProperties": false + }, + "states": { + "type": "array", + "items": { + "type": "string" + } + }, + "viewerSubscribed": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + "owner": { + "type": "string" + }, + "query": { + "type": "string" + }, + "repository": { + "type": "string" + }, + "timeField": { + "type": "integer" + } + }, + "additionalProperties": false + }, + "owner": { + "type": "string" + }, + "queryType": { + "type": "string", + "pattern": "^Issues$" + }, + "refId": { + "description": "RefID is the unique identifier of the query, set by the frontend call.", + "type": "string" + }, + "repository": { + "type": "string" + }, + "resultAssertions": { + "description": "Optionally define expected query result behavior", + "type": "object", + "required": [ + "typeVersion" + ], + "properties": { + "maxFrames": { + "description": "Maximum frame count", + "type": "integer" + }, + "type": { + "description": "Type asserts that the frame matches a known type structure.\n\n\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\"` ", + "type": "string", + "enum": [ + "", + "timeseries-wide", + "timeseries-long", + "timeseries-many", + "timeseries-multi", + "directory-listing", + "table", + "numeric-wide", + "numeric-multi", + "numeric-long", + "log-lines" + ], + "x-enum-description": {} + }, + "typeVersion": { + "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/.", + "type": "array", + "maxItems": 2, + "minItems": 2, + "items": { + "type": "integer" + } + } + }, + "additionalProperties": false + }, + "timeRange": { + "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", + "type": "object", + "required": [ + "from", + "to" + ], + "properties": { + "from": { + "description": "From is the start time of the query.", + "type": "string", + "default": "now-6h", + "examples": [ + "now-1h" + ] + }, + "to": { + "description": "To is the end time of the query.", + "type": "string", + "default": "now", + "examples": [ + "now" + ] + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false, + "$schema": "https://json-schema.org/draft-04/schema" + }, + { + "description": "PackagesQuery is used when querying for GitHub packages, including NPM, Maven, PyPi, Rubygems, and Docker", + "type": "object", + "required": [ + "repository", + "owner", + "options", + "queryType", + "refId" + ], + "properties": { + "datasource": { + "description": "The datasource", + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "description": "The datasource plugin type", + "type": "string", + "pattern": "^grafana-github-datasource$" + }, + "uid": { + "description": "Datasource UID", + "type": "string" + } + }, + "additionalProperties": false + }, + "hide": { + "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)", + "type": "boolean" + }, + "intervalMs": { + "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", + "type": "number" + }, + "maxDataPoints": { + "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", + "type": "integer" + }, + "options": { + "type": "object", + "required": [ + "repository", + "owner", + "names", + "packageType" + ], + "properties": { + "names": { + "type": "string" + }, + "owner": { + "type": "string" + }, + "packageType": { + "type": "string" + }, + "repository": { + "type": "string" + } + }, + "additionalProperties": false + }, + "owner": { + "type": "string" + }, + "queryType": { + "type": "string", + "pattern": "^Packages$" + }, + "refId": { + "description": "RefID is the unique identifier of the query, set by the frontend call.", + "type": "string" + }, + "repository": { + "type": "string" + }, + "resultAssertions": { + "description": "Optionally define expected query result behavior", + "type": "object", + "required": [ + "typeVersion" + ], + "properties": { + "maxFrames": { + "description": "Maximum frame count", + "type": "integer" + }, + "type": { + "description": "Type asserts that the frame matches a known type structure.\n\n\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\"` ", + "type": "string", + "enum": [ + "", + "timeseries-wide", + "timeseries-long", + "timeseries-many", + "timeseries-multi", + "directory-listing", + "table", + "numeric-wide", + "numeric-multi", + "numeric-long", + "log-lines" + ], + "x-enum-description": {} + }, + "typeVersion": { + "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/.", + "type": "array", + "maxItems": 2, + "minItems": 2, + "items": { + "type": "integer" + } + } + }, + "additionalProperties": false + }, + "timeRange": { + "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", + "type": "object", + "required": [ + "from", + "to" + ], + "properties": { + "from": { + "description": "From is the start time of the query.", + "type": "string", + "default": "now-6h", + "examples": [ + "now-1h" + ] + }, + "to": { + "description": "To is the end time of the query.", + "type": "string", + "default": "now", + "examples": [ + "now" + ] + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false, + "$schema": "https://json-schema.org/draft-04/schema" + }, + { + "description": "MilestonesQuery is used when querying for GitHub milestones", + "type": "object", + "required": [ + "repository", + "owner", + "options", + "queryType", + "refId" + ], + "properties": { + "datasource": { + "description": "The datasource", + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "description": "The datasource plugin type", + "type": "string", + "pattern": "^grafana-github-datasource$" + }, + "uid": { + "description": "Datasource UID", + "type": "string" + } + }, + "additionalProperties": false + }, + "hide": { + "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)", + "type": "boolean" + }, + "intervalMs": { + "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", + "type": "number" + }, + "maxDataPoints": { + "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", + "type": "integer" + }, + "options": { + "type": "object", + "required": [ + "repository", + "owner", + "query" + ], + "properties": { + "owner": { + "description": "Owner is the owner of the repository (ex: grafana)", + "type": "string" + }, + "query": { + "description": "Query searches milestones by name and description", + "type": "string" + }, + "repository": { + "description": "Repository is the name of the repository being queried (ex: grafana)", + "type": "string" + } + }, + "additionalProperties": false + }, + "owner": { + "type": "string" + }, + "queryType": { + "type": "string", + "pattern": "^Milestones$" + }, + "refId": { + "description": "RefID is the unique identifier of the query, set by the frontend call.", + "type": "string" + }, + "repository": { + "type": "string" + }, + "resultAssertions": { + "description": "Optionally define expected query result behavior", + "type": "object", + "required": [ + "typeVersion" + ], + "properties": { + "maxFrames": { + "description": "Maximum frame count", + "type": "integer" + }, + "type": { + "description": "Type asserts that the frame matches a known type structure.\n\n\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\"` ", + "type": "string", + "enum": [ + "", + "timeseries-wide", + "timeseries-long", + "timeseries-many", + "timeseries-multi", + "directory-listing", + "table", + "numeric-wide", + "numeric-multi", + "numeric-long", + "log-lines" + ], + "x-enum-description": {} + }, + "typeVersion": { + "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/.", + "type": "array", + "maxItems": 2, + "minItems": 2, + "items": { + "type": "integer" + } + } + }, + "additionalProperties": false + }, + "timeRange": { + "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", + "type": "object", + "required": [ + "from", + "to" + ], + "properties": { + "from": { + "description": "From is the start time of the query.", + "type": "string", + "default": "now-6h", + "examples": [ + "now-1h" + ] + }, + "to": { + "description": "To is the end time of the query.", + "type": "string", + "default": "now", + "examples": [ + "now" + ] + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false, + "$schema": "https://json-schema.org/draft-04/schema" + }, + { + "description": "VulnerabilityQuery is used when querying for GitHub Repository Vulnerabilities", + "type": "object", + "required": [ + "repository", + "owner", + "options", + "queryType", + "refId" + ], + "properties": { + "datasource": { + "description": "The datasource", + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "description": "The datasource plugin type", + "type": "string", + "pattern": "^grafana-github-datasource$" + }, + "uid": { + "description": "Datasource UID", + "type": "string" + } + }, + "additionalProperties": false + }, + "hide": { + "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)", + "type": "boolean" + }, + "intervalMs": { + "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", + "type": "number" + }, + "maxDataPoints": { + "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", + "type": "integer" + }, + "options": { + "type": "object", + "required": [ + "repository", + "owner", + "query" + ], + "properties": { + "owner": { + "description": "Owner is the owner of the repository (ex: grafana)", + "type": "string" + }, + "query": { + "description": "Query searches x by name and description", + "type": "string" + }, + "repository": { + "description": "Repository is the name of the repository being queried (ex: grafana)", + "type": "string" + } + }, + "additionalProperties": false + }, + "owner": { + "type": "string" + }, + "queryType": { + "type": "string", + "pattern": "^Vulnerabilities$" + }, + "refId": { + "description": "RefID is the unique identifier of the query, set by the frontend call.", + "type": "string" + }, + "repository": { + "type": "string" + }, + "resultAssertions": { + "description": "Optionally define expected query result behavior", + "type": "object", + "required": [ + "typeVersion" + ], + "properties": { + "maxFrames": { + "description": "Maximum frame count", + "type": "integer" + }, + "type": { + "description": "Type asserts that the frame matches a known type structure.\n\n\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\"` ", + "type": "string", + "enum": [ + "", + "timeseries-wide", + "timeseries-long", + "timeseries-many", + "timeseries-multi", + "directory-listing", + "table", + "numeric-wide", + "numeric-multi", + "numeric-long", + "log-lines" + ], + "x-enum-description": {} + }, + "typeVersion": { + "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/.", + "type": "array", + "maxItems": 2, + "minItems": 2, + "items": { + "type": "integer" + } + } + }, + "additionalProperties": false + }, + "timeRange": { + "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", + "type": "object", + "required": [ + "from", + "to" + ], + "properties": { + "from": { + "description": "From is the start time of the query.", + "type": "string", + "default": "now-6h", + "examples": [ + "now-1h" + ] + }, + "to": { + "description": "To is the end time of the query.", + "type": "string", + "default": "now", + "examples": [ + "now" + ] + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false, + "$schema": "https://json-schema.org/draft-04/schema" + }, + { + "description": "StargazersQuery is used when querying stargazers for a repository", + "type": "object", + "required": [ + "repository", + "owner", + "queryType", + "refId" + ], + "properties": { + "datasource": { + "description": "The datasource", + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "description": "The datasource plugin type", + "type": "string", + "pattern": "^grafana-github-datasource$" + }, + "uid": { + "description": "Datasource UID", + "type": "string" + } + }, + "additionalProperties": false + }, + "hide": { + "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)", + "type": "boolean" + }, + "intervalMs": { + "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", + "type": "number" + }, + "maxDataPoints": { + "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", + "type": "integer" + }, + "owner": { + "type": "string" + }, + "queryType": { + "type": "string", + "pattern": "^Stargazers$" + }, + "refId": { + "description": "RefID is the unique identifier of the query, set by the frontend call.", + "type": "string" + }, + "repository": { + "type": "string" + }, + "resultAssertions": { + "description": "Optionally define expected query result behavior", + "type": "object", + "required": [ + "typeVersion" + ], + "properties": { + "maxFrames": { + "description": "Maximum frame count", + "type": "integer" + }, + "type": { + "description": "Type asserts that the frame matches a known type structure.\n\n\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\"` ", + "type": "string", + "enum": [ + "", + "timeseries-wide", + "timeseries-long", + "timeseries-many", + "timeseries-multi", + "directory-listing", + "table", + "numeric-wide", + "numeric-multi", + "numeric-long", + "log-lines" + ], + "x-enum-description": {} + }, + "typeVersion": { + "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/.", + "type": "array", + "maxItems": 2, + "minItems": 2, + "items": { + "type": "integer" + } + } + }, + "additionalProperties": false + }, + "timeRange": { + "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", + "type": "object", + "required": [ + "from", + "to" + ], + "properties": { + "from": { + "description": "From is the start time of the query.", + "type": "string", + "default": "now-6h", + "examples": [ + "now-1h" + ] + }, + "to": { + "description": "To is the end time of the query.", + "type": "string", + "default": "now", + "examples": [ + "now" + ] + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false, + "$schema": "https://json-schema.org/draft-04/schema" + }, + { + "description": "WorkflowsQuery is used when querying workflows for an organization", + "type": "object", + "required": [ + "repository", + "owner", + "options", + "queryType", + "refId" + ], + "properties": { + "datasource": { + "description": "The datasource", + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "description": "The datasource plugin type", + "type": "string", + "pattern": "^grafana-github-datasource$" + }, + "uid": { + "description": "Datasource UID", + "type": "string" + } + }, + "additionalProperties": false + }, + "hide": { + "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)", + "type": "boolean" + }, + "intervalMs": { + "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", + "type": "number" + }, + "maxDataPoints": { + "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", + "type": "integer" + }, + "options": { + "type": "object", + "required": [ + "owner", + "repository", + "timeField" + ], + "properties": { + "owner": { + "description": "Owner is the owner of the repository (ex: grafana)", + "type": "string" + }, + "repository": { + "description": "Repository is the name of the repository being queried (ex: grafana)", + "type": "string" + }, + "timeField": { + "description": "The field used to check if an entry is in the requested range.", + "type": "integer" + } + }, + "additionalProperties": false + }, + "owner": { + "type": "string" + }, + "queryType": { + "type": "string", + "pattern": "^Workflows$" + }, + "refId": { + "description": "RefID is the unique identifier of the query, set by the frontend call.", + "type": "string" + }, + "repository": { + "type": "string" + }, + "resultAssertions": { + "description": "Optionally define expected query result behavior", + "type": "object", + "required": [ + "typeVersion" + ], + "properties": { + "maxFrames": { + "description": "Maximum frame count", + "type": "integer" + }, + "type": { + "description": "Type asserts that the frame matches a known type structure.\n\n\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\"` ", + "type": "string", + "enum": [ + "", + "timeseries-wide", + "timeseries-long", + "timeseries-many", + "timeseries-multi", + "directory-listing", + "table", + "numeric-wide", + "numeric-multi", + "numeric-long", + "log-lines" + ], + "x-enum-description": {} + }, + "typeVersion": { + "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/.", + "type": "array", + "maxItems": 2, + "minItems": 2, + "items": { + "type": "integer" + } + } + }, + "additionalProperties": false + }, + "timeRange": { + "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", + "type": "object", + "required": [ + "from", + "to" + ], + "properties": { + "from": { + "description": "From is the start time of the query.", + "type": "string", + "default": "now-6h", + "examples": [ + "now-1h" + ] + }, + "to": { + "description": "To is the end time of the query.", + "type": "string", + "default": "now", + "examples": [ + "now" + ] + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false, + "$schema": "https://json-schema.org/draft-04/schema" + }, + { + "description": "WorkflowUsageQuery is used when querying a workflow usage", + "type": "object", + "required": [ + "repository", + "owner", + "options", + "queryType", + "refId" + ], + "properties": { + "datasource": { + "description": "The datasource", + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "description": "The datasource plugin type", + "type": "string", + "pattern": "^grafana-github-datasource$" + }, + "uid": { + "description": "Datasource UID", + "type": "string" + } + }, + "additionalProperties": false + }, + "hide": { + "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)", + "type": "boolean" + }, + "intervalMs": { + "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", + "type": "number" + }, + "maxDataPoints": { + "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", + "type": "integer" + }, + "options": { + "type": "object", + "required": [ + "owner", + "repository", + "workflow" + ], + "properties": { + "owner": { + "description": "Owner is the owner of the repository (ex: grafana)", + "type": "string" + }, + "repository": { + "description": "Repository is the name of the repository being queried (ex: grafana)", + "type": "string" + }, + "workflow": { + "description": "Workflow is the id or the workflow file name.", + "type": "string" + } + }, + "additionalProperties": false + }, + "owner": { + "type": "string" + }, + "queryType": { + "type": "string", + "pattern": "^Workflow_Usage$" + }, + "refId": { + "description": "RefID is the unique identifier of the query, set by the frontend call.", + "type": "string" + }, + "repository": { + "type": "string" + }, + "resultAssertions": { + "description": "Optionally define expected query result behavior", + "type": "object", + "required": [ + "typeVersion" + ], + "properties": { + "maxFrames": { + "description": "Maximum frame count", + "type": "integer" + }, + "type": { + "description": "Type asserts that the frame matches a known type structure.\n\n\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\"` ", + "type": "string", + "enum": [ + "", + "timeseries-wide", + "timeseries-long", + "timeseries-many", + "timeseries-multi", + "directory-listing", + "table", + "numeric-wide", + "numeric-multi", + "numeric-long", + "log-lines" + ], + "x-enum-description": {} + }, + "typeVersion": { + "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/.", + "type": "array", + "maxItems": 2, + "minItems": 2, + "items": { + "type": "integer" + } + } + }, + "additionalProperties": false + }, + "timeRange": { + "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", + "type": "object", + "required": [ + "from", + "to" + ], + "properties": { + "from": { + "description": "From is the start time of the query.", + "type": "string", + "default": "now-6h", + "examples": [ + "now-1h" + ] + }, + "to": { + "description": "To is the end time of the query.", + "type": "string", + "default": "now", + "examples": [ + "now" + ] + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false, + "$schema": "https://json-schema.org/draft-04/schema" + } + ], + "$schema": "https://json-schema.org/draft-04/schema#" + } + }, + "to": { + "description": "To end time in epoch timestamps in milliseconds or relative using Grafana time units.", + "type": "string" + } + }, + "additionalProperties": false, + "$schema": "https://json-schema.org/draft-04/schema#" +} \ No newline at end of file diff --git a/src/static/schema/query.types.json b/src/static/schema/query.types.json new file mode 100644 index 00000000..e32e21c4 --- /dev/null +++ b/src/static/schema/query.types.json @@ -0,0 +1,978 @@ +{ + "kind": "QueryTypeDefinitionList", + "apiVersion": "query.grafana.app/v0alpha1", + "metadata": { + "resourceVersion": "1709529769877" + }, + "items": [ + { + "metadata": { + "name": "Pull_Requests", + "resourceVersion": "1709529769877", + "creationTimestamp": "2024-03-04T05:22:49Z" + }, + "spec": { + "discriminators": [ + { + "field": "queryType", + "value": "Pull_Requests" + } + ], + "schema": { + "$schema": "https://json-schema.org/draft-04/schema", + "additionalProperties": false, + "description": "PullRequestsQuery is used when querying for GitHub Pull Requests", + "properties": { + "options": { + "additionalProperties": false, + "properties": { + "owner": { + "description": "Owner is the owner of the repository (ex: grafana)", + "type": "string" + }, + "query": { + "type": "string" + }, + "repository": { + "description": "Repository is the name of the repository being queried (ex: grafana)", + "type": "string" + }, + "timeField": { + "description": "TimeField defines what time field to filter by", + "type": "integer" + } + }, + "required": [ + "repository", + "owner", + "timeField" + ], + "type": "object" + }, + "owner": { + "type": "string" + }, + "repository": { + "type": "string" + } + }, + "required": [ + "repository", + "owner", + "options" + ], + "type": "object" + }, + "examples": [ + { + "name": "Simple", + "saveModel": { + "options": { + "owner": "", + "repository": "", + "timeField": 0 + }, + "owner": "grafana", + "repository": "github-datasource" + } + } + ] + } + }, + { + "metadata": { + "name": "Commits", + "resourceVersion": "1709529769877", + "creationTimestamp": "2024-03-04T05:22:49Z" + }, + "spec": { + "discriminators": [ + { + "field": "queryType", + "value": "Commits" + } + ], + "schema": { + "$schema": "https://json-schema.org/draft-04/schema", + "additionalProperties": false, + "description": "CommitsQuery is used when querying for GitHub commits", + "properties": { + "options": { + "additionalProperties": false, + "properties": { + "gitRef": { + "type": "string" + }, + "owner": { + "type": "string" + }, + "repository": { + "type": "string" + } + }, + "required": [ + "repository", + "owner", + "gitRef" + ], + "type": "object" + }, + "owner": { + "type": "string" + }, + "repository": { + "type": "string" + } + }, + "required": [ + "repository", + "owner", + "options" + ], + "type": "object" + }, + "examples": [ + { + "name": "CommitsQuery", + "saveModel": { + "options": { + "gitRef": "", + "owner": "", + "repository": "" + }, + "owner": "grafana", + "repository": "github-datasource" + } + } + ] + } + }, + { + "metadata": { + "name": "Tags", + "resourceVersion": "1709529769877", + "creationTimestamp": "2024-03-04T05:22:49Z" + }, + "spec": { + "discriminators": [ + { + "field": "queryType", + "value": "Tags" + } + ], + "schema": { + "$schema": "https://json-schema.org/draft-04/schema", + "additionalProperties": false, + "description": "TagsQuery is used when querying for GitHub tags", + "properties": { + "options": { + "additionalProperties": false, + "properties": { + "owner": { + "description": "Owner is the owner of the repository (ex: grafana)", + "type": "string" + }, + "repository": { + "description": "Repository is the name of the repository being queried (ex: grafana)", + "type": "string" + } + }, + "required": [ + "repository", + "owner" + ], + "type": "object" + }, + "owner": { + "type": "string" + }, + "repository": { + "type": "string" + } + }, + "required": [ + "repository", + "owner", + "options" + ], + "type": "object" + }, + "examples": [ + { + "name": "TagsQuery", + "saveModel": { + "options": { + "owner": "", + "repository": "" + }, + "owner": "grafana", + "repository": "github-datasource" + } + } + ] + } + }, + { + "metadata": { + "name": "Labels", + "resourceVersion": "1709529769877", + "creationTimestamp": "2024-03-04T05:22:49Z" + }, + "spec": { + "discriminators": [ + { + "field": "queryType", + "value": "Labels" + } + ], + "schema": { + "$schema": "https://json-schema.org/draft-04/schema", + "additionalProperties": false, + "description": "LabelsQuery is used when querying for GitHub issue labels", + "properties": { + "options": { + "additionalProperties": false, + "properties": { + "owner": { + "description": "Owner is the owner of the repository (ex: grafana)", + "type": "string" + }, + "query": { + "description": "Query searches labels by name and description", + "type": "string" + }, + "repository": { + "description": "Repository is the name of the repository being queried (ex: grafana)", + "type": "string" + } + }, + "required": [ + "repository", + "owner", + "query" + ], + "type": "object" + }, + "owner": { + "type": "string" + }, + "repository": { + "type": "string" + } + }, + "required": [ + "repository", + "owner", + "options" + ], + "type": "object" + }, + "examples": [ + { + "name": "LabelsQuery", + "saveModel": { + "options": { + "owner": "", + "query": "", + "repository": "" + }, + "owner": "grafana", + "repository": "github-datasource" + } + } + ] + } + }, + { + "metadata": { + "name": "Releases", + "resourceVersion": "1709529769877", + "creationTimestamp": "2024-03-04T05:22:49Z" + }, + "spec": { + "discriminators": [ + { + "field": "queryType", + "value": "Releases" + } + ], + "schema": { + "$schema": "https://json-schema.org/draft-04/schema", + "additionalProperties": false, + "description": "ReleasesQuery is used when querying for GitHub issue labels", + "properties": { + "options": { + "additionalProperties": false, + "properties": { + "owner": { + "description": "Owner is the owner of the repository (ex: grafana)", + "type": "string" + }, + "repository": { + "description": "Repository is the name of the repository being queried (ex: grafana)", + "type": "string" + } + }, + "required": [ + "repository", + "owner" + ], + "type": "object" + }, + "owner": { + "type": "string" + }, + "repository": { + "type": "string" + } + }, + "required": [ + "repository", + "owner", + "options" + ], + "type": "object" + }, + "examples": [ + { + "name": "ReleasesQuery", + "saveModel": { + "options": { + "owner": "", + "repository": "" + }, + "owner": "grafana", + "repository": "github-datasource" + } + } + ] + } + }, + { + "metadata": { + "name": "Contributors", + "resourceVersion": "1709529769877", + "creationTimestamp": "2024-03-04T05:22:49Z" + }, + "spec": { + "discriminators": [ + { + "field": "queryType", + "value": "Contributors" + } + ], + "schema": { + "$schema": "https://json-schema.org/draft-04/schema", + "additionalProperties": false, + "description": "ContributorsQuery is used when querying for GitHub contributors", + "properties": { + "options": { + "additionalProperties": false, + "properties": { + "owner": { + "description": "Owner is the owner of the repository (ex: grafana)", + "type": "string" + }, + "query": { + "type": "string" + }, + "repository": { + "description": "Repository is the name of the repository being queried (ex: grafana)", + "type": "string" + } + }, + "required": [ + "repository", + "owner" + ], + "type": "object" + }, + "owner": { + "type": "string" + }, + "repository": { + "type": "string" + } + }, + "required": [ + "repository", + "owner", + "options" + ], + "type": "object" + }, + "examples": [ + { + "name": "ContributorsQuery", + "saveModel": { + "options": { + "owner": "yesoreyeram", + "repository": "" + }, + "owner": "grafana", + "repository": "github-datasource" + } + } + ] + } + }, + { + "metadata": { + "name": "Repositories", + "resourceVersion": "1709529769877", + "creationTimestamp": "2024-03-04T05:22:49Z" + }, + "spec": { + "discriminators": [ + { + "field": "queryType", + "value": "Repositories" + } + ], + "schema": { + "$schema": "https://json-schema.org/draft-04/schema", + "additionalProperties": false, + "description": "RepositoriesQuery is used when querying for GitHub repositories", + "properties": { + "owner": { + "type": "string" + }, + "repository": { + "type": "string" + } + }, + "required": [ + "repository", + "owner" + ], + "type": "object" + }, + "examples": [ + { + "name": "RepositoriesQuery", + "saveModel": { + "owner": "yesoreyeram", + "repository": "" + } + } + ] + } + }, + { + "metadata": { + "name": "Issues", + "resourceVersion": "1709529769877", + "creationTimestamp": "2024-03-04T05:22:49Z" + }, + "spec": { + "discriminators": [ + { + "field": "queryType", + "value": "Issues" + } + ], + "schema": { + "$schema": "https://json-schema.org/draft-04/schema", + "additionalProperties": false, + "description": "IssuesQuery is used when querying for GitHub issues", + "properties": { + "options": { + "additionalProperties": false, + "properties": { + "filters": { + "additionalProperties": false, + "properties": { + "assignee": { + "type": "string" + }, + "createdBy": { + "type": "string" + }, + "labels": { + "items": { + "type": "string" + }, + "type": "array" + }, + "mentioned": { + "type": "string" + }, + "milestone": { + "type": "string" + }, + "milestoneNumber": { + "type": "string" + }, + "since": { + "additionalProperties": false, + "type": "object" + }, + "states": { + "items": { + "type": "string" + }, + "type": "array" + }, + "viewerSubscribed": { + "type": "boolean" + } + }, + "type": "object" + }, + "owner": { + "type": "string" + }, + "query": { + "type": "string" + }, + "repository": { + "type": "string" + }, + "timeField": { + "type": "integer" + } + }, + "required": [ + "repository", + "owner", + "filters", + "timeField" + ], + "type": "object" + }, + "owner": { + "type": "string" + }, + "repository": { + "type": "string" + } + }, + "required": [ + "repository", + "owner", + "options" + ], + "type": "object" + }, + "examples": [ + { + "name": "IssuesQuery", + "saveModel": { + "options": { + "filters": { + "states": [ + "OPEN" + ] + }, + "owner": "", + "repository": "", + "timeField": 0 + }, + "owner": "grafana", + "repository": "github-datasource" + } + } + ] + } + }, + { + "metadata": { + "name": "Packages", + "resourceVersion": "1709529769877", + "creationTimestamp": "2024-03-04T05:22:49Z" + }, + "spec": { + "discriminators": [ + { + "field": "queryType", + "value": "Packages" + } + ], + "schema": { + "$schema": "https://json-schema.org/draft-04/schema", + "additionalProperties": false, + "description": "PackagesQuery is used when querying for GitHub packages, including NPM, Maven, PyPi, Rubygems, and Docker", + "properties": { + "options": { + "additionalProperties": false, + "properties": { + "names": { + "type": "string" + }, + "owner": { + "type": "string" + }, + "packageType": { + "type": "string" + }, + "repository": { + "type": "string" + } + }, + "required": [ + "repository", + "owner", + "names", + "packageType" + ], + "type": "object" + }, + "owner": { + "type": "string" + }, + "repository": { + "type": "string" + } + }, + "required": [ + "repository", + "owner", + "options" + ], + "type": "object" + }, + "examples": [ + { + "name": "PackagesQuery", + "saveModel": { + "options": { + "names": "", + "owner": "", + "packageType": "DOCKER", + "repository": "" + }, + "owner": "grafana", + "repository": "github-datasource" + } + } + ] + } + }, + { + "metadata": { + "name": "Milestones", + "resourceVersion": "1709529769877", + "creationTimestamp": "2024-03-04T05:22:49Z" + }, + "spec": { + "discriminators": [ + { + "field": "queryType", + "value": "Milestones" + } + ], + "schema": { + "$schema": "https://json-schema.org/draft-04/schema", + "additionalProperties": false, + "description": "MilestonesQuery is used when querying for GitHub milestones", + "properties": { + "options": { + "additionalProperties": false, + "properties": { + "owner": { + "description": "Owner is the owner of the repository (ex: grafana)", + "type": "string" + }, + "query": { + "description": "Query searches milestones by name and description", + "type": "string" + }, + "repository": { + "description": "Repository is the name of the repository being queried (ex: grafana)", + "type": "string" + } + }, + "required": [ + "repository", + "owner", + "query" + ], + "type": "object" + }, + "owner": { + "type": "string" + }, + "repository": { + "type": "string" + } + }, + "required": [ + "repository", + "owner", + "options" + ], + "type": "object" + }, + "examples": [ + { + "name": "MilestonesQuery", + "saveModel": { + "options": { + "owner": "", + "query": "", + "repository": "" + }, + "owner": "grafana", + "repository": "github-datasource" + } + } + ] + } + }, + { + "metadata": { + "name": "Vulnerabilities", + "resourceVersion": "1709529769877", + "creationTimestamp": "2024-03-04T05:22:49Z" + }, + "spec": { + "discriminators": [ + { + "field": "queryType", + "value": "Vulnerabilities" + } + ], + "schema": { + "$schema": "https://json-schema.org/draft-04/schema", + "additionalProperties": false, + "description": "VulnerabilityQuery is used when querying for GitHub Repository Vulnerabilities", + "properties": { + "options": { + "additionalProperties": false, + "properties": { + "owner": { + "description": "Owner is the owner of the repository (ex: grafana)", + "type": "string" + }, + "query": { + "description": "Query searches x by name and description", + "type": "string" + }, + "repository": { + "description": "Repository is the name of the repository being queried (ex: grafana)", + "type": "string" + } + }, + "required": [ + "repository", + "owner", + "query" + ], + "type": "object" + }, + "owner": { + "type": "string" + }, + "repository": { + "type": "string" + } + }, + "required": [ + "repository", + "owner", + "options" + ], + "type": "object" + }, + "examples": [ + { + "name": "VulnerabilityQuery", + "saveModel": { + "options": { + "owner": "", + "query": "", + "repository": "" + }, + "owner": "grafana", + "repository": "github-datasource" + } + } + ] + } + }, + { + "metadata": { + "name": "Stargazers", + "resourceVersion": "1709529769877", + "creationTimestamp": "2024-03-04T05:22:49Z" + }, + "spec": { + "discriminators": [ + { + "field": "queryType", + "value": "Stargazers" + } + ], + "schema": { + "$schema": "https://json-schema.org/draft-04/schema", + "additionalProperties": false, + "description": "StargazersQuery is used when querying stargazers for a repository", + "properties": { + "owner": { + "type": "string" + }, + "repository": { + "type": "string" + } + }, + "required": [ + "repository", + "owner" + ], + "type": "object" + }, + "examples": [ + { + "name": "StargazersQuery", + "saveModel": { + "owner": "grafana", + "repository": "github-datasource" + } + } + ] + } + }, + { + "metadata": { + "name": "Workflows", + "resourceVersion": "1709529769877", + "creationTimestamp": "2024-03-04T05:22:49Z" + }, + "spec": { + "discriminators": [ + { + "field": "queryType", + "value": "Workflows" + } + ], + "schema": { + "$schema": "https://json-schema.org/draft-04/schema", + "additionalProperties": false, + "description": "WorkflowsQuery is used when querying workflows for an organization", + "properties": { + "options": { + "additionalProperties": false, + "properties": { + "owner": { + "description": "Owner is the owner of the repository (ex: grafana)", + "type": "string" + }, + "repository": { + "description": "Repository is the name of the repository being queried (ex: grafana)", + "type": "string" + }, + "timeField": { + "description": "The field used to check if an entry is in the requested range.", + "type": "integer" + } + }, + "required": [ + "owner", + "repository", + "timeField" + ], + "type": "object" + }, + "owner": { + "type": "string" + }, + "repository": { + "type": "string" + } + }, + "required": [ + "repository", + "owner", + "options" + ], + "type": "object" + }, + "examples": [ + { + "name": "WorkflowsQuery", + "saveModel": { + "options": { + "owner": "", + "repository": "", + "timeField": 0 + }, + "owner": "grafana", + "repository": "github-datasource" + } + } + ] + } + }, + { + "metadata": { + "name": "Workflow_Usage", + "resourceVersion": "1709529769877", + "creationTimestamp": "2024-03-04T05:22:49Z" + }, + "spec": { + "discriminators": [ + { + "field": "queryType", + "value": "Workflow_Usage" + } + ], + "schema": { + "$schema": "https://json-schema.org/draft-04/schema", + "additionalProperties": false, + "description": "WorkflowUsageQuery is used when querying a workflow usage", + "properties": { + "options": { + "additionalProperties": false, + "properties": { + "owner": { + "description": "Owner is the owner of the repository (ex: grafana)", + "type": "string" + }, + "repository": { + "description": "Repository is the name of the repository being queried (ex: grafana)", + "type": "string" + }, + "workflow": { + "description": "Workflow is the id or the workflow file name.", + "type": "string" + } + }, + "required": [ + "owner", + "repository", + "workflow" + ], + "type": "object" + }, + "owner": { + "type": "string" + }, + "repository": { + "type": "string" + } + }, + "required": [ + "repository", + "owner", + "options" + ], + "type": "object" + }, + "examples": [ + { + "name": "WorkflowUsageQuery", + "saveModel": { + "options": { + "owner": "", + "repository": "", + "workflow": "" + }, + "owner": "grafana", + "repository": "github-datasource" + } + } + ] + } + } + ] +} \ No newline at end of file