@opensoha/contracts 0.1.24 → 0.1.25
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/auth/catalog_generated.go +2 -2
- package/auth/gateway_permissions_test.go +48 -0
- package/auth/permission-catalog.json +300 -1
- package/compat/consumer-revisions.json +1 -1
- package/compat/json-schema-ecosystem-0.1.0.json +1 -1
- package/compat/openapi-loose-boundaries-0.1.0.json +1 -1
- package/fixtures/openapi/KubernetesAgentActionCheck/invalid/unproven-state.json +6 -0
- package/fixtures/openapi/KubernetesAgentActionCheck/valid/configured-denied.json +9 -0
- package/fixtures/openapi/KubernetesAgentActionProfile/invalid/wildcard.json +1 -0
- package/fixtures/openapi/KubernetesAgentActionProfile/valid/workbench.json +1 -0
- package/fixtures/openapi/KubernetesClusterRegistrationRequest/invalid/action-profile.json +3 -0
- package/fixtures/openapi/KubernetesClusterRegistrationRequest/valid/action-profile.json +5 -0
- package/fixtures/openapi/KubernetesNodeListEnvelope/invalid/condition-status-boolean.json +17 -0
- package/fixtures/openapi/KubernetesNodeListEnvelope/invalid/taint-effect-missing.json +16 -0
- package/fixtures/openapi/KubernetesNodeListEnvelope/valid/legacy-fields-absent.json +11 -0
- package/fixtures/openapi/KubernetesNodeListEnvelope/valid/no-taints.json +13 -0
- package/fixtures/openapi/KubernetesNodeListEnvelope/valid/ready-cordoned-tainted.json +28 -0
- package/fixtures/openapi/KubernetesNodeListEnvelope/valid/unknown-fields-null.json +13 -0
- package/fixtures/openapi/KubernetesTopologyCoverage/invalid/empty-as-success.json +5 -0
- package/fixtures/openapi/KubernetesTopologyCoverage/valid/not-installed.json +6 -0
- package/fixtures/openapi/KubernetesTopologyGraphEdge/invalid/negative-weight.json +8 -0
- package/fixtures/openapi/KubernetesTopologyGraphEdge/valid/zero-weight.json +20 -0
- package/fixtures/openapi/KubernetesTopologyGraphNode/invalid/fake-flow-kind.json +42 -0
- package/fixtures/openapi/KubernetesTopologyGraphNode/valid/rule.json +42 -0
- package/fixtures/openapi/KubernetesTopologySnapshot/invalid/raw-source-field.json +33 -0
- package/fixtures/openapi/KubernetesTopologySnapshot/valid/projected-source.json +32 -0
- package/fixtures/openapi/KubernetesTopologySnapshotRequest/invalid/arbitrary-gvr.json +8 -0
- package/fixtures/openapi/KubernetesTopologySnapshotRequest/valid/bounded-sources.json +11 -0
- package/fixtures/openapi/KubernetesTopologySourceQuery/invalid/cluster-namespace.json +4 -0
- package/fixtures/openapi/KubernetesTopologySourceQuery/valid/all-namespaces.json +4 -0
- package/fixtures/openapi/ResourceMonitoringPanel/invalid/unknown-quality.json +7 -0
- package/fixtures/openapi/ResourceMonitoringPanel/valid/not-collected.json +7 -0
- package/fixtures/openapi/ResourceMonitoringPoint/invalid/string-zero.json +4 -0
- package/fixtures/openapi/ResourceMonitoringPoint/valid/missing.json +4 -0
- package/fixtures/openapi/ResourceMonitoringPoint/valid/zero.json +4 -0
- package/fixtures/openapi/ResourceMonitoringView/invalid/raw-query.json +12 -0
- package/fixtures/openapi/ResourceMonitoringView/valid/unconfigured.json +12 -0
- package/gen/go/sohaapi/client.go +1 -1
- package/gen/go/sohaapi/kubernetes_monitoring_test.go +67 -0
- package/gen/go/sohaapi/types.go +1265 -228
- package/gen/ts/sohaapi/index.ts +1116 -1
- package/openapi/soha-api.json +2497 -302
- package/openapi/soha-api.yaml +732 -3
- package/openapi/spec_generated.go +3 -3
- package/openapi/spec_test.go +34 -0
- package/package.json +1 -1
- package/resource/agent_access.go +12 -0
- package/resource/agent_profiles.go +62 -0
- package/resource/agent_profiles_test.go +36 -0
- package/resource/kubernetes_kinds.go +73 -0
- package/resource/kubernetes_kinds_test.go +38 -0
- package/resource/models.go +23 -14
- package/resource/network_topology.go +166 -0
- package/resource/network_topology_projection.go +208 -0
- package/resource/network_topology_projection_test.go +53 -0
- package/resource/network_topology_test.go +51 -0
- package/resource/network_topology_validation.go +29 -0
- package/resource/node_drain.go +34 -0
- package/resource/resource_monitoring.go +99 -0
- package/resource/runtime/network_topology.go +232 -0
- package/resource/runtime/network_topology_test.go +62 -0
- package/resource/runtime/node_drain.go +124 -0
- package/resource/runtime/node_drain_test.go +95 -0
- package/resource/runtime/resource_edit.go +128 -0
- package/resource/runtime/resource_edit_test.go +183 -0
- package/resource/runtime/resource_monitoring.go +243 -0
- package/resource/runtime/resource_monitoring_test.go +88 -0
package/openapi/soha-api.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
openapi: 3.1.0
|
|
2
2
|
info:
|
|
3
3
|
title: Soha API
|
|
4
|
-
version: 0.1.
|
|
4
|
+
version: 0.1.25
|
|
5
5
|
description: >
|
|
6
6
|
Public OpenSoha core API contract. This first contract focuses on stable
|
|
7
7
|
cross-repository boundaries: auth, health, runner-facing control-plane
|
|
@@ -10086,6 +10086,36 @@ paths:
|
|
|
10086
10086
|
"403": { $ref: "#/components/responses/Error" }
|
|
10087
10087
|
"404": { $ref: "#/components/responses/Error" }
|
|
10088
10088
|
"503": { $ref: "#/components/responses/Error" }
|
|
10089
|
+
/clusters/{clusterID}/resource-monitoring:
|
|
10090
|
+
get:
|
|
10091
|
+
tags: [Platform]
|
|
10092
|
+
operationId: getKubernetesResourceMonitoring
|
|
10093
|
+
description: Fixed bounded monitoring templates. The selected view requires its exact permission plus cluster-wide nodes.view. Raw PromQL is never accepted. Current snapshots and historical series have separate observation times.
|
|
10094
|
+
x-soha-permissions:
|
|
10095
|
+
mode: all
|
|
10096
|
+
keys: [platform.nodes.view]
|
|
10097
|
+
byQuery:
|
|
10098
|
+
view:
|
|
10099
|
+
overview: platform.resource-monitoring.overview.view
|
|
10100
|
+
cpu: platform.resource-monitoring.cpu.view
|
|
10101
|
+
memory: platform.resource-monitoring.memory.view
|
|
10102
|
+
conntrack: platform.resource-monitoring.conntrack.view
|
|
10103
|
+
pods: platform.resource-monitoring.pods.view
|
|
10104
|
+
x-soha-implementation-status: implemented
|
|
10105
|
+
parameters:
|
|
10106
|
+
- { $ref: "#/components/parameters/ClusterID" }
|
|
10107
|
+
- { name: view, in: query, required: true, schema: { $ref: "#/components/schemas/ResourceMonitoringViewName" } }
|
|
10108
|
+
- { name: node, in: query, schema: { type: string, maxLength: 253 } }
|
|
10109
|
+
- { name: from, in: query, schema: { type: string, format: date-time } }
|
|
10110
|
+
- { name: to, in: query, schema: { type: string, format: date-time } }
|
|
10111
|
+
- { name: rangeMinutes, in: query, schema: { type: integer, minimum: 1, maximum: 1440, default: 60 } }
|
|
10112
|
+
- { name: stepSeconds, in: query, schema: { type: integer, minimum: 15, maximum: 3600, default: 60 } }
|
|
10113
|
+
responses:
|
|
10114
|
+
"200": { description: Per-panel quality and bounded node series., content: { application/json: { schema: { $ref: "#/components/schemas/ResourceMonitoringEnvelope" } } } }
|
|
10115
|
+
"400": { $ref: "#/components/responses/Error" }
|
|
10116
|
+
"403": { $ref: "#/components/responses/Error" }
|
|
10117
|
+
"404": { $ref: "#/components/responses/Error" }
|
|
10118
|
+
"503": { $ref: "#/components/responses/Error" }
|
|
10089
10119
|
/clusters/{clusterID}/network/topology:
|
|
10090
10120
|
get:
|
|
10091
10121
|
tags: [Platform]
|
|
@@ -10097,7 +10127,7 @@ paths:
|
|
|
10097
10127
|
x-soha-implementation-status: implemented
|
|
10098
10128
|
parameters: [{ $ref: "#/components/parameters/ClusterID" }, { $ref: "#/components/parameters/KubernetesNamespaceQuery" }]
|
|
10099
10129
|
responses:
|
|
10100
|
-
"200": { description:
|
|
10130
|
+
"200": { description: "Bounded permission-filtered Kubernetes, Gateway API, Traefik and APISIX topology, with per-source coverage and explicit unresolved relationships.", content: { application/json: { schema: { $ref: "#/components/schemas/KubernetesNetworkTopologyEnvelope" } } } }
|
|
10101
10131
|
"403": { $ref: "#/components/responses/Error" }
|
|
10102
10132
|
"404": { $ref: "#/components/responses/Error" }
|
|
10103
10133
|
"503": { $ref: "#/components/responses/Error" }
|
|
@@ -19764,6 +19794,12 @@ paths:
|
|
|
19764
19794
|
tags:
|
|
19765
19795
|
- Platform
|
|
19766
19796
|
operationId: drainKubernetesNode
|
|
19797
|
+
description: >-
|
|
19798
|
+
Cordon the node and evict eligible pods. A 409 with node_drain_pdb_blocked,
|
|
19799
|
+
node_drain_eviction_blocked, node_drain_timeout, node_drain_canceled,
|
|
19800
|
+
node_drain_pod_selection or node_drain_failed means this drain did not complete.
|
|
19801
|
+
Inspect current node schedulability and remaining pods before retrying or
|
|
19802
|
+
explicitly restoring scheduling. Transport failure leaves the outcome unknown.
|
|
19767
19803
|
x-soha-permissions:
|
|
19768
19804
|
mode: all
|
|
19769
19805
|
keys:
|
|
@@ -20027,6 +20063,458 @@ paths:
|
|
|
20027
20063
|
$ref: "#/components/responses/Error"
|
|
20028
20064
|
"503":
|
|
20029
20065
|
$ref: "#/components/responses/Error"
|
|
20066
|
+
/clusters/{clusterID}/network/httproutes/{name}:
|
|
20067
|
+
delete:
|
|
20068
|
+
tags: [Platform]
|
|
20069
|
+
operationId: deleteKubernetesHTTPRoute
|
|
20070
|
+
x-soha-permissions:
|
|
20071
|
+
mode: all
|
|
20072
|
+
keys: [platform.network.http-routes.delete]
|
|
20073
|
+
x-soha-implementation-status: implemented
|
|
20074
|
+
parameters:
|
|
20075
|
+
- $ref: "#/components/parameters/ClusterID"
|
|
20076
|
+
- $ref: "#/components/parameters/KubernetesResourceName"
|
|
20077
|
+
- $ref: "#/components/parameters/KubernetesNamespaceQuery"
|
|
20078
|
+
responses:
|
|
20079
|
+
"204": { description: Resource deleted. }
|
|
20080
|
+
"400": { $ref: "#/components/responses/Error" }
|
|
20081
|
+
"403": { $ref: "#/components/responses/Error" }
|
|
20082
|
+
"404": { $ref: "#/components/responses/Error" }
|
|
20083
|
+
"409": { $ref: "#/components/responses/Error" }
|
|
20084
|
+
"503": { $ref: "#/components/responses/Error" }
|
|
20085
|
+
/clusters/{clusterID}/network/httproutes/{name}/yaml:
|
|
20086
|
+
get:
|
|
20087
|
+
tags: [Platform]
|
|
20088
|
+
operationId: getKubernetesHTTPRouteYaml
|
|
20089
|
+
x-soha-permissions:
|
|
20090
|
+
mode: all
|
|
20091
|
+
keys: [platform.network.http-routes.view]
|
|
20092
|
+
x-soha-implementation-status: implemented
|
|
20093
|
+
parameters:
|
|
20094
|
+
- $ref: "#/components/parameters/ClusterID"
|
|
20095
|
+
- $ref: "#/components/parameters/KubernetesResourceName"
|
|
20096
|
+
- $ref: "#/components/parameters/KubernetesNamespaceQuery"
|
|
20097
|
+
responses:
|
|
20098
|
+
"200":
|
|
20099
|
+
description: Authorized Kubernetes resource YAML.
|
|
20100
|
+
content:
|
|
20101
|
+
application/json:
|
|
20102
|
+
schema:
|
|
20103
|
+
$ref: "#/components/schemas/KubernetesResourceYamlEnvelope"
|
|
20104
|
+
"400": { $ref: "#/components/responses/Error" }
|
|
20105
|
+
"403": { $ref: "#/components/responses/Error" }
|
|
20106
|
+
"404": { $ref: "#/components/responses/Error" }
|
|
20107
|
+
"409": { $ref: "#/components/responses/Error" }
|
|
20108
|
+
"503": { $ref: "#/components/responses/Error" }
|
|
20109
|
+
put:
|
|
20110
|
+
tags: [Platform]
|
|
20111
|
+
operationId: applyKubernetesHTTPRouteYaml
|
|
20112
|
+
x-soha-permissions:
|
|
20113
|
+
mode: all
|
|
20114
|
+
keys: [platform.network.http-routes.update]
|
|
20115
|
+
x-soha-implementation-status: implemented
|
|
20116
|
+
parameters:
|
|
20117
|
+
- $ref: "#/components/parameters/ClusterID"
|
|
20118
|
+
- $ref: "#/components/parameters/KubernetesResourceName"
|
|
20119
|
+
- $ref: "#/components/parameters/KubernetesNamespaceQuery"
|
|
20120
|
+
requestBody:
|
|
20121
|
+
required: true
|
|
20122
|
+
content:
|
|
20123
|
+
application/json:
|
|
20124
|
+
schema:
|
|
20125
|
+
$ref: "#/components/schemas/KubernetesResourceYamlInput"
|
|
20126
|
+
responses:
|
|
20127
|
+
"200":
|
|
20128
|
+
description: Authorized Kubernetes resource YAML.
|
|
20129
|
+
content:
|
|
20130
|
+
application/json:
|
|
20131
|
+
schema:
|
|
20132
|
+
$ref: "#/components/schemas/KubernetesResourceYamlEnvelope"
|
|
20133
|
+
"400": { $ref: "#/components/responses/Error" }
|
|
20134
|
+
"403": { $ref: "#/components/responses/Error" }
|
|
20135
|
+
"404": { $ref: "#/components/responses/Error" }
|
|
20136
|
+
"409": { $ref: "#/components/responses/Error" }
|
|
20137
|
+
"503": { $ref: "#/components/responses/Error" }
|
|
20138
|
+
/clusters/{clusterID}/network/grpcroutes/{name}:
|
|
20139
|
+
delete:
|
|
20140
|
+
tags: [Platform]
|
|
20141
|
+
operationId: deleteKubernetesGRPCRoute
|
|
20142
|
+
x-soha-permissions:
|
|
20143
|
+
mode: all
|
|
20144
|
+
keys: [platform.network.grpc-routes.delete]
|
|
20145
|
+
x-soha-implementation-status: implemented
|
|
20146
|
+
parameters:
|
|
20147
|
+
- $ref: "#/components/parameters/ClusterID"
|
|
20148
|
+
- $ref: "#/components/parameters/KubernetesResourceName"
|
|
20149
|
+
- $ref: "#/components/parameters/KubernetesNamespaceQuery"
|
|
20150
|
+
responses:
|
|
20151
|
+
"204": { description: Resource deleted. }
|
|
20152
|
+
"400": { $ref: "#/components/responses/Error" }
|
|
20153
|
+
"403": { $ref: "#/components/responses/Error" }
|
|
20154
|
+
"404": { $ref: "#/components/responses/Error" }
|
|
20155
|
+
"409": { $ref: "#/components/responses/Error" }
|
|
20156
|
+
"503": { $ref: "#/components/responses/Error" }
|
|
20157
|
+
/clusters/{clusterID}/network/grpcroutes/{name}/yaml:
|
|
20158
|
+
get:
|
|
20159
|
+
tags: [Platform]
|
|
20160
|
+
operationId: getKubernetesGRPCRouteYaml
|
|
20161
|
+
x-soha-permissions:
|
|
20162
|
+
mode: all
|
|
20163
|
+
keys: [platform.network.grpc-routes.view]
|
|
20164
|
+
x-soha-implementation-status: implemented
|
|
20165
|
+
parameters:
|
|
20166
|
+
- $ref: "#/components/parameters/ClusterID"
|
|
20167
|
+
- $ref: "#/components/parameters/KubernetesResourceName"
|
|
20168
|
+
- $ref: "#/components/parameters/KubernetesNamespaceQuery"
|
|
20169
|
+
responses:
|
|
20170
|
+
"200":
|
|
20171
|
+
description: Authorized Kubernetes resource YAML.
|
|
20172
|
+
content:
|
|
20173
|
+
application/json:
|
|
20174
|
+
schema:
|
|
20175
|
+
$ref: "#/components/schemas/KubernetesResourceYamlEnvelope"
|
|
20176
|
+
"400": { $ref: "#/components/responses/Error" }
|
|
20177
|
+
"403": { $ref: "#/components/responses/Error" }
|
|
20178
|
+
"404": { $ref: "#/components/responses/Error" }
|
|
20179
|
+
"409": { $ref: "#/components/responses/Error" }
|
|
20180
|
+
"503": { $ref: "#/components/responses/Error" }
|
|
20181
|
+
put:
|
|
20182
|
+
tags: [Platform]
|
|
20183
|
+
operationId: applyKubernetesGRPCRouteYaml
|
|
20184
|
+
x-soha-permissions:
|
|
20185
|
+
mode: all
|
|
20186
|
+
keys: [platform.network.grpc-routes.update]
|
|
20187
|
+
x-soha-implementation-status: implemented
|
|
20188
|
+
parameters:
|
|
20189
|
+
- $ref: "#/components/parameters/ClusterID"
|
|
20190
|
+
- $ref: "#/components/parameters/KubernetesResourceName"
|
|
20191
|
+
- $ref: "#/components/parameters/KubernetesNamespaceQuery"
|
|
20192
|
+
requestBody:
|
|
20193
|
+
required: true
|
|
20194
|
+
content:
|
|
20195
|
+
application/json:
|
|
20196
|
+
schema:
|
|
20197
|
+
$ref: "#/components/schemas/KubernetesResourceYamlInput"
|
|
20198
|
+
responses:
|
|
20199
|
+
"200":
|
|
20200
|
+
description: Authorized Kubernetes resource YAML.
|
|
20201
|
+
content:
|
|
20202
|
+
application/json:
|
|
20203
|
+
schema:
|
|
20204
|
+
$ref: "#/components/schemas/KubernetesResourceYamlEnvelope"
|
|
20205
|
+
"400": { $ref: "#/components/responses/Error" }
|
|
20206
|
+
"403": { $ref: "#/components/responses/Error" }
|
|
20207
|
+
"404": { $ref: "#/components/responses/Error" }
|
|
20208
|
+
"409": { $ref: "#/components/responses/Error" }
|
|
20209
|
+
"503": { $ref: "#/components/responses/Error" }
|
|
20210
|
+
/clusters/{clusterID}/network/backendtlspolicies/{name}:
|
|
20211
|
+
delete:
|
|
20212
|
+
tags: [Platform]
|
|
20213
|
+
operationId: deleteKubernetesBackendTLSPolicy
|
|
20214
|
+
x-soha-permissions:
|
|
20215
|
+
mode: all
|
|
20216
|
+
keys: [platform.network.backend-tls-policies.delete]
|
|
20217
|
+
x-soha-implementation-status: implemented
|
|
20218
|
+
parameters:
|
|
20219
|
+
- $ref: "#/components/parameters/ClusterID"
|
|
20220
|
+
- $ref: "#/components/parameters/KubernetesResourceName"
|
|
20221
|
+
- $ref: "#/components/parameters/KubernetesNamespaceQuery"
|
|
20222
|
+
responses:
|
|
20223
|
+
"204": { description: Resource deleted. }
|
|
20224
|
+
"400": { $ref: "#/components/responses/Error" }
|
|
20225
|
+
"403": { $ref: "#/components/responses/Error" }
|
|
20226
|
+
"404": { $ref: "#/components/responses/Error" }
|
|
20227
|
+
"409": { $ref: "#/components/responses/Error" }
|
|
20228
|
+
"503": { $ref: "#/components/responses/Error" }
|
|
20229
|
+
/clusters/{clusterID}/network/backendtlspolicies/{name}/yaml:
|
|
20230
|
+
get:
|
|
20231
|
+
tags: [Platform]
|
|
20232
|
+
operationId: getKubernetesBackendTLSPolicyYaml
|
|
20233
|
+
x-soha-permissions:
|
|
20234
|
+
mode: all
|
|
20235
|
+
keys: [platform.network.backend-tls-policies.view]
|
|
20236
|
+
x-soha-implementation-status: implemented
|
|
20237
|
+
parameters:
|
|
20238
|
+
- $ref: "#/components/parameters/ClusterID"
|
|
20239
|
+
- $ref: "#/components/parameters/KubernetesResourceName"
|
|
20240
|
+
- $ref: "#/components/parameters/KubernetesNamespaceQuery"
|
|
20241
|
+
responses:
|
|
20242
|
+
"200":
|
|
20243
|
+
description: Authorized Kubernetes resource YAML.
|
|
20244
|
+
content:
|
|
20245
|
+
application/json:
|
|
20246
|
+
schema:
|
|
20247
|
+
$ref: "#/components/schemas/KubernetesResourceYamlEnvelope"
|
|
20248
|
+
"400": { $ref: "#/components/responses/Error" }
|
|
20249
|
+
"403": { $ref: "#/components/responses/Error" }
|
|
20250
|
+
"404": { $ref: "#/components/responses/Error" }
|
|
20251
|
+
"409": { $ref: "#/components/responses/Error" }
|
|
20252
|
+
"503": { $ref: "#/components/responses/Error" }
|
|
20253
|
+
put:
|
|
20254
|
+
tags: [Platform]
|
|
20255
|
+
operationId: applyKubernetesBackendTLSPolicyYaml
|
|
20256
|
+
x-soha-permissions:
|
|
20257
|
+
mode: all
|
|
20258
|
+
keys: [platform.network.backend-tls-policies.update]
|
|
20259
|
+
x-soha-implementation-status: implemented
|
|
20260
|
+
parameters:
|
|
20261
|
+
- $ref: "#/components/parameters/ClusterID"
|
|
20262
|
+
- $ref: "#/components/parameters/KubernetesResourceName"
|
|
20263
|
+
- $ref: "#/components/parameters/KubernetesNamespaceQuery"
|
|
20264
|
+
requestBody:
|
|
20265
|
+
required: true
|
|
20266
|
+
content:
|
|
20267
|
+
application/json:
|
|
20268
|
+
schema:
|
|
20269
|
+
$ref: "#/components/schemas/KubernetesResourceYamlInput"
|
|
20270
|
+
responses:
|
|
20271
|
+
"200":
|
|
20272
|
+
description: Authorized Kubernetes resource YAML.
|
|
20273
|
+
content:
|
|
20274
|
+
application/json:
|
|
20275
|
+
schema:
|
|
20276
|
+
$ref: "#/components/schemas/KubernetesResourceYamlEnvelope"
|
|
20277
|
+
"400": { $ref: "#/components/responses/Error" }
|
|
20278
|
+
"403": { $ref: "#/components/responses/Error" }
|
|
20279
|
+
"404": { $ref: "#/components/responses/Error" }
|
|
20280
|
+
"409": { $ref: "#/components/responses/Error" }
|
|
20281
|
+
"503": { $ref: "#/components/responses/Error" }
|
|
20282
|
+
/clusters/{clusterID}/network/referencegrants/{name}:
|
|
20283
|
+
delete:
|
|
20284
|
+
tags: [Platform]
|
|
20285
|
+
operationId: deleteKubernetesReferenceGrant
|
|
20286
|
+
x-soha-permissions:
|
|
20287
|
+
mode: all
|
|
20288
|
+
keys: [platform.network.reference-grants.delete]
|
|
20289
|
+
x-soha-implementation-status: implemented
|
|
20290
|
+
parameters:
|
|
20291
|
+
- $ref: "#/components/parameters/ClusterID"
|
|
20292
|
+
- $ref: "#/components/parameters/KubernetesResourceName"
|
|
20293
|
+
- $ref: "#/components/parameters/KubernetesNamespaceQuery"
|
|
20294
|
+
responses:
|
|
20295
|
+
"204": { description: Resource deleted. }
|
|
20296
|
+
"400": { $ref: "#/components/responses/Error" }
|
|
20297
|
+
"403": { $ref: "#/components/responses/Error" }
|
|
20298
|
+
"404": { $ref: "#/components/responses/Error" }
|
|
20299
|
+
"409": { $ref: "#/components/responses/Error" }
|
|
20300
|
+
"503": { $ref: "#/components/responses/Error" }
|
|
20301
|
+
/clusters/{clusterID}/network/referencegrants/{name}/yaml:
|
|
20302
|
+
get:
|
|
20303
|
+
tags: [Platform]
|
|
20304
|
+
operationId: getKubernetesReferenceGrantYaml
|
|
20305
|
+
x-soha-permissions:
|
|
20306
|
+
mode: all
|
|
20307
|
+
keys: [platform.network.reference-grants.view]
|
|
20308
|
+
x-soha-implementation-status: implemented
|
|
20309
|
+
parameters:
|
|
20310
|
+
- $ref: "#/components/parameters/ClusterID"
|
|
20311
|
+
- $ref: "#/components/parameters/KubernetesResourceName"
|
|
20312
|
+
- $ref: "#/components/parameters/KubernetesNamespaceQuery"
|
|
20313
|
+
responses:
|
|
20314
|
+
"200":
|
|
20315
|
+
description: Authorized Kubernetes resource YAML.
|
|
20316
|
+
content:
|
|
20317
|
+
application/json:
|
|
20318
|
+
schema:
|
|
20319
|
+
$ref: "#/components/schemas/KubernetesResourceYamlEnvelope"
|
|
20320
|
+
"400": { $ref: "#/components/responses/Error" }
|
|
20321
|
+
"403": { $ref: "#/components/responses/Error" }
|
|
20322
|
+
"404": { $ref: "#/components/responses/Error" }
|
|
20323
|
+
"409": { $ref: "#/components/responses/Error" }
|
|
20324
|
+
"503": { $ref: "#/components/responses/Error" }
|
|
20325
|
+
put:
|
|
20326
|
+
tags: [Platform]
|
|
20327
|
+
operationId: applyKubernetesReferenceGrantYaml
|
|
20328
|
+
x-soha-permissions:
|
|
20329
|
+
mode: all
|
|
20330
|
+
keys: [platform.network.reference-grants.update]
|
|
20331
|
+
x-soha-implementation-status: implemented
|
|
20332
|
+
parameters:
|
|
20333
|
+
- $ref: "#/components/parameters/ClusterID"
|
|
20334
|
+
- $ref: "#/components/parameters/KubernetesResourceName"
|
|
20335
|
+
- $ref: "#/components/parameters/KubernetesNamespaceQuery"
|
|
20336
|
+
requestBody:
|
|
20337
|
+
required: true
|
|
20338
|
+
content:
|
|
20339
|
+
application/json:
|
|
20340
|
+
schema:
|
|
20341
|
+
$ref: "#/components/schemas/KubernetesResourceYamlInput"
|
|
20342
|
+
responses:
|
|
20343
|
+
"200":
|
|
20344
|
+
description: Authorized Kubernetes resource YAML.
|
|
20345
|
+
content:
|
|
20346
|
+
application/json:
|
|
20347
|
+
schema:
|
|
20348
|
+
$ref: "#/components/schemas/KubernetesResourceYamlEnvelope"
|
|
20349
|
+
"400": { $ref: "#/components/responses/Error" }
|
|
20350
|
+
"403": { $ref: "#/components/responses/Error" }
|
|
20351
|
+
"404": { $ref: "#/components/responses/Error" }
|
|
20352
|
+
"409": { $ref: "#/components/responses/Error" }
|
|
20353
|
+
"503": { $ref: "#/components/responses/Error" }
|
|
20354
|
+
/clusters/{clusterID}/configuration/hpas/{name}:
|
|
20355
|
+
delete:
|
|
20356
|
+
tags: [Platform]
|
|
20357
|
+
operationId: deleteKubernetesHorizontalPodAutoscaler
|
|
20358
|
+
x-soha-permissions:
|
|
20359
|
+
mode: all
|
|
20360
|
+
keys: [platform.configuration.horizontal-pod-autoscalers.delete]
|
|
20361
|
+
x-soha-implementation-status: implemented
|
|
20362
|
+
parameters:
|
|
20363
|
+
- $ref: "#/components/parameters/ClusterID"
|
|
20364
|
+
- $ref: "#/components/parameters/KubernetesResourceName"
|
|
20365
|
+
- $ref: "#/components/parameters/KubernetesNamespaceQuery"
|
|
20366
|
+
responses:
|
|
20367
|
+
"204": { description: Resource deleted. }
|
|
20368
|
+
"400": { $ref: "#/components/responses/Error" }
|
|
20369
|
+
"403": { $ref: "#/components/responses/Error" }
|
|
20370
|
+
"404": { $ref: "#/components/responses/Error" }
|
|
20371
|
+
"409": { $ref: "#/components/responses/Error" }
|
|
20372
|
+
"503": { $ref: "#/components/responses/Error" }
|
|
20373
|
+
/clusters/{clusterID}/configuration/hpas/{name}/yaml:
|
|
20374
|
+
get:
|
|
20375
|
+
tags: [Platform]
|
|
20376
|
+
operationId: getKubernetesHorizontalPodAutoscalerYaml
|
|
20377
|
+
x-soha-permissions:
|
|
20378
|
+
mode: all
|
|
20379
|
+
keys: [platform.configuration.horizontal-pod-autoscalers.view]
|
|
20380
|
+
x-soha-implementation-status: implemented
|
|
20381
|
+
parameters:
|
|
20382
|
+
- $ref: "#/components/parameters/ClusterID"
|
|
20383
|
+
- $ref: "#/components/parameters/KubernetesResourceName"
|
|
20384
|
+
- $ref: "#/components/parameters/KubernetesNamespaceQuery"
|
|
20385
|
+
responses:
|
|
20386
|
+
"200":
|
|
20387
|
+
description: Authorized Kubernetes resource YAML.
|
|
20388
|
+
content:
|
|
20389
|
+
application/json:
|
|
20390
|
+
schema:
|
|
20391
|
+
$ref: "#/components/schemas/KubernetesResourceYamlEnvelope"
|
|
20392
|
+
"400": { $ref: "#/components/responses/Error" }
|
|
20393
|
+
"403": { $ref: "#/components/responses/Error" }
|
|
20394
|
+
"404": { $ref: "#/components/responses/Error" }
|
|
20395
|
+
"409": { $ref: "#/components/responses/Error" }
|
|
20396
|
+
"503": { $ref: "#/components/responses/Error" }
|
|
20397
|
+
put:
|
|
20398
|
+
tags: [Platform]
|
|
20399
|
+
operationId: applyKubernetesHorizontalPodAutoscalerYaml
|
|
20400
|
+
x-soha-permissions:
|
|
20401
|
+
mode: all
|
|
20402
|
+
keys: [platform.configuration.horizontal-pod-autoscalers.update]
|
|
20403
|
+
x-soha-implementation-status: implemented
|
|
20404
|
+
parameters:
|
|
20405
|
+
- $ref: "#/components/parameters/ClusterID"
|
|
20406
|
+
- $ref: "#/components/parameters/KubernetesResourceName"
|
|
20407
|
+
- $ref: "#/components/parameters/KubernetesNamespaceQuery"
|
|
20408
|
+
requestBody:
|
|
20409
|
+
required: true
|
|
20410
|
+
content:
|
|
20411
|
+
application/json:
|
|
20412
|
+
schema:
|
|
20413
|
+
$ref: "#/components/schemas/KubernetesResourceYamlInput"
|
|
20414
|
+
responses:
|
|
20415
|
+
"200":
|
|
20416
|
+
description: Authorized Kubernetes resource YAML.
|
|
20417
|
+
content:
|
|
20418
|
+
application/json:
|
|
20419
|
+
schema:
|
|
20420
|
+
$ref: "#/components/schemas/KubernetesResourceYamlEnvelope"
|
|
20421
|
+
"400": { $ref: "#/components/responses/Error" }
|
|
20422
|
+
"403": { $ref: "#/components/responses/Error" }
|
|
20423
|
+
"404": { $ref: "#/components/responses/Error" }
|
|
20424
|
+
"409": { $ref: "#/components/responses/Error" }
|
|
20425
|
+
"503": { $ref: "#/components/responses/Error" }
|
|
20426
|
+
/clusters/{clusterID}/configuration/poddisruptionbudgets/{name}:
|
|
20427
|
+
delete:
|
|
20428
|
+
tags: [Platform]
|
|
20429
|
+
operationId: deleteKubernetesPodDisruptionBudget
|
|
20430
|
+
x-soha-permissions:
|
|
20431
|
+
mode: all
|
|
20432
|
+
keys: [platform.configuration.pod-disruption-budgets.delete]
|
|
20433
|
+
x-soha-implementation-status: implemented
|
|
20434
|
+
parameters:
|
|
20435
|
+
- $ref: "#/components/parameters/ClusterID"
|
|
20436
|
+
- $ref: "#/components/parameters/KubernetesResourceName"
|
|
20437
|
+
- $ref: "#/components/parameters/KubernetesNamespaceQuery"
|
|
20438
|
+
responses:
|
|
20439
|
+
"204": { description: Resource deleted. }
|
|
20440
|
+
"400": { $ref: "#/components/responses/Error" }
|
|
20441
|
+
"403": { $ref: "#/components/responses/Error" }
|
|
20442
|
+
"404": { $ref: "#/components/responses/Error" }
|
|
20443
|
+
"409": { $ref: "#/components/responses/Error" }
|
|
20444
|
+
"503": { $ref: "#/components/responses/Error" }
|
|
20445
|
+
/clusters/{clusterID}/configuration/poddisruptionbudgets/{name}/yaml:
|
|
20446
|
+
get:
|
|
20447
|
+
tags: [Platform]
|
|
20448
|
+
operationId: getKubernetesPodDisruptionBudgetYaml
|
|
20449
|
+
x-soha-permissions:
|
|
20450
|
+
mode: all
|
|
20451
|
+
keys: [platform.configuration.pod-disruption-budgets.view]
|
|
20452
|
+
x-soha-implementation-status: implemented
|
|
20453
|
+
parameters:
|
|
20454
|
+
- $ref: "#/components/parameters/ClusterID"
|
|
20455
|
+
- $ref: "#/components/parameters/KubernetesResourceName"
|
|
20456
|
+
- $ref: "#/components/parameters/KubernetesNamespaceQuery"
|
|
20457
|
+
responses:
|
|
20458
|
+
"200":
|
|
20459
|
+
description: Authorized Kubernetes resource YAML.
|
|
20460
|
+
content:
|
|
20461
|
+
application/json:
|
|
20462
|
+
schema:
|
|
20463
|
+
$ref: "#/components/schemas/KubernetesResourceYamlEnvelope"
|
|
20464
|
+
"400": { $ref: "#/components/responses/Error" }
|
|
20465
|
+
"403": { $ref: "#/components/responses/Error" }
|
|
20466
|
+
"404": { $ref: "#/components/responses/Error" }
|
|
20467
|
+
"409": { $ref: "#/components/responses/Error" }
|
|
20468
|
+
"503": { $ref: "#/components/responses/Error" }
|
|
20469
|
+
put:
|
|
20470
|
+
tags: [Platform]
|
|
20471
|
+
operationId: applyKubernetesPodDisruptionBudgetYaml
|
|
20472
|
+
x-soha-permissions:
|
|
20473
|
+
mode: all
|
|
20474
|
+
keys: [platform.configuration.pod-disruption-budgets.update]
|
|
20475
|
+
x-soha-implementation-status: implemented
|
|
20476
|
+
parameters:
|
|
20477
|
+
- $ref: "#/components/parameters/ClusterID"
|
|
20478
|
+
- $ref: "#/components/parameters/KubernetesResourceName"
|
|
20479
|
+
- $ref: "#/components/parameters/KubernetesNamespaceQuery"
|
|
20480
|
+
requestBody:
|
|
20481
|
+
required: true
|
|
20482
|
+
content:
|
|
20483
|
+
application/json:
|
|
20484
|
+
schema:
|
|
20485
|
+
$ref: "#/components/schemas/KubernetesResourceYamlInput"
|
|
20486
|
+
responses:
|
|
20487
|
+
"200":
|
|
20488
|
+
description: Authorized Kubernetes resource YAML.
|
|
20489
|
+
content:
|
|
20490
|
+
application/json:
|
|
20491
|
+
schema:
|
|
20492
|
+
$ref: "#/components/schemas/KubernetesResourceYamlEnvelope"
|
|
20493
|
+
"400": { $ref: "#/components/responses/Error" }
|
|
20494
|
+
"403": { $ref: "#/components/responses/Error" }
|
|
20495
|
+
"404": { $ref: "#/components/responses/Error" }
|
|
20496
|
+
"409": { $ref: "#/components/responses/Error" }
|
|
20497
|
+
"503": { $ref: "#/components/responses/Error" }
|
|
20498
|
+
/clusters/{clusterID}/workloads/replicationcontrollers/{name}:
|
|
20499
|
+
delete:
|
|
20500
|
+
tags: [Platform]
|
|
20501
|
+
operationId: deleteKubernetesReplicationController
|
|
20502
|
+
x-soha-permissions:
|
|
20503
|
+
mode: all
|
|
20504
|
+
keys: [platform.workloads.replication-controllers.delete]
|
|
20505
|
+
x-soha-implementation-status: implemented
|
|
20506
|
+
parameters:
|
|
20507
|
+
- $ref: "#/components/parameters/ClusterID"
|
|
20508
|
+
- $ref: "#/components/parameters/KubernetesResourceName"
|
|
20509
|
+
- $ref: "#/components/parameters/KubernetesNamespaceQuery"
|
|
20510
|
+
responses:
|
|
20511
|
+
"204": { description: Resource deleted. }
|
|
20512
|
+
"400": { $ref: "#/components/responses/Error" }
|
|
20513
|
+
"403": { $ref: "#/components/responses/Error" }
|
|
20514
|
+
"404": { $ref: "#/components/responses/Error" }
|
|
20515
|
+
"409": { $ref: "#/components/responses/Error" }
|
|
20516
|
+
"503": { $ref: "#/components/responses/Error" }
|
|
20517
|
+
|
|
20030
20518
|
components:
|
|
20031
20519
|
securitySchemes:
|
|
20032
20520
|
bearerAuth:
|
|
@@ -20942,6 +21430,7 @@ components:
|
|
|
20942
21430
|
schema:
|
|
20943
21431
|
type: string
|
|
20944
21432
|
enum: [default, bypass, read-only, refresh]
|
|
21433
|
+
x-enum-varnames: [CreateAIGatewayOpenAICompatibleProviderResponseParamsXSohaCacheModeDefault, CreateAIGatewayOpenAICompatibleProviderResponseParamsXSohaCacheModeBypass, CreateAIGatewayOpenAICompatibleProviderResponseParamsXSohaCacheModeReadOnly, CreateAIGatewayOpenAICompatibleProviderResponseParamsXSohaCacheModeRefresh]
|
|
20945
21434
|
description: Optional relay cache behavior hint.
|
|
20946
21435
|
headers:
|
|
20947
21436
|
SohaRouteIDHeader:
|
|
@@ -27105,7 +27594,10 @@ components:
|
|
|
27105
27594
|
type: object
|
|
27106
27595
|
properties:
|
|
27107
27596
|
publicModel: { type: string, maxLength: 200 }
|
|
27108
|
-
reasoningEffort:
|
|
27597
|
+
reasoningEffort:
|
|
27598
|
+
type: string
|
|
27599
|
+
enum: [auto, low, medium, high]
|
|
27600
|
+
x-enum-varnames: [WorkbenchModelPreferencesReasoningEffortAuto, WorkbenchModelPreferencesReasoningEffortLow, WorkbenchModelPreferencesReasoningEffortMedium, WorkbenchModelPreferencesReasoningEffortHigh]
|
|
27109
27601
|
additionalProperties: false
|
|
27110
27602
|
WorkbenchModelOption:
|
|
27111
27603
|
type: object
|
|
@@ -36979,6 +37471,10 @@ components:
|
|
|
36979
37471
|
type: object
|
|
36980
37472
|
required: [transport, syncStrategy, cacheStatus, cacheReady, connectionState]
|
|
36981
37473
|
properties:
|
|
37474
|
+
actionChecks:
|
|
37475
|
+
type: array
|
|
37476
|
+
maxItems: 64
|
|
37477
|
+
items: { $ref: "#/components/schemas/KubernetesAgentActionCheck" }
|
|
36982
37478
|
transport:
|
|
36983
37479
|
type: string
|
|
36984
37480
|
syncStrategy:
|
|
@@ -36999,6 +37495,22 @@ components:
|
|
|
36999
37495
|
message:
|
|
37000
37496
|
type: string
|
|
37001
37497
|
additionalProperties: false
|
|
37498
|
+
KubernetesAgentActionCheck:
|
|
37499
|
+
type: object
|
|
37500
|
+
required: [action, implementation, configured, kubernetesRBAC]
|
|
37501
|
+
properties:
|
|
37502
|
+
action: { type: string }
|
|
37503
|
+
implementation: { type: string, enum: [supported, unsupported, unknown] }
|
|
37504
|
+
configured: { type: string, enum: [allowed, denied, unknown] }
|
|
37505
|
+
kubernetesRBAC: { type: string, enum: [allowed, denied, unknown, not_applicable] }
|
|
37506
|
+
checkedAt: { type: string, format: date-time }
|
|
37507
|
+
reasonCode: { type: string }
|
|
37508
|
+
scope: { type: string, enum: [cluster], x-enum-varnames: [KubernetesAgentActionCheckScopeCluster] }
|
|
37509
|
+
additionalProperties: false
|
|
37510
|
+
KubernetesAgentActionProfile:
|
|
37511
|
+
type: string
|
|
37512
|
+
enum: [legacy, workbench, read-only]
|
|
37513
|
+
description: Installation preset only. Legacy preserves existing permissions; selecting workbench or read-only requires regenerating and reviewing the installation manifest.
|
|
37002
37514
|
KubernetesClusterConnectionDetail:
|
|
37003
37515
|
type: object
|
|
37004
37516
|
required: [mode, credentialType, sourceType, hasInlineKubeconfig, hasToken, usesInformerCache]
|
|
@@ -37021,6 +37533,7 @@ components:
|
|
|
37021
37533
|
type: boolean
|
|
37022
37534
|
usesInformerCache:
|
|
37023
37535
|
type: boolean
|
|
37536
|
+
actionProfile: { $ref: "#/components/schemas/KubernetesAgentActionProfile" }
|
|
37024
37537
|
customResourceRules:
|
|
37025
37538
|
type: array
|
|
37026
37539
|
maxItems: 50
|
|
@@ -37062,6 +37575,7 @@ components:
|
|
|
37062
37575
|
prometheusClusterLabel: { type: string }
|
|
37063
37576
|
grafanaBaseUrl: { type: string }
|
|
37064
37577
|
prometheusTransport: { $ref: "#/components/schemas/KubernetesPrometheusTransport" }
|
|
37578
|
+
agentActionProfile: { $ref: "#/components/schemas/KubernetesAgentActionProfile" }
|
|
37065
37579
|
agentCustomResourceRules:
|
|
37066
37580
|
type: array
|
|
37067
37581
|
maxItems: 50
|
|
@@ -37249,6 +37763,18 @@ components:
|
|
|
37249
37763
|
type: string
|
|
37250
37764
|
unschedulable:
|
|
37251
37765
|
type: boolean
|
|
37766
|
+
taints:
|
|
37767
|
+
type: array
|
|
37768
|
+
nullable: true
|
|
37769
|
+
description: Current Node spec taints. Empty means none; null or absent means not reported.
|
|
37770
|
+
items:
|
|
37771
|
+
$ref: "#/components/schemas/KubernetesNodeTaint"
|
|
37772
|
+
conditions:
|
|
37773
|
+
type: array
|
|
37774
|
+
nullable: true
|
|
37775
|
+
description: Current Node conditions, independent of scheduling and drain operations.
|
|
37776
|
+
items:
|
|
37777
|
+
$ref: "#/components/schemas/KubernetesWorkloadCondition"
|
|
37252
37778
|
roles:
|
|
37253
37779
|
type: array
|
|
37254
37780
|
items:
|
|
@@ -39689,6 +40215,193 @@ components:
|
|
|
39689
40215
|
properties:
|
|
39690
40216
|
data: { $ref: "#/components/schemas/KubernetesNetworkPolicyDetail" }
|
|
39691
40217
|
additionalProperties: false
|
|
40218
|
+
KubernetesTopologyProvider:
|
|
40219
|
+
type: string
|
|
40220
|
+
enum: [kubernetes, gateway, traefik, apisix]
|
|
40221
|
+
x-enum-varnames: [KubernetesTopologyProviderKubernetes, KubernetesTopologyProviderGateway, KubernetesTopologyProviderTraefik, KubernetesTopologyProviderApisix]
|
|
40222
|
+
KubernetesTopologyResolution:
|
|
40223
|
+
type: string
|
|
40224
|
+
enum: [resolved, unresolved, not_found, not_visible, no_ready_endpoints, external, unsupported_fragment, unknown]
|
|
40225
|
+
x-enum-varnames: [KubernetesTopologyResolutionResolved, KubernetesTopologyResolutionUnresolved, KubernetesTopologyResolutionNotFound, KubernetesTopologyResolutionNotVisible, KubernetesTopologyResolutionNoReadyEndpoints, KubernetesTopologyResolutionExternal, KubernetesTopologyResolutionUnsupportedFragment, KubernetesTopologyResolutionUnknown]
|
|
40226
|
+
KubernetesTopologyProperty:
|
|
40227
|
+
type: object
|
|
40228
|
+
required: [name, value]
|
|
40229
|
+
properties:
|
|
40230
|
+
name: { type: string, maxLength: 64 }
|
|
40231
|
+
value: { type: string, maxLength: 1024 }
|
|
40232
|
+
additionalProperties: false
|
|
40233
|
+
KubernetesTopologyMatch:
|
|
40234
|
+
type: object
|
|
40235
|
+
required: [type]
|
|
40236
|
+
properties:
|
|
40237
|
+
type: { type: string, maxLength: 32 }
|
|
40238
|
+
name: { type: string, maxLength: 128 }
|
|
40239
|
+
operator: { type: string, maxLength: 32 }
|
|
40240
|
+
value: { type: string, maxLength: 1024 }
|
|
40241
|
+
additionalProperties: false
|
|
40242
|
+
KubernetesTopologyRule:
|
|
40243
|
+
type: object
|
|
40244
|
+
required: [index]
|
|
40245
|
+
properties:
|
|
40246
|
+
name: { type: string, maxLength: 253 }
|
|
40247
|
+
index: { type: integer, minimum: 0 }
|
|
40248
|
+
matchGroups:
|
|
40249
|
+
description: Groups are ORed; matches inside each group are ANDed. Opaque expressions remain a bounded summary and are marked unsupported_fragment.
|
|
40250
|
+
type: array
|
|
40251
|
+
maxItems: 64
|
|
40252
|
+
items:
|
|
40253
|
+
type: array
|
|
40254
|
+
maxItems: 64
|
|
40255
|
+
items: { $ref: "#/components/schemas/KubernetesTopologyMatch" }
|
|
40256
|
+
matchSummary: { type: string, maxLength: 2048 }
|
|
40257
|
+
priority: { type: integer, format: int64 }
|
|
40258
|
+
tlsMode: { type: string, maxLength: 64 }
|
|
40259
|
+
additionalProperties: false
|
|
40260
|
+
KubernetesTopologyCondition:
|
|
40261
|
+
type: object
|
|
40262
|
+
required: [type, status]
|
|
40263
|
+
properties:
|
|
40264
|
+
type: { type: string, maxLength: 128 }
|
|
40265
|
+
status: { type: string, maxLength: 32 }
|
|
40266
|
+
reason: { type: string, maxLength: 128 }
|
|
40267
|
+
observedGeneration: { type: integer, format: int64 }
|
|
40268
|
+
lastTransitionTime: { type: string, format: date-time }
|
|
40269
|
+
additionalProperties: false
|
|
40270
|
+
KubernetesTopologyGraphNode:
|
|
40271
|
+
type: object
|
|
40272
|
+
required: [id, type, label, provider, resolutionState]
|
|
40273
|
+
properties:
|
|
40274
|
+
id: { type: string, minLength: 1, maxLength: 2048 }
|
|
40275
|
+
type:
|
|
40276
|
+
type: string
|
|
40277
|
+
enum: [entry, rule, processor, backend-group, service, endpoint-group, pod, external]
|
|
40278
|
+
x-enum-varnames: [KubernetesTopologyGraphNodeTypeEntry, KubernetesTopologyGraphNodeTypeRule, KubernetesTopologyGraphNodeTypeProcessor, KubernetesTopologyGraphNodeTypeBackendGroup, KubernetesTopologyGraphNodeTypeService, KubernetesTopologyGraphNodeTypeEndpointGroup, KubernetesTopologyGraphNodeTypePod, KubernetesTopologyGraphNodeTypeExternal]
|
|
40279
|
+
label: { type: string, maxLength: 1024 }
|
|
40280
|
+
provider: { $ref: "#/components/schemas/KubernetesTopologyProvider" }
|
|
40281
|
+
protocol: { type: string, maxLength: 16 }
|
|
40282
|
+
resolutionState: { $ref: "#/components/schemas/KubernetesTopologyResolution" }
|
|
40283
|
+
resource: { $ref: "#/components/schemas/KubernetesResourceRef" }
|
|
40284
|
+
rule: { $ref: "#/components/schemas/KubernetesTopologyRule" }
|
|
40285
|
+
generation: { type: integer, format: int64 }
|
|
40286
|
+
properties:
|
|
40287
|
+
type: array
|
|
40288
|
+
maxItems: 64
|
|
40289
|
+
items: { $ref: "#/components/schemas/KubernetesTopologyProperty" }
|
|
40290
|
+
conditions:
|
|
40291
|
+
type: array
|
|
40292
|
+
maxItems: 64
|
|
40293
|
+
items: { $ref: "#/components/schemas/KubernetesTopologyCondition" }
|
|
40294
|
+
additionalProperties: false
|
|
40295
|
+
KubernetesTopologyGraphEdge:
|
|
40296
|
+
type: object
|
|
40297
|
+
required: [id, source, target, relation, resolutionState]
|
|
40298
|
+
properties:
|
|
40299
|
+
id: { type: string, minLength: 1, maxLength: 2048 }
|
|
40300
|
+
source: { type: string, minLength: 1, maxLength: 2048 }
|
|
40301
|
+
target: { type: string, minLength: 1, maxLength: 2048 }
|
|
40302
|
+
relation:
|
|
40303
|
+
type: string
|
|
40304
|
+
enum: [matches, processes, forwards, weights, mirrors, resolves, selects]
|
|
40305
|
+
x-enum-varnames: [KubernetesTopologyGraphEdgeRelationMatches, KubernetesTopologyGraphEdgeRelationProcesses, KubernetesTopologyGraphEdgeRelationForwards, KubernetesTopologyGraphEdgeRelationWeights, KubernetesTopologyGraphEdgeRelationMirrors, KubernetesTopologyGraphEdgeRelationResolves, KubernetesTopologyGraphEdgeRelationSelects]
|
|
40306
|
+
resolutionState: { $ref: "#/components/schemas/KubernetesTopologyResolution" }
|
|
40307
|
+
protocol: { type: string, maxLength: 16 }
|
|
40308
|
+
port: { type: string, maxLength: 64 }
|
|
40309
|
+
weight: { type: integer, format: int64, minimum: 0 }
|
|
40310
|
+
totalWeight: { type: integer, format: int64, minimum: 0 }
|
|
40311
|
+
mirrorPercent: { type: number, minimum: 0, maximum: 100 }
|
|
40312
|
+
ruleRef: { type: string, maxLength: 2048 }
|
|
40313
|
+
sourceRef: { $ref: "#/components/schemas/KubernetesResourceRef" }
|
|
40314
|
+
note: { type: string, maxLength: 2048 }
|
|
40315
|
+
additionalProperties: false
|
|
40316
|
+
KubernetesTopologyCoverage:
|
|
40317
|
+
type: object
|
|
40318
|
+
required: [provider, sourceId, state]
|
|
40319
|
+
properties:
|
|
40320
|
+
provider: { $ref: "#/components/schemas/KubernetesTopologyProvider" }
|
|
40321
|
+
sourceId: { type: string, maxLength: 128 }
|
|
40322
|
+
state:
|
|
40323
|
+
type: string
|
|
40324
|
+
enum: [available, not_installed, unsupported, denied, error, partial]
|
|
40325
|
+
x-enum-varnames: [KubernetesTopologyCoverageStateAvailable, KubernetesTopologyCoverageStateNotInstalled, KubernetesTopologyCoverageStateUnsupported, KubernetesTopologyCoverageStateDenied, KubernetesTopologyCoverageStateError, KubernetesTopologyCoverageStatePartial]
|
|
40326
|
+
namespace: { type: string, maxLength: 63 }
|
|
40327
|
+
supportedKinds:
|
|
40328
|
+
type: array
|
|
40329
|
+
maxItems: 32
|
|
40330
|
+
items: { type: string, maxLength: 128 }
|
|
40331
|
+
reasonCode: { type: string, maxLength: 128 }
|
|
40332
|
+
checkedAt: { type: string, format: date-time }
|
|
40333
|
+
observedAt: { type: string, format: date-time }
|
|
40334
|
+
truncated: { type: boolean }
|
|
40335
|
+
additionalProperties: false
|
|
40336
|
+
KubernetesTopologySourceQuery:
|
|
40337
|
+
type: object
|
|
40338
|
+
required: [sourceId]
|
|
40339
|
+
properties:
|
|
40340
|
+
sourceId:
|
|
40341
|
+
type: string
|
|
40342
|
+
enum: [kubernetes.services, kubernetes.pods, kubernetes.endpointslices, kubernetes.ingresses, kubernetes.ingressclasses, gateway.gateways, gateway.gatewayclasses, gateway.httproutes, gateway.grpcroutes, gateway.tcproutes, gateway.tlsroutes, gateway.udproutes, gateway.referencegrants, traefik.ingressroutes, traefik.ingressroutetcps, traefik.ingressrouteudps, traefik.traefikservices, traefik.middlewares, traefik.middlewaretcps, apisix.apisixroutes, apisix.apisixupstreams, apisix.apisixtls]
|
|
40343
|
+
x-enum-varnames: [KubernetesTopologySourceKubernetesServices, KubernetesTopologySourceKubernetesPods, KubernetesTopologySourceKubernetesEndpointslices, KubernetesTopologySourceKubernetesIngresses, KubernetesTopologySourceKubernetesIngressclasses, KubernetesTopologySourceGatewayGateways, KubernetesTopologySourceGatewayGatewayclasses, KubernetesTopologySourceGatewayHttproutes, KubernetesTopologySourceGatewayGrpcroutes, KubernetesTopologySourceGatewayTcproutes, KubernetesTopologySourceGatewayTlsroutes, KubernetesTopologySourceGatewayUdproutes, KubernetesTopologySourceGatewayReferencegrants, KubernetesTopologySourceTraefikIngressroutes, KubernetesTopologySourceTraefikIngressroutetcps, KubernetesTopologySourceTraefikIngressrouteudps, KubernetesTopologySourceTraefikTraefikservices, KubernetesTopologySourceTraefikMiddlewares, KubernetesTopologySourceTraefikMiddlewaretcps, KubernetesTopologySourceApisixApisixroutes, KubernetesTopologySourceApisixApisixupstreams, KubernetesTopologySourceApisixApisixtls]
|
|
40344
|
+
namespace: { type: string, maxLength: 63, pattern: '^$|^[a-z0-9]([a-z0-9-]*[a-z0-9])?$' }
|
|
40345
|
+
allOf:
|
|
40346
|
+
- if:
|
|
40347
|
+
properties:
|
|
40348
|
+
sourceId: { enum: [kubernetes.ingressclasses, gateway.gatewayclasses] }
|
|
40349
|
+
required: [sourceId]
|
|
40350
|
+
then:
|
|
40351
|
+
properties:
|
|
40352
|
+
namespace: { type: string, maxLength: 0 }
|
|
40353
|
+
additionalProperties: false
|
|
40354
|
+
KubernetesTopologySnapshotRequest:
|
|
40355
|
+
type: object
|
|
40356
|
+
required: [queries]
|
|
40357
|
+
properties:
|
|
40358
|
+
queries:
|
|
40359
|
+
type: array
|
|
40360
|
+
minItems: 1
|
|
40361
|
+
maxItems: 64
|
|
40362
|
+
uniqueItems: true
|
|
40363
|
+
items: { $ref: "#/components/schemas/KubernetesTopologySourceQuery" }
|
|
40364
|
+
additionalProperties: false
|
|
40365
|
+
KubernetesTopologySourceObject:
|
|
40366
|
+
type: object
|
|
40367
|
+
required: [resource, content]
|
|
40368
|
+
properties:
|
|
40369
|
+
resource: { $ref: "#/components/schemas/KubernetesResourceRef" }
|
|
40370
|
+
generation: { type: integer, format: int64 }
|
|
40371
|
+
content:
|
|
40372
|
+
type: string
|
|
40373
|
+
maxLength: 65536
|
|
40374
|
+
description: Fixed source-schema projection encoded as JSON. Unknown fields, raw annotations, Secret values, plugin configuration and credential material are removed before transport. This is not an original Kubernetes manifest.
|
|
40375
|
+
additionalProperties: false
|
|
40376
|
+
KubernetesTopologySourceResult:
|
|
40377
|
+
type: object
|
|
40378
|
+
required: [coverage, objects]
|
|
40379
|
+
properties:
|
|
40380
|
+
coverage: { $ref: "#/components/schemas/KubernetesTopologyCoverage" }
|
|
40381
|
+
objects:
|
|
40382
|
+
type: array
|
|
40383
|
+
maxItems: 200
|
|
40384
|
+
items: { $ref: "#/components/schemas/KubernetesTopologySourceObject" }
|
|
40385
|
+
additionalProperties: false
|
|
40386
|
+
KubernetesTopologySnapshot:
|
|
40387
|
+
type: object
|
|
40388
|
+
required: [version, sources]
|
|
40389
|
+
properties:
|
|
40390
|
+
version: { type: string, pattern: '^v1$' }
|
|
40391
|
+
sources:
|
|
40392
|
+
type: array
|
|
40393
|
+
maxItems: 64
|
|
40394
|
+
items: { $ref: "#/components/schemas/KubernetesTopologySourceResult" }
|
|
40395
|
+
additionalProperties: false
|
|
40396
|
+
ResourceMonitoringQuality: {"type":"string","enum":["valid","partial","stale","not_configured","not_collected","unsupported","denied","error","empty"],"x-enum-varnames":["ResourceMonitoringQualityValid","ResourceMonitoringQualityPartial","ResourceMonitoringQualityStale","ResourceMonitoringQualityNotConfigured","ResourceMonitoringQualityNotCollected","ResourceMonitoringQualityUnsupported","ResourceMonitoringQualityDenied","ResourceMonitoringQualityError","ResourceMonitoringQualityEmpty"]}
|
|
40397
|
+
ResourceMonitoringViewName: {"type":"string","enum":["overview","cpu","memory","conntrack","pods"],"x-enum-varnames":["ResourceMonitoringViewOverview","ResourceMonitoringViewCPU","ResourceMonitoringViewMemory","ResourceMonitoringViewConntrack","ResourceMonitoringViewPods"]}
|
|
40398
|
+
ResourceMonitoringQuantity: {"type":"object","additionalProperties":false,"required":["cpuCores","memoryBytes","podSlots"],"properties":{"cpuCores":{"type":"number","format":"double","nullable":true},"memoryBytes":{"type":"number","format":"double","nullable":true},"podSlots":{"type":"number","format":"double","nullable":true}}}
|
|
40399
|
+
ResourceMonitoringNode: {"type":"object","additionalProperties":false,"required":["nodeRef","ready","cordoned","memoryPressure","diskPressure","pidPressure","capacity","allocatable","requests","limits","cpuLimitsComplete","memoryLimitsComplete","boundPods","pendingPods","remainingPodSlots","overflowPodSlots","quality"],"properties":{"nodeRef":{"$ref":"#/components/schemas/KubernetesResourceRef"},"internalIP":{"type":"string"},"os":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"ready":{"type":"string"},"cordoned":{"type":"boolean"},"memoryPressure":{"type":"string"},"diskPressure":{"type":"string"},"pidPressure":{"type":"string"},"capacity":{"$ref":"#/components/schemas/ResourceMonitoringQuantity"},"allocatable":{"$ref":"#/components/schemas/ResourceMonitoringQuantity"},"requests":{"$ref":"#/components/schemas/ResourceMonitoringQuantity"},"limits":{"$ref":"#/components/schemas/ResourceMonitoringQuantity"},"cpuLimitsComplete":{"type":"boolean"},"memoryLimitsComplete":{"type":"boolean"},"boundPods":{"type":"number","format":"double","nullable":true},"pendingPods":{"type":"number","format":"double","nullable":true},"remainingPodSlots":{"type":"number","format":"double","nullable":true},"overflowPodSlots":{"type":"number","format":"double","nullable":true},"quality":{"$ref":"#/components/schemas/ResourceMonitoringQuality"},"observedAt":{"type":"string","format":"date-time"}}}
|
|
40400
|
+
ResourceMonitoringPoint: {"type":"object","additionalProperties":false,"required":["timestamp","value"],"properties":{"timestamp":{"type":"string","format":"date-time"},"value":{"type":"number","format":"double","nullable":true}}}
|
|
40401
|
+
ResourceMonitoringSeries: {"type":"object","additionalProperties":false,"required":["nodeRef","metricKey","unit","quality","source","latest","points"],"properties":{"nodeRef":{"$ref":"#/components/schemas/KubernetesResourceRef"},"metricKey":{"type":"string","maxLength":64},"unit":{"type":"string","enum":["cores","bytes","count","events/s","events","percent"],"x-enum-varnames":["ResourceMonitoringUnitCores","ResourceMonitoringUnitBytes","ResourceMonitoringUnitCount","ResourceMonitoringUnitEventsPerSecond","ResourceMonitoringUnitEvents","ResourceMonitoringUnitPercent"]},"quality":{"$ref":"#/components/schemas/ResourceMonitoringQuality"},"reasonCode":{"type":"string","maxLength":64},"source":{"type":"string"},"sampledAt":{"type":"string","format":"date-time"},"latest":{"type":"number","format":"double","nullable":true},"points":{"type":"array","maxItems":1440,"items":{"$ref":"#/components/schemas/ResourceMonitoringPoint"}}}}
|
|
40402
|
+
ResourceMonitoringPanel: {"type":"object","additionalProperties":false,"required":["key","label","unit","quality","series"],"properties":{"key":{"type":"string","maxLength":64},"label":{"type":"string"},"unit":{"type":"string"},"quality":{"$ref":"#/components/schemas/ResourceMonitoringQuality"},"reasonCode":{"type":"string","maxLength":64},"estimated":{"type":"boolean"},"windowSeconds":{"type":"integer","minimum":300,"maximum":3600},"series":{"type":"array","maxItems":500,"items":{"$ref":"#/components/schemas/ResourceMonitoringSeries"}}}}
|
|
40403
|
+
ResourceMonitoringView: {"type":"object","additionalProperties":false,"required":["clusterId","view","from","to","stepSeconds","generatedAt","snapshotQuality","unscheduledPendingPods","nodes","panels"],"properties":{"clusterId":{"type":"string"},"view":{"$ref":"#/components/schemas/ResourceMonitoringViewName"},"node":{"type":"string"},"from":{"type":"string","format":"date-time"},"to":{"type":"string","format":"date-time"},"stepSeconds":{"type":"integer","minimum":15,"maximum":3600},"generatedAt":{"type":"string","format":"date-time"},"snapshotObservedAt":{"type":"string","format":"date-time"},"snapshotQuality":{"$ref":"#/components/schemas/ResourceMonitoringQuality"},"unscheduledPendingPods":{"type":"number","format":"double","nullable":true},"nodes":{"type":"array","maxItems":500,"items":{"$ref":"#/components/schemas/ResourceMonitoringNode"}},"panels":{"type":"array","maxItems":32,"items":{"$ref":"#/components/schemas/ResourceMonitoringPanel"}},"truncated":{"type":"boolean"},"nodeOptions":{"type":"array","maxItems":500,"items":{"$ref":"#/components/schemas/KubernetesResourceRef"}}}}
|
|
40404
|
+
ResourceMonitoringEnvelope: {"type":"object","additionalProperties":false,"required":["data"],"properties":{"data":{"$ref":"#/components/schemas/ResourceMonitoringView"}}}
|
|
39692
40405
|
KubernetesNetworkTopologySummary:
|
|
39693
40406
|
type: object
|
|
39694
40407
|
required: [entryCount, routeCount, serviceCount, missingServiceCount, backendPodCount, pendingRouteCount]
|
|
@@ -39737,6 +40450,21 @@ components:
|
|
|
39737
40450
|
source: { type: string }
|
|
39738
40451
|
generatedAt: { type: string }
|
|
39739
40452
|
summary: { $ref: "#/components/schemas/KubernetesNetworkTopologySummary" }
|
|
40453
|
+
graphVersion: { type: string, pattern: '^v1$' }
|
|
40454
|
+
nodes:
|
|
40455
|
+
type: array
|
|
40456
|
+
maxItems: 500
|
|
40457
|
+
items: { $ref: "#/components/schemas/KubernetesTopologyGraphNode" }
|
|
40458
|
+
edges:
|
|
40459
|
+
type: array
|
|
40460
|
+
maxItems: 1000
|
|
40461
|
+
items: { $ref: "#/components/schemas/KubernetesTopologyGraphEdge" }
|
|
40462
|
+
coverage:
|
|
40463
|
+
type: array
|
|
40464
|
+
maxItems: 128
|
|
40465
|
+
items: { $ref: "#/components/schemas/KubernetesTopologyCoverage" }
|
|
40466
|
+
observedAt: { type: string, format: date-time }
|
|
40467
|
+
truncated: { type: boolean }
|
|
39740
40468
|
traces:
|
|
39741
40469
|
type: array
|
|
39742
40470
|
items: { $ref: "#/components/schemas/KubernetesNetworkTopologyTrace" }
|
|
@@ -43187,6 +43915,7 @@ components:
|
|
|
43187
43915
|
namespace: { type: string, minLength: 1 }
|
|
43188
43916
|
scopeMode: { $ref: "#/components/schemas/KubernetesResourceScopeMode" }
|
|
43189
43917
|
uid: { type: string }
|
|
43918
|
+
resourceVersion: { type: string }
|
|
43190
43919
|
additionalProperties: false
|
|
43191
43920
|
KubernetesResourceStreamEventType:
|
|
43192
43921
|
type: string
|