@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.
Files changed (67) hide show
  1. package/auth/catalog_generated.go +2 -2
  2. package/auth/gateway_permissions_test.go +48 -0
  3. package/auth/permission-catalog.json +300 -1
  4. package/compat/consumer-revisions.json +1 -1
  5. package/compat/json-schema-ecosystem-0.1.0.json +1 -1
  6. package/compat/openapi-loose-boundaries-0.1.0.json +1 -1
  7. package/fixtures/openapi/KubernetesAgentActionCheck/invalid/unproven-state.json +6 -0
  8. package/fixtures/openapi/KubernetesAgentActionCheck/valid/configured-denied.json +9 -0
  9. package/fixtures/openapi/KubernetesAgentActionProfile/invalid/wildcard.json +1 -0
  10. package/fixtures/openapi/KubernetesAgentActionProfile/valid/workbench.json +1 -0
  11. package/fixtures/openapi/KubernetesClusterRegistrationRequest/invalid/action-profile.json +3 -0
  12. package/fixtures/openapi/KubernetesClusterRegistrationRequest/valid/action-profile.json +5 -0
  13. package/fixtures/openapi/KubernetesNodeListEnvelope/invalid/condition-status-boolean.json +17 -0
  14. package/fixtures/openapi/KubernetesNodeListEnvelope/invalid/taint-effect-missing.json +16 -0
  15. package/fixtures/openapi/KubernetesNodeListEnvelope/valid/legacy-fields-absent.json +11 -0
  16. package/fixtures/openapi/KubernetesNodeListEnvelope/valid/no-taints.json +13 -0
  17. package/fixtures/openapi/KubernetesNodeListEnvelope/valid/ready-cordoned-tainted.json +28 -0
  18. package/fixtures/openapi/KubernetesNodeListEnvelope/valid/unknown-fields-null.json +13 -0
  19. package/fixtures/openapi/KubernetesTopologyCoverage/invalid/empty-as-success.json +5 -0
  20. package/fixtures/openapi/KubernetesTopologyCoverage/valid/not-installed.json +6 -0
  21. package/fixtures/openapi/KubernetesTopologyGraphEdge/invalid/negative-weight.json +8 -0
  22. package/fixtures/openapi/KubernetesTopologyGraphEdge/valid/zero-weight.json +20 -0
  23. package/fixtures/openapi/KubernetesTopologyGraphNode/invalid/fake-flow-kind.json +42 -0
  24. package/fixtures/openapi/KubernetesTopologyGraphNode/valid/rule.json +42 -0
  25. package/fixtures/openapi/KubernetesTopologySnapshot/invalid/raw-source-field.json +33 -0
  26. package/fixtures/openapi/KubernetesTopologySnapshot/valid/projected-source.json +32 -0
  27. package/fixtures/openapi/KubernetesTopologySnapshotRequest/invalid/arbitrary-gvr.json +8 -0
  28. package/fixtures/openapi/KubernetesTopologySnapshotRequest/valid/bounded-sources.json +11 -0
  29. package/fixtures/openapi/KubernetesTopologySourceQuery/invalid/cluster-namespace.json +4 -0
  30. package/fixtures/openapi/KubernetesTopologySourceQuery/valid/all-namespaces.json +4 -0
  31. package/fixtures/openapi/ResourceMonitoringPanel/invalid/unknown-quality.json +7 -0
  32. package/fixtures/openapi/ResourceMonitoringPanel/valid/not-collected.json +7 -0
  33. package/fixtures/openapi/ResourceMonitoringPoint/invalid/string-zero.json +4 -0
  34. package/fixtures/openapi/ResourceMonitoringPoint/valid/missing.json +4 -0
  35. package/fixtures/openapi/ResourceMonitoringPoint/valid/zero.json +4 -0
  36. package/fixtures/openapi/ResourceMonitoringView/invalid/raw-query.json +12 -0
  37. package/fixtures/openapi/ResourceMonitoringView/valid/unconfigured.json +12 -0
  38. package/gen/go/sohaapi/client.go +1 -1
  39. package/gen/go/sohaapi/kubernetes_monitoring_test.go +67 -0
  40. package/gen/go/sohaapi/types.go +1265 -228
  41. package/gen/ts/sohaapi/index.ts +1116 -1
  42. package/openapi/soha-api.json +2497 -302
  43. package/openapi/soha-api.yaml +732 -3
  44. package/openapi/spec_generated.go +3 -3
  45. package/openapi/spec_test.go +34 -0
  46. package/package.json +1 -1
  47. package/resource/agent_access.go +12 -0
  48. package/resource/agent_profiles.go +62 -0
  49. package/resource/agent_profiles_test.go +36 -0
  50. package/resource/kubernetes_kinds.go +73 -0
  51. package/resource/kubernetes_kinds_test.go +38 -0
  52. package/resource/models.go +23 -14
  53. package/resource/network_topology.go +166 -0
  54. package/resource/network_topology_projection.go +208 -0
  55. package/resource/network_topology_projection_test.go +53 -0
  56. package/resource/network_topology_test.go +51 -0
  57. package/resource/network_topology_validation.go +29 -0
  58. package/resource/node_drain.go +34 -0
  59. package/resource/resource_monitoring.go +99 -0
  60. package/resource/runtime/network_topology.go +232 -0
  61. package/resource/runtime/network_topology_test.go +62 -0
  62. package/resource/runtime/node_drain.go +124 -0
  63. package/resource/runtime/node_drain_test.go +95 -0
  64. package/resource/runtime/resource_edit.go +128 -0
  65. package/resource/runtime/resource_edit_test.go +183 -0
  66. package/resource/runtime/resource_monitoring.go +243 -0
  67. package/resource/runtime/resource_monitoring_test.go +88 -0
@@ -1240,7 +1240,13 @@
1240
1240
  "read-only",
1241
1241
  "refresh"
1242
1242
  ],
1243
- "type": "string"
1243
+ "type": "string",
1244
+ "x-enum-varnames": [
1245
+ "CreateAIGatewayOpenAICompatibleProviderResponseParamsXSohaCacheModeDefault",
1246
+ "CreateAIGatewayOpenAICompatibleProviderResponseParamsXSohaCacheModeBypass",
1247
+ "CreateAIGatewayOpenAICompatibleProviderResponseParamsXSohaCacheModeReadOnly",
1248
+ "CreateAIGatewayOpenAICompatibleProviderResponseParamsXSohaCacheModeRefresh"
1249
+ ]
1244
1250
  }
1245
1251
  },
1246
1252
  "SohaRouteTraceHeader": {
@@ -24160,6 +24166,71 @@
24160
24166
  },
24161
24167
  "type": "object"
24162
24168
  },
