@grafana/openapi 13.2.4 → 13.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/api/openapi3.json +358 -247
- package/dist/apis/collections.grafana.app-v1alpha1.json +3 -14
- package/dist/apis/correlations.grafana.app-v0alpha1.json +411 -0
- package/dist/apis/dashboard.grafana.app-v0alpha1.json +865 -105
- package/dist/apis/dashboard.grafana.app-v1beta1.json +733 -6
- package/dist/apis/dashboard.grafana.app-v2.json +821 -194
- package/dist/apis/dashboard.grafana.app-v2alpha1.json +803 -208
- package/dist/apis/dashboard.grafana.app-v2beta1.json +985 -374
- package/dist/apis/folder.grafana.app-v1.json +644 -20
- package/dist/apis/folder.grafana.app-v1beta1.json +644 -20
- package/dist/apis/grafana-testdata-datasource.datasource.grafana.app-v0alpha1.json +3 -21
- package/dist/apis/historian.alerting.grafana.app-v0alpha1.json +411 -0
- package/dist/apis/iam.grafana.app-v0alpha1.json +2397 -748
- package/dist/apis/logsdrilldown.grafana.app-v1beta1.json +448 -0
- package/dist/apis/notifications.alerting.grafana.app-v0alpha1.json +596 -0
- package/dist/apis/notifications.alerting.grafana.app-v1beta1.json +596 -0
- package/dist/apis/playlist.grafana.app-v0alpha1.json +415 -0
- package/dist/apis/playlist.grafana.app-v1.json +415 -0
- package/dist/apis/preferences.grafana.app-v1.json +3 -9
- package/dist/apis/preferences.grafana.app-v1alpha1.json +3 -9
- package/dist/apis/provisioning.grafana.app-v0alpha1.json +636 -151
- package/dist/apis/provisioning.grafana.app-v1beta1.json +621 -100
- package/dist/apis/query.grafana.app-v0alpha1.json +14 -11
- package/dist/apis/quotas.grafana.app-v0alpha1.json +1 -2
- package/dist/apis/rules.alerting.grafana.app-v0alpha1.json +3027 -767
- package/dist/apis/rules.alerting.grafana.app-v1beta1.json +4541 -0
- package/dist/apis/search.grafana.app-v0alpha1.json +693 -0
- package/dist/apis/shorturl.grafana.app-v1beta1.json +411 -0
- package/package.json +3 -3
|
@@ -0,0 +1,693 @@
|
|
|
1
|
+
{
|
|
2
|
+
"openapi": "3.0.0",
|
|
3
|
+
"info": {
|
|
4
|
+
"title": "search.grafana.app/v0alpha1"
|
|
5
|
+
},
|
|
6
|
+
"paths": {
|
|
7
|
+
"/global/search": {
|
|
8
|
+
"post": {
|
|
9
|
+
"tags": ["Search"],
|
|
10
|
+
"description": "Search resources of several types in a namespace: `dashboard.grafana.app/dashboards`, `folder.grafana.app/folders`, `dashboard.grafana.app/notebooks`, `playlist.grafana.app/playlists`. Each result names its own group, resource and kind, and is authorized on its own.\n\nOnly the fields every resource has can be used, plus:\n\n- `groupResource` (`{group}/{resource}`): filter and facet, to narrow the search to some types or count results per type.\n- `created` and `updated`: also filter (including range) and sort, so results of several types can be ordered by time.\n- `folderTree`: filter with `In` only. Matches what is in the named folders or in any folder below them, not the named folders themselves. `general` names the root folder and matches everything; an empty value is rejected.\n\nResults are eventually consistent: just after a change, a search can still return what was there before, and just after a folder moves, a `folderTree` search can still find what was below it in its old place.",
|
|
11
|
+
"operationId": "listGlobalSearchV0alpha1",
|
|
12
|
+
"parameters": [],
|
|
13
|
+
"requestBody": {
|
|
14
|
+
"description": "A SearchQuery describing what to match, sort and return.",
|
|
15
|
+
"content": {
|
|
16
|
+
"application/json": {
|
|
17
|
+
"schema": {
|
|
18
|
+
"$ref": "#/components/schemas/SearchQuery"
|
|
19
|
+
},
|
|
20
|
+
"example": {
|
|
21
|
+
"kind": "SearchQuery",
|
|
22
|
+
"apiVersion": "search.grafana.app/v0alpha1",
|
|
23
|
+
"where": {
|
|
24
|
+
"and": [
|
|
25
|
+
{
|
|
26
|
+
"filter": {
|
|
27
|
+
"field": "folderTree",
|
|
28
|
+
"operator": "In",
|
|
29
|
+
"values": ["team-a"]
|
|
30
|
+
}
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"filter": {
|
|
34
|
+
"field": "groupResource",
|
|
35
|
+
"operator": "In",
|
|
36
|
+
"values": ["dashboard.grafana.app/dashboards"]
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
]
|
|
40
|
+
},
|
|
41
|
+
"sort": [
|
|
42
|
+
{
|
|
43
|
+
"field": "updated",
|
|
44
|
+
"direction": "desc"
|
|
45
|
+
}
|
|
46
|
+
],
|
|
47
|
+
"facetLimit": 0,
|
|
48
|
+
"limit": 10
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
},
|
|
52
|
+
"required": true
|
|
53
|
+
},
|
|
54
|
+
"responses": {
|
|
55
|
+
"200": {
|
|
56
|
+
"description": "A GlobalSearchResults envelope.",
|
|
57
|
+
"content": {
|
|
58
|
+
"application/json": {
|
|
59
|
+
"schema": {
|
|
60
|
+
"$ref": "#/components/schemas/GlobalSearchResults"
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
},
|
|
68
|
+
"/global/search/hybrid": {
|
|
69
|
+
"post": {
|
|
70
|
+
"tags": ["Search"],
|
|
71
|
+
"description": "Hybrid search across the requested resource types in one namespace. The search backend requires manifest hybrid opt-in for internal resources; externally pushed collections use existing enrollment and authorization. Results are reranked together. Limit applies to the combined results; failure searching any resource fails the request. No pagination, totals, sorting or facets.",
|
|
72
|
+
"operationId": "listGlobalHybridSearchV0alpha1",
|
|
73
|
+
"parameters": [],
|
|
74
|
+
"requestBody": {
|
|
75
|
+
"description": "A HybridSearchQuery with a nonempty resources list.",
|
|
76
|
+
"content": {
|
|
77
|
+
"application/json": {
|
|
78
|
+
"schema": {
|
|
79
|
+
"$ref": "#/components/schemas/HybridSearchQuery"
|
|
80
|
+
},
|
|
81
|
+
"example": {
|
|
82
|
+
"kind": "HybridSearchQuery",
|
|
83
|
+
"apiVersion": "search.grafana.app/v0alpha1",
|
|
84
|
+
"resources": [
|
|
85
|
+
{
|
|
86
|
+
"group": "dashboard.grafana.app",
|
|
87
|
+
"resource": "dashboards"
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
"group": "folder.grafana.app",
|
|
91
|
+
"resource": "folders"
|
|
92
|
+
}
|
|
93
|
+
],
|
|
94
|
+
"query": "production",
|
|
95
|
+
"limit": 10,
|
|
96
|
+
"skipRerank": false
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
},
|
|
100
|
+
"required": true
|
|
101
|
+
},
|
|
102
|
+
"responses": {
|
|
103
|
+
"200": {
|
|
104
|
+
"description": "A HybridSearchResults envelope.",
|
|
105
|
+
"content": {
|
|
106
|
+
"application/json": {
|
|
107
|
+
"schema": {
|
|
108
|
+
"$ref": "#/components/schemas/HybridSearchResults"
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
},
|
|
117
|
+
"components": {
|
|
118
|
+
"schemas": {
|
|
119
|
+
"Unstructured": {
|
|
120
|
+
"type": "object",
|
|
121
|
+
"additionalProperties": true,
|
|
122
|
+
"x-kubernetes-preserve-unknown-fields": true
|
|
123
|
+
},
|
|
124
|
+
"ExistsPredicate": {
|
|
125
|
+
"description": "ExistsPredicate is a future field-existence predicate. Modelled for schema stability; always rejected in v1.",
|
|
126
|
+
"type": "object",
|
|
127
|
+
"required": ["field"],
|
|
128
|
+
"properties": {
|
|
129
|
+
"field": {
|
|
130
|
+
"type": "string",
|
|
131
|
+
"default": ""
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
},
|
|
135
|
+
"FacetTerm": {
|
|
136
|
+
"description": "FacetTerm is a single facet term and its count.",
|
|
137
|
+
"type": "object",
|
|
138
|
+
"required": ["value", "count"],
|
|
139
|
+
"properties": {
|
|
140
|
+
"count": {
|
|
141
|
+
"type": "integer",
|
|
142
|
+
"format": "int64",
|
|
143
|
+
"default": 0
|
|
144
|
+
},
|
|
145
|
+
"value": {
|
|
146
|
+
"type": "string",
|
|
147
|
+
"default": ""
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
},
|
|
151
|
+
"FilterPredicate": {
|
|
152
|
+
"description": "FilterPredicate is an exact / set-based predicate against a single field. Values are strings whatever the field's declared type, so a boolean field takes \"true\" or \"false\" and a numeric field takes the number written out.\n\nNumbers are held as float64, so only integers up to 2^53 are compared exactly. Past that, values a whole number apart share one representation, and a filter can both match a neighbour and miss the value asked for.",
|
|
153
|
+
"type": "object",
|
|
154
|
+
"required": ["field", "operator", "values"],
|
|
155
|
+
"properties": {
|
|
156
|
+
"field": {
|
|
157
|
+
"type": "string",
|
|
158
|
+
"default": ""
|
|
159
|
+
},
|
|
160
|
+
"operator": {
|
|
161
|
+
"description": "Operator is \"In\", \"NotIn\" or \"All\" in v1. \"In\" matches any of the values, \"NotIn\" excludes all of them, and \"All\" requires the field to hold every value, which only a field holding a list of values can do.",
|
|
162
|
+
"type": "string",
|
|
163
|
+
"default": ""
|
|
164
|
+
},
|
|
165
|
+
"values": {
|
|
166
|
+
"type": "array",
|
|
167
|
+
"items": {
|
|
168
|
+
"type": "string"
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
},
|
|
173
|
+
"GlobalResultsMetadata": {
|
|
174
|
+
"description": "GlobalResultsMetadata carries the pagination token, the total hit count, and the types the search left out.",
|
|
175
|
+
"type": "object",
|
|
176
|
+
"required": ["totalHits", "totalHitsRelation"],
|
|
177
|
+
"properties": {
|
|
178
|
+
"continue": {
|
|
179
|
+
"type": "string"
|
|
180
|
+
},
|
|
181
|
+
"skippedTypes": {
|
|
182
|
+
"description": "SkippedTypes lists the types, as {group}/{resource}, that the search left out, so the results are incomplete. A type is left out when the calling service may not search it on the user's behalf, or when this deployment does not check its results against the user. Both are deployment problems.",
|
|
183
|
+
"type": "array",
|
|
184
|
+
"items": {
|
|
185
|
+
"type": "string"
|
|
186
|
+
}
|
|
187
|
+
},
|
|
188
|
+
"totalHits": {
|
|
189
|
+
"description": "TotalHits counts the resources matching the query. Always read it together with TotalHitsRelation. When the relation is \"unknown\", this is a zero placeholder that must not be interpreted as a count.",
|
|
190
|
+
"type": "integer",
|
|
191
|
+
"format": "int64",
|
|
192
|
+
"default": 0
|
|
193
|
+
},
|
|
194
|
+
"totalHitsRelation": {
|
|
195
|
+
"description": "TotalHitsRelation is \"eq\" when TotalHits is exact and \"lte\" when it is an upper bound. \"unknown\" means no count is available and TotalHits must be ignored.",
|
|
196
|
+
"type": "string",
|
|
197
|
+
"default": ""
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
},
|
|
201
|
+
"GlobalSearchResults": {
|
|
202
|
+
"description": "GlobalSearchResults is the response body for POST .../namespaces/{namespace}/global/search. Each item names its own resource type.",
|
|
203
|
+
"type": "object",
|
|
204
|
+
"required": ["metadata", "items"],
|
|
205
|
+
"properties": {
|
|
206
|
+
"apiVersion": {
|
|
207
|
+
"description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources",
|
|
208
|
+
"type": "string"
|
|
209
|
+
},
|
|
210
|
+
"facets": {
|
|
211
|
+
"description": "Facets holds term counts per requested facet field. Counts are computed over a bounded sample window, so they are best-effort/approximate.",
|
|
212
|
+
"type": "object",
|
|
213
|
+
"additionalProperties": {
|
|
214
|
+
"type": "array",
|
|
215
|
+
"items": {
|
|
216
|
+
"$ref": "#/components/schemas/FacetTerm"
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
},
|
|
220
|
+
"items": {
|
|
221
|
+
"type": "array",
|
|
222
|
+
"items": {
|
|
223
|
+
"$ref": "#/components/schemas/ResultItem"
|
|
224
|
+
}
|
|
225
|
+
},
|
|
226
|
+
"kind": {
|
|
227
|
+
"description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds",
|
|
228
|
+
"type": "string"
|
|
229
|
+
},
|
|
230
|
+
"metadata": {
|
|
231
|
+
"default": {},
|
|
232
|
+
"$ref": "#/components/schemas/GlobalResultsMetadata"
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
},
|
|
236
|
+
"HybridSearchChunk": {
|
|
237
|
+
"description": "HybridSearchChunk is matching text from an embedded resource or subresource.",
|
|
238
|
+
"type": "object",
|
|
239
|
+
"required": ["subresource", "content"],
|
|
240
|
+
"properties": {
|
|
241
|
+
"content": {
|
|
242
|
+
"type": "string",
|
|
243
|
+
"default": ""
|
|
244
|
+
},
|
|
245
|
+
"subresource": {
|
|
246
|
+
"description": "Subresource identifies a chunk, for example panel/5. Empty means the whole resource, or a synthesized chunk for a lexical-only hit.",
|
|
247
|
+
"type": "string",
|
|
248
|
+
"default": ""
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
},
|
|
252
|
+
"HybridSearchFilter": {
|
|
253
|
+
"description": "HybridSearchFilter matches any of Values against Field (IN semantics). Unlike lexical search filters, no other operators are supported.",
|
|
254
|
+
"type": "object",
|
|
255
|
+
"required": ["field", "values"],
|
|
256
|
+
"properties": {
|
|
257
|
+
"field": {
|
|
258
|
+
"description": "Field is uid or folder for all resources. A single dashboard resource type additionally supports datasource_uid and language (promql, logql, traceql or sql). Searches across multiple types support only uid and folder.",
|
|
259
|
+
"type": "string",
|
|
260
|
+
"default": ""
|
|
261
|
+
},
|
|
262
|
+
"values": {
|
|
263
|
+
"description": "Values must contain at least one value. Values containing '*' are rejected. An empty folder value matches resources in the root folder.",
|
|
264
|
+
"type": "array",
|
|
265
|
+
"items": {
|
|
266
|
+
"type": "string"
|
|
267
|
+
},
|
|
268
|
+
"x-kubernetes-list-type": "atomic"
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
},
|
|
272
|
+
"HybridSearchManagedBy": {
|
|
273
|
+
"description": "HybridSearchManagedBy identifies the manager of a returned resource.",
|
|
274
|
+
"type": "object",
|
|
275
|
+
"required": ["kind", "id"],
|
|
276
|
+
"properties": {
|
|
277
|
+
"id": {
|
|
278
|
+
"type": "string",
|
|
279
|
+
"default": ""
|
|
280
|
+
},
|
|
281
|
+
"kind": {
|
|
282
|
+
"type": "string",
|
|
283
|
+
"default": ""
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
},
|
|
287
|
+
"HybridSearchQuery": {
|
|
288
|
+
"description": "HybridSearchQuery is the request body for POST .../{resource}/search/hybrid and POST .../global/search/hybrid. It returns the top matching resources, with no pagination, sorting or facets.",
|
|
289
|
+
"type": "object",
|
|
290
|
+
"required": ["query"],
|
|
291
|
+
"properties": {
|
|
292
|
+
"apiVersion": {
|
|
293
|
+
"description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources",
|
|
294
|
+
"type": "string"
|
|
295
|
+
},
|
|
296
|
+
"filters": {
|
|
297
|
+
"description": "Filters are ANDed together. Each field may appear once, with at most 1000 values across all filters. Embedding fields supply text only and do not make additional fields available for filtering.",
|
|
298
|
+
"type": "array",
|
|
299
|
+
"items": {
|
|
300
|
+
"$ref": "#/components/schemas/HybridSearchFilter"
|
|
301
|
+
},
|
|
302
|
+
"x-kubernetes-list-type": "atomic"
|
|
303
|
+
},
|
|
304
|
+
"kind": {
|
|
305
|
+
"description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds",
|
|
306
|
+
"type": "string"
|
|
307
|
+
},
|
|
308
|
+
"limit": {
|
|
309
|
+
"description": "Limit is the maximum number of results across all requested resource types. Zero uses the default of 50, values above 200 are clamped, and negative values are rejected.",
|
|
310
|
+
"type": "integer",
|
|
311
|
+
"format": "int64"
|
|
312
|
+
},
|
|
313
|
+
"minRelevance": {
|
|
314
|
+
"description": "MinRelevance is lowest, low, medium, high or highest. Empty keeps every result. Filtering is best-effort: no results are dropped when reranking is unavailable or fails. It cannot be combined with SkipRerank.",
|
|
315
|
+
"type": "string"
|
|
316
|
+
},
|
|
317
|
+
"query": {
|
|
318
|
+
"description": "Query supplies the lexical query and, unless SemanticQuery is set, the text embedded for semantic search. Required, with a maximum of 1000 bytes.",
|
|
319
|
+
"type": "string",
|
|
320
|
+
"default": ""
|
|
321
|
+
},
|
|
322
|
+
"resources": {
|
|
323
|
+
"description": "Resources is required for global hybrid search and rejected by per-resource routes. It must be nonempty and contain unique group/resource pairs.",
|
|
324
|
+
"type": "array",
|
|
325
|
+
"items": {
|
|
326
|
+
"$ref": "#/components/schemas/HybridSearchResource"
|
|
327
|
+
},
|
|
328
|
+
"x-kubernetes-list-type": "atomic"
|
|
329
|
+
},
|
|
330
|
+
"semanticQuery": {
|
|
331
|
+
"description": "SemanticQuery supplies optional richer phrasing for semantic search. When provided, it must not be whitespace and must fit within 1000 bytes.",
|
|
332
|
+
"type": "string"
|
|
333
|
+
},
|
|
334
|
+
"skipRerank": {
|
|
335
|
+
"description": "SkipRerank skips reranking even when a reranker is configured. Multiple resource types are interleaved in request order, preserving each type's ranking.",
|
|
336
|
+
"type": "boolean"
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
},
|
|
340
|
+
"HybridSearchResource": {
|
|
341
|
+
"description": "HybridSearchResource identifies a resource type for global hybrid search.",
|
|
342
|
+
"type": "object",
|
|
343
|
+
"required": ["group", "resource"],
|
|
344
|
+
"properties": {
|
|
345
|
+
"group": {
|
|
346
|
+
"type": "string",
|
|
347
|
+
"default": ""
|
|
348
|
+
},
|
|
349
|
+
"resource": {
|
|
350
|
+
"type": "string",
|
|
351
|
+
"default": ""
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
},
|
|
355
|
+
"HybridSearchResultItem": {
|
|
356
|
+
"description": "HybridSearchResultItem is one matching resource, with its matching chunks.",
|
|
357
|
+
"type": "object",
|
|
358
|
+
"required": ["resource", "score", "title", "folder", "chunks"],
|
|
359
|
+
"properties": {
|
|
360
|
+
"chunks": {
|
|
361
|
+
"description": "Chunks contains matching text, best first. A lexical-only hit has a synthesized chunk containing the resource's title.",
|
|
362
|
+
"type": "array",
|
|
363
|
+
"items": {
|
|
364
|
+
"$ref": "#/components/schemas/HybridSearchChunk"
|
|
365
|
+
},
|
|
366
|
+
"x-kubernetes-list-type": "atomic"
|
|
367
|
+
},
|
|
368
|
+
"folder": {
|
|
369
|
+
"description": "Folder is the containing folder's UID. Empty and \"general\" denote the root folder.",
|
|
370
|
+
"type": "string",
|
|
371
|
+
"default": ""
|
|
372
|
+
},
|
|
373
|
+
"folderTitle": {
|
|
374
|
+
"description": "FolderTitle is best-effort display data and can be absent.",
|
|
375
|
+
"type": "string"
|
|
376
|
+
},
|
|
377
|
+
"managedBy": {
|
|
378
|
+
"description": "ManagedBy is absent for unmanaged resources or when lookup fails.",
|
|
379
|
+
"$ref": "#/components/schemas/HybridSearchManagedBy"
|
|
380
|
+
},
|
|
381
|
+
"resource": {
|
|
382
|
+
"default": {},
|
|
383
|
+
"$ref": "#/components/schemas/ResourceRef"
|
|
384
|
+
},
|
|
385
|
+
"score": {
|
|
386
|
+
"description": "Score is opaque: higher scores rank first, but scores are meaningful only for ordering within this response. Do not compare scores across queries or treat them as probabilities or distances.",
|
|
387
|
+
"type": "number",
|
|
388
|
+
"format": "double",
|
|
389
|
+
"default": 0
|
|
390
|
+
},
|
|
391
|
+
"tags": {
|
|
392
|
+
"description": "Tags from the lexical index. Omitted when unavailable.",
|
|
393
|
+
"type": "array",
|
|
394
|
+
"items": {
|
|
395
|
+
"type": "string"
|
|
396
|
+
},
|
|
397
|
+
"x-kubernetes-list-type": "atomic"
|
|
398
|
+
},
|
|
399
|
+
"title": {
|
|
400
|
+
"type": "string",
|
|
401
|
+
"default": ""
|
|
402
|
+
}
|
|
403
|
+
}
|
|
404
|
+
},
|
|
405
|
+
"HybridSearchResults": {
|
|
406
|
+
"description": "HybridSearchResults is the response body for per-resource and global hybrid search. Items are ordered by relevance. They are a bounded top-k result set, not an exhaustive list, so the response carries no total count or pagination token.",
|
|
407
|
+
"type": "object",
|
|
408
|
+
"required": ["items"],
|
|
409
|
+
"properties": {
|
|
410
|
+
"apiVersion": {
|
|
411
|
+
"description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources",
|
|
412
|
+
"type": "string"
|
|
413
|
+
},
|
|
414
|
+
"items": {
|
|
415
|
+
"type": "array",
|
|
416
|
+
"items": {
|
|
417
|
+
"$ref": "#/components/schemas/HybridSearchResultItem"
|
|
418
|
+
},
|
|
419
|
+
"x-kubernetes-list-type": "atomic"
|
|
420
|
+
},
|
|
421
|
+
"kind": {
|
|
422
|
+
"description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds",
|
|
423
|
+
"type": "string"
|
|
424
|
+
}
|
|
425
|
+
}
|
|
426
|
+
},
|
|
427
|
+
"RangePredicate": {
|
|
428
|
+
"description": "RangePredicate compares a numeric field against one or two bounds. At least one bound is required, gt cannot be combined with gte, and lt cannot be combined with lte. Boolean and string fields are rejected: only numbers have the order a range asks about. On an integer field a bound must be whole.\n\nBounds are held as float64, so only integers up to 2^53 are compared exactly. Past that, values a whole number apart share one representation, and a bound can both admit a neighbour and exclude the value asked for.",
|
|
429
|
+
"type": "object",
|
|
430
|
+
"required": ["field"],
|
|
431
|
+
"properties": {
|
|
432
|
+
"field": {
|
|
433
|
+
"type": "string",
|
|
434
|
+
"default": ""
|
|
435
|
+
},
|
|
436
|
+
"gt": {
|
|
437
|
+
"type": "number",
|
|
438
|
+
"format": "double"
|
|
439
|
+
},
|
|
440
|
+
"gte": {
|
|
441
|
+
"type": "number",
|
|
442
|
+
"format": "double"
|
|
443
|
+
},
|
|
444
|
+
"lt": {
|
|
445
|
+
"type": "number",
|
|
446
|
+
"format": "double"
|
|
447
|
+
},
|
|
448
|
+
"lte": {
|
|
449
|
+
"type": "number",
|
|
450
|
+
"format": "double"
|
|
451
|
+
}
|
|
452
|
+
}
|
|
453
|
+
},
|
|
454
|
+
"RegexPredicate": {
|
|
455
|
+
"description": "RegexPredicate matches a single field against a regular expression, one pattern per leaf the way a single Prometheus matcher works. Negate turns the leaf from =~ into !~.\n\nMatching is against the whole indexed term and is case-sensitive, so it is restricted to filterable keyword string fields that keep their original case. The pattern is a portable RE2 subset: literals, character classes, grouping, alternation, and greedy repetition. The backend is the source of truth for what the subset admits; it rejects unsupported syntax, fields that do not preserve case, and patterns that expand to too many terms with a 400.",
|
|
456
|
+
"type": "object",
|
|
457
|
+
"required": ["field", "pattern"],
|
|
458
|
+
"properties": {
|
|
459
|
+
"field": {
|
|
460
|
+
"type": "string",
|
|
461
|
+
"default": ""
|
|
462
|
+
},
|
|
463
|
+
"negate": {
|
|
464
|
+
"description": "Negate inverts the match: the field must not match the pattern.",
|
|
465
|
+
"type": "boolean"
|
|
466
|
+
},
|
|
467
|
+
"pattern": {
|
|
468
|
+
"type": "string",
|
|
469
|
+
"default": ""
|
|
470
|
+
}
|
|
471
|
+
}
|
|
472
|
+
},
|
|
473
|
+
"ResourceRef": {
|
|
474
|
+
"description": "ResourceRef is the full identity of a returned item. Namespace is implicit from the URL and omitted.",
|
|
475
|
+
"type": "object",
|
|
476
|
+
"required": ["group", "resource", "kind", "name"],
|
|
477
|
+
"properties": {
|
|
478
|
+
"group": {
|
|
479
|
+
"type": "string",
|
|
480
|
+
"default": ""
|
|
481
|
+
},
|
|
482
|
+
"kind": {
|
|
483
|
+
"type": "string",
|
|
484
|
+
"default": ""
|
|
485
|
+
},
|
|
486
|
+
"name": {
|
|
487
|
+
"type": "string",
|
|
488
|
+
"default": ""
|
|
489
|
+
},
|
|
490
|
+
"resource": {
|
|
491
|
+
"type": "string",
|
|
492
|
+
"default": ""
|
|
493
|
+
}
|
|
494
|
+
}
|
|
495
|
+
},
|
|
496
|
+
"ResultItem": {
|
|
497
|
+
"description": "ResultItem is one search or trash hit. The item shape is identical on both endpoints; only which fields the Fields map can carry differs.",
|
|
498
|
+
"type": "object",
|
|
499
|
+
"required": ["resource"],
|
|
500
|
+
"properties": {
|
|
501
|
+
"fields": {
|
|
502
|
+
"description": "Fields holds the JSON values for the requested (or default) fields. Array-typed fields are returned as JSON arrays. Absent fields are omitted.",
|
|
503
|
+
"$ref": "#/components/schemas/Unstructured"
|
|
504
|
+
},
|
|
505
|
+
"resource": {
|
|
506
|
+
"default": {},
|
|
507
|
+
"$ref": "#/components/schemas/ResourceRef"
|
|
508
|
+
},
|
|
509
|
+
"score": {
|
|
510
|
+
"description": "Score is present only when a text query was evaluated. A pointer so a real score of 0 is still distinguishable from \"no text query\" (absent).",
|
|
511
|
+
"type": "number",
|
|
512
|
+
"format": "double"
|
|
513
|
+
}
|
|
514
|
+
}
|
|
515
|
+
},
|
|
516
|
+
"SearchQuery": {
|
|
517
|
+
"description": "SearchQuery is the request body for POST .../{resource}/search, which searches one kind, and for POST .../namespaces/{namespace}/global/search, which searches several resource types at once.",
|
|
518
|
+
"type": "object",
|
|
519
|
+
"properties": {
|
|
520
|
+
"apiVersion": {
|
|
521
|
+
"description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources",
|
|
522
|
+
"type": "string"
|
|
523
|
+
},
|
|
524
|
+
"continue": {
|
|
525
|
+
"description": "Continue is an opaque pagination token from a previous page.",
|
|
526
|
+
"type": "string"
|
|
527
|
+
},
|
|
528
|
+
"facetLimit": {
|
|
529
|
+
"description": "FacetLimit caps the number of terms returned per facet. It applies to every entry in Facets. Zero uses the server default; values above the server cap are clamped.",
|
|
530
|
+
"type": "integer",
|
|
531
|
+
"format": "int64"
|
|
532
|
+
},
|
|
533
|
+
"facets": {
|
|
534
|
+
"type": "array",
|
|
535
|
+
"items": {
|
|
536
|
+
"type": "string"
|
|
537
|
+
}
|
|
538
|
+
},
|
|
539
|
+
"fields": {
|
|
540
|
+
"type": "array",
|
|
541
|
+
"items": {
|
|
542
|
+
"type": "string"
|
|
543
|
+
}
|
|
544
|
+
},
|
|
545
|
+
"kind": {
|
|
546
|
+
"description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds",
|
|
547
|
+
"type": "string"
|
|
548
|
+
},
|
|
549
|
+
"labelSelector": {
|
|
550
|
+
"description": "LabelSelector filters on metadata.labels, ANDed with Where.",
|
|
551
|
+
"$ref": "#/components/schemas/LabelSelector"
|
|
552
|
+
},
|
|
553
|
+
"limit": {
|
|
554
|
+
"description": "Limit is the page size. Zero uses the default; values above the maximum are clamped.",
|
|
555
|
+
"type": "integer",
|
|
556
|
+
"format": "int64"
|
|
557
|
+
},
|
|
558
|
+
"sort": {
|
|
559
|
+
"type": "array",
|
|
560
|
+
"items": {
|
|
561
|
+
"$ref": "#/components/schemas/SortField"
|
|
562
|
+
}
|
|
563
|
+
},
|
|
564
|
+
"where": {
|
|
565
|
+
"description": "Where is the search predicate tree. Omitting it matches everything the endpoint searches: all resources of the kind, or of every type the global search covers (subject to labelSelector and per-item authz).",
|
|
566
|
+
"$ref": "#/components/schemas/WhereNode"
|
|
567
|
+
}
|
|
568
|
+
}
|
|
569
|
+
},
|
|
570
|
+
"SortField": {
|
|
571
|
+
"description": "SortField names a field to sort by and a direction (\"asc\" or \"desc\"). V1 allows sorting only on scalar string and numeric fields that declare the sort capability.",
|
|
572
|
+
"type": "object",
|
|
573
|
+
"required": ["field"],
|
|
574
|
+
"properties": {
|
|
575
|
+
"direction": {
|
|
576
|
+
"type": "string"
|
|
577
|
+
},
|
|
578
|
+
"field": {
|
|
579
|
+
"type": "string",
|
|
580
|
+
"default": ""
|
|
581
|
+
}
|
|
582
|
+
}
|
|
583
|
+
},
|
|
584
|
+
"TextPredicate": {
|
|
585
|
+
"description": "TextPredicate is a free-text predicate against one or more text-capable fields. When Fields is empty it defaults to the kind's searchTextFields (currently [\"title\"]).",
|
|
586
|
+
"type": "object",
|
|
587
|
+
"required": ["value"],
|
|
588
|
+
"properties": {
|
|
589
|
+
"boost": {
|
|
590
|
+
"description": "Boost is a future per-leaf score multiplier. Setting it is rejected in v1.",
|
|
591
|
+
"type": "number",
|
|
592
|
+
"format": "double"
|
|
593
|
+
},
|
|
594
|
+
"fields": {
|
|
595
|
+
"type": "array",
|
|
596
|
+
"items": {
|
|
597
|
+
"type": "string"
|
|
598
|
+
}
|
|
599
|
+
},
|
|
600
|
+
"value": {
|
|
601
|
+
"type": "string",
|
|
602
|
+
"default": ""
|
|
603
|
+
}
|
|
604
|
+
}
|
|
605
|
+
},
|
|
606
|
+
"WhereNode": {
|
|
607
|
+
"description": "WhereNode is a single node of the where tree. Exactly one field must be set; the set field names the node's type. Combinators (and/or/not) compose other nodes, leaves (text/filter/range/regex/exists) are terminal predicates.\n\nAll node types are modelled so the schema is future-proof, but v1 only accepts a narrow subset (top-level single leaf or a single and of leaves; text, filter, range and regex leaves; In/NotIn/All filter operators). Everything else is rejected with 422 Unprocessable Entity by the validation layer. exists is sketched for a future version and always rejected today.",
|
|
608
|
+
"type": "object",
|
|
609
|
+
"properties": {
|
|
610
|
+
"and": {
|
|
611
|
+
"description": "Combinators.",
|
|
612
|
+
"type": "array",
|
|
613
|
+
"items": {
|
|
614
|
+
"$ref": "#/components/schemas/WhereNode"
|
|
615
|
+
}
|
|
616
|
+
},
|
|
617
|
+
"exists": {
|
|
618
|
+
"$ref": "#/components/schemas/ExistsPredicate"
|
|
619
|
+
},
|
|
620
|
+
"filter": {
|
|
621
|
+
"$ref": "#/components/schemas/FilterPredicate"
|
|
622
|
+
},
|
|
623
|
+
"not": {
|
|
624
|
+
"$ref": "#/components/schemas/WhereNode"
|
|
625
|
+
},
|
|
626
|
+
"or": {
|
|
627
|
+
"type": "array",
|
|
628
|
+
"items": {
|
|
629
|
+
"$ref": "#/components/schemas/WhereNode"
|
|
630
|
+
}
|
|
631
|
+
},
|
|
632
|
+
"range": {
|
|
633
|
+
"$ref": "#/components/schemas/RangePredicate"
|
|
634
|
+
},
|
|
635
|
+
"regex": {
|
|
636
|
+
"$ref": "#/components/schemas/RegexPredicate"
|
|
637
|
+
},
|
|
638
|
+
"text": {
|
|
639
|
+
"description": "Leaves.",
|
|
640
|
+
"$ref": "#/components/schemas/TextPredicate"
|
|
641
|
+
}
|
|
642
|
+
}
|
|
643
|
+
},
|
|
644
|
+
"LabelSelector": {
|
|
645
|
+
"description": "A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.",
|
|
646
|
+
"type": "object",
|
|
647
|
+
"properties": {
|
|
648
|
+
"matchExpressions": {
|
|
649
|
+
"description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.",
|
|
650
|
+
"type": "array",
|
|
651
|
+
"items": {
|
|
652
|
+
"$ref": "#/components/schemas/LabelSelectorRequirement"
|
|
653
|
+
},
|
|
654
|
+
"x-kubernetes-list-type": "atomic"
|
|
655
|
+
},
|
|
656
|
+
"matchLabels": {
|
|
657
|
+
"description": "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.",
|
|
658
|
+
"type": "object",
|
|
659
|
+
"additionalProperties": {
|
|
660
|
+
"type": "string"
|
|
661
|
+
}
|
|
662
|
+
}
|
|
663
|
+
},
|
|
664
|
+
"x-kubernetes-map-type": "atomic"
|
|
665
|
+
},
|
|
666
|
+
"LabelSelectorRequirement": {
|
|
667
|
+
"description": "A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.",
|
|
668
|
+
"type": "object",
|
|
669
|
+
"required": ["key", "operator"],
|
|
670
|
+
"properties": {
|
|
671
|
+
"key": {
|
|
672
|
+
"description": "key is the label key that the selector applies to.",
|
|
673
|
+
"type": "string",
|
|
674
|
+
"default": ""
|
|
675
|
+
},
|
|
676
|
+
"operator": {
|
|
677
|
+
"description": "operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.",
|
|
678
|
+
"type": "string",
|
|
679
|
+
"default": ""
|
|
680
|
+
},
|
|
681
|
+
"values": {
|
|
682
|
+
"description": "values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.",
|
|
683
|
+
"type": "array",
|
|
684
|
+
"items": {
|
|
685
|
+
"type": "string"
|
|
686
|
+
},
|
|
687
|
+
"x-kubernetes-list-type": "atomic"
|
|
688
|
+
}
|
|
689
|
+
}
|
|
690
|
+
}
|
|
691
|
+
}
|
|
692
|
+
}
|
|
693
|
+
}
|