24169
+ "KubernetesAgentActionCheck": {
24170
+ "additionalProperties": false,
24171
+ "properties": {
24172
+ "action": {
24173
+ "type": "string"
24174
+ },
24175
+ "checkedAt": {
24176
+ "format": "date-time",
24177
+ "type": "string"
24178
+ },
24179
+ "configured": {
24180
+ "enum": [
24181
+ "allowed",
24182
+ "denied",
24183
+ "unknown"
24184
+ ],
24185
+ "type": "string"
24186
+ },
24187
+ "implementation": {
24188
+ "enum": [
24189
+ "supported",
24190
+ "unsupported",
24191
+ "unknown"
24192
+ ],
24193
+ "type": "string"
24194
+ },
24195
+ "kubernetesRBAC": {
24196
+ "enum": [
24197
+ "allowed",
24198
+ "denied",
24199
+ "unknown",
24200
+ "not_applicable"
24201
+ ],
24202
+ "type": "string"
24203
+ },
24204
+ "reasonCode": {
24205
+ "type": "string"
24206
+ },
24207
+ "scope": {
24208
+ "enum": [
24209
+ "cluster"
24210
+ ],
24211
+ "type": "string",
24212
+ "x-enum-varnames": [
24213
+ "KubernetesAgentActionCheckScopeCluster"
24214
+ ]
24215
+ }
24216
+ },
24217
+ "required": [
24218
+ "action",
24219
+ "implementation",
24220
+ "configured",
24221
+ "kubernetesRBAC"
24222
+ ],
24223
+ "type": "object"
24224
+ },
24225
+ "KubernetesAgentActionProfile": {
24226
+ "description": "Installation preset only. Legacy preserves existing permissions; selecting workbench or read-only requires regenerating and reviewing the installation manifest.",
24227
+ "enum": [
24228
+ "legacy",
24229
+ "workbench",
24230
+ "read-only"
24231
+ ],
24232
+ "type": "string"
24233
+ },
24163
24234
  "KubernetesAgentCustomResourceRule": {
24164
24235
  "additionalProperties": false,
24165
24236
  "properties": {
@@ -24385,6 +24456,9 @@
24385
24456
  "KubernetesClusterConnectionDetail": {
24386
24457
  "additionalProperties": false,
24387
24458
  "properties": {
24459
+ "actionProfile": {
24460
+ "$ref": "#/components/schemas/KubernetesAgentActionProfile"
24461
+ },
24388
24462
  "context": {
24389
24463
  "type": "string"
24390
24464
  },
@@ -24476,6 +24550,13 @@
24476
24550
  "KubernetesClusterDiagnostics": {
24477
24551
  "additionalProperties": false,
24478
24552
  "properties": {
24553
+ "actionChecks": {
24554
+ "items": {
24555
+ "$ref": "#/components/schemas/KubernetesAgentActionCheck"
24556
+ },
24557
+ "maxItems": 64,
24558
+ "type": "array"
24559
+ },
24479
24560
  "cacheReady": {
24480
24561
  "type": "boolean"
24481
24562
  },
@@ -24614,6 +24695,9 @@
24614
24695
  "KubernetesClusterRegistrationRequest": {
24615
24696
  "additionalProperties": false,
24616
24697
  "properties": {
24698
+ "agentActionProfile": {
24699
+ "$ref": "#/components/schemas/KubernetesAgentActionProfile"
24700
+ },
24617
24701
  "agentCustomResourceRules": {
24618
24702
  "items": {
24619
24703
  "$ref": "#/components/schemas/KubernetesAgentCustomResourceRule"
@@ -28928,12 +29012,41 @@
28928
29012
  "clusterId": {
28929
29013
  "type": "string"
28930
29014
  },
29015
+ "coverage": {
29016
+ "items": {
29017
+ "$ref": "#/components/schemas/KubernetesTopologyCoverage"
29018
+ },
29019
+ "maxItems": 128,
29020
+ "type": "array"
29021
+ },
29022
+ "edges": {
29023
+ "items": {
29024
+ "$ref": "#/components/schemas/KubernetesTopologyGraphEdge"
29025
+ },
29026
+ "maxItems": 1000,
29027
+ "type": "array"
29028
+ },
28931
29029
  "generatedAt": {
28932
29030
  "type": "string"
28933
29031
  },
29032
+ "graphVersion": {
29033
+ "pattern": "^v1$",
29034
+ "type": "string"
29035
+ },
28934
29036
  "namespace": {
28935
29037
  "type": "string"
28936
29038
  },
29039
+ "nodes": {
29040
+ "items": {
29041
+ "$ref": "#/components/schemas/KubernetesTopologyGraphNode"
29042
+ },
29043
+ "maxItems": 500,
29044
+ "type": "array"
29045
+ },
29046
+ "observedAt": {
29047
+ "format": "date-time",
29048
+ "type": "string"
29049
+ },
28937
29050
  "source": {
28938
29051
  "type": "string"
28939
29052
  },
@@ -28946,6 +29059,9 @@
28946
29059
  },
28947
29060
  "type": "array"
28948
29061
  },
29062
+ "truncated": {
29063
+ "type": "boolean"
29064
+ },
28949
29065
  "warnings": {
28950
29066
  "items": {
28951
29067
  "type": "string"
@@ -29101,6 +29217,14 @@
29101
29217
  },
29102
29218
  "type": "array"
29103
29219
  },
29220
+ "conditions": {
29221
+ "description": "Current Node conditions, independent of scheduling and drain operations.",
29222
+ "items": {
29223
+ "$ref": "#/components/schemas/KubernetesWorkloadCondition"
29224
+ },
29225
+ "nullable": true,
29226
+ "type": "array"
29227
+ },
29104
29228
  "internalIp": {
29105
29229
  "type": "string"
29106
29230
  },
@@ -29123,6 +29247,14 @@
29123
29247
  "status": {
29124
29248
  "type": "string"
29125
29249
  },
29250
+ "taints": {
29251
+ "description": "Current Node spec taints. Empty means none; null or absent means not reported.",
29252
+ "items": {
29253
+ "$ref": "#/components/schemas/KubernetesNodeTaint"
29254
+ },
29255
+ "nullable": true,
29256
+ "type": "array"
29257
+ },
29126
29258
  "unschedulable": {
29127
29259
  "type": "boolean"
29128
29260
  },
@@ -31899,6 +32031,9 @@
31899
32031
  "minLength": 1,
31900
32032
  "type": "string"
31901
32033
  },
32034
+ "resourceVersion": {
32035
+ "type": "string"
32036
+ },
31902
32037
  "scopeMode": {
31903
32038
  "$ref": "#/components/schemas/KubernetesResourceScopeMode"
31904
32039
  },
@@ -33551,6 +33686,558 @@
33551
33686
  ],
33552
33687
  "type": "object"
33553
33688
  },
33689
+ "KubernetesTopologyCondition": {
33690
+ "additionalProperties": false,
33691
+ "properties": {
33692
+ "lastTransitionTime": {
33693
+ "format": "date-time",
33694
+ "type": "string"
33695
+ },
33696
+ "observedGeneration": {
33697
+ "format": "int64",
33698
+ "type": "integer"
33699
+ },
33700
+ "reason": {
33701
+ "maxLength": 128,
33702
+ "type": "string"
33703
+ },
33704
+ "status": {
33705
+ "maxLength": 32,
33706
+ "type": "string"
33707
+ },
33708
+ "type": {
33709
+ "maxLength": 128,
33710
+ "type": "string"
33711
+ }
33712
+ },
33713
+ "required": [
33714
+ "type",
33715
+ "status"
33716
+ ],
33717
+ "type": "object"
33718
+ },
33719
+ "KubernetesTopologyCoverage": {
33720
+ "additionalProperties": false,
33721
+ "properties": {
33722
+ "checkedAt": {
33723
+ "format": "date-time",
33724
+ "type": "string"
33725
+ },
33726
+ "namespace": {
33727
+ "maxLength": 63,
33728
+ "type": "string"
33729
+ },
33730
+ "observedAt": {
33731
+ "format": "date-time",
33732
+ "type": "string"
33733
+ },
33734
+ "provider": {
33735
+ "$ref": "#/components/schemas/KubernetesTopologyProvider"
33736
+ },
33737
+ "reasonCode": {
33738
+ "maxLength": 128,
33739
+ "type": "string"
33740
+ },
33741
+ "sourceId": {
33742
+ "maxLength": 128,
33743
+ "type": "string"
33744
+ },
33745
+ "state": {
33746
+ "enum": [
33747
+ "available",
33748
+ "not_installed",
33749
+ "unsupported",
33750
+ "denied",
33751
+ "error",
33752
+ "partial"
33753
+ ],
33754
+ "type": "string",
33755
+ "x-enum-varnames": [
33756
+ "KubernetesTopologyCoverageStateAvailable",
33757
+ "KubernetesTopologyCoverageStateNotInstalled",
33758
+ "KubernetesTopologyCoverageStateUnsupported",
33759
+ "KubernetesTopologyCoverageStateDenied",
33760
+ "KubernetesTopologyCoverageStateError",
33761
+ "KubernetesTopologyCoverageStatePartial"
33762
+ ]
33763
+ },
33764
+ "supportedKinds": {
33765
+ "items": {
33766
+ "maxLength": 128,
33767
+ "type": "string"
33768
+ },
33769
+ "maxItems": 32,
33770
+ "type": "array"
33771
+ },
33772
+ "truncated": {
33773
+ "type": "boolean"
33774
+ }
33775
+ },
33776
+ "required": [
33777
+ "provider",
33778
+ "sourceId",
33779
+ "state"
33780
+ ],
33781
+ "type": "object"
33782
+ },
33783
+ "KubernetesTopologyGraphEdge": {
33784
+ "additionalProperties": false,
33785
+ "properties": {
33786
+ "id": {
33787
+ "maxLength": 2048,
33788
+ "minLength": 1,
33789
+ "type": "string"
33790
+ },
33791
+ "mirrorPercent": {
33792
+ "maximum": 100,
33793
+ "minimum": 0,
33794
+ "type": "number"
33795
+ },
33796
+ "note": {
33797
+ "maxLength": 2048,
33798
+ "type": "string"
33799
+ },
33800
+ "port": {
33801
+ "maxLength": 64,
33802
+ "type": "string"
33803
+ },
33804
+ "protocol": {
33805
+ "maxLength": 16,
33806
+ "type": "string"
33807
+ },
33808
+ "relation": {
33809
+ "enum": [
33810
+ "matches",
33811
+ "processes",
33812
+ "forwards",
33813
+ "weights",
33814
+ "mirrors",
33815
+ "resolves",
33816
+ "selects"
33817
+ ],
33818
+ "type": "string",
33819
+ "x-enum-varnames": [
33820
+ "KubernetesTopologyGraphEdgeRelationMatches",
33821
+ "KubernetesTopologyGraphEdgeRelationProcesses",
33822
+ "KubernetesTopologyGraphEdgeRelationForwards",
33823
+ "KubernetesTopologyGraphEdgeRelationWeights",
33824
+ "KubernetesTopologyGraphEdgeRelationMirrors",
33825
+ "KubernetesTopologyGraphEdgeRelationResolves",
33826
+ "KubernetesTopologyGraphEdgeRelationSelects"
33827
+ ]
33828
+ },
33829
+ "resolutionState": {
33830
+ "$ref": "#/components/schemas/KubernetesTopologyResolution"
33831
+ },
33832
+ "ruleRef": {
33833
+ "maxLength": 2048,
33834
+ "type": "string"
33835
+ },
33836
+ "source": {
33837
+ "maxLength": 2048,
33838
+ "minLength": 1,
33839
+ "type": "string"
33840
+ },
33841
+ "sourceRef": {
33842
+ "$ref": "#/components/schemas/KubernetesResourceRef"
33843
+ },
33844
+ "target": {
33845
+ "maxLength": 2048,
33846
+ "minLength": 1,
33847
+ "type": "string"
33848
+ },
33849
+ "totalWeight": {
33850
+ "format": "int64",
33851
+ "minimum": 0,
33852
+ "type": "integer"
33853
+ },
33854
+ "weight": {
33855
+ "format": "int64",
33856
+ "minimum": 0,
33857
+ "type": "integer"
33858
+ }
33859
+ },
33860
+ "required": [
33861
+ "id",
33862
+ "source",
33863
+ "target",
33864
+ "relation",
33865
+ "resolutionState"
33866
+ ],
33867
+ "type": "object"
33868
+ },
33869
+ "KubernetesTopologyGraphNode": {
33870
+ "additionalProperties": false,
33871
+ "properties": {
33872
+ "conditions": {
33873
+ "items": {
33874
+ "$ref": "#/components/schemas/KubernetesTopologyCondition"
33875
+ },
33876
+ "maxItems": 64,
33877
+ "type": "array"
33878
+ },
33879
+ "generation": {
33880
+ "format": "int64",
33881
+ "type": "integer"
33882
+ },
33883
+ "id": {
33884
+ "maxLength": 2048,
33885
+ "minLength": 1,
33886
+ "type": "string"
33887
+ },
33888
+ "label": {
33889
+ "maxLength": 1024,
33890
+ "type": "string"
33891
+ },
33892
+ "properties": {
33893
+ "items": {
33894
+ "$ref": "#/components/schemas/KubernetesTopologyProperty"
33895
+ },
33896
+ "maxItems": 64,
33897
+ "type": "array"
33898
+ },
33899
+ "protocol": {
33900
+ "maxLength": 16,
33901
+ "type": "string"
33902
+ },
33903
+ "provider": {
33904
+ "$ref": "#/components/schemas/KubernetesTopologyProvider"
33905
+ },
33906
+ "resolutionState": {
33907
+ "$ref": "#/components/schemas/KubernetesTopologyResolution"
33908
+ },
33909
+ "resource": {
33910
+ "$ref": "#/components/schemas/KubernetesResourceRef"
33911
+ },
33912
+ "rule": {
33913
+ "$ref": "#/components/schemas/KubernetesTopologyRule"
33914
+ },
33915
+ "type": {
33916
+ "enum": [
33917
+ "entry",
33918
+ "rule",
33919
+ "processor",
33920
+ "backend-group",
33921
+ "service",
33922
+ "endpoint-group",
33923
+ "pod",
33924
+ "external"
33925
+ ],
33926
+ "type": "string",
33927
+ "x-enum-varnames": [
33928
+ "KubernetesTopologyGraphNodeTypeEntry",
33929
+ "KubernetesTopologyGraphNodeTypeRule",
33930
+ "KubernetesTopologyGraphNodeTypeProcessor",
33931
+ "KubernetesTopologyGraphNodeTypeBackendGroup",
33932
+ "KubernetesTopologyGraphNodeTypeService",
33933
+ "KubernetesTopologyGraphNodeTypeEndpointGroup",
33934
+ "KubernetesTopologyGraphNodeTypePod",
33935
+ "KubernetesTopologyGraphNodeTypeExternal"
33936
+ ]
33937
+ }
33938
+ },
33939
+ "required": [
33940
+ "id",
33941
+ "type",
33942
+ "label",
33943
+ "provider",
33944
+ "resolutionState"
33945
+ ],
33946
+ "type": "object"
33947
+ },
33948
+ "KubernetesTopologyMatch": {
33949
+ "additionalProperties": false,
33950
+ "properties": {
33951
+ "name": {
33952
+ "maxLength": 128,
33953
+ "type": "string"
33954
+ },
33955
+ "operator": {
33956
+ "maxLength": 32,
33957
+ "type": "string"
33958
+ },
33959
+ "type": {
33960
+ "maxLength": 32,
33961
+ "type": "string"
33962
+ },
33963
+ "value": {
33964
+ "maxLength": 1024,
33965
+ "type": "string"
33966
+ }
33967
+ },
33968
+ "required": [
33969
+ "type"
33970
+ ],
33971
+ "type": "object"
33972
+ },
33973
+ "KubernetesTopologyProperty": {
33974
+ "additionalProperties": false,
33975
+ "properties": {
33976
+ "name": {
33977
+ "maxLength": 64,
33978
+ "type": "string"
33979
+ },
33980
+ "value": {
33981
+ "maxLength": 1024,
33982
+ "type": "string"
33983
+ }
33984
+ },
33985
+ "required": [
33986
+ "name",
33987
+ "value"
33988
+ ],
33989
+ "type": "object"
33990
+ },
33991
+ "KubernetesTopologyProvider": {
33992
+ "enum": [
33993
+ "kubernetes",
33994
+ "gateway",
33995
+ "traefik",
33996
+ "apisix"
33997
+ ],
33998
+ "type": "string",
33999
+ "x-enum-varnames": [
34000
+ "KubernetesTopologyProviderKubernetes",
34001
+ "KubernetesTopologyProviderGateway",
34002
+ "KubernetesTopologyProviderTraefik",
34003
+ "KubernetesTopologyProviderApisix"
34004
+ ]
34005
+ },
34006
+ "KubernetesTopologyResolution": {
34007
+ "enum": [
34008
+ "resolved",
34009
+ "unresolved",
34010
+ "not_found",
34011
+ "not_visible",
34012
+ "no_ready_endpoints",
34013
+ "external",
34014
+ "unsupported_fragment",
34015
+ "unknown"
34016
+ ],
34017
+ "type": "string",
34018
+ "x-enum-varnames": [
34019
+ "KubernetesTopologyResolutionResolved",
34020
+ "KubernetesTopologyResolutionUnresolved",
34021
+ "KubernetesTopologyResolutionNotFound",
34022
+ "KubernetesTopologyResolutionNotVisible",
34023
+ "KubernetesTopologyResolutionNoReadyEndpoints",
34024
+ "KubernetesTopologyResolutionExternal",
34025
+ "KubernetesTopologyResolutionUnsupportedFragment",
34026
+ "KubernetesTopologyResolutionUnknown"
34027
+ ]
34028
+ },
34029
+ "KubernetesTopologyRule": {
34030
+ "additionalProperties": false,
34031
+ "properties": {
34032
+ "index": {
34033
+ "minimum": 0,
34034
+ "type": "integer"
34035
+ },
34036
+ "matchGroups": {
34037
+ "description": "Groups are ORed; matches inside each group are ANDed. Opaque expressions remain a bounded summary and are marked unsupported_fragment.",
34038
+ "items": {
34039
+ "items": {
34040
+ "$ref": "#/components/schemas/KubernetesTopologyMatch"
34041
+ },
34042
+ "maxItems": 64,
34043
+ "type": "array"
34044
+ },
34045
+ "maxItems": 64,
34046
+ "type": "array"
34047
+ },
34048
+ "matchSummary": {
34049
+ "maxLength": 2048,
34050
+ "type": "string"
34051
+ },
34052
+ "name": {
34053
+ "maxLength": 253,
34054
+ "type": "string"
34055
+ },
34056
+ "priority": {
34057
+ "format": "int64",
34058
+ "type": "integer"
34059
+ },
34060
+ "tlsMode": {
34061
+ "maxLength": 64,
34062
+ "type": "string"
34063
+ }
34064
+ },
34065
+ "required": [
34066
+ "index"
34067
+ ],
34068
+ "type": "object"
34069
+ },
34070
+ "KubernetesTopologySnapshot": {
34071
+ "additionalProperties": false,
34072
+ "properties": {
34073
+ "sources": {
34074
+ "items": {
34075
+ "$ref": "#/components/schemas/KubernetesTopologySourceResult"
34076
+ },
34077
+ "maxItems": 64,
34078
+ "type": "array"
34079
+ },
34080
+ "version": {
34081
+ "pattern": "^v1$",
34082
+ "type": "string"
34083
+ }
34084
+ },
34085
+ "required": [
34086
+ "version",
34087
+ "sources"
34088
+ ],
34089
+ "type": "object"
34090
+ },
34091
+ "KubernetesTopologySnapshotRequest": {
34092
+ "additionalProperties": false,
34093
+ "properties": {
34094
+ "queries": {
34095
+ "items": {
34096
+ "$ref": "#/components/schemas/KubernetesTopologySourceQuery"
34097
+ },
34098
+ "maxItems": 64,
34099
+ "minItems": 1,
34100
+ "type": "array",
34101
+ "uniqueItems": true
34102
+ }
34103
+ },
34104
+ "required": [
34105
+ "queries"
34106
+ ],
34107
+ "type": "object"
34108
+ },
34109
+ "KubernetesTopologySourceObject": {
34110
+ "additionalProperties": false,
34111
+ "properties": {
34112
+ "content": {
34113
+ "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.",
34114
+ "maxLength": 65536,
34115
+ "type": "string"
34116
+ },
34117
+ "generation": {
34118
+ "format": "int64",
34119
+ "type": "integer"
34120
+ },
34121
+ "resource": {
34122
+ "$ref": "#/components/schemas/KubernetesResourceRef"
34123
+ }
34124
+ },
34125
+ "required": [
34126
+ "resource",
34127
+ "content"
34128
+ ],
34129
+ "type": "object"
34130
+ },
34131
+ "KubernetesTopologySourceQuery": {
34132
+ "additionalProperties": false,
34133
+ "allOf": [
34134
+ {
34135
+ "if": {
34136
+ "properties": {
34137
+ "sourceId": {
34138
+ "enum": [
34139
+ "kubernetes.ingressclasses",
34140
+ "gateway.gatewayclasses"
34141
+ ]
34142
+ }
34143
+ },
34144
+ "required": [
34145
+ "sourceId"
34146
+ ]
34147
+ },
34148
+ "then": {
34149
+ "properties": {
34150
+ "namespace": {
34151
+ "maxLength": 0,
34152
+ "type": "string"
34153
+ }
34154
+ }
34155
+ }
34156
+ }
34157
+ ],
34158
+ "properties": {
34159
+ "namespace": {
34160
+ "maxLength": 63,
34161
+ "pattern": "^$|^[a-z0-9]([a-z0-9-]*[a-z0-9])?$",
34162
+ "type": "string"
34163
+ },
34164
+ "sourceId": {
34165
+ "enum": [
34166
+ "kubernetes.services",
34167
+ "kubernetes.pods",
34168
+ "kubernetes.endpointslices",
34169
+ "kubernetes.ingresses",
34170
+ "kubernetes.ingressclasses",
34171
+ "gateway.gateways",
34172
+ "gateway.gatewayclasses",
34173
+ "gateway.httproutes",
34174
+ "gateway.grpcroutes",
34175
+ "gateway.tcproutes",
34176
+ "gateway.tlsroutes",
34177
+ "gateway.udproutes",
34178
+ "gateway.referencegrants",
34179
+ "traefik.ingressroutes",
34180
+ "traefik.ingressroutetcps",
34181
+ "traefik.ingressrouteudps",
34182
+ "traefik.traefikservices",
34183
+ "traefik.middlewares",
34184
+ "traefik.middlewaretcps",
34185
+ "apisix.apisixroutes",
34186
+ "apisix.apisixupstreams",
34187
+ "apisix.apisixtls"
34188
+ ],
34189
+ "type": "string",
34190
+ "x-enum-varnames": [
34191
+ "KubernetesTopologySourceKubernetesServices",
34192
+ "KubernetesTopologySourceKubernetesPods",
34193
+ "KubernetesTopologySourceKubernetesEndpointslices",
34194
+ "KubernetesTopologySourceKubernetesIngresses",
34195
+ "KubernetesTopologySourceKubernetesIngressclasses",
34196
+ "KubernetesTopologySourceGatewayGateways",
34197
+ "KubernetesTopologySourceGatewayGatewayclasses",
34198
+ "KubernetesTopologySourceGatewayHttproutes",
34199
+ "KubernetesTopologySourceGatewayGrpcroutes",
34200
+ "KubernetesTopologySourceGatewayTcproutes",
34201
+ "KubernetesTopologySourceGatewayTlsroutes",
34202
+ "KubernetesTopologySourceGatewayUdproutes",
34203
+ "KubernetesTopologySourceGatewayReferencegrants",
34204
+ "KubernetesTopologySourceTraefikIngressroutes",
34205
+ "KubernetesTopologySourceTraefikIngressroutetcps",
34206
+ "KubernetesTopologySourceTraefikIngressrouteudps",
34207
+ "KubernetesTopologySourceTraefikTraefikservices",
34208
+ "KubernetesTopologySourceTraefikMiddlewares",
34209
+ "KubernetesTopologySourceTraefikMiddlewaretcps",
34210
+ "KubernetesTopologySourceApisixApisixroutes",
34211
+ "KubernetesTopologySourceApisixApisixupstreams",
34212
+ "KubernetesTopologySourceApisixApisixtls"
34213
+ ]
34214
+ }
34215
+ },
34216
+ "required": [
34217
+ "sourceId"
34218
+ ],
34219
+ "type": "object"
34220
+ },
34221
+ "KubernetesTopologySourceResult": {
34222
+ "additionalProperties": false,
34223
+ "properties": {
34224
+ "coverage": {
34225
+ "$ref": "#/components/schemas/KubernetesTopologyCoverage"
34226
+ },
34227
+ "objects": {
34228
+ "items": {
34229
+ "$ref": "#/components/schemas/KubernetesTopologySourceObject"
34230
+ },
34231
+ "maxItems": 200,
34232
+ "type": "array"
34233
+ }
34234
+ },
34235
+ "required": [
34236
+ "coverage",
34237
+ "objects"
34238
+ ],
34239
+ "type": "object"
34240
+ },
33554
34241
  "KubernetesWorkloadCondition": {
33555
34242
  "additionalProperties": false,
33556
34243
  "properties": {
@@ -53062,6 +53749,395 @@
53062
53749
  ],
53063
53750
  "type": "object"
53064
53751
  },
53752
+ "ResourceMonitoringEnvelope": {
53753
+ "additionalProperties": false,
53754
+ "properties": {
53755
+ "data": {
53756
+ "$ref": "#/components/schemas/ResourceMonitoringView"
53757
+ }
53758
+ },
53759
+ "required": [
53760
+ "data"
53761
+ ],
53762
+ "type": "object"
53763
+ },
53764
+ "ResourceMonitoringNode": {
53765
+ "additionalProperties": false,
53766
+ "properties": {
53767
+ "allocatable": {
53768
+ "$ref": "#/components/schemas/ResourceMonitoringQuantity"
53769
+ },
53770
+ "boundPods": {
53771
+ "format": "double",
53772
+ "nullable": true,
53773
+ "type": "number"
53774
+ },
53775
+ "capacity": {
53776
+ "$ref": "#/components/schemas/ResourceMonitoringQuantity"
53777
+ },
53778
+ "cordoned": {
53779
+ "type": "boolean"
53780
+ },
53781
+ "cpuLimitsComplete": {
53782
+ "type": "boolean"
53783
+ },
53784
+ "createdAt": {
53785
+ "format": "date-time",
53786
+ "type": "string"
53787
+ },
53788
+ "diskPressure": {
53789
+ "type": "string"
53790
+ },
53791
+ "internalIP": {
53792
+ "type": "string"
53793
+ },
53794
+ "limits": {
53795
+ "$ref": "#/components/schemas/ResourceMonitoringQuantity"
53796
+ },
53797
+ "memoryLimitsComplete": {
53798
+ "type": "boolean"
53799
+ },
53800
+ "memoryPressure": {
53801
+ "type": "string"
53802
+ },
53803
+ "nodeRef": {
53804
+ "$ref": "#/components/schemas/KubernetesResourceRef"
53805
+ },
53806
+ "observedAt": {
53807
+ "format": "date-time",
53808
+ "type": "string"
53809
+ },
53810
+ "os": {
53811
+ "type": "string"
53812
+ },
53813
+ "overflowPodSlots": {
53814
+ "format": "double",
53815
+ "nullable": true,
53816
+ "type": "number"
53817
+ },
53818
+ "pendingPods": {
53819
+ "format": "double",
53820
+ "nullable": true,
53821
+ "type": "number"
53822
+ },
53823
+ "pidPressure": {
53824
+ "type": "string"
53825
+ },
53826
+ "quality": {
53827
+ "$ref": "#/components/schemas/ResourceMonitoringQuality"
53828
+ },
53829
+ "ready": {
53830
+ "type": "string"
53831
+ },
53832
+ "remainingPodSlots": {
53833
+ "format": "double",
53834
+ "nullable": true,
53835
+ "type": "number"
53836
+ },
53837
+ "requests": {
53838
+ "$ref": "#/components/schemas/ResourceMonitoringQuantity"
53839
+ }
53840
+ },
53841
+ "required": [
53842
+ "nodeRef",
53843
+ "ready",
53844
+ "cordoned",
53845
+ "memoryPressure",
53846
+ "diskPressure",
53847
+ "pidPressure",
53848
+ "capacity",
53849
+ "allocatable",
53850
+ "requests",
53851
+ "limits",
53852
+ "cpuLimitsComplete",
53853
+ "memoryLimitsComplete",
53854
+ "boundPods",
53855
+ "pendingPods",
53856
+ "remainingPodSlots",
53857
+ "overflowPodSlots",
53858
+ "quality"
53859
+ ],
53860
+ "type": "object"
53861
+ },
53862
+ "ResourceMonitoringPanel": {
53863
+ "additionalProperties": false,
53864
+ "properties": {
53865
+ "estimated": {
53866
+ "type": "boolean"
53867
+ },
53868
+ "key": {
53869
+ "maxLength": 64,
53870
+ "type": "string"
53871
+ },
53872
+ "label": {
53873
+ "type": "string"
53874
+ },
53875
+ "quality": {
53876
+ "$ref": "#/components/schemas/ResourceMonitoringQuality"
53877
+ },
53878
+ "reasonCode": {
53879
+ "maxLength": 64,
53880
+ "type": "string"
53881
+ },
53882
+ "series": {
53883
+ "items": {
53884
+ "$ref": "#/components/schemas/ResourceMonitoringSeries"
53885
+ },
53886
+ "maxItems": 500,
53887
+ "type": "array"
53888
+ },
53889
+ "unit": {
53890
+ "type": "string"
53891
+ },
53892
+ "windowSeconds": {
53893
+ "maximum": 3600,
53894
+ "minimum": 300,
53895
+ "type": "integer"
53896
+ }
53897
+ },
53898
+ "required": [
53899
+ "key",
53900
+ "label",
53901
+ "unit",
53902
+ "quality",
53903
+ "series"
53904
+ ],
53905
+ "type": "object"
53906
+ },
53907
+ "ResourceMonitoringPoint": {
53908
+ "additionalProperties": false,
53909
+ "properties": {
53910
+ "timestamp": {
53911
+ "format": "date-time",
53912
+ "type": "string"
53913
+ },
53914
+ "value": {
53915
+ "format": "double",
53916
+ "nullable": true,
53917
+ "type": "number"
53918
+ }
53919
+ },
53920
+ "required": [
53921
+ "timestamp",
53922
+ "value"
53923
+ ],
53924
+ "type": "object"
53925
+ },
53926
+ "ResourceMonitoringQuality": {
53927
+ "enum": [
53928
+ "valid",
53929
+ "partial",
53930
+ "stale",
53931
+ "not_configured",
53932
+ "not_collected",
53933
+ "unsupported",
53934
+ "denied",
53935
+ "error",
53936
+ "empty"
53937
+ ],
53938
+ "type": "string",
53939
+ "x-enum-varnames": [
53940
+ "ResourceMonitoringQualityValid",
53941
+ "ResourceMonitoringQualityPartial",
53942
+ "ResourceMonitoringQualityStale",
53943
+ "ResourceMonitoringQualityNotConfigured",
53944
+ "ResourceMonitoringQualityNotCollected",
53945
+ "ResourceMonitoringQualityUnsupported",
53946
+ "ResourceMonitoringQualityDenied",
53947
+ "ResourceMonitoringQualityError",
53948
+ "ResourceMonitoringQualityEmpty"
53949
+ ]
53950
+ },
53951
+ "ResourceMonitoringQuantity": {
53952
+ "additionalProperties": false,
53953
+ "properties": {
53954
+ "cpuCores": {
53955
+ "format": "double",
53956
+ "nullable": true,
53957
+ "type": "number"
53958
+ },
53959
+ "memoryBytes": {
53960
+ "format": "double",
53961
+ "nullable": true,
53962
+ "type": "number"
53963
+ },
53964
+ "podSlots": {
53965
+ "format": "double",
53966
+ "nullable": true,
53967
+ "type": "number"
53968
+ }
53969
+ },
53970
+ "required": [
53971
+ "cpuCores",
53972
+ "memoryBytes",
53973
+ "podSlots"
53974
+ ],
53975
+ "type": "object"
53976
+ },
53977
+ "ResourceMonitoringSeries": {
53978
+ "additionalProperties": false,
53979
+ "properties": {
53980
+ "latest": {
53981
+ "format": "double",
53982
+ "nullable": true,
53983
+ "type": "number"
53984
+ },
53985
+ "metricKey": {
53986
+ "maxLength": 64,
53987
+ "type": "string"
53988
+ },
53989
+ "nodeRef": {
53990
+ "$ref": "#/components/schemas/KubernetesResourceRef"
53991
+ },
53992
+ "points": {
53993
+ "items": {
53994
+ "$ref": "#/components/schemas/ResourceMonitoringPoint"
53995
+ },
53996
+ "maxItems": 1440,
53997
+ "type": "array"
53998
+ },
53999
+ "quality": {
54000
+ "$ref": "#/components/schemas/ResourceMonitoringQuality"
54001
+ },
54002
+ "reasonCode": {
54003
+ "maxLength": 64,
54004
+ "type": "string"
54005
+ },
54006
+ "sampledAt": {
54007
+ "format": "date-time",
54008
+ "type": "string"
54009
+ },
54010
+ "source": {
54011
+ "type": "string"
54012
+ },
54013
+ "unit": {
54014
+ "enum": [
54015
+ "cores",
54016
+ "bytes",
54017
+ "count",
54018
+ "events/s",
54019
+ "events",
54020
+ "percent"
54021
+ ],
54022
+ "type": "string",
54023
+ "x-enum-varnames": [
54024
+ "ResourceMonitoringUnitCores",
54025
+ "ResourceMonitoringUnitBytes",
54026
+ "ResourceMonitoringUnitCount",
54027
+ "ResourceMonitoringUnitEventsPerSecond",
54028
+ "ResourceMonitoringUnitEvents",
54029
+ "ResourceMonitoringUnitPercent"
54030
+ ]
54031
+ }
54032
+ },
54033
+ "required": [
54034
+ "nodeRef",
54035
+ "metricKey",
54036
+ "unit",
54037
+ "quality",
54038
+ "source",
54039
+ "latest",
54040
+ "points"
54041
+ ],
54042
+ "type": "object"
54043
+ },
54044
+ "ResourceMonitoringView": {
54045
+ "additionalProperties": false,
54046
+ "properties": {
54047
+ "clusterId": {
54048
+ "type": "string"
54049
+ },
54050
+ "from": {
54051
+ "format": "date-time",
54052
+ "type": "string"
54053
+ },
54054
+ "generatedAt": {
54055
+ "format": "date-time",
54056
+ "type": "string"
54057
+ },
54058
+ "node": {
54059
+ "type": "string"
54060
+ },
54061
+ "nodeOptions": {
54062
+ "items": {
54063
+ "$ref": "#/components/schemas/KubernetesResourceRef"
54064
+ },
54065
+ "maxItems": 500,
54066
+ "type": "array"
54067
+ },
54068
+ "nodes": {
54069
+ "items": {
54070
+ "$ref": "#/components/schemas/ResourceMonitoringNode"
54071
+ },
54072
+ "maxItems": 500,
54073
+ "type": "array"
54074
+ },
54075
+ "panels": {
54076
+ "items": {
54077
+ "$ref": "#/components/schemas/ResourceMonitoringPanel"
54078
+ },
54079
+ "maxItems": 32,
54080
+ "type": "array"
54081
+ },
54082
+ "snapshotObservedAt": {
54083
+ "format": "date-time",
54084
+ "type": "string"
54085
+ },
54086
+ "snapshotQuality": {
54087
+ "$ref": "#/components/schemas/ResourceMonitoringQuality"
54088
+ },
54089
+ "stepSeconds": {
54090
+ "maximum": 3600,
54091
+ "minimum": 15,
54092
+ "type": "integer"
54093
+ },
54094
+ "to": {
54095
+ "format": "date-time",
54096
+ "type": "string"
54097
+ },
54098
+ "truncated": {
54099
+ "type": "boolean"
54100
+ },
54101
+ "unscheduledPendingPods": {
54102
+ "format": "double",
54103
+ "nullable": true,
54104
+ "type": "number"
54105
+ },
54106
+ "view": {
54107
+ "$ref": "#/components/schemas/ResourceMonitoringViewName"
54108
+ }
54109
+ },
54110
+ "required": [
54111
+ "clusterId",
54112
+ "view",
54113
+ "from",
54114
+ "to",
54115
+ "stepSeconds",
54116
+ "generatedAt",
54117
+ "snapshotQuality",
54118
+ "unscheduledPendingPods",
54119
+ "nodes",
54120
+ "panels"
54121
+ ],
54122
+ "type": "object"
54123
+ },
54124
+ "ResourceMonitoringViewName": {
54125
+ "enum": [
54126
+ "overview",
54127
+ "cpu",
54128
+ "memory",
54129
+ "conntrack",
54130
+ "pods"
54131
+ ],
54132
+ "type": "string",
54133
+ "x-enum-varnames": [
54134
+ "ResourceMonitoringViewOverview",
54135
+ "ResourceMonitoringViewCPU",
54136
+ "ResourceMonitoringViewMemory",
54137
+ "ResourceMonitoringViewConntrack",
54138
+ "ResourceMonitoringViewPods"
54139
+ ]
54140
+ },
53065
54141
  "ResourceReadRequest": {
53066
54142
  "additionalProperties": false,
53067
54143
  "properties": {
@@ -62956,7 +64032,13 @@
62956
64032
  "medium",
62957
64033
  "high"
62958
64034
  ],
62959
- "type": "string"
64035
+ "type": "string",
64036
+ "x-enum-varnames": [
64037
+ "WorkbenchModelPreferencesReasoningEffortAuto",
64038
+ "WorkbenchModelPreferencesReasoningEffortLow",
64039
+ "WorkbenchModelPreferencesReasoningEffortMedium",
64040
+ "WorkbenchModelPreferencesReasoningEffortHigh"
64041
+ ]
62960
64042
  }
62961
64043
  },
62962
64044
  "type": "object"
@@ -64723,7 +65805,7 @@
64723
65805
  "info": {
64724
65806
  "description": "Public OpenSoha core API contract. This first contract focuses on stable cross-repository boundaries: auth, health, runner-facing control-plane callbacks, AI Gateway, and MCP capability discovery.\n",
64725
65807
  "title": "Soha API",
64726
- "version": "0.1.24"
65808
+ "version": "0.1.25"
64727
65809
  },
64728
65810
  "openapi": "3.1.0",
64729
65811
  "paths": {
@@ -75646,42 +76728,382 @@
75646
76728
  ],
75647
76729
  "x-soha-permissions": {
75648
76730
  "keys": [
75649
- "platform.clusters.view"
76731
+ "platform.clusters.view"
76732
+ ],
76733
+ "mode": "all"
76734
+ }
76735
+ },
76736
+ "post": {
76737
+ "description": "Update only the standard Agent container to an explicit official release version using the Agent connection. Kubernetes owns the rollout; HTTP 202 means the image update was accepted, not that rollout completed. Non-direct resource owners must use their owning delivery tool.",
76738
+ "operationId": "upgradeClusterAgent",
76739
+ "parameters": [
76740
+ {
76741
+ "$ref": "#/components/parameters/ClusterID"
76742
+ }
76743
+ ],
76744
+ "requestBody": {
76745
+ "content": {
76746
+ "application/json": {
76747
+ "schema": {
76748
+ "$ref": "#/components/schemas/ClusterAgentUpgradeInput"
76749
+ }
76750
+ }
76751
+ },
76752
+ "required": true
76753
+ },
76754
+ "responses": {
76755
+ "202": {
76756
+ "content": {
76757
+ "application/json": {
76758
+ "schema": {
76759
+ "$ref": "#/components/schemas/ClusterAgentUpgradeResultEnvelope"
76760
+ }
76761
+ }
76762
+ },
76763
+ "description": "Image update accepted. Read upgrade status until the target version reconnects and rollout is healthy."
76764
+ },
76765
+ "400": {
76766
+ "$ref": "#/components/responses/Error"
76767
+ },
76768
+ "403": {
76769
+ "$ref": "#/components/responses/Error"
76770
+ },
76771
+ "404": {
76772
+ "$ref": "#/components/responses/Error"
76773
+ },
76774
+ "409": {
76775
+ "$ref": "#/components/responses/Error"
76776
+ },
76777
+ "503": {
76778
+ "$ref": "#/components/responses/Error"
76779
+ }
76780
+ },
76781
+ "tags": [
76782
+ "Platform"
76783
+ ],
76784
+ "x-soha-permissions": {
76785
+ "keys": [
76786
+ "platform.clusters.update"
76787
+ ],
76788
+ "mode": "all"
76789
+ }
76790
+ }
76791
+ },
76792
+ "/clusters/{clusterID}/configuration/configmaps": {
76793
+ "get": {
76794
+ "operationId": "listKubernetesConfigMaps",
76795
+ "parameters": [
76796
+ {
76797
+ "$ref": "#/components/parameters/ClusterID"
76798
+ },
76799
+ {
76800
+ "$ref": "#/components/parameters/KubernetesNamespaceQuery"
76801
+ }
76802
+ ],
76803
+ "responses": {
76804
+ "200": {
76805
+ "content": {
76806
+ "application/json": {
76807
+ "schema": {
76808
+ "$ref": "#/components/schemas/KubernetesConfigMapListEnvelope"
76809
+ }
76810
+ }
76811
+ },
76812
+ "description": "Kubernetes ConfigMaps visible in the selected cluster and namespace scope."
76813
+ },
76814
+ "403": {
76815
+ "$ref": "#/components/responses/Error"
76816
+ },
76817
+ "404": {
76818
+ "$ref": "#/components/responses/Error"
76819
+ },
76820
+ "503": {
76821
+ "$ref": "#/components/responses/Error"
76822
+ }
76823
+ },
76824
+ "tags": [
76825
+ "Platform"
76826
+ ],
76827
+ "x-soha-implementation-status": "implemented",
76828
+ "x-soha-permissions": {
76829
+ "keys": [
76830
+ "platform.configuration.config-maps.view"
76831
+ ],
76832
+ "mode": "all"
76833
+ }
76834
+ }
76835
+ },
76836
+ "/clusters/{clusterID}/configuration/configmaps/{name}/data": {
76837
+ "put": {
76838
+ "operationId": "updateKubernetesConfigMapData",
76839
+ "parameters": [
76840
+ {
76841
+ "$ref": "#/components/parameters/ClusterID"
76842
+ },
76843
+ {
76844
+ "$ref": "#/components/parameters/KubernetesResourceName"
76845
+ },
76846
+ {
76847
+ "$ref": "#/components/parameters/KubernetesNamespaceQuery"
76848
+ }
76849
+ ],
76850
+ "requestBody": {
76851
+ "content": {
76852
+ "application/json": {
76853
+ "schema": {
76854
+ "$ref": "#/components/schemas/KubernetesConfigMapDataInput"
76855
+ }
76856
+ }
76857
+ },
76858
+ "required": true
76859
+ },
76860
+ "responses": {
76861
+ "200": {
76862
+ "content": {
76863
+ "application/json": {
76864
+ "schema": {
76865
+ "$ref": "#/components/schemas/KubernetesConfigMapDetailEnvelope"
76866
+ }
76867
+ }
76868
+ },
76869
+ "description": "Kubernetes operation result."
76870
+ },
76871
+ "400": {
76872
+ "$ref": "#/components/responses/Error"
76873
+ },
76874
+ "403": {
76875
+ "$ref": "#/components/responses/Error"
76876
+ },
76877
+ "404": {
76878
+ "$ref": "#/components/responses/Error"
76879
+ },
76880
+ "409": {
76881
+ "$ref": "#/components/responses/Error"
76882
+ },
76883
+ "503": {
76884
+ "$ref": "#/components/responses/Error"
76885
+ }
76886
+ },
76887
+ "tags": [
76888
+ "Platform"
76889
+ ],
76890
+ "x-soha-implementation-status": "implemented",
76891
+ "x-soha-permissions": {
76892
+ "keys": [
76893
+ "platform.configuration.config-maps.update"
76894
+ ],
76895
+ "mode": "all"
76896
+ }
76897
+ }
76898
+ },
76899
+ "/clusters/{clusterID}/configuration/configmaps/{name}/detail": {
76900
+ "get": {
76901
+ "operationId": "getKubernetesConfigMapDetail",
76902
+ "parameters": [
76903
+ {
76904
+ "$ref": "#/components/parameters/ClusterID"
76905
+ },
76906
+ {
76907
+ "$ref": "#/components/parameters/KubernetesResourceName"
76908
+ },
76909
+ {
76910
+ "$ref": "#/components/parameters/KubernetesNamespaceQuery"
76911
+ }
76912
+ ],
76913
+ "responses": {
76914
+ "200": {
76915
+ "content": {
76916
+ "application/json": {
76917
+ "schema": {
76918
+ "$ref": "#/components/schemas/KubernetesConfigMapDetailEnvelope"
76919
+ }
76920
+ }
76921
+ },
76922
+ "description": "Kubernetes ConfigMap metadata and data visible to the authenticated principal."
76923
+ },
76924
+ "403": {
76925
+ "$ref": "#/components/responses/Error"
76926
+ },
76927
+ "404": {
76928
+ "$ref": "#/components/responses/Error"
76929
+ },
76930
+ "503": {
76931
+ "$ref": "#/components/responses/Error"
76932
+ }
76933
+ },
76934
+ "tags": [
76935
+ "Platform"
76936
+ ],
76937
+ "x-soha-implementation-status": "implemented",
76938
+ "x-soha-permissions": {
76939
+ "keys": [
76940
+ "platform.configuration.config-maps.view"
76941
+ ],
76942
+ "mode": "all"
76943
+ }
76944
+ }
76945
+ },
76946
+ "/clusters/{clusterID}/configuration/configmaps/{name}/references": {
76947
+ "get": {
76948
+ "operationId": "listKubernetesConfigMapReferences",
76949
+ "parameters": [
76950
+ {
76951
+ "$ref": "#/components/parameters/ClusterID"
76952
+ },
76953
+ {
76954
+ "$ref": "#/components/parameters/KubernetesResourceName"
76955
+ },
76956
+ {
76957
+ "$ref": "#/components/parameters/KubernetesNamespaceQuery"
76958
+ }
76959
+ ],
76960
+ "responses": {
76961
+ "200": {
76962
+ "content": {
76963
+ "application/json": {
76964
+ "schema": {
76965
+ "$ref": "#/components/schemas/KubernetesConfigReferenceListEnvelope"
76966
+ }
76967
+ }
76968
+ },
76969
+ "description": "Workloads and resources that reference the selected ConfigMap."
76970
+ },
76971
+ "403": {
76972
+ "$ref": "#/components/responses/Error"
76973
+ },
76974
+ "404": {
76975
+ "$ref": "#/components/responses/Error"
76976
+ },
76977
+ "503": {
76978
+ "$ref": "#/components/responses/Error"
76979
+ }
76980
+ },
76981
+ "tags": [
76982
+ "Platform"
76983
+ ],
76984
+ "x-soha-implementation-status": "implemented",
76985
+ "x-soha-permissions": {
76986
+ "keys": [
76987
+ "platform.configuration.config-maps.view"
76988
+ ],
76989
+ "mode": "all"
76990
+ }
76991
+ }
76992
+ },
76993
+ "/clusters/{clusterID}/configuration/hpas": {
76994
+ "get": {
76995
+ "operationId": "listKubernetesHorizontalPodAutoscalers",
76996
+ "parameters": [
76997
+ {
76998
+ "$ref": "#/components/parameters/ClusterID"
76999
+ },
77000
+ {
77001
+ "$ref": "#/components/parameters/KubernetesNamespaceQuery"
77002
+ }
77003
+ ],
77004
+ "responses": {
77005
+ "200": {
77006
+ "content": {
77007
+ "application/json": {
77008
+ "schema": {
77009
+ "$ref": "#/components/schemas/KubernetesHorizontalPodAutoscalerListEnvelope"
77010
+ }
77011
+ }
77012
+ },
77013
+ "description": "HorizontalPodAutoscalers visible in the selected scope."
77014
+ },
77015
+ "403": {
77016
+ "$ref": "#/components/responses/Error"
77017
+ },
77018
+ "404": {
77019
+ "$ref": "#/components/responses/Error"
77020
+ },
77021
+ "503": {
77022
+ "$ref": "#/components/responses/Error"
77023
+ }
77024
+ },
77025
+ "tags": [
77026
+ "Platform"
77027
+ ],
77028
+ "x-soha-implementation-status": "implemented",
77029
+ "x-soha-permissions": {
77030
+ "keys": [
77031
+ "platform.configuration.horizontal-pod-autoscalers.view"
77032
+ ],
77033
+ "mode": "all"
77034
+ }
77035
+ }
77036
+ },
77037
+ "/clusters/{clusterID}/configuration/hpas/{name}": {
77038
+ "delete": {
77039
+ "operationId": "deleteKubernetesHorizontalPodAutoscaler",
77040
+ "parameters": [
77041
+ {
77042
+ "$ref": "#/components/parameters/ClusterID"
77043
+ },
77044
+ {
77045
+ "$ref": "#/components/parameters/KubernetesResourceName"
77046
+ },
77047
+ {
77048
+ "$ref": "#/components/parameters/KubernetesNamespaceQuery"
77049
+ }
77050
+ ],
77051
+ "responses": {
77052
+ "204": {
77053
+ "description": "Resource deleted."
77054
+ },
77055
+ "400": {
77056
+ "$ref": "#/components/responses/Error"
77057
+ },
77058
+ "403": {
77059
+ "$ref": "#/components/responses/Error"
77060
+ },
77061
+ "404": {
77062
+ "$ref": "#/components/responses/Error"
77063
+ },
77064
+ "409": {
77065
+ "$ref": "#/components/responses/Error"
77066
+ },
77067
+ "503": {
77068
+ "$ref": "#/components/responses/Error"
77069
+ }
77070
+ },
77071
+ "tags": [
77072
+ "Platform"
77073
+ ],
77074
+ "x-soha-implementation-status": "implemented",
77075
+ "x-soha-permissions": {
77076
+ "keys": [
77077
+ "platform.configuration.horizontal-pod-autoscalers.delete"
75650
77078
  ],
75651
77079
  "mode": "all"
75652
77080
  }
75653
- },
75654
- "post": {
75655
- "description": "Update only the standard Agent container to an explicit official release version using the Agent connection. Kubernetes owns the rollout; HTTP 202 means the image update was accepted, not that rollout completed. Non-direct resource owners must use their owning delivery tool.",
75656
- "operationId": "upgradeClusterAgent",
77081
+ }
77082
+ },
77083
+ "/clusters/{clusterID}/configuration/hpas/{name}/detail": {
77084
+ "get": {
77085
+ "operationId": "getKubernetesHorizontalPodAutoscalerDetail",
75657
77086
  "parameters": [
75658
77087
  {
75659
77088
  "$ref": "#/components/parameters/ClusterID"
77089
+ },
77090
+ {
77091
+ "$ref": "#/components/parameters/KubernetesResourceName"
77092
+ },
77093
+ {
77094
+ "$ref": "#/components/parameters/KubernetesNamespaceQuery"
75660
77095
  }
75661
77096
  ],
75662
- "requestBody": {
75663
- "content": {
75664
- "application/json": {
75665
- "schema": {
75666
- "$ref": "#/components/schemas/ClusterAgentUpgradeInput"
75667
- }
75668
- }
75669
- },
75670
- "required": true
75671
- },
75672
77097
  "responses": {
75673
- "202": {
77098
+ "200": {
75674
77099
  "content": {
75675
77100
  "application/json": {
75676
77101
  "schema": {
75677
- "$ref": "#/components/schemas/ClusterAgentUpgradeResultEnvelope"
77102
+ "$ref": "#/components/schemas/KubernetesHorizontalPodAutoscalerDetailEnvelope"
75678
77103
  }
75679
77104
  }
75680
77105
  },
75681
- "description": "Image update accepted. Read upgrade status until the target version reconnects and rollout is healthy."
75682
- },
75683
- "400": {
75684
- "$ref": "#/components/responses/Error"
77106
+ "description": "HorizontalPodAutoscaler targets, metrics, and conditions."
75685
77107
  },
75686
77108
  "403": {
75687
77109
  "$ref": "#/components/responses/Error"
@@ -75689,9 +77111,6 @@
75689
77111
  "404": {
75690
77112
  "$ref": "#/components/responses/Error"
75691
77113
  },
75692
- "409": {
75693
- "$ref": "#/components/responses/Error"
75694
- },
75695
77114
  "503": {
75696
77115
  "$ref": "#/components/responses/Error"
75697
77116
  }
@@ -75699,21 +77118,25 @@
75699
77118
  "tags": [
75700
77119
  "Platform"
75701
77120
  ],
77121
+ "x-soha-implementation-status": "implemented",
75702
77122
  "x-soha-permissions": {
75703
77123
  "keys": [
75704
- "platform.clusters.update"
77124
+ "platform.configuration.horizontal-pod-autoscalers.view"
75705
77125
  ],
75706
77126
  "mode": "all"
75707
77127
  }
75708
77128
  }
75709
77129
  },
75710
- "/clusters/{clusterID}/configuration/configmaps": {
77130
+ "/clusters/{clusterID}/configuration/hpas/{name}/yaml": {
75711
77131
  "get": {
75712
- "operationId": "listKubernetesConfigMaps",
77132
+ "operationId": "getKubernetesHorizontalPodAutoscalerYaml",
75713
77133
  "parameters": [
75714
77134
  {
75715
77135
  "$ref": "#/components/parameters/ClusterID"
75716
77136
  },
77137
+ {
77138
+ "$ref": "#/components/parameters/KubernetesResourceName"
77139
+ },
75717
77140
  {
75718
77141
  "$ref": "#/components/parameters/KubernetesNamespaceQuery"
75719
77142
  }
@@ -75723,11 +77146,14 @@
75723
77146
  "content": {
75724
77147
  "application/json": {
75725
77148
  "schema": {
75726
- "$ref": "#/components/schemas/KubernetesConfigMapListEnvelope"
77149
+ "$ref": "#/components/schemas/KubernetesResourceYamlEnvelope"
75727
77150
  }
75728
77151
  }
75729
77152
  },
75730
- "description": "Kubernetes ConfigMaps visible in the selected cluster and namespace scope."
77153
+ "description": "Authorized Kubernetes resource YAML."
77154
+ },
77155
+ "400": {
77156
+ "$ref": "#/components/responses/Error"
75731
77157
  },
75732
77158
  "403": {
75733
77159
  "$ref": "#/components/responses/Error"
@@ -75735,6 +77161,9 @@
75735
77161
  "404": {
75736
77162
  "$ref": "#/components/responses/Error"
75737
77163
  },
77164
+ "409": {
77165
+ "$ref": "#/components/responses/Error"
77166
+ },
75738
77167
  "503": {
75739
77168
  "$ref": "#/components/responses/Error"
75740
77169
  }
@@ -75745,15 +77174,13 @@
75745
77174
  "x-soha-implementation-status": "implemented",
75746
77175
  "x-soha-permissions": {
75747
77176
  "keys": [
75748
- "platform.configuration.config-maps.view"
77177
+ "platform.configuration.horizontal-pod-autoscalers.view"
75749
77178
  ],
75750
77179
  "mode": "all"
75751
77180
  }
75752
- }
75753
- },
75754
- "/clusters/{clusterID}/configuration/configmaps/{name}/data": {
77181
+ },
75755
77182
  "put": {
75756
- "operationId": "updateKubernetesConfigMapData",
77183
+ "operationId": "applyKubernetesHorizontalPodAutoscalerYaml",
75757
77184
  "parameters": [
75758
77185
  {
75759
77186
  "$ref": "#/components/parameters/ClusterID"
@@ -75769,7 +77196,7 @@
75769
77196
  "content": {
75770
77197
  "application/json": {
75771
77198
  "schema": {
75772
- "$ref": "#/components/schemas/KubernetesConfigMapDataInput"
77199
+ "$ref": "#/components/schemas/KubernetesResourceYamlInput"
75773
77200
  }
75774
77201
  }
75775
77202
  },
@@ -75780,11 +77207,11 @@
75780
77207
  "content": {
75781
77208
  "application/json": {
75782
77209
  "schema": {
75783
- "$ref": "#/components/schemas/KubernetesConfigMapDetailEnvelope"
77210
+ "$ref": "#/components/schemas/KubernetesResourceYamlEnvelope"
75784
77211
  }
75785
77212
  }
75786
77213
  },
75787
- "description": "Kubernetes operation result."
77214
+ "description": "Authorized Kubernetes resource YAML."
75788
77215
  },
75789
77216
  "400": {
75790
77217
  "$ref": "#/components/responses/Error"
@@ -75808,22 +77235,19 @@
75808
77235
  "x-soha-implementation-status": "implemented",
75809
77236
  "x-soha-permissions": {
75810
77237
  "keys": [
75811
- "platform.configuration.config-maps.update"
77238
+ "platform.configuration.horizontal-pod-autoscalers.update"
75812
77239
  ],
75813
77240
  "mode": "all"
75814
77241
  }
75815
77242
  }
75816
77243
  },
75817
- "/clusters/{clusterID}/configuration/configmaps/{name}/detail": {
77244
+ "/clusters/{clusterID}/configuration/leases": {
75818
77245
  "get": {
75819
- "operationId": "getKubernetesConfigMapDetail",
77246
+ "operationId": "listKubernetesLeases",
75820
77247
  "parameters": [
75821
77248
  {
75822
77249
  "$ref": "#/components/parameters/ClusterID"
75823
77250
  },
75824
- {
75825
- "$ref": "#/components/parameters/KubernetesResourceName"
75826
- },
75827
77251
  {
75828
77252
  "$ref": "#/components/parameters/KubernetesNamespaceQuery"
75829
77253
  }
@@ -75833,11 +77257,11 @@
75833
77257
  "content": {
75834
77258
  "application/json": {
75835
77259
  "schema": {
75836
- "$ref": "#/components/schemas/KubernetesConfigMapDetailEnvelope"
77260
+ "$ref": "#/components/schemas/KubernetesLeaseListEnvelope"
75837
77261
  }
75838
77262
  }
75839
77263
  },
75840
- "description": "Kubernetes ConfigMap metadata and data visible to the authenticated principal."
77264
+ "description": "Kubernetes Lease metadata visible in the selected scope."
75841
77265
  },
75842
77266
  "403": {
75843
77267
  "$ref": "#/components/responses/Error"
@@ -75855,22 +77279,19 @@
75855
77279
  "x-soha-implementation-status": "implemented",
75856
77280
  "x-soha-permissions": {
75857
77281
  "keys": [
75858
- "platform.configuration.config-maps.view"
77282
+ "platform.configuration.leases.view"
75859
77283
  ],
75860
77284
  "mode": "all"
75861
77285
  }
75862
77286
  }
75863
77287
  },
75864
- "/clusters/{clusterID}/configuration/configmaps/{name}/references": {
77288
+ "/clusters/{clusterID}/configuration/limitranges": {
75865
77289
  "get": {
75866
- "operationId": "listKubernetesConfigMapReferences",
77290
+ "operationId": "listKubernetesLimitRanges",
75867
77291
  "parameters": [
75868
77292
  {
75869
77293
  "$ref": "#/components/parameters/ClusterID"
75870
77294
  },
75871
- {
75872
- "$ref": "#/components/parameters/KubernetesResourceName"
75873
- },
75874
77295
  {
75875
77296
  "$ref": "#/components/parameters/KubernetesNamespaceQuery"
75876
77297
  }
@@ -75880,11 +77301,11 @@
75880
77301
  "content": {
75881
77302
  "application/json": {
75882
77303
  "schema": {
75883
- "$ref": "#/components/schemas/KubernetesConfigReferenceListEnvelope"
77304
+ "$ref": "#/components/schemas/KubernetesLimitRangeListEnvelope"
75884
77305
  }
75885
77306
  }
75886
77307
  },
75887
- "description": "Workloads and resources that reference the selected ConfigMap."
77308
+ "description": "LimitRanges visible in the selected scope."
75888
77309
  },
75889
77310
  "403": {
75890
77311
  "$ref": "#/components/responses/Error"
@@ -75902,19 +77323,22 @@
75902
77323
  "x-soha-implementation-status": "implemented",
75903
77324
  "x-soha-permissions": {
75904
77325
  "keys": [
75905
- "platform.configuration.config-maps.view"
77326
+ "platform.configuration.limit-ranges.view"
75906
77327
  ],
75907
77328
  "mode": "all"
75908
77329
  }
75909
77330
  }
75910
77331
  },
75911
- "/clusters/{clusterID}/configuration/hpas": {
77332
+ "/clusters/{clusterID}/configuration/limitranges/{name}/detail": {
75912
77333
  "get": {
75913
- "operationId": "listKubernetesHorizontalPodAutoscalers",
77334
+ "operationId": "getKubernetesLimitRangeDetail",
75914
77335
  "parameters": [
75915
77336
  {
75916
77337
  "$ref": "#/components/parameters/ClusterID"
75917
77338
  },
77339
+ {
77340
+ "$ref": "#/components/parameters/KubernetesResourceName"
77341
+ },
75918
77342
  {
75919
77343
  "$ref": "#/components/parameters/KubernetesNamespaceQuery"
75920
77344
  }
@@ -75924,11 +77348,11 @@
75924
77348
  "content": {
75925
77349
  "application/json": {
75926
77350
  "schema": {
75927
- "$ref": "#/components/schemas/KubernetesHorizontalPodAutoscalerListEnvelope"
77351
+ "$ref": "#/components/schemas/KubernetesLimitRangeDetailEnvelope"
75928
77352
  }
75929
77353
  }
75930
77354
  },
75931
- "description": "HorizontalPodAutoscalers visible in the selected scope."
77355
+ "description": "LimitRange rules, labels, and annotations."
75932
77356
  },
75933
77357
  "403": {
75934
77358
  "$ref": "#/components/responses/Error"
@@ -75946,24 +77370,18 @@
75946
77370
  "x-soha-implementation-status": "implemented",
75947
77371
  "x-soha-permissions": {
75948
77372
  "keys": [
75949
- "platform.configuration.horizontal-pod-autoscalers.view"
77373
+ "platform.configuration.limit-ranges.view"
75950
77374
  ],
75951
77375
  "mode": "all"
75952
77376
  }
75953
77377
  }
75954
77378
  },
75955
- "/clusters/{clusterID}/configuration/hpas/{name}/detail": {
77379
+ "/clusters/{clusterID}/configuration/mutatingwebhookconfigurations": {
75956
77380
  "get": {
75957
- "operationId": "getKubernetesHorizontalPodAutoscalerDetail",
77381
+ "operationId": "listKubernetesMutatingWebhookConfigurations",
75958
77382
  "parameters": [
75959
77383
  {
75960
77384
  "$ref": "#/components/parameters/ClusterID"
75961
- },
75962
- {
75963
- "$ref": "#/components/parameters/KubernetesResourceName"
75964
- },
75965
- {
75966
- "$ref": "#/components/parameters/KubernetesNamespaceQuery"
75967
77385
  }
75968
77386
  ],
75969
77387
  "responses": {
@@ -75971,11 +77389,11 @@
75971
77389
  "content": {
75972
77390
  "application/json": {
75973
77391
  "schema": {
75974
- "$ref": "#/components/schemas/KubernetesHorizontalPodAutoscalerDetailEnvelope"
77392
+ "$ref": "#/components/schemas/KubernetesAdmissionWebhookConfigurationListEnvelope"
75975
77393
  }
75976
77394
  }
75977
77395
  },
75978
- "description": "HorizontalPodAutoscaler targets, metrics, and conditions."
77396
+ "description": "Cluster-scoped MutatingWebhookConfigurations."
75979
77397
  },
75980
77398
  "403": {
75981
77399
  "$ref": "#/components/responses/Error"
@@ -75993,21 +77411,21 @@
75993
77411
  "x-soha-implementation-status": "implemented",
75994
77412
  "x-soha-permissions": {
75995
77413
  "keys": [
75996
- "platform.configuration.horizontal-pod-autoscalers.view"
77414
+ "platform.configuration.mutating-webhook-configurations.view"
75997
77415
  ],
75998
77416
  "mode": "all"
75999
77417
  }
76000
77418
  }
76001
77419
  },
76002
- "/clusters/{clusterID}/configuration/leases": {
77420
+ "/clusters/{clusterID}/configuration/mutatingwebhookconfigurations/{name}/detail": {
76003
77421
  "get": {
76004
- "operationId": "listKubernetesLeases",
77422
+ "operationId": "getKubernetesMutatingWebhookConfigurationDetail",
76005
77423
  "parameters": [
76006
77424
  {
76007
77425
  "$ref": "#/components/parameters/ClusterID"
76008
77426
  },
76009
77427
  {
76010
- "$ref": "#/components/parameters/KubernetesNamespaceQuery"
77428
+ "$ref": "#/components/parameters/KubernetesResourceName"
76011
77429
  }
76012
77430
  ],
76013
77431
  "responses": {
@@ -76015,11 +77433,11 @@
76015
77433
  "content": {
76016
77434
  "application/json": {
76017
77435
  "schema": {
76018
- "$ref": "#/components/schemas/KubernetesLeaseListEnvelope"
77436
+ "$ref": "#/components/schemas/KubernetesAdmissionWebhookConfigurationDetailEnvelope"
76019
77437
  }
76020
77438
  }
76021
77439
  },
76022
- "description": "Kubernetes Lease metadata visible in the selected scope."
77440
+ "description": "Mutating admission webhook clients, selectors, rules, and timeout policy."
76023
77441
  },
76024
77442
  "403": {
76025
77443
  "$ref": "#/components/responses/Error"
@@ -76037,15 +77455,15 @@
76037
77455
  "x-soha-implementation-status": "implemented",
76038
77456
  "x-soha-permissions": {
76039
77457
  "keys": [
76040
- "platform.configuration.leases.view"
77458
+ "platform.configuration.mutating-webhook-configurations.view"
76041
77459
  ],
76042
77460
  "mode": "all"
76043
77461
  }
76044
77462
  }
76045
77463
  },
76046
- "/clusters/{clusterID}/configuration/limitranges": {
77464
+ "/clusters/{clusterID}/configuration/poddisruptionbudgets": {
76047
77465
  "get": {
76048
- "operationId": "listKubernetesLimitRanges",
77466
+ "operationId": "listKubernetesPodDisruptionBudgets",
76049
77467
  "parameters": [
76050
77468
  {
76051
77469
  "$ref": "#/components/parameters/ClusterID"
@@ -76059,11 +77477,11 @@
76059
77477
  "content": {
76060
77478
  "application/json": {
76061
77479
  "schema": {
76062
- "$ref": "#/components/schemas/KubernetesLimitRangeListEnvelope"
77480
+ "$ref": "#/components/schemas/KubernetesPodDisruptionBudgetListEnvelope"
76063
77481
  }
76064
77482
  }
76065
77483
  },
76066
- "description": "LimitRanges visible in the selected scope."
77484
+ "description": "PodDisruptionBudgets visible in the selected scope."
76067
77485
  },
76068
77486
  "403": {
76069
77487
  "$ref": "#/components/responses/Error"
@@ -76081,15 +77499,15 @@
76081
77499
  "x-soha-implementation-status": "implemented",
76082
77500
  "x-soha-permissions": {
76083
77501
  "keys": [
76084
- "platform.configuration.limit-ranges.view"
77502
+ "platform.configuration.pod-disruption-budgets.view"
76085
77503
  ],
76086
77504
  "mode": "all"
76087
77505
  }
76088
77506
  }
76089
77507
  },
76090
- "/clusters/{clusterID}/configuration/limitranges/{name}/detail": {
76091
- "get": {
76092
- "operationId": "getKubernetesLimitRangeDetail",
77508
+ "/clusters/{clusterID}/configuration/poddisruptionbudgets/{name}": {
77509
+ "delete": {
77510
+ "operationId": "deleteKubernetesPodDisruptionBudget",
76093
77511
  "parameters": [
76094
77512
  {
76095
77513
  "$ref": "#/components/parameters/ClusterID"
@@ -76102,63 +77520,21 @@
76102
77520
  }
76103
77521
  ],
76104
77522
  "responses": {
76105
- "200": {
76106
- "content": {
76107
- "application/json": {
76108
- "schema": {
76109
- "$ref": "#/components/schemas/KubernetesLimitRangeDetailEnvelope"
76110
- }
76111
- }
76112
- },
76113
- "description": "LimitRange rules, labels, and annotations."
76114
- },
76115
- "403": {
76116
- "$ref": "#/components/responses/Error"
77523
+ "204": {
77524
+ "description": "Resource deleted."
76117
77525
  },
76118
- "404": {
77526
+ "400": {
76119
77527
  "$ref": "#/components/responses/Error"
76120
77528
  },
76121
- "503": {
76122
- "$ref": "#/components/responses/Error"
76123
- }
76124
- },
76125
- "tags": [
76126
- "Platform"
76127
- ],
76128
- "x-soha-implementation-status": "implemented",
76129
- "x-soha-permissions": {
76130
- "keys": [
76131
- "platform.configuration.limit-ranges.view"
76132
- ],
76133
- "mode": "all"
76134
- }
76135
- }
76136
- },
76137
- "/clusters/{clusterID}/configuration/mutatingwebhookconfigurations": {
76138
- "get": {
76139
- "operationId": "listKubernetesMutatingWebhookConfigurations",
76140
- "parameters": [
76141
- {
76142
- "$ref": "#/components/parameters/ClusterID"
76143
- }
76144
- ],
76145
- "responses": {
76146
- "200": {
76147
- "content": {
76148
- "application/json": {
76149
- "schema": {
76150
- "$ref": "#/components/schemas/KubernetesAdmissionWebhookConfigurationListEnvelope"
76151
- }
76152
- }
76153
- },
76154
- "description": "Cluster-scoped MutatingWebhookConfigurations."
76155
- },
76156
77529
  "403": {
76157
77530
  "$ref": "#/components/responses/Error"
76158
77531
  },
76159
77532
  "404": {
76160
77533
  "$ref": "#/components/responses/Error"
76161
77534
  },
77535
+ "409": {
77536
+ "$ref": "#/components/responses/Error"
77537
+ },
76162
77538
  "503": {
76163
77539
  "$ref": "#/components/responses/Error"
76164
77540
  }
@@ -76169,21 +77545,24 @@
76169
77545
  "x-soha-implementation-status": "implemented",
76170
77546
  "x-soha-permissions": {
76171
77547
  "keys": [
76172
- "platform.configuration.mutating-webhook-configurations.view"
77548
+ "platform.configuration.pod-disruption-budgets.delete"
76173
77549
  ],
76174
77550
  "mode": "all"
76175
77551
  }
76176
77552
  }
76177
77553
  },
76178
- "/clusters/{clusterID}/configuration/mutatingwebhookconfigurations/{name}/detail": {
77554
+ "/clusters/{clusterID}/configuration/poddisruptionbudgets/{name}/detail": {
76179
77555
  "get": {
76180
- "operationId": "getKubernetesMutatingWebhookConfigurationDetail",
77556
+ "operationId": "getKubernetesPodDisruptionBudgetDetail",
76181
77557
  "parameters": [
76182
77558
  {
76183
77559
  "$ref": "#/components/parameters/ClusterID"
76184
77560
  },
76185
77561
  {
76186
77562
  "$ref": "#/components/parameters/KubernetesResourceName"
77563
+ },
77564
+ {
77565
+ "$ref": "#/components/parameters/KubernetesNamespaceQuery"
76187
77566
  }
76188
77567
  ],
76189
77568
  "responses": {
@@ -76191,11 +77570,11 @@
76191
77570
  "content": {
76192
77571
  "application/json": {
76193
77572
  "schema": {
76194
- "$ref": "#/components/schemas/KubernetesAdmissionWebhookConfigurationDetailEnvelope"
77573
+ "$ref": "#/components/schemas/KubernetesPodDisruptionBudgetDetailEnvelope"
76195
77574
  }
76196
77575
  }
76197
77576
  },
76198
- "description": "Mutating admission webhook clients, selectors, rules, and timeout policy."
77577
+ "description": "PodDisruptionBudget selectors, matching Pods, workload, and conditions."
76199
77578
  },
76200
77579
  "403": {
76201
77580
  "$ref": "#/components/responses/Error"
@@ -76213,19 +77592,22 @@
76213
77592
  "x-soha-implementation-status": "implemented",
76214
77593
  "x-soha-permissions": {
76215
77594
  "keys": [
76216
- "platform.configuration.mutating-webhook-configurations.view"
77595
+ "platform.configuration.pod-disruption-budgets.view"
76217
77596
  ],
76218
77597
  "mode": "all"
76219
77598
  }
76220
77599
  }
76221
77600
  },
76222
- "/clusters/{clusterID}/configuration/poddisruptionbudgets": {
77601
+ "/clusters/{clusterID}/configuration/poddisruptionbudgets/{name}/yaml": {
76223
77602
  "get": {
76224
- "operationId": "listKubernetesPodDisruptionBudgets",
77603
+ "operationId": "getKubernetesPodDisruptionBudgetYaml",
76225
77604
  "parameters": [
76226
77605
  {
76227
77606
  "$ref": "#/components/parameters/ClusterID"
76228
77607
  },
77608
+ {
77609
+ "$ref": "#/components/parameters/KubernetesResourceName"
77610
+ },
76229
77611
  {
76230
77612
  "$ref": "#/components/parameters/KubernetesNamespaceQuery"
76231
77613
  }
@@ -76235,11 +77617,14 @@
76235
77617
  "content": {
76236
77618
  "application/json": {
76237
77619
  "schema": {
76238
- "$ref": "#/components/schemas/KubernetesPodDisruptionBudgetListEnvelope"
77620
+ "$ref": "#/components/schemas/KubernetesResourceYamlEnvelope"
76239
77621
  }
76240
77622
  }
76241
77623
  },
76242
- "description": "PodDisruptionBudgets visible in the selected scope."
77624
+ "description": "Authorized Kubernetes resource YAML."
77625
+ },
77626
+ "400": {
77627
+ "$ref": "#/components/responses/Error"
76243
77628
  },
76244
77629
  "403": {
76245
77630
  "$ref": "#/components/responses/Error"
@@ -76247,6 +77632,9 @@
76247
77632
  "404": {
76248
77633
  "$ref": "#/components/responses/Error"
76249
77634
  },
77635
+ "409": {
77636
+ "$ref": "#/components/responses/Error"
77637
+ },
76250
77638
  "503": {
76251
77639
  "$ref": "#/components/responses/Error"
76252
77640
  }
@@ -76261,11 +77649,9 @@
76261
77649
  ],
76262
77650
  "mode": "all"
76263
77651
  }
76264
- }
76265
- },
76266
- "/clusters/{clusterID}/configuration/poddisruptionbudgets/{name}/detail": {
76267
- "get": {
76268
- "operationId": "getKubernetesPodDisruptionBudgetDetail",
77652
+ },
77653
+ "put": {
77654
+ "operationId": "applyKubernetesPodDisruptionBudgetYaml",
76269
77655
  "parameters": [
76270
77656
  {
76271
77657
  "$ref": "#/components/parameters/ClusterID"
@@ -76277,16 +77663,29 @@
76277
77663
  "$ref": "#/components/parameters/KubernetesNamespaceQuery"
76278
77664
  }
76279
77665
  ],
77666
+ "requestBody": {
77667
+ "content": {
77668
+ "application/json": {
77669
+ "schema": {
77670
+ "$ref": "#/components/schemas/KubernetesResourceYamlInput"
77671
+ }
77672
+ }
77673
+ },
77674
+ "required": true
77675
+ },
76280
77676
  "responses": {
76281
77677
  "200": {
76282
77678
  "content": {
76283
77679
  "application/json": {
76284
77680
  "schema": {
76285
- "$ref": "#/components/schemas/KubernetesPodDisruptionBudgetDetailEnvelope"
77681
+ "$ref": "#/components/schemas/KubernetesResourceYamlEnvelope"
76286
77682
  }
76287
77683
  }
76288
77684
  },
76289
- "description": "PodDisruptionBudget selectors, matching Pods, workload, and conditions."
77685
+ "description": "Authorized Kubernetes resource YAML."
77686
+ },
77687
+ "400": {
77688
+ "$ref": "#/components/responses/Error"
76290
77689
  },
76291
77690
  "403": {
76292
77691
  "$ref": "#/components/responses/Error"
@@ -76294,6 +77693,9 @@
76294
77693
  "404": {
76295
77694
  "$ref": "#/components/responses/Error"
76296
77695
  },
77696
+ "409": {
77697
+ "$ref": "#/components/responses/Error"
77698
+ },
76297
77699
  "503": {
76298
77700
  "$ref": "#/components/responses/Error"
76299
77701
  }
@@ -76304,7 +77706,7 @@
76304
77706
  "x-soha-implementation-status": "implemented",
76305
77707
  "x-soha-permissions": {
76306
77708
  "keys": [
76307
- "platform.configuration.pod-disruption-budgets.view"
77709
+ "platform.configuration.pod-disruption-budgets.update"
76308
77710
  ],
76309
77711
  "mode": "all"
76310
77712
  }
@@ -77740,6 +79142,7 @@
77740
79142
  },
77741
79143
  "/clusters/{clusterID}/infrastructure/nodes/{nodeName}/drain": {
77742
79144
  "post": {
79145
+ "description": "Cordon the node and evict eligible pods. A 409 with node_drain_pdb_blocked, node_drain_eviction_blocked, node_drain_timeout, node_drain_canceled, node_drain_pod_selection or node_drain_failed means this drain did not complete. Inspect current node schedulability and remaining pods before retrying or explicitly restoring scheduling. Transport failure leaves the outcome unknown.",
77743
79146
  "operationId": "drainKubernetesNode",
77744
79147
  "parameters": [
77745
79148
  {
@@ -78154,35 +79557,399 @@
78154
79557
  "x-soha-implementation-status": "implemented",
78155
79558
  "x-soha-permissions": {
78156
79559
  "keys": [
78157
- "platform.namespaces.create"
79560
+ "platform.namespaces.create"
79561
+ ],
79562
+ "mode": "all"
79563
+ }
79564
+ }
79565
+ },
79566
+ "/clusters/{clusterID}/namespaces/{namespaceName}": {
79567
+ "delete": {
79568
+ "operationId": "deleteKubernetesNamespace",
79569
+ "parameters": [
79570
+ {
79571
+ "$ref": "#/components/parameters/ClusterID"
79572
+ },
79573
+ {
79574
+ "in": "path",
79575
+ "name": "namespaceName",
79576
+ "required": true,
79577
+ "schema": {
79578
+ "minLength": 1,
79579
+ "type": "string"
79580
+ }
79581
+ }
79582
+ ],
79583
+ "responses": {
79584
+ "204": {
79585
+ "description": "Operation completed."
79586
+ },
79587
+ "400": {
79588
+ "$ref": "#/components/responses/Error"
79589
+ },
79590
+ "403": {
79591
+ "$ref": "#/components/responses/Error"
79592
+ },
79593
+ "404": {
79594
+ "$ref": "#/components/responses/Error"
79595
+ },
79596
+ "409": {
79597
+ "$ref": "#/components/responses/Error"
79598
+ },
79599
+ "503": {
79600
+ "$ref": "#/components/responses/Error"
79601
+ }
79602
+ },
79603
+ "tags": [
79604
+ "Platform"
79605
+ ],
79606
+ "x-soha-implementation-status": "implemented",
79607
+ "x-soha-permissions": {
79608
+ "keys": [
79609
+ "platform.namespaces.delete"
79610
+ ],
79611
+ "mode": "all"
79612
+ }
79613
+ },
79614
+ "put": {
79615
+ "operationId": "updateKubernetesNamespace",
79616
+ "parameters": [
79617
+ {
79618
+ "$ref": "#/components/parameters/ClusterID"
79619
+ },
79620
+ {
79621
+ "in": "path",
79622
+ "name": "namespaceName",
79623
+ "required": true,
79624
+ "schema": {
79625
+ "minLength": 1,
79626
+ "type": "string"
79627
+ }
79628
+ }
79629
+ ],
79630
+ "requestBody": {
79631
+ "content": {
79632
+ "application/json": {
79633
+ "schema": {
79634
+ "$ref": "#/components/schemas/KubernetesNamespaceInput"
79635
+ }
79636
+ }
79637
+ },
79638
+ "required": true
79639
+ },
79640
+ "responses": {
79641
+ "200": {
79642
+ "content": {
79643
+ "application/json": {
79644
+ "schema": {
79645
+ "$ref": "#/components/schemas/KubernetesNamespaceEnvelope"
79646
+ }
79647
+ }
79648
+ },
79649
+ "description": "Kubernetes operation result."
79650
+ },
79651
+ "400": {
79652
+ "$ref": "#/components/responses/Error"
79653
+ },
79654
+ "403": {
79655
+ "$ref": "#/components/responses/Error"
79656
+ },
79657
+ "404": {
79658
+ "$ref": "#/components/responses/Error"
79659
+ },
79660
+ "409": {
79661
+ "$ref": "#/components/responses/Error"
79662
+ },
79663
+ "503": {
79664
+ "$ref": "#/components/responses/Error"
79665
+ }
79666
+ },
79667
+ "tags": [
79668
+ "Platform"
79669
+ ],
79670
+ "x-soha-implementation-status": "implemented",
79671
+ "x-soha-permissions": {
79672
+ "keys": [
79673
+ "platform.namespaces.update"
79674
+ ],
79675
+ "mode": "all"
79676
+ }
79677
+ }
79678
+ },
79679
+ "/clusters/{clusterID}/network/backendtlspolicies": {
79680
+ "get": {
79681
+ "operationId": "listKubernetesBackendTLSPolicies",
79682
+ "parameters": [
79683
+ {
79684
+ "$ref": "#/components/parameters/ClusterID"
79685
+ },
79686
+ {
79687
+ "$ref": "#/components/parameters/KubernetesNamespaceQuery"
79688
+ }
79689
+ ],
79690
+ "responses": {
79691
+ "200": {
79692
+ "content": {
79693
+ "application/json": {
79694
+ "schema": {
79695
+ "$ref": "#/components/schemas/KubernetesBackendTLSPolicyListEnvelope"
79696
+ }
79697
+ }
79698
+ },
79699
+ "description": "BackendTLSPolicies visible in the selected scope."
79700
+ },
79701
+ "403": {
79702
+ "$ref": "#/components/responses/Error"
79703
+ },
79704
+ "404": {
79705
+ "$ref": "#/components/responses/Error"
79706
+ },
79707
+ "503": {
79708
+ "$ref": "#/components/responses/Error"
79709
+ }
79710
+ },
79711
+ "tags": [
79712
+ "Platform"
79713
+ ],
79714
+ "x-soha-implementation-status": "implemented",
79715
+ "x-soha-permissions": {
79716
+ "keys": [
79717
+ "platform.network.backend-tls-policies.view"
79718
+ ],
79719
+ "mode": "all"
79720
+ }
79721
+ }
79722
+ },
79723
+ "/clusters/{clusterID}/network/backendtlspolicies/{name}": {
79724
+ "delete": {
79725
+ "operationId": "deleteKubernetesBackendTLSPolicy",
79726
+ "parameters": [
79727
+ {
79728
+ "$ref": "#/components/parameters/ClusterID"
79729
+ },
79730
+ {
79731
+ "$ref": "#/components/parameters/KubernetesResourceName"
79732
+ },
79733
+ {
79734
+ "$ref": "#/components/parameters/KubernetesNamespaceQuery"
79735
+ }
79736
+ ],
79737
+ "responses": {
79738
+ "204": {
79739
+ "description": "Resource deleted."
79740
+ },
79741
+ "400": {
79742
+ "$ref": "#/components/responses/Error"
79743
+ },
79744
+ "403": {
79745
+ "$ref": "#/components/responses/Error"
79746
+ },
79747
+ "404": {
79748
+ "$ref": "#/components/responses/Error"
79749
+ },
79750
+ "409": {
79751
+ "$ref": "#/components/responses/Error"
79752
+ },
79753
+ "503": {
79754
+ "$ref": "#/components/responses/Error"
79755
+ }
79756
+ },
79757
+ "tags": [
79758
+ "Platform"
79759
+ ],
79760
+ "x-soha-implementation-status": "implemented",
79761
+ "x-soha-permissions": {
79762
+ "keys": [
79763
+ "platform.network.backend-tls-policies.delete"
79764
+ ],
79765
+ "mode": "all"
79766
+ }
79767
+ }
79768
+ },
79769
+ "/clusters/{clusterID}/network/backendtlspolicies/{name}/detail": {
79770
+ "get": {
79771
+ "operationId": "getKubernetesBackendTLSPolicyDetail",
79772
+ "parameters": [
79773
+ {
79774
+ "$ref": "#/components/parameters/ClusterID"
79775
+ },
79776
+ {
79777
+ "$ref": "#/components/parameters/KubernetesResourceName"
79778
+ },
79779
+ {
79780
+ "$ref": "#/components/parameters/KubernetesNamespaceQuery"
79781
+ }
79782
+ ],
79783
+ "responses": {
79784
+ "200": {
79785
+ "and status conditions.": null,
79786
+ "content": {
79787
+ "application/json": {
79788
+ "schema": {
79789
+ "$ref": "#/components/schemas/KubernetesBackendTLSPolicyDetailEnvelope"
79790
+ }
79791
+ }
79792
+ },
79793
+ "description": "BackendTLSPolicy targets",
79794
+ "trust sources": null
79795
+ },
79796
+ "403": {
79797
+ "$ref": "#/components/responses/Error"
79798
+ },
79799
+ "404": {
79800
+ "$ref": "#/components/responses/Error"
79801
+ },
79802
+ "503": {
79803
+ "$ref": "#/components/responses/Error"
79804
+ }
79805
+ },
79806
+ "tags": [
79807
+ "Platform"
79808
+ ],
79809
+ "x-soha-implementation-status": "implemented",
79810
+ "x-soha-permissions": {
79811
+ "keys": [
79812
+ "platform.network.backend-tls-policies.view"
79813
+ ],
79814
+ "mode": "all"
79815
+ }
79816
+ }
79817
+ },
79818
+ "/clusters/{clusterID}/network/backendtlspolicies/{name}/yaml": {
79819
+ "get": {
79820
+ "operationId": "getKubernetesBackendTLSPolicyYaml",
79821
+ "parameters": [
79822
+ {
79823
+ "$ref": "#/components/parameters/ClusterID"
79824
+ },
79825
+ {
79826
+ "$ref": "#/components/parameters/KubernetesResourceName"
79827
+ },
79828
+ {
79829
+ "$ref": "#/components/parameters/KubernetesNamespaceQuery"
79830
+ }
79831
+ ],
79832
+ "responses": {
79833
+ "200": {
79834
+ "content": {
79835
+ "application/json": {
79836
+ "schema": {
79837
+ "$ref": "#/components/schemas/KubernetesResourceYamlEnvelope"
79838
+ }
79839
+ }
79840
+ },
79841
+ "description": "Authorized Kubernetes resource YAML."
79842
+ },
79843
+ "400": {
79844
+ "$ref": "#/components/responses/Error"
79845
+ },
79846
+ "403": {
79847
+ "$ref": "#/components/responses/Error"
79848
+ },
79849
+ "404": {
79850
+ "$ref": "#/components/responses/Error"
79851
+ },
79852
+ "409": {
79853
+ "$ref": "#/components/responses/Error"
79854
+ },
79855
+ "503": {
79856
+ "$ref": "#/components/responses/Error"
79857
+ }
79858
+ },
79859
+ "tags": [
79860
+ "Platform"
79861
+ ],
79862
+ "x-soha-implementation-status": "implemented",
79863
+ "x-soha-permissions": {
79864
+ "keys": [
79865
+ "platform.network.backend-tls-policies.view"
79866
+ ],
79867
+ "mode": "all"
79868
+ }
79869
+ },
79870
+ "put": {
79871
+ "operationId": "applyKubernetesBackendTLSPolicyYaml",
79872
+ "parameters": [
79873
+ {
79874
+ "$ref": "#/components/parameters/ClusterID"
79875
+ },
79876
+ {
79877
+ "$ref": "#/components/parameters/KubernetesResourceName"
79878
+ },
79879
+ {
79880
+ "$ref": "#/components/parameters/KubernetesNamespaceQuery"
79881
+ }
79882
+ ],
79883
+ "requestBody": {
79884
+ "content": {
79885
+ "application/json": {
79886
+ "schema": {
79887
+ "$ref": "#/components/schemas/KubernetesResourceYamlInput"
79888
+ }
79889
+ }
79890
+ },
79891
+ "required": true
79892
+ },
79893
+ "responses": {
79894
+ "200": {
79895
+ "content": {
79896
+ "application/json": {
79897
+ "schema": {
79898
+ "$ref": "#/components/schemas/KubernetesResourceYamlEnvelope"
79899
+ }
79900
+ }
79901
+ },
79902
+ "description": "Authorized Kubernetes resource YAML."
79903
+ },
79904
+ "400": {
79905
+ "$ref": "#/components/responses/Error"
79906
+ },
79907
+ "403": {
79908
+ "$ref": "#/components/responses/Error"
79909
+ },
79910
+ "404": {
79911
+ "$ref": "#/components/responses/Error"
79912
+ },
79913
+ "409": {
79914
+ "$ref": "#/components/responses/Error"
79915
+ },
79916
+ "503": {
79917
+ "$ref": "#/components/responses/Error"
79918
+ }
79919
+ },
79920
+ "tags": [
79921
+ "Platform"
79922
+ ],
79923
+ "x-soha-implementation-status": "implemented",
79924
+ "x-soha-permissions": {
79925
+ "keys": [
79926
+ "platform.network.backend-tls-policies.update"
78158
79927
  ],
78159
79928
  "mode": "all"
78160
79929
  }
78161
79930
  }
78162
79931
  },
78163
- "/clusters/{clusterID}/namespaces/{namespaceName}": {
78164
- "delete": {
78165
- "operationId": "deleteKubernetesNamespace",
79932
+ "/clusters/{clusterID}/network/endpointslices": {
79933
+ "get": {
79934
+ "operationId": "listKubernetesEndpointSlices",
78166
79935
  "parameters": [
78167
79936
  {
78168
79937
  "$ref": "#/components/parameters/ClusterID"
78169
79938
  },
78170
79939
  {
78171
- "in": "path",
78172
- "name": "namespaceName",
78173
- "required": true,
78174
- "schema": {
78175
- "minLength": 1,
78176
- "type": "string"
78177
- }
79940
+ "$ref": "#/components/parameters/KubernetesNamespaceQuery"
78178
79941
  }
78179
79942
  ],
78180
79943
  "responses": {
78181
- "204": {
78182
- "description": "Operation completed."
78183
- },
78184
- "400": {
78185
- "$ref": "#/components/responses/Error"
79944
+ "200": {
79945
+ "content": {
79946
+ "application/json": {
79947
+ "schema": {
79948
+ "$ref": "#/components/schemas/KubernetesEndpointSliceListEnvelope"
79949
+ }
79950
+ }
79951
+ },
79952
+ "description": "EndpointSlices visible in the selected scope."
78186
79953
  },
78187
79954
  "403": {
78188
79955
  "$ref": "#/components/responses/Error"
@@ -78190,9 +79957,6 @@
78190
79957
  "404": {
78191
79958
  "$ref": "#/components/responses/Error"
78192
79959
  },
78193
- "409": {
78194
- "$ref": "#/components/responses/Error"
78195
- },
78196
79960
  "503": {
78197
79961
  "$ref": "#/components/responses/Error"
78198
79962
  }
@@ -78203,50 +79967,38 @@
78203
79967
  "x-soha-implementation-status": "implemented",
78204
79968
  "x-soha-permissions": {
78205
79969
  "keys": [
78206
- "platform.namespaces.delete"
79970
+ "platform.network.endpoint-slices.view"
78207
79971
  ],
78208
79972
  "mode": "all"
78209
79973
  }
78210
- },
78211
- "put": {
78212
- "operationId": "updateKubernetesNamespace",
79974
+ }
79975
+ },
79976
+ "/clusters/{clusterID}/network/endpointslices/{name}/detail": {
79977
+ "get": {
79978
+ "operationId": "getKubernetesEndpointSliceDetail",
78213
79979
  "parameters": [
78214
79980
  {
78215
79981
  "$ref": "#/components/parameters/ClusterID"
78216
79982
  },
78217
79983
  {
78218
- "in": "path",
78219
- "name": "namespaceName",
78220
- "required": true,
78221
- "schema": {
78222
- "minLength": 1,
78223
- "type": "string"
78224
- }
79984
+ "$ref": "#/components/parameters/KubernetesResourceName"
79985
+ },
79986
+ {
79987
+ "$ref": "#/components/parameters/KubernetesNamespaceQuery"
78225
79988
  }
78226
79989
  ],
78227
- "requestBody": {
78228
- "content": {
78229
- "application/json": {
78230
- "schema": {
78231
- "$ref": "#/components/schemas/KubernetesNamespaceInput"
78232
- }
78233
- }
78234
- },
78235
- "required": true
78236
- },
78237
79990
  "responses": {
78238
79991
  "200": {
79992
+ "and topology hints.": null,
78239
79993
  "content": {
78240
79994
  "application/json": {
78241
79995
  "schema": {
78242
- "$ref": "#/components/schemas/KubernetesNamespaceEnvelope"
79996
+ "$ref": "#/components/schemas/KubernetesEndpointSliceDetailEnvelope"
78243
79997
  }
78244
79998
  }
78245
79999
  },
78246
- "description": "Kubernetes operation result."
78247
- },
78248
- "400": {
78249
- "$ref": "#/components/responses/Error"
80000
+ "description": "EndpointSlice ports",
80001
+ "endpoint health": null
78250
80002
  },
78251
80003
  "403": {
78252
80004
  "$ref": "#/components/responses/Error"
@@ -78254,9 +80006,6 @@
78254
80006
  "404": {
78255
80007
  "$ref": "#/components/responses/Error"
78256
80008
  },
78257
- "409": {
78258
- "$ref": "#/components/responses/Error"
78259
- },
78260
80009
  "503": {
78261
80010
  "$ref": "#/components/responses/Error"
78262
80011
  }
@@ -78267,21 +80016,18 @@
78267
80016
  "x-soha-implementation-status": "implemented",
78268
80017
  "x-soha-permissions": {
78269
80018
  "keys": [
78270
- "platform.namespaces.update"
80019
+ "platform.network.endpoint-slices.view"
78271
80020
  ],
78272
80021
  "mode": "all"
78273
80022
  }
78274
80023
  }
78275
80024
  },
78276
- "/clusters/{clusterID}/network/backendtlspolicies": {
80025
+ "/clusters/{clusterID}/network/gatewayclasses": {
78277
80026
  "get": {
78278
- "operationId": "listKubernetesBackendTLSPolicies",
80027
+ "operationId": "listKubernetesGatewayClasses",
78279
80028
  "parameters": [
78280
80029
  {
78281
80030
  "$ref": "#/components/parameters/ClusterID"
78282
- },
78283
- {
78284
- "$ref": "#/components/parameters/KubernetesNamespaceQuery"
78285
80031
  }
78286
80032
  ],
78287
80033
  "responses": {
@@ -78289,11 +80035,11 @@
78289
80035
  "content": {
78290
80036
  "application/json": {
78291
80037
  "schema": {
78292
- "$ref": "#/components/schemas/KubernetesBackendTLSPolicyListEnvelope"
80038
+ "$ref": "#/components/schemas/KubernetesGatewayClassListEnvelope"
78293
80039
  }
78294
80040
  }
78295
80041
  },
78296
- "description": "BackendTLSPolicies visible in the selected scope."
80042
+ "description": "Cluster-scoped GatewayClasses."
78297
80043
  },
78298
80044
  "403": {
78299
80045
  "$ref": "#/components/responses/Error"
@@ -78311,38 +80057,35 @@
78311
80057
  "x-soha-implementation-status": "implemented",
78312
80058
  "x-soha-permissions": {
78313
80059
  "keys": [
78314
- "platform.network.backend-tls-policies.view"
80060
+ "platform.network.gateway-classes.view"
78315
80061
  ],
78316
80062
  "mode": "all"
78317
80063
  }
78318
80064
  }
78319
80065
  },
78320
- "/clusters/{clusterID}/network/backendtlspolicies/{name}/detail": {
80066
+ "/clusters/{clusterID}/network/gatewayclasses/{name}/detail": {
78321
80067
  "get": {
78322
- "operationId": "getKubernetesBackendTLSPolicyDetail",
80068
+ "operationId": "getKubernetesGatewayClassDetail",
78323
80069
  "parameters": [
78324
80070
  {
78325
80071
  "$ref": "#/components/parameters/ClusterID"
78326
80072
  },
78327
80073
  {
78328
80074
  "$ref": "#/components/parameters/KubernetesResourceName"
78329
- },
78330
- {
78331
- "$ref": "#/components/parameters/KubernetesNamespaceQuery"
78332
80075
  }
78333
80076
  ],
78334
80077
  "responses": {
78335
80078
  "200": {
78336
- "and status conditions.": null,
80079
+ "and authorized Gateways.": null,
80080
+ "conditions": null,
78337
80081
  "content": {
78338
80082
  "application/json": {
78339
80083
  "schema": {
78340
- "$ref": "#/components/schemas/KubernetesBackendTLSPolicyDetailEnvelope"
80084
+ "$ref": "#/components/schemas/KubernetesGatewayClassDetailEnvelope"
78341
80085
  }
78342
80086
  }
78343
80087
  },
78344
- "description": "BackendTLSPolicy targets",
78345
- "trust sources": null
80088
+ "description": "GatewayClass status"
78346
80089
  },
78347
80090
  "403": {
78348
80091
  "$ref": "#/components/responses/Error"
@@ -78360,15 +80103,15 @@
78360
80103
  "x-soha-implementation-status": "implemented",
78361
80104
  "x-soha-permissions": {
78362
80105
  "keys": [
78363
- "platform.network.backend-tls-policies.view"
80106
+ "platform.network.gateway-classes.view"
78364
80107
  ],
78365
80108
  "mode": "all"
78366
80109
  }
78367
80110
  }
78368
80111
  },
78369
- "/clusters/{clusterID}/network/endpointslices": {
80112
+ "/clusters/{clusterID}/network/gateways": {
78370
80113
  "get": {
78371
- "operationId": "listKubernetesEndpointSlices",
80114
+ "operationId": "listKubernetesGateways",
78372
80115
  "parameters": [
78373
80116
  {
78374
80117
  "$ref": "#/components/parameters/ClusterID"
@@ -78382,11 +80125,11 @@
78382
80125
  "content": {
78383
80126
  "application/json": {
78384
80127
  "schema": {
78385
- "$ref": "#/components/schemas/KubernetesEndpointSliceListEnvelope"
80128
+ "$ref": "#/components/schemas/KubernetesGatewayListEnvelope"
78386
80129
  }
78387
80130
  }
78388
80131
  },
78389
- "description": "EndpointSlices visible in the selected scope."
80132
+ "description": "Gateway API Gateways visible in the selected scope."
78390
80133
  },
78391
80134
  "403": {
78392
80135
  "$ref": "#/components/responses/Error"
@@ -78404,15 +80147,15 @@
78404
80147
  "x-soha-implementation-status": "implemented",
78405
80148
  "x-soha-permissions": {
78406
80149
  "keys": [
78407
- "platform.network.endpoint-slices.view"
80150
+ "platform.network.gateways.view"
78408
80151
  ],
78409
80152
  "mode": "all"
78410
80153
  }
78411
80154
  }
78412
80155
  },
78413
- "/clusters/{clusterID}/network/endpointslices/{name}/detail": {
80156
+ "/clusters/{clusterID}/network/gateways/{name}/detail": {
78414
80157
  "get": {
78415
- "operationId": "getKubernetesEndpointSliceDetail",
80158
+ "operationId": "getKubernetesGatewayDetail",
78416
80159
  "parameters": [
78417
80160
  {
78418
80161
  "$ref": "#/components/parameters/ClusterID"
@@ -78426,16 +80169,16 @@
78426
80169
  ],
78427
80170
  "responses": {
78428
80171
  "200": {
78429
- "and topology hints.": null,
80172
+ "and attached routes.": null,
80173
+ "conditions": null,
78430
80174
  "content": {
78431
80175
  "application/json": {
78432
80176
  "schema": {
78433
- "$ref": "#/components/schemas/KubernetesEndpointSliceDetailEnvelope"
80177
+ "$ref": "#/components/schemas/KubernetesGatewayDetailEnvelope"
78434
80178
  }
78435
80179
  }
78436
80180
  },
78437
- "description": "EndpointSlice ports",
78438
- "endpoint health": null
80181
+ "description": "Gateway listeners"
78439
80182
  },
78440
80183
  "403": {
78441
80184
  "$ref": "#/components/responses/Error"
@@ -78453,18 +80196,21 @@
78453
80196
  "x-soha-implementation-status": "implemented",
78454
80197
  "x-soha-permissions": {
78455
80198
  "keys": [
78456
- "platform.network.endpoint-slices.view"
80199
+ "platform.network.gateways.view"
78457
80200
  ],
78458
80201
  "mode": "all"
78459
80202
  }
78460
80203
  }
78461
80204
  },
78462
- "/clusters/{clusterID}/network/gatewayclasses": {
80205
+ "/clusters/{clusterID}/network/grpcroutes": {
78463
80206
  "get": {
78464
- "operationId": "listKubernetesGatewayClasses",
80207
+ "operationId": "listKubernetesGRPCRoutes",
78465
80208
  "parameters": [
78466
80209
  {
78467
80210
  "$ref": "#/components/parameters/ClusterID"
80211
+ },
80212
+ {
80213
+ "$ref": "#/components/parameters/KubernetesNamespaceQuery"
78468
80214
  }
78469
80215
  ],
78470
80216
  "responses": {
@@ -78472,11 +80218,11 @@
78472
80218
  "content": {
78473
80219
  "application/json": {
78474
80220
  "schema": {
78475
- "$ref": "#/components/schemas/KubernetesGatewayClassListEnvelope"
80221
+ "$ref": "#/components/schemas/KubernetesGRPCRouteListEnvelope"
78476
80222
  }
78477
80223
  }
78478
80224
  },
78479
- "description": "Cluster-scoped GatewayClasses."
80225
+ "description": "GRPCRoutes visible in the selected scope."
78480
80226
  },
78481
80227
  "403": {
78482
80228
  "$ref": "#/components/responses/Error"
@@ -78494,35 +80240,84 @@
78494
80240
  "x-soha-implementation-status": "implemented",
78495
80241
  "x-soha-permissions": {
78496
80242
  "keys": [
78497
- "platform.network.gateway-classes.view"
80243
+ "platform.network.grpc-routes.view"
78498
80244
  ],
78499
80245
  "mode": "all"
78500
80246
  }
78501
80247
  }
78502
80248
  },
78503
- "/clusters/{clusterID}/network/gatewayclasses/{name}/detail": {
80249
+ "/clusters/{clusterID}/network/grpcroutes/{name}": {
80250
+ "delete": {
80251
+ "operationId": "deleteKubernetesGRPCRoute",
80252
+ "parameters": [
80253
+ {
80254
+ "$ref": "#/components/parameters/ClusterID"
80255
+ },
80256
+ {
80257
+ "$ref": "#/components/parameters/KubernetesResourceName"
80258
+ },
80259
+ {
80260
+ "$ref": "#/components/parameters/KubernetesNamespaceQuery"
80261
+ }
80262
+ ],
80263
+ "responses": {
80264
+ "204": {
80265
+ "description": "Resource deleted."
80266
+ },
80267
+ "400": {
80268
+ "$ref": "#/components/responses/Error"
80269
+ },
80270
+ "403": {
80271
+ "$ref": "#/components/responses/Error"
80272
+ },
80273
+ "404": {
80274
+ "$ref": "#/components/responses/Error"
80275
+ },
80276
+ "409": {
80277
+ "$ref": "#/components/responses/Error"
80278
+ },
80279
+ "503": {
80280
+ "$ref": "#/components/responses/Error"
80281
+ }
80282
+ },
80283
+ "tags": [
80284
+ "Platform"
80285
+ ],
80286
+ "x-soha-implementation-status": "implemented",
80287
+ "x-soha-permissions": {
80288
+ "keys": [
80289
+ "platform.network.grpc-routes.delete"
80290
+ ],
80291
+ "mode": "all"
80292
+ }
80293
+ }
80294
+ },
80295
+ "/clusters/{clusterID}/network/grpcroutes/{name}/detail": {
78504
80296
  "get": {
78505
- "operationId": "getKubernetesGatewayClassDetail",
80297
+ "operationId": "getKubernetesGRPCRouteDetail",
78506
80298
  "parameters": [
78507
80299
  {
78508
80300
  "$ref": "#/components/parameters/ClusterID"
78509
80301
  },
78510
80302
  {
78511
80303
  "$ref": "#/components/parameters/KubernetesResourceName"
80304
+ },
80305
+ {
80306
+ "$ref": "#/components/parameters/KubernetesNamespaceQuery"
78512
80307
  }
78513
80308
  ],
78514
80309
  "responses": {
78515
80310
  "200": {
78516
- "and authorized Gateways.": null,
78517
- "conditions": null,
80311
+ "and authorized backends.": null,
78518
80312
  "content": {
78519
80313
  "application/json": {
78520
80314
  "schema": {
78521
- "$ref": "#/components/schemas/KubernetesGatewayClassDetailEnvelope"
80315
+ "$ref": "#/components/schemas/KubernetesGRPCRouteDetailEnvelope"
78522
80316
  }
78523
80317
  }
78524
80318
  },
78525
- "description": "GatewayClass status"
80319
+ "description": "GRPCRoute parents",
80320
+ "matching rules": null
78526
80321
  },
78527
80322
  "403": {
78528
80323
  "$ref": "#/components/responses/Error"
@@ -78540,19 +80335,22 @@
78540
80335
  "x-soha-implementation-status": "implemented",
78541
80336
  "x-soha-permissions": {
78542
80337
  "keys": [
78543
- "platform.network.gateway-classes.view"
80338
+ "platform.network.grpc-routes.view"
78544
80339
  ],
78545
80340
  "mode": "all"
78546
80341
  }
78547
80342
  }
78548
80343
  },
78549
- "/clusters/{clusterID}/network/gateways": {
80344
+ "/clusters/{clusterID}/network/grpcroutes/{name}/yaml": {
78550
80345
  "get": {
78551
- "operationId": "listKubernetesGateways",
80346
+ "operationId": "getKubernetesGRPCRouteYaml",
78552
80347
  "parameters": [
78553
80348
  {
78554
80349
  "$ref": "#/components/parameters/ClusterID"
78555
80350
  },
80351
+ {
80352
+ "$ref": "#/components/parameters/KubernetesResourceName"
80353
+ },
78556
80354
  {
78557
80355
  "$ref": "#/components/parameters/KubernetesNamespaceQuery"
78558
80356
  }
@@ -78562,11 +80360,14 @@
78562
80360
  "content": {
78563
80361
  "application/json": {
78564
80362
  "schema": {
78565
- "$ref": "#/components/schemas/KubernetesGatewayListEnvelope"
80363
+ "$ref": "#/components/schemas/KubernetesResourceYamlEnvelope"
78566
80364
  }
78567
80365
  }
78568
80366
  },
78569
- "description": "Gateway API Gateways visible in the selected scope."
80367
+ "description": "Authorized Kubernetes resource YAML."
80368
+ },
80369
+ "400": {
80370
+ "$ref": "#/components/responses/Error"
78570
80371
  },
78571
80372
  "403": {
78572
80373
  "$ref": "#/components/responses/Error"
@@ -78574,6 +80375,9 @@
78574
80375
  "404": {
78575
80376
  "$ref": "#/components/responses/Error"
78576
80377
  },
80378
+ "409": {
80379
+ "$ref": "#/components/responses/Error"
80380
+ },
78577
80381
  "503": {
78578
80382
  "$ref": "#/components/responses/Error"
78579
80383
  }
@@ -78584,15 +80388,13 @@
78584
80388
  "x-soha-implementation-status": "implemented",
78585
80389
  "x-soha-permissions": {
78586
80390
  "keys": [
78587
- "platform.network.gateways.view"
80391
+ "platform.network.grpc-routes.view"
78588
80392
  ],
78589
80393
  "mode": "all"
78590
80394
  }
78591
- }
78592
- },
78593
- "/clusters/{clusterID}/network/gateways/{name}/detail": {
78594
- "get": {
78595
- "operationId": "getKubernetesGatewayDetail",
80395
+ },
80396
+ "put": {
80397
+ "operationId": "applyKubernetesGRPCRouteYaml",
78596
80398
  "parameters": [
78597
80399
  {
78598
80400
  "$ref": "#/components/parameters/ClusterID"
@@ -78604,18 +80406,29 @@
78604
80406
  "$ref": "#/components/parameters/KubernetesNamespaceQuery"
78605
80407
  }
78606
80408
  ],
80409
+ "requestBody": {
80410
+ "content": {
80411
+ "application/json": {
80412
+ "schema": {
80413
+ "$ref": "#/components/schemas/KubernetesResourceYamlInput"
80414
+ }
80415
+ }
80416
+ },
80417
+ "required": true
80418
+ },
78607
80419
  "responses": {
78608
80420
  "200": {
78609
- "and attached routes.": null,
78610
- "conditions": null,
78611
80421
  "content": {
78612
80422
  "application/json": {
78613
80423
  "schema": {
78614
- "$ref": "#/components/schemas/KubernetesGatewayDetailEnvelope"
80424
+ "$ref": "#/components/schemas/KubernetesResourceYamlEnvelope"
78615
80425
  }
78616
80426
  }
78617
80427
  },
78618
- "description": "Gateway listeners"
80428
+ "description": "Authorized Kubernetes resource YAML."
80429
+ },
80430
+ "400": {
80431
+ "$ref": "#/components/responses/Error"
78619
80432
  },
78620
80433
  "403": {
78621
80434
  "$ref": "#/components/responses/Error"
@@ -78623,6 +80436,9 @@
78623
80436
  "404": {
78624
80437
  "$ref": "#/components/responses/Error"
78625
80438
  },
80439
+ "409": {
80440
+ "$ref": "#/components/responses/Error"
80441
+ },
78626
80442
  "503": {
78627
80443
  "$ref": "#/components/responses/Error"
78628
80444
  }
@@ -78633,15 +80449,15 @@
78633
80449
  "x-soha-implementation-status": "implemented",
78634
80450
  "x-soha-permissions": {
78635
80451
  "keys": [
78636
- "platform.network.gateways.view"
80452
+ "platform.network.grpc-routes.update"
78637
80453
  ],
78638
80454
  "mode": "all"
78639
80455
  }
78640
80456
  }
78641
80457
  },
78642
- "/clusters/{clusterID}/network/grpcroutes": {
80458
+ "/clusters/{clusterID}/network/httproutes": {
78643
80459
  "get": {
78644
- "operationId": "listKubernetesGRPCRoutes",
80460
+ "operationId": "listKubernetesHTTPRoutes",
78645
80461
  "parameters": [
78646
80462
  {
78647
80463
  "$ref": "#/components/parameters/ClusterID"
@@ -78655,11 +80471,11 @@
78655
80471
  "content": {
78656
80472
  "application/json": {
78657
80473
  "schema": {
78658
- "$ref": "#/components/schemas/KubernetesGRPCRouteListEnvelope"
80474
+ "$ref": "#/components/schemas/KubernetesHTTPRouteListEnvelope"
78659
80475
  }
78660
80476
  }
78661
80477
  },
78662
- "description": "GRPCRoutes visible in the selected scope."
80478
+ "description": "HTTPRoutes visible in the selected scope."
78663
80479
  },
78664
80480
  "403": {
78665
80481
  "$ref": "#/components/responses/Error"
@@ -78677,15 +80493,61 @@
78677
80493
  "x-soha-implementation-status": "implemented",
78678
80494
  "x-soha-permissions": {
78679
80495
  "keys": [
78680
- "platform.network.grpc-routes.view"
80496
+ "platform.network.http-routes.view"
78681
80497
  ],
78682
80498
  "mode": "all"
78683
80499
  }
78684
80500
  }
78685
80501
  },
78686
- "/clusters/{clusterID}/network/grpcroutes/{name}/detail": {
80502
+ "/clusters/{clusterID}/network/httproutes/{name}": {
80503
+ "delete": {
80504
+ "operationId": "deleteKubernetesHTTPRoute",
80505
+ "parameters": [
80506
+ {
80507
+ "$ref": "#/components/parameters/ClusterID"
80508
+ },
80509
+ {
80510
+ "$ref": "#/components/parameters/KubernetesResourceName"
80511
+ },
80512
+ {
80513
+ "$ref": "#/components/parameters/KubernetesNamespaceQuery"
80514
+ }
80515
+ ],
80516
+ "responses": {
80517
+ "204": {
80518
+ "description": "Resource deleted."
80519
+ },
80520
+ "400": {
80521
+ "$ref": "#/components/responses/Error"
80522
+ },
80523
+ "403": {
80524
+ "$ref": "#/components/responses/Error"
80525
+ },
80526
+ "404": {
80527
+ "$ref": "#/components/responses/Error"
80528
+ },
80529
+ "409": {
80530
+ "$ref": "#/components/responses/Error"
80531
+ },
80532
+ "503": {
80533
+ "$ref": "#/components/responses/Error"
80534
+ }
80535
+ },
80536
+ "tags": [
80537
+ "Platform"
80538
+ ],
80539
+ "x-soha-implementation-status": "implemented",
80540
+ "x-soha-permissions": {
80541
+ "keys": [
80542
+ "platform.network.http-routes.delete"
80543
+ ],
80544
+ "mode": "all"
80545
+ }
80546
+ }
80547
+ },
80548
+ "/clusters/{clusterID}/network/httproutes/{name}/detail": {
78687
80549
  "get": {
78688
- "operationId": "getKubernetesGRPCRouteDetail",
80550
+ "operationId": "getKubernetesHTTPRouteDetail",
78689
80551
  "parameters": [
78690
80552
  {
78691
80553
  "$ref": "#/components/parameters/ClusterID"
@@ -78703,11 +80565,11 @@
78703
80565
  "content": {
78704
80566
  "application/json": {
78705
80567
  "schema": {
78706
- "$ref": "#/components/schemas/KubernetesGRPCRouteDetailEnvelope"
80568
+ "$ref": "#/components/schemas/KubernetesHTTPRouteDetailEnvelope"
78707
80569
  }
78708
80570
  }
78709
80571
  },
78710
- "description": "GRPCRoute parents",
80572
+ "description": "HTTPRoute parents",
78711
80573
  "matching rules": null
78712
80574
  },
78713
80575
  "403": {
@@ -78726,19 +80588,22 @@
78726
80588
  "x-soha-implementation-status": "implemented",
78727
80589
  "x-soha-permissions": {
78728
80590
  "keys": [
78729
- "platform.network.grpc-routes.view"
80591
+ "platform.network.http-routes.view"
78730
80592
  ],
78731
80593
  "mode": "all"
78732
80594
  }
78733
80595
  }
78734
80596
  },
78735
- "/clusters/{clusterID}/network/httproutes": {
80597
+ "/clusters/{clusterID}/network/httproutes/{name}/yaml": {
78736
80598
  "get": {
78737
- "operationId": "listKubernetesHTTPRoutes",
80599
+ "operationId": "getKubernetesHTTPRouteYaml",
78738
80600
  "parameters": [
78739
80601
  {
78740
80602
  "$ref": "#/components/parameters/ClusterID"
78741
80603
  },
80604
+ {
80605
+ "$ref": "#/components/parameters/KubernetesResourceName"
80606
+ },
78742
80607
  {
78743
80608
  "$ref": "#/components/parameters/KubernetesNamespaceQuery"
78744
80609
  }
@@ -78748,11 +80613,14 @@
78748
80613
  "content": {
78749
80614
  "application/json": {
78750
80615
  "schema": {
78751
- "$ref": "#/components/schemas/KubernetesHTTPRouteListEnvelope"
80616
+ "$ref": "#/components/schemas/KubernetesResourceYamlEnvelope"
78752
80617
  }
78753
80618
  }
78754
80619
  },
78755
- "description": "HTTPRoutes visible in the selected scope."
80620
+ "description": "Authorized Kubernetes resource YAML."
80621
+ },
80622
+ "400": {
80623
+ "$ref": "#/components/responses/Error"
78756
80624
  },
78757
80625
  "403": {
78758
80626
  "$ref": "#/components/responses/Error"
@@ -78760,6 +80628,9 @@
78760
80628
  "404": {
78761
80629
  "$ref": "#/components/responses/Error"
78762
80630
  },
80631
+ "409": {
80632
+ "$ref": "#/components/responses/Error"
80633
+ },
78763
80634
  "503": {
78764
80635
  "$ref": "#/components/responses/Error"
78765
80636
  }
@@ -78774,11 +80645,9 @@
78774
80645
  ],
78775
80646
  "mode": "all"
78776
80647
  }
78777
- }
78778
- },
78779
- "/clusters/{clusterID}/network/httproutes/{name}/detail": {
78780
- "get": {
78781
- "operationId": "getKubernetesHTTPRouteDetail",
80648
+ },
80649
+ "put": {
80650
+ "operationId": "applyKubernetesHTTPRouteYaml",
78782
80651
  "parameters": [
78783
80652
  {
78784
80653
  "$ref": "#/components/parameters/ClusterID"
@@ -78790,18 +80659,29 @@
78790
80659
  "$ref": "#/components/parameters/KubernetesNamespaceQuery"
78791
80660
  }
78792
80661
  ],
80662
+ "requestBody": {
80663
+ "content": {
80664
+ "application/json": {
80665
+ "schema": {
80666
+ "$ref": "#/components/schemas/KubernetesResourceYamlInput"
80667
+ }
80668
+ }
80669
+ },
80670
+ "required": true
80671
+ },
78793
80672
  "responses": {
78794
80673
  "200": {
78795
- "and authorized backends.": null,
78796
80674
  "content": {
78797
80675
  "application/json": {
78798
80676
  "schema": {
78799
- "$ref": "#/components/schemas/KubernetesHTTPRouteDetailEnvelope"
80677
+ "$ref": "#/components/schemas/KubernetesResourceYamlEnvelope"
78800
80678
  }
78801
80679
  }
78802
80680
  },
78803
- "description": "HTTPRoute parents",
78804
- "matching rules": null
80681
+ "description": "Authorized Kubernetes resource YAML."
80682
+ },
80683
+ "400": {
80684
+ "$ref": "#/components/responses/Error"
78805
80685
  },
78806
80686
  "403": {
78807
80687
  "$ref": "#/components/responses/Error"
@@ -78809,6 +80689,9 @@
78809
80689
  "404": {
78810
80690
  "$ref": "#/components/responses/Error"
78811
80691
  },
80692
+ "409": {
80693
+ "$ref": "#/components/responses/Error"
80694
+ },
78812
80695
  "503": {
78813
80696
  "$ref": "#/components/responses/Error"
78814
80697
  }
@@ -78819,7 +80702,7 @@
78819
80702
  "x-soha-implementation-status": "implemented",
78820
80703
  "x-soha-permissions": {
78821
80704
  "keys": [
78822
- "platform.network.http-routes.view"
80705
+ "platform.network.http-routes.update"
78823
80706
  ],
78824
80707
  "mode": "all"
78825
80708
  }
@@ -79045,32 +80928,76 @@
79045
80928
  }
79046
80929
  }
79047
80930
  },
79048
- "/clusters/{clusterID}/network/networkpolicies/{name}/detail": {
80931
+ "/clusters/{clusterID}/network/networkpolicies/{name}/detail": {
80932
+ "get": {
80933
+ "operationId": "getKubernetesNetworkPolicyDetail",
80934
+ "parameters": [
80935
+ {
80936
+ "$ref": "#/components/parameters/ClusterID"
80937
+ },
80938
+ {
80939
+ "$ref": "#/components/parameters/KubernetesResourceName"
80940
+ },
80941
+ {
80942
+ "$ref": "#/components/parameters/KubernetesNamespaceQuery"
80943
+ }
80944
+ ],
80945
+ "responses": {
80946
+ "200": {
80947
+ "and authorized matching Pods.": null,
80948
+ "content": {
80949
+ "application/json": {
80950
+ "schema": {
80951
+ "$ref": "#/components/schemas/KubernetesNetworkPolicyDetailEnvelope"
80952
+ }
80953
+ }
80954
+ },
80955
+ "description": "NetworkPolicy selectors",
80956
+ "rules": null
80957
+ },
80958
+ "403": {
80959
+ "$ref": "#/components/responses/Error"
80960
+ },
80961
+ "404": {
80962
+ "$ref": "#/components/responses/Error"
80963
+ },
80964
+ "503": {
80965
+ "$ref": "#/components/responses/Error"
80966
+ }
80967
+ },
80968
+ "tags": [
80969
+ "Platform"
80970
+ ],
80971
+ "x-soha-implementation-status": "implemented",
80972
+ "x-soha-permissions": {
80973
+ "keys": [
80974
+ "platform.network.network-policies.view"
80975
+ ],
80976
+ "mode": "all"
80977
+ }
80978
+ }
80979
+ },
80980
+ "/clusters/{clusterID}/network/referencegrants": {
79049
80981
  "get": {
79050
- "operationId": "getKubernetesNetworkPolicyDetail",
80982
+ "operationId": "listKubernetesReferenceGrants",
79051
80983
  "parameters": [
79052
80984
  {
79053
80985
  "$ref": "#/components/parameters/ClusterID"
79054
80986
  },
79055
- {
79056
- "$ref": "#/components/parameters/KubernetesResourceName"
79057
- },
79058
80987
  {
79059
80988
  "$ref": "#/components/parameters/KubernetesNamespaceQuery"
79060
80989
  }
79061
80990
  ],
79062
80991
  "responses": {
79063
80992
  "200": {
79064
- "and authorized matching Pods.": null,
79065
80993
  "content": {
79066
80994
  "application/json": {
79067
80995
  "schema": {
79068
- "$ref": "#/components/schemas/KubernetesNetworkPolicyDetailEnvelope"
80996
+ "$ref": "#/components/schemas/KubernetesReferenceGrantListEnvelope"
79069
80997
  }
79070
80998
  }
79071
80999
  },
79072
- "description": "NetworkPolicy selectors",
79073
- "rules": null
81000
+ "description": "ReferenceGrants visible in the selected scope."
79074
81001
  },
79075
81002
  "403": {
79076
81003
  "$ref": "#/components/responses/Error"
@@ -79088,19 +81015,68 @@
79088
81015
  "x-soha-implementation-status": "implemented",
79089
81016
  "x-soha-permissions": {
79090
81017
  "keys": [
79091
- "platform.network.network-policies.view"
81018
+ "platform.network.reference-grants.view"
79092
81019
  ],
79093
81020
  "mode": "all"
79094
81021
  }
79095
81022
  }
79096
81023
  },
79097
- "/clusters/{clusterID}/network/referencegrants": {
81024
+ "/clusters/{clusterID}/network/referencegrants/{name}": {
81025
+ "delete": {
81026
+ "operationId": "deleteKubernetesReferenceGrant",
81027
+ "parameters": [
81028
+ {
81029
+ "$ref": "#/components/parameters/ClusterID"
81030
+ },
81031
+ {
81032
+ "$ref": "#/components/parameters/KubernetesResourceName"
81033
+ },
81034
+ {
81035
+ "$ref": "#/components/parameters/KubernetesNamespaceQuery"
81036
+ }
81037
+ ],
81038
+ "responses": {
81039
+ "204": {
81040
+ "description": "Resource deleted."
81041
+ },
81042
+ "400": {
81043
+ "$ref": "#/components/responses/Error"
81044
+ },
81045
+ "403": {
81046
+ "$ref": "#/components/responses/Error"
81047
+ },
81048
+ "404": {
81049
+ "$ref": "#/components/responses/Error"
81050
+ },
81051
+ "409": {
81052
+ "$ref": "#/components/responses/Error"
81053
+ },
81054
+ "503": {
81055
+ "$ref": "#/components/responses/Error"
81056
+ }
81057
+ },
81058
+ "tags": [
81059
+ "Platform"
81060
+ ],
81061
+ "x-soha-implementation-status": "implemented",
81062
+ "x-soha-permissions": {
81063
+ "keys": [
81064
+ "platform.network.reference-grants.delete"
81065
+ ],
81066
+ "mode": "all"
81067
+ }
81068
+ }
81069
+ },
81070
+ "/clusters/{clusterID}/network/referencegrants/{name}/detail": {
79098
81071
  "get": {
79099
- "operationId": "listKubernetesReferenceGrants",
81072
+ "operationId": "getKubernetesReferenceGrantDetail",
79100
81073
  "parameters": [
79101
81074
  {
79102
81075
  "$ref": "#/components/parameters/ClusterID"
79103
81076
  },
81077
+ {
81078
+ "$ref": "#/components/parameters/KubernetesResourceName"
81079
+ },
79104
81080
  {
79105
81081
  "$ref": "#/components/parameters/KubernetesNamespaceQuery"
79106
81082
  }
@@ -79110,11 +81086,11 @@
79110
81086
  "content": {
79111
81087
  "application/json": {
79112
81088
  "schema": {
79113
- "$ref": "#/components/schemas/KubernetesReferenceGrantListEnvelope"
81089
+ "$ref": "#/components/schemas/KubernetesReferenceGrantDetailEnvelope"
79114
81090
  }
79115
81091
  }
79116
81092
  },
79117
- "description": "ReferenceGrants visible in the selected scope."
81093
+ "description": "ReferenceGrant source and target references."
79118
81094
  },
79119
81095
  "403": {
79120
81096
  "$ref": "#/components/responses/Error"
@@ -79138,9 +81114,9 @@
79138
81114
  }
79139
81115
  }
79140
81116
  },
79141
- "/clusters/{clusterID}/network/referencegrants/{name}/detail": {
81117
+ "/clusters/{clusterID}/network/referencegrants/{name}/yaml": {
79142
81118
  "get": {
79143
- "operationId": "getKubernetesReferenceGrantDetail",
81119
+ "operationId": "getKubernetesReferenceGrantYaml",
79144
81120
  "parameters": [
79145
81121
  {
79146
81122
  "$ref": "#/components/parameters/ClusterID"
@@ -79157,11 +81133,14 @@
79157
81133
  "content": {
79158
81134
  "application/json": {
79159
81135
  "schema": {
79160
- "$ref": "#/components/schemas/KubernetesReferenceGrantDetailEnvelope"
81136
+ "$ref": "#/components/schemas/KubernetesResourceYamlEnvelope"
79161
81137
  }
79162
81138
  }
79163
81139
  },
79164
- "description": "ReferenceGrant source and target references."
81140
+ "description": "Authorized Kubernetes resource YAML."
81141
+ },
81142
+ "400": {
81143
+ "$ref": "#/components/responses/Error"
79165
81144
  },
79166
81145
  "403": {
79167
81146
  "$ref": "#/components/responses/Error"
@@ -79169,6 +81148,9 @@
79169
81148
  "404": {
79170
81149
  "$ref": "#/components/responses/Error"
79171
81150
  },
81151
+ "409": {
81152
+ "$ref": "#/components/responses/Error"
81153
+ },
79172
81154
  "503": {
79173
81155
  "$ref": "#/components/responses/Error"
79174
81156
  }
@@ -79183,6 +81165,67 @@
79183
81165
  ],
79184
81166
  "mode": "all"
79185
81167
  }
81168
+ },
81169
+ "put": {
81170
+ "operationId": "applyKubernetesReferenceGrantYaml",
81171
+ "parameters": [
81172
+ {
81173
+ "$ref": "#/components/parameters/ClusterID"
81174
+ },
81175
+ {
81176
+ "$ref": "#/components/parameters/KubernetesResourceName"
81177
+ },
81178
+ {
81179
+ "$ref": "#/components/parameters/KubernetesNamespaceQuery"
81180
+ }
81181
+ ],
81182
+ "requestBody": {
81183
+ "content": {
81184
+ "application/json": {
81185
+ "schema": {
81186
+ "$ref": "#/components/schemas/KubernetesResourceYamlInput"
81187
+ }
81188
+ }
81189
+ },
81190
+ "required": true
81191
+ },
81192
+ "responses": {
81193
+ "200": {
81194
+ "content": {
81195
+ "application/json": {
81196
+ "schema": {
81197
+ "$ref": "#/components/schemas/KubernetesResourceYamlEnvelope"
81198
+ }
81199
+ }
81200
+ },
81201
+ "description": "Authorized Kubernetes resource YAML."
81202
+ },
81203
+ "400": {
81204
+ "$ref": "#/components/responses/Error"
81205
+ },
81206
+ "403": {
81207
+ "$ref": "#/components/responses/Error"
81208
+ },
81209
+ "404": {
81210
+ "$ref": "#/components/responses/Error"
81211
+ },
81212
+ "409": {
81213
+ "$ref": "#/components/responses/Error"
81214
+ },
81215
+ "503": {
81216
+ "$ref": "#/components/responses/Error"
81217
+ }
81218
+ },
81219
+ "tags": [
81220
+ "Platform"
81221
+ ],
81222
+ "x-soha-implementation-status": "implemented",
81223
+ "x-soha-permissions": {
81224
+ "keys": [
81225
+ "platform.network.reference-grants.update"
81226
+ ],
81227
+ "mode": "all"
81228
+ }
79186
81229
  }
79187
81230
  },
79188
81231
  "/clusters/{clusterID}/network/services": {
@@ -79361,7 +81404,7 @@
79361
81404
  }
79362
81405
  }
79363
81406
  },
79364
- "description": "Resolved ingress and Gateway API topology for the selected scope."
81407
+ "description": "Bounded permission-filtered Kubernetes, Gateway API, Traefik and APISIX topology, with per-source coverage and explicit unresolved relationships."
79365
81408
  },
79366
81409
  "403": {
79367
81410
  "$ref": "#/components/responses/Error"
@@ -79801,6 +81844,112 @@
79801
81844
  }
79802
81845
  }
79803
81846
  },
81847
+ "/clusters/{clusterID}/resource-monitoring": {
81848
+ "get": {
81849
+ "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.",
81850
+ "operationId": "getKubernetesResourceMonitoring",
81851
+ "parameters": [
81852
+ {
81853
+ "$ref": "#/components/parameters/ClusterID"
81854
+ },
81855
+ {
81856
+ "in": "query",
81857
+ "name": "view",
81858
+ "required": true,
81859
+ "schema": {
81860
+ "$ref": "#/components/schemas/ResourceMonitoringViewName"
81861
+ }
81862
+ },
81863
+ {
81864
+ "in": "query",
81865
+ "name": "node",
81866
+ "schema": {
81867
+ "maxLength": 253,
81868
+ "type": "string"
81869
+ }
81870
+ },
81871
+ {
81872
+ "in": "query",
81873
+ "name": "from",
81874
+ "schema": {
81875
+ "format": "date-time",
81876
+ "type": "string"
81877
+ }
81878
+ },
81879
+ {
81880
+ "in": "query",
81881
+ "name": "to",
81882
+ "schema": {
81883
+ "format": "date-time",
81884
+ "type": "string"
81885
+ }
81886
+ },
81887
+ {
81888
+ "in": "query",
81889
+ "name": "rangeMinutes",
81890
+ "schema": {
81891
+ "default": 60,
81892
+ "maximum": 1440,
81893
+ "minimum": 1,
81894
+ "type": "integer"
81895
+ }
81896
+ },
81897
+ {
81898
+ "in": "query",
81899
+ "name": "stepSeconds",
81900
+ "schema": {
81901
+ "default": 60,
81902
+ "maximum": 3600,
81903
+ "minimum": 15,
81904
+ "type": "integer"
81905
+ }
81906
+ }
81907
+ ],
81908
+ "responses": {
81909
+ "200": {
81910
+ "content": {
81911
+ "application/json": {
81912
+ "schema": {
81913
+ "$ref": "#/components/schemas/ResourceMonitoringEnvelope"
81914
+ }
81915
+ }
81916
+ },
81917
+ "description": "Per-panel quality and bounded node series."
81918
+ },
81919
+ "400": {
81920
+ "$ref": "#/components/responses/Error"
81921
+ },
81922
+ "403": {
81923
+ "$ref": "#/components/responses/Error"
81924
+ },
81925
+ "404": {
81926
+ "$ref": "#/components/responses/Error"
81927
+ },
81928
+ "503": {
81929
+ "$ref": "#/components/responses/Error"
81930
+ }
81931
+ },
81932
+ "tags": [
81933
+ "Platform"
81934
+ ],
81935
+ "x-soha-implementation-status": "implemented",
81936
+ "x-soha-permissions": {
81937
+ "byQuery": {
81938
+ "view": {
81939
+ "conntrack": "platform.resource-monitoring.conntrack.view",
81940
+ "cpu": "platform.resource-monitoring.cpu.view",
81941
+ "memory": "platform.resource-monitoring.memory.view",
81942
+ "overview": "platform.resource-monitoring.overview.view",
81943
+ "pods": "platform.resource-monitoring.pods.view"
81944
+ }
81945
+ },
81946
+ "keys": [
81947
+ "platform.nodes.view"
81948
+ ],
81949
+ "mode": "all"
81950
+ }
81951
+ }
81952
+ },
79804
81953
  "/clusters/{clusterID}/resources/graph": {
79805
81954
  "get": {
79806
81955
  "operationId": "getKubernetesResourceGraph",
@@ -81812,6 +83961,52 @@
81812
83961
  }
81813
83962
  }
81814
83963
  },
83964
+ "/clusters/{clusterID}/workloads/replicationcontrollers/{name}": {
83965
+ "delete": {
83966
+ "operationId": "deleteKubernetesReplicationController",
83967
+ "parameters": [
83968
+ {
83969
+ "$ref": "#/components/parameters/ClusterID"
83970
+ },
83971
+ {
83972
+ "$ref": "#/components/parameters/KubernetesResourceName"
83973
+ },
83974
+ {
83975
+ "$ref": "#/components/parameters/KubernetesNamespaceQuery"
83976
+ }
83977
+ ],
83978
+ "responses": {
83979
+ "204": {
83980
+ "description": "Resource deleted."
83981
+ },
83982
+ "400": {
83983
+ "$ref": "#/components/responses/Error"
83984
+ },
83985
+ "403": {
83986
+ "$ref": "#/components/responses/Error"
83987
+ },
83988
+ "404": {
83989
+ "$ref": "#/components/responses/Error"
83990
+ },
83991
+ "409": {
83992
+ "$ref": "#/components/responses/Error"
83993
+ },
83994
+ "503": {
83995
+ "$ref": "#/components/responses/Error"
83996
+ }
83997
+ },
83998
+ "tags": [
83999
+ "Platform"
84000
+ ],
84001
+ "x-soha-implementation-status": "implemented",
84002
+ "x-soha-permissions": {
84003
+ "keys": [
84004
+ "platform.workloads.replication-controllers.delete"
84005
+ ],
84006
+ "mode": "all"
84007
+ }
84008
+ }
84009
+ },
81815
84010
  "/clusters/{clusterID}/workloads/replicationcontrollers/{name}/detail": {
81816
84011
  "get": {
81817
84012
  "operationId": "getKubernetesReplicationControllerDetail",