@opensoha/contracts 0.1.24 → 0.1.26
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/COMPATIBILITY.md +24 -0
- package/README.md +1 -1
- package/agent/environment/export.go +1 -0
- package/agent/environment/protocol_test.go +1 -1
- package/agent/guest/protocol_test.go +2 -2
- package/auth/catalog_generated.go +2 -2
- package/auth/gateway_permissions_test.go +48 -0
- package/auth/permission-catalog.json +300 -1
- package/compat/consumer-revisions.json +1 -1
- package/compat/json-schema-ecosystem-0.1.0.json +1 -1
- package/compat/openapi-loose-boundaries-0.1.0.json +1 -1
- package/delivery/document.schema.json +127 -9
- package/examples/relations_compat_test.go +18 -0
- package/fixtures/openapi/DeliveryDocument/invalid/migration-missing-guide-build-template.json +30 -0
- package/fixtures/openapi/DeliveryDocument/invalid/migration-missing-guide-deployment-template.json +30 -0
- package/fixtures/openapi/DeliveryDocument/invalid/migration-missing-guide-workflow-template.json +27 -0
- package/fixtures/openapi/DeliveryDocument/valid/migration-build-template.json +31 -0
- package/fixtures/openapi/DeliveryDocument/valid/migration-deployment-template.json +31 -0
- package/fixtures/openapi/DeliveryDocument/valid/migration-workflow-template.json +28 -0
- package/fixtures/openapi/DeliveryPlanInput/invalid/manual-plan.json +7 -0
- package/fixtures/openapi/DeliveryPlanInput/valid/manual-plan.json +6 -0
- package/fixtures/openapi/DeliveryTargetInput/invalid/candidate-on-runtime-deploy.json +9 -0
- package/fixtures/openapi/DeliveryTargetInput/invalid/config-update-missing-service.json +7 -0
- package/fixtures/openapi/DeliveryTargetInput/valid/template-configuration-only.json +8 -0
- package/fixtures/openapi/DeliveryTargetInput/valid/template-configuration-without-runtime-environment.json +1 -0
- package/fixtures/openapi/KubernetesAgentActionCheck/invalid/unproven-state.json +6 -0
- package/fixtures/openapi/KubernetesAgentActionCheck/valid/configured-denied.json +9 -0
- package/fixtures/openapi/KubernetesAgentActionProfile/invalid/wildcard.json +1 -0
- package/fixtures/openapi/KubernetesAgentActionProfile/valid/workbench.json +1 -0
- package/fixtures/openapi/KubernetesClusterRegistrationRequest/invalid/action-profile.json +3 -0
- package/fixtures/openapi/KubernetesClusterRegistrationRequest/valid/action-profile.json +5 -0
- package/fixtures/openapi/KubernetesImportCandidateListEnvelope/invalid/source-with-spec.json +33 -0
- package/fixtures/openapi/KubernetesImportCandidateListEnvelope/invalid/source-without-uid.json +29 -0
- package/fixtures/openapi/KubernetesImportCandidateListEnvelope/valid/stable-source.json +30 -0
- package/fixtures/openapi/KubernetesNodeListEnvelope/invalid/condition-status-boolean.json +17 -0
- package/fixtures/openapi/KubernetesNodeListEnvelope/invalid/taint-effect-missing.json +16 -0
- package/fixtures/openapi/KubernetesNodeListEnvelope/valid/legacy-fields-absent.json +11 -0
- package/fixtures/openapi/KubernetesNodeListEnvelope/valid/no-taints.json +13 -0
- package/fixtures/openapi/KubernetesNodeListEnvelope/valid/ready-cordoned-tainted.json +28 -0
- package/fixtures/openapi/KubernetesNodeListEnvelope/valid/unknown-fields-null.json +13 -0
- package/fixtures/openapi/KubernetesPod/invalid/pod-uid.json +9 -0
- package/fixtures/openapi/KubernetesPod/valid/pod-uid.json +9 -0
- package/fixtures/openapi/KubernetesPodDetail/invalid/pod-uid.json +6 -0
- package/fixtures/openapi/KubernetesPodDetail/valid/pod-uid.json +6 -0
- package/fixtures/openapi/KubernetesServiceImportRequest/invalid/empty-source-uid.json +48 -0
- package/fixtures/openapi/KubernetesServiceImportRequest/valid/pinned-workloads-and-cr.json +48 -0
- package/fixtures/openapi/KubernetesTopologyCoverage/invalid/empty-as-success.json +5 -0
- package/fixtures/openapi/KubernetesTopologyCoverage/valid/not-installed.json +6 -0
- package/fixtures/openapi/KubernetesTopologyGraphEdge/invalid/negative-weight.json +8 -0
- package/fixtures/openapi/KubernetesTopologyGraphEdge/valid/zero-weight.json +20 -0
- package/fixtures/openapi/KubernetesTopologyGraphNode/invalid/fake-flow-kind.json +42 -0
- package/fixtures/openapi/KubernetesTopologyGraphNode/valid/rule.json +42 -0
- package/fixtures/openapi/KubernetesTopologySnapshot/invalid/raw-source-field.json +33 -0
- package/fixtures/openapi/KubernetesTopologySnapshot/valid/projected-source.json +32 -0
- package/fixtures/openapi/KubernetesTopologySnapshotRequest/invalid/arbitrary-gvr.json +8 -0
- package/fixtures/openapi/KubernetesTopologySnapshotRequest/valid/bounded-sources.json +11 -0
- package/fixtures/openapi/KubernetesTopologySourceQuery/invalid/cluster-namespace.json +4 -0
- package/fixtures/openapi/KubernetesTopologySourceQuery/valid/all-namespaces.json +4 -0
- package/fixtures/openapi/ManifestExecutionTaskPayload/invalid/initialization.json +7 -0
- package/fixtures/openapi/ManifestExecutionTaskPayload/valid/initialization.json +7 -0
- package/fixtures/openapi/ManifestRootResource/invalid/root.json +1 -0
- package/fixtures/openapi/ManifestRootResource/valid/root.json +1 -0
- package/fixtures/openapi/ResourceMonitoringPanel/invalid/unknown-quality.json +7 -0
- package/fixtures/openapi/ResourceMonitoringPanel/valid/not-collected.json +7 -0
- package/fixtures/openapi/ResourceMonitoringPoint/invalid/string-zero.json +4 -0
- package/fixtures/openapi/ResourceMonitoringPoint/valid/missing.json +4 -0
- package/fixtures/openapi/ResourceMonitoringPoint/valid/zero.json +4 -0
- package/fixtures/openapi/ResourceMonitoringView/invalid/raw-query.json +12 -0
- package/fixtures/openapi/ResourceMonitoringView/valid/unconfigured.json +12 -0
- package/fixtures/openapi/ResourceRelationConfig/invalid/executable-rule.json +17 -0
- package/fixtures/openapi/ResourceRelationConfig/valid/unknown-kind.json +13 -0
- package/fixtures/openapi/ServiceDeploymentTemplateInput/invalid/migration-missing-guide-valid-yaml.json +38 -0
- package/fixtures/openapi/ServiceDeploymentTemplateInput/valid/migration-valid-yaml.json +39 -0
- package/fixtures/openapi/TemplateMigrationAssessment/invalid/initialization.json +9 -0
- package/fixtures/openapi/TemplateMigrationAssessment/valid/initialization.json +9 -0
- package/fixtures/openapi/TemplateMigrationPolicy/invalid/blank-guide.json +5 -0
- package/fixtures/openapi/TemplateMigrationPolicy/invalid/missing-guide.json +4 -0
- package/fixtures/openapi/TemplateMigrationPolicy/invalid/unknown-escape-hatch.json +6 -0
- package/fixtures/openapi/TemplateMigrationPolicy/valid/legacy-safe.json +4 -0
- package/fixtures/openapi/TemplateMigrationPolicy/valid/ordered-data-change.json +5 -0
- package/fixtures/openapi/TemplateUpdateBatchInput/invalid/duplicate-candidates.json +11 -0
- package/fixtures/openapi/TemplateUpdateBatchInput/invalid/empty-identities.json +10 -0
- package/fixtures/openapi/TemplateUpdateBatchInput/valid/staged-adoption.json +10 -0
- package/fixtures/openapi/TemplateUpdatePolicyInput/invalid/unknown-mode.json +8 -0
- package/fixtures/openapi/TemplateUpdatePolicyInput/valid/explicit-automatic.json +8 -0
- package/fixtures/openapi/TemplateUpdatePreviewInput/invalid/empty-identities.json +10 -0
- package/fixtures/openapi/TemplateUpdatePreviewInput/invalid/empty-targets.json +6 -0
- package/fixtures/openapi/TemplateUpdatePreviewInput/valid/cross-version-manual.json +14 -0
- package/gen/go/sohaapi/client.go +1 -1
- package/gen/go/sohaapi/client_test.go +2 -2
- package/gen/go/sohaapi/import_source_compat_test.go +12 -0
- package/gen/go/sohaapi/kubernetes_monitoring_test.go +67 -0
- package/gen/go/sohaapi/types.go +2210 -387
- package/gen/ts/sohaapi/index.ts +1862 -5
- package/go.mod +2 -2
- package/helmrelease/delivery.go +4 -1
- package/helmrelease/initialization.go +10 -0
- package/helmrelease/runtime/delivery.go +40 -10
- package/helmrelease/runtime/delivery_test.go +4 -0
- package/helmrelease/runtime/initialization.go +186 -0
- package/helmrelease/runtime/initialization_test.go +203 -0
- package/openapi/soha-api.json +5514 -1179
- package/openapi/soha-api.yaml +1080 -11
- package/openapi/spec_generated.go +3 -3
- package/openapi/spec_test.go +76 -0
- package/package.json +1 -1
- package/resource/agent_access.go +12 -0
- package/resource/agent_profiles.go +62 -0
- package/resource/agent_profiles_test.go +36 -0
- package/resource/kubernetes_kinds.go +73 -0
- package/resource/kubernetes_kinds_test.go +38 -0
- package/resource/models.go +25 -14
- package/resource/network_topology.go +166 -0
- package/resource/network_topology_projection.go +208 -0
- package/resource/network_topology_projection_test.go +53 -0
- package/resource/network_topology_test.go +51 -0
- package/resource/network_topology_validation.go +29 -0
- package/resource/node_drain.go +34 -0
- package/resource/relations.go +225 -0
- package/resource/relations_test.go +47 -0
- package/resource/resource_monitoring.go +99 -0
- package/resource/root_cr.go +38 -0
- package/resource/runtime/argocd_integration_test.go +1 -1
- package/resource/runtime/initialization.go +66 -0
- package/resource/runtime/initialization_test.go +80 -0
- package/resource/runtime/network_topology.go +232 -0
- package/resource/runtime/network_topology_test.go +62 -0
- package/resource/runtime/node_drain.go +124 -0
- package/resource/runtime/node_drain_test.go +95 -0
- package/resource/runtime/relations.go +161 -0
- package/resource/runtime/relations_test.go +100 -0
- package/resource/runtime/resource_edit.go +128 -0
- package/resource/runtime/resource_edit_test.go +183 -0
- package/resource/runtime/resource_monitoring.go +243 -0
- package/resource/runtime/resource_monitoring_test.go +88 -0
- package/resource/runtime/root_cr.go +79 -0
- package/resource/runtime/root_cr_test.go +118 -0
package/openapi/soha-api.yaml
CHANGED
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
openapi: 3.1.0
|
|
2
2
|
info:
|
|
3
3
|
title: Soha API
|
|
4
|
-
version: 0.1.
|
|
4
|
+
version: 0.1.26
|
|
5
5
|
description: >
|
|
6
6
|
Public OpenSoha core API contract. This first contract focuses on stable
|
|
7
7
|
cross-repository boundaries: auth, health, runner-facing control-plane
|
|
8
8
|
callbacks, AI Gateway, and MCP capability discovery.
|
|
9
|
+
Pod session WebSocket targets and their UID-aware ticket requirements are
|
|
10
|
+
described separately in x-soha-websocket-paths to preserve HTTP client generation.
|
|
9
11
|
servers:
|
|
10
12
|
- url: /api/v1
|
|
11
13
|
description: Soha API v1
|
|
@@ -40,6 +42,78 @@ tags:
|
|
|
40
42
|
- name: Portal
|
|
41
43
|
- name: Directory
|
|
42
44
|
- name: Network Access
|
|
45
|
+
x-soha-websocket-paths:
|
|
46
|
+
/clusters/{clusterID}/workloads/pods/{podName}/logs/stream:
|
|
47
|
+
get:
|
|
48
|
+
tags: [Platform]
|
|
49
|
+
operationId: streamKubernetesPodLogs
|
|
50
|
+
x-soha-permissions:
|
|
51
|
+
mode: all
|
|
52
|
+
keys: [platform.pods.logs]
|
|
53
|
+
x-soha-implementation-status: implemented
|
|
54
|
+
description: >-
|
|
55
|
+
Existing WebSocket logs endpoint. Saved sessions must provide expectedUid.
|
|
56
|
+
Each upstream open checks the current Pod UID and current action authorization.
|
|
57
|
+
A stream ticket issued with expectedUid binds namespace, container and shell too.
|
|
58
|
+
parameters:
|
|
59
|
+
- $ref: "#/components/parameters/ClusterID"
|
|
60
|
+
- $ref: "#/components/parameters/KubernetesPodName"
|
|
61
|
+
- $ref: "#/components/parameters/KubernetesNamespaceDefaultQuery"
|
|
62
|
+
- name: expectedUid
|
|
63
|
+
in: query
|
|
64
|
+
schema: { type: string, minLength: 1 }
|
|
65
|
+
- name: container
|
|
66
|
+
in: query
|
|
67
|
+
schema: { type: string, minLength: 1 }
|
|
68
|
+
- name: stream_ticket
|
|
69
|
+
in: query
|
|
70
|
+
schema: { type: string, minLength: 1 }
|
|
71
|
+
- name: tailLines
|
|
72
|
+
in: query
|
|
73
|
+
schema: { type: integer, minimum: 0, default: 200 }
|
|
74
|
+
- name: sinceSeconds
|
|
75
|
+
in: query
|
|
76
|
+
schema: { type: integer, minimum: 0, default: 0 }
|
|
77
|
+
responses:
|
|
78
|
+
"101":
|
|
79
|
+
description: WebSocket opened; terminalMessage envelopes carry stream output and safe exit status. Authentication, UID, permission or provider failures terminate the stream without attaching to a replacement Pod.
|
|
80
|
+
"401": { $ref: "#/components/responses/Error" }
|
|
81
|
+
"403": { $ref: "#/components/responses/Error" }
|
|
82
|
+
"503": { $ref: "#/components/responses/Error" }
|
|
83
|
+
/clusters/{clusterID}/workloads/pods/{podName}/terminal:
|
|
84
|
+
get:
|
|
85
|
+
tags: [Platform]
|
|
86
|
+
operationId: streamKubernetesPodTerminal
|
|
87
|
+
x-soha-permissions:
|
|
88
|
+
mode: all
|
|
89
|
+
keys: [platform.pods.exec]
|
|
90
|
+
x-soha-implementation-status: implemented
|
|
91
|
+
description: >-
|
|
92
|
+
Existing WebSocket exec endpoint. Saved sessions must provide expectedUid.
|
|
93
|
+
Each upstream open checks the current Pod UID and current action authorization.
|
|
94
|
+
A stream ticket issued with expectedUid binds namespace, container and shell too.
|
|
95
|
+
parameters:
|
|
96
|
+
- $ref: "#/components/parameters/ClusterID"
|
|
97
|
+
- $ref: "#/components/parameters/KubernetesPodName"
|
|
98
|
+
- $ref: "#/components/parameters/KubernetesNamespaceDefaultQuery"
|
|
99
|
+
- name: expectedUid
|
|
100
|
+
in: query
|
|
101
|
+
schema: { type: string, minLength: 1 }
|
|
102
|
+
- name: container
|
|
103
|
+
in: query
|
|
104
|
+
schema: { type: string, minLength: 1 }
|
|
105
|
+
- name: stream_ticket
|
|
106
|
+
in: query
|
|
107
|
+
schema: { type: string, minLength: 1 }
|
|
108
|
+
- name: shell
|
|
109
|
+
in: query
|
|
110
|
+
schema: { type: string, default: /bin/sh }
|
|
111
|
+
responses:
|
|
112
|
+
"101":
|
|
113
|
+
description: WebSocket opened; terminalMessage envelopes carry stream output and safe exit status. Authentication, UID, permission or provider failures terminate the stream without attaching to a replacement Pod.
|
|
114
|
+
"401": { $ref: "#/components/responses/Error" }
|
|
115
|
+
"403": { $ref: "#/components/responses/Error" }
|
|
116
|
+
"503": { $ref: "#/components/responses/Error" }
|
|
43
117
|
paths:
|
|
44
118
|
/network-access/vpn/profiles:
|
|
45
119
|
get:
|
|
@@ -2640,11 +2714,81 @@ paths:
|
|
|
2640
2714
|
$ref: "#/components/schemas/ApplicationEnvironmentEnvelope"
|
|
2641
2715
|
"400":
|
|
2642
2716
|
$ref: "#/components/responses/Error"
|
|
2717
|
+
/application-environments/{applicationEnvironmentID}/targets/{targetID}/source:
|
|
2718
|
+
get:
|
|
2719
|
+
tags: [Delivery]
|
|
2720
|
+
operationId: getApplicationEnvironmentTargetSource
|
|
2721
|
+
description: Read a linked source through existing Kubernetes authorization. Rejects replaced UIDs. Custom resource YAML additionally requires sensitive-data read permission. Responses must not be persisted in browser caches.
|
|
2722
|
+
parameters:
|
|
2723
|
+
- name: applicationEnvironmentID
|
|
2724
|
+
in: path
|
|
2725
|
+
required: true
|
|
2726
|
+
schema: { type: string, minLength: 1 }
|
|
2727
|
+
- name: targetID
|
|
2728
|
+
in: path
|
|
2729
|
+
required: true
|
|
2730
|
+
schema: { type: string, minLength: 1 }
|
|
2731
|
+
responses:
|
|
2732
|
+
"200":
|
|
2733
|
+
description: Current cluster YAML for the linked resource, never a fabricated source file.
|
|
2734
|
+
headers:
|
|
2735
|
+
Cache-Control:
|
|
2736
|
+
required: true
|
|
2737
|
+
schema: { type: string, const: no-store }
|
|
2738
|
+
content:
|
|
2739
|
+
application/json:
|
|
2740
|
+
schema:
|
|
2741
|
+
$ref: "#/components/schemas/KubernetesResourceYamlEnvelope"
|
|
2742
|
+
"403":
|
|
2743
|
+
$ref: "#/components/responses/Error"
|
|
2744
|
+
"404":
|
|
2745
|
+
$ref: "#/components/responses/Error"
|
|
2746
|
+
"409":
|
|
2747
|
+
$ref: "#/components/responses/Error"
|
|
2748
|
+
/application-environments/{applicationEnvironmentID}/targets/{targetID}/relations:
|
|
2749
|
+
get:
|
|
2750
|
+
tags: [Delivery]
|
|
2751
|
+
operationId: getApplicationEnvironmentTargetRelations
|
|
2752
|
+
description: Read UID-verified metadata relationships for an imported root. Every source retains Kubernetes and Soha authorization. Rules are observational metadata, never permission grants. Partial coverage is explicit; no provider configuration values are returned.
|
|
2753
|
+
parameters:
|
|
2754
|
+
- name: applicationEnvironmentID
|
|
2755
|
+
in: path
|
|
2756
|
+
required: true
|
|
2757
|
+
schema: { type: string, minLength: 1 }
|
|
2758
|
+
- name: targetID
|
|
2759
|
+
in: path
|
|
2760
|
+
required: true
|
|
2761
|
+
schema: { type: string, minLength: 1 }
|
|
2762
|
+
responses:
|
|
2763
|
+
"200":
|
|
2764
|
+
description: Bounded observed relations, including coverage gaps.
|
|
2765
|
+
headers:
|
|
2766
|
+
Cache-Control:
|
|
2767
|
+
required: true
|
|
2768
|
+
schema: { type: string, const: no-store }
|
|
2769
|
+
content:
|
|
2770
|
+
application/json:
|
|
2771
|
+
schema: { $ref: "#/components/schemas/ResourceRelationsEnvelope" }
|
|
2772
|
+
"400": { $ref: "#/components/responses/Error" }
|
|
2773
|
+
"403": { $ref: "#/components/responses/Error" }
|
|
2774
|
+
"404": { $ref: "#/components/responses/Error" }
|
|
2775
|
+
"409": { $ref: "#/components/responses/Error" }
|
|
2643
2776
|
/application-environments/target-candidates:
|
|
2644
2777
|
get:
|
|
2645
2778
|
tags: [Delivery]
|
|
2646
2779
|
operationId: listApplicationEnvironmentTargetCandidates
|
|
2647
2780
|
parameters:
|
|
2781
|
+
- name: workloadKind
|
|
2782
|
+
in: query
|
|
2783
|
+
required: false
|
|
2784
|
+
schema:
|
|
2785
|
+
type: string
|
|
2786
|
+
enum: [Deployment, StatefulSet, DaemonSet, Job, CronJob, CustomResource]
|
|
2787
|
+
- name: crdName
|
|
2788
|
+
in: query
|
|
2789
|
+
required: false
|
|
2790
|
+
description: Explicit CRD selection for CustomResource discovery. Only this served resource and namespace are queried.
|
|
2791
|
+
schema: { type: string, minLength: 1 }
|
|
2648
2792
|
- name: clusterId
|
|
2649
2793
|
in: query
|
|
2650
2794
|
required: true
|
|
@@ -4196,6 +4340,23 @@ paths:
|
|
|
4196
4340
|
$ref: "#/components/schemas/DeliveryEnvironmentListEnvelope"
|
|
4197
4341
|
"403":
|
|
4198
4342
|
$ref: "#/components/responses/Error"
|
|
4343
|
+
/delivery/template-updates/targets:
|
|
4344
|
+
get:
|
|
4345
|
+
{"tags": ["Delivery"], "operationId": "listTemplateUpdateTargets", "summary": "Preview affected application bindings with honest paginated totals", "description": "Uses current application and environment permissions. Published immutable template versions only; adoption changes configuration and never deploys resources. Fixed and detached bindings are excluded from automatic propagation. Concurrent changes return 409.", "responses": {"200": {"description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/TemplateUpdateTargetPageEnvelope"}}}}, "400": {"$ref": "#/components/responses/Error"}, "403": {"$ref": "#/components/responses/Error"}, "404": {"$ref": "#/components/responses/Error"}, "409": {"$ref": "#/components/responses/Error"}}, "parameters": [{"in": "query", "name": "kind", "required": true, "schema": {"$ref": "#/components/schemas/TemplateUpdateKind"}}, {"in": "query", "name": "templateId", "required": true, "schema": {"type": "string", "maxLength": 256}}, {"in": "query", "name": "applicationId", "required": false, "schema": {"type": "string", "maxLength": 256}}, {"in": "query", "name": "page", "required": false, "schema": {"type": "integer", "format": "int64", "minimum": 1, "maximum": 2147483647}}, {"in": "query", "name": "pageSize", "required": false, "schema": {"type": "integer", "format": "int64", "minimum": 1, "maximum": 100}}, {"name": "serviceId", "in": "query", "required": false, "schema": {"type": "string", "maxLength": 256}}, {"name": "applicationEnvironmentId", "in": "query", "required": false, "schema": {"type": "string", "maxLength": 256}}]}
|
|
4346
|
+
/delivery/template-updates/previews:
|
|
4347
|
+
post:
|
|
4348
|
+
{"tags": ["Delivery"], "operationId": "createTemplateUpdatePreview", "summary": "Freeze final template adoption and cumulative plus adjacent-version differences", "description": "Uses current application and environment permissions. Published immutable template versions only; adoption changes configuration and never deploys resources. Fixed and detached bindings are excluded from automatic propagation. Concurrent changes return 409.", "responses": {"200": {"description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/TemplateUpdatePreviewEnvelope"}}}}, "400": {"$ref": "#/components/responses/Error"}, "403": {"$ref": "#/components/responses/Error"}, "404": {"$ref": "#/components/responses/Error"}, "409": {"$ref": "#/components/responses/Error"}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/TemplateUpdatePreviewInput"}}}}}
|
|
4349
|
+
/delivery/template-updates/previews/{previewID}:
|
|
4350
|
+
get:
|
|
4351
|
+
{"tags": ["Delivery"], "operationId": "getTemplateUpdatePreview", "summary": "Read a frozen adoption preview with current scope revalidation", "description": "Uses current application and environment permissions. Published immutable template versions only; adoption changes configuration and never deploys resources. Fixed and detached bindings are excluded from automatic propagation. Concurrent changes return 409.", "responses": {"200": {"description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/TemplateUpdatePreviewEnvelope"}}}}, "400": {"$ref": "#/components/responses/Error"}, "403": {"$ref": "#/components/responses/Error"}, "404": {"$ref": "#/components/responses/Error"}, "409": {"$ref": "#/components/responses/Error"}}, "parameters": [{"in": "path", "name": "previewID", "required": true, "schema": {"type": "string", "maxLength": 256}}]}
|
|
4352
|
+
/delivery/template-updates/previews/{previewID}/batches:
|
|
4353
|
+
post:
|
|
4354
|
+
{"tags": ["Delivery"], "operationId": "createTemplateUpdateBatch", "summary": "Adopt selected candidates in waves through existing DeliveryBatch and Plan approvals", "description": "Uses current application and environment permissions. Published immutable template versions only; adoption changes configuration and never deploys resources. Fixed and detached bindings are excluded from automatic propagation. Concurrent changes return 409.", "responses": {"200": {"description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/DeliveryBatchEnvelope"}}}}, "400": {"$ref": "#/components/responses/Error"}, "403": {"$ref": "#/components/responses/Error"}, "404": {"$ref": "#/components/responses/Error"}, "409": {"$ref": "#/components/responses/Error"}}, "parameters": [{"in": "path", "name": "previewID", "required": true, "schema": {"type": "string", "maxLength": 256}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/TemplateUpdateBatchInput"}}}}}
|
|
4355
|
+
/delivery/template-updates/policies:
|
|
4356
|
+
get:
|
|
4357
|
+
{"tags": ["Delivery"], "operationId": "listTemplateUpdatePolicies", "summary": "List explicit adoption policies visible to the current principal", "description": "Uses current application and environment permissions. Published immutable template versions only; adoption changes configuration and never deploys resources. Fixed and detached bindings are excluded from automatic propagation. Concurrent changes return 409.", "responses": {"200": {"description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/TemplateUpdatePolicyListEnvelope"}}}}, "400": {"$ref": "#/components/responses/Error"}, "403": {"$ref": "#/components/responses/Error"}, "404": {"$ref": "#/components/responses/Error"}, "409": {"$ref": "#/components/responses/Error"}}, "parameters": [{"in": "query", "name": "kind", "required": true, "schema": {"$ref": "#/components/schemas/TemplateUpdateKind"}}, {"in": "query", "name": "templateId", "required": true, "schema": {"type": "string", "maxLength": 256}}, {"in": "query", "name": "applicationId", "required": false, "schema": {"type": "string", "maxLength": 256}}]}
|
|
4358
|
+
put:
|
|
4359
|
+
{"tags": ["Delivery"], "operationId": "saveTemplateUpdatePolicy", "summary": "Save fixed manual automatic or approval policy using a binding-scoped CAS", "description": "Uses current application and environment permissions. Published immutable template versions only; adoption changes configuration and never deploys resources. Fixed and detached bindings are excluded from automatic propagation. Concurrent changes return 409.", "responses": {"200": {"description": "Success", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/TemplateUpdatePolicyEnvelope"}}}}, "400": {"$ref": "#/components/responses/Error"}, "403": {"$ref": "#/components/responses/Error"}, "404": {"$ref": "#/components/responses/Error"}, "409": {"$ref": "#/components/responses/Error"}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/TemplateUpdatePolicyInput"}}}}}
|
|
4199
4360
|
/delivery/manifest-packages:
|
|
4200
4361
|
get:
|
|
4201
4362
|
tags: [Delivery]
|
|
@@ -8661,6 +8822,10 @@ paths:
|
|
|
8661
8822
|
- $ref: "#/components/parameters/ClusterID"
|
|
8662
8823
|
- $ref: "#/components/parameters/KubernetesPodName"
|
|
8663
8824
|
- $ref: "#/components/parameters/KubernetesNamespaceDefaultQuery"
|
|
8825
|
+
- name: expectedUid
|
|
8826
|
+
in: query
|
|
8827
|
+
description: Reject the request if the live Pod UID differs. Omit only for legacy clients, never when restoring a saved session.
|
|
8828
|
+
schema: { type: string, minLength: 1 }
|
|
8664
8829
|
- name: container
|
|
8665
8830
|
in: query
|
|
8666
8831
|
schema: { type: string, minLength: 1 }
|
|
@@ -8682,6 +8847,11 @@ paths:
|
|
|
8682
8847
|
$ref: "#/components/schemas/KubernetesPodLogsEnvelope"
|
|
8683
8848
|
"403": { $ref: "#/components/responses/Error" }
|
|
8684
8849
|
"404": { $ref: "#/components/responses/Error" }
|
|
8850
|
+
"409":
|
|
8851
|
+
description: The current Pod UID differs from expectedUid; open the current Pod instead of adopting it by name.
|
|
8852
|
+
content:
|
|
8853
|
+
application/json:
|
|
8854
|
+
schema: { $ref: "#/components/schemas/ErrorEnvelope" }
|
|
8685
8855
|
"503": { $ref: "#/components/responses/Error" }
|
|
8686
8856
|
/clusters/{clusterID}/workloads/pods/{podName}/yaml:
|
|
8687
8857
|
get:
|
|
@@ -10086,6 +10256,36 @@ paths:
|
|
|
10086
10256
|
"403": { $ref: "#/components/responses/Error" }
|
|
10087
10257
|
"404": { $ref: "#/components/responses/Error" }
|
|
10088
10258
|
"503": { $ref: "#/components/responses/Error" }
|
|
10259
|
+
/clusters/{clusterID}/resource-monitoring:
|
|
10260
|
+
get:
|
|
10261
|
+
tags: [Platform]
|
|
10262
|
+
operationId: getKubernetesResourceMonitoring
|
|
10263
|
+
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.
|
|
10264
|
+
x-soha-permissions:
|
|
10265
|
+
mode: all
|
|
10266
|
+
keys: [platform.nodes.view]
|
|
10267
|
+
byQuery:
|
|
10268
|
+
view:
|
|
10269
|
+
overview: platform.resource-monitoring.overview.view
|
|
10270
|
+
cpu: platform.resource-monitoring.cpu.view
|
|
10271
|
+
memory: platform.resource-monitoring.memory.view
|
|
10272
|
+
conntrack: platform.resource-monitoring.conntrack.view
|
|
10273
|
+
pods: platform.resource-monitoring.pods.view
|
|
10274
|
+
x-soha-implementation-status: implemented
|
|
10275
|
+
parameters:
|
|
10276
|
+
- { $ref: "#/components/parameters/ClusterID" }
|
|
10277
|
+
- { name: view, in: query, required: true, schema: { $ref: "#/components/schemas/ResourceMonitoringViewName" } }
|
|
10278
|
+
- { name: node, in: query, schema: { type: string, maxLength: 253 } }
|
|
10279
|
+
- { name: from, in: query, schema: { type: string, format: date-time } }
|
|
10280
|
+
- { name: to, in: query, schema: { type: string, format: date-time } }
|
|
10281
|
+
- { name: rangeMinutes, in: query, schema: { type: integer, minimum: 1, maximum: 1440, default: 60 } }
|
|
10282
|
+
- { name: stepSeconds, in: query, schema: { type: integer, minimum: 15, maximum: 3600, default: 60 } }
|
|
10283
|
+
responses:
|
|
10284
|
+
"200": { description: Per-panel quality and bounded node series., content: { application/json: { schema: { $ref: "#/components/schemas/ResourceMonitoringEnvelope" } } } }
|
|
10285
|
+
"400": { $ref: "#/components/responses/Error" }
|
|
10286
|
+
"403": { $ref: "#/components/responses/Error" }
|
|
10287
|
+
"404": { $ref: "#/components/responses/Error" }
|
|
10288
|
+
"503": { $ref: "#/components/responses/Error" }
|
|
10089
10289
|
/clusters/{clusterID}/network/topology:
|
|
10090
10290
|
get:
|
|
10091
10291
|
tags: [Platform]
|
|
@@ -10097,7 +10297,7 @@ paths:
|
|
|
10097
10297
|
x-soha-implementation-status: implemented
|
|
10098
10298
|
parameters: [{ $ref: "#/components/parameters/ClusterID" }, { $ref: "#/components/parameters/KubernetesNamespaceQuery" }]
|
|
10099
10299
|
responses:
|
|
10100
|
-
"200": { description:
|
|
10300
|
+
"200": { description: "Bounded permission-filtered Kubernetes, Gateway API, Traefik and APISIX topology, with per-source coverage and explicit unresolved relationships.", content: { application/json: { schema: { $ref: "#/components/schemas/KubernetesNetworkTopologyEnvelope" } } } }
|
|
10101
10301
|
"403": { $ref: "#/components/responses/Error" }
|
|
10102
10302
|
"404": { $ref: "#/components/responses/Error" }
|
|
10103
10303
|
"503": { $ref: "#/components/responses/Error" }
|
|
@@ -19764,6 +19964,12 @@ paths:
|
|
|
19764
19964
|
tags:
|
|
19765
19965
|
- Platform
|
|
19766
19966
|
operationId: drainKubernetesNode
|
|
19967
|
+
description: >-
|
|
19968
|
+
Cordon the node and evict eligible pods. A 409 with node_drain_pdb_blocked,
|
|
19969
|
+
node_drain_eviction_blocked, node_drain_timeout, node_drain_canceled,
|
|
19970
|
+
node_drain_pod_selection or node_drain_failed means this drain did not complete.
|
|
19971
|
+
Inspect current node schedulability and remaining pods before retrying or
|
|
19972
|
+
explicitly restoring scheduling. Transport failure leaves the outcome unknown.
|
|
19767
19973
|
x-soha-permissions:
|
|
19768
19974
|
mode: all
|
|
19769
19975
|
keys:
|
|
@@ -20027,6 +20233,458 @@ paths:
|
|
|
20027
20233
|
$ref: "#/components/responses/Error"
|
|
20028
20234
|
"503":
|
|
20029
20235
|
$ref: "#/components/responses/Error"
|
|
20236
|
+
/clusters/{clusterID}/network/httproutes/{name}:
|
|
20237
|
+
delete:
|
|
20238
|
+
tags: [Platform]
|
|
20239
|
+
operationId: deleteKubernetesHTTPRoute
|
|
20240
|
+
x-soha-permissions:
|
|
20241
|
+
mode: all
|
|
20242
|
+
keys: [platform.network.http-routes.delete]
|
|
20243
|
+
x-soha-implementation-status: implemented
|
|
20244
|
+
parameters:
|
|
20245
|
+
- $ref: "#/components/parameters/ClusterID"
|
|
20246
|
+
- $ref: "#/components/parameters/KubernetesResourceName"
|
|
20247
|
+
- $ref: "#/components/parameters/KubernetesNamespaceQuery"
|
|
20248
|
+
responses:
|
|
20249
|
+
"204": { description: Resource deleted. }
|
|
20250
|
+
"400": { $ref: "#/components/responses/Error" }
|
|
20251
|
+
"403": { $ref: "#/components/responses/Error" }
|
|
20252
|
+
"404": { $ref: "#/components/responses/Error" }
|
|
20253
|
+
"409": { $ref: "#/components/responses/Error" }
|
|
20254
|
+
"503": { $ref: "#/components/responses/Error" }
|
|
20255
|
+
/clusters/{clusterID}/network/httproutes/{name}/yaml:
|
|
20256
|
+
get:
|
|
20257
|
+
tags: [Platform]
|
|
20258
|
+
operationId: getKubernetesHTTPRouteYaml
|
|
20259
|
+
x-soha-permissions:
|
|
20260
|
+
mode: all
|
|
20261
|
+
keys: [platform.network.http-routes.view]
|
|
20262
|
+
x-soha-implementation-status: implemented
|
|
20263
|
+
parameters:
|
|
20264
|
+
- $ref: "#/components/parameters/ClusterID"
|
|
20265
|
+
- $ref: "#/components/parameters/KubernetesResourceName"
|
|
20266
|
+
- $ref: "#/components/parameters/KubernetesNamespaceQuery"
|
|
20267
|
+
responses:
|
|
20268
|
+
"200":
|
|
20269
|
+
description: Authorized Kubernetes resource YAML.
|
|
20270
|
+
content:
|
|
20271
|
+
application/json:
|
|
20272
|
+
schema:
|
|
20273
|
+
$ref: "#/components/schemas/KubernetesResourceYamlEnvelope"
|
|
20274
|
+
"400": { $ref: "#/components/responses/Error" }
|
|
20275
|
+
"403": { $ref: "#/components/responses/Error" }
|
|
20276
|
+
"404": { $ref: "#/components/responses/Error" }
|
|
20277
|
+
"409": { $ref: "#/components/responses/Error" }
|
|
20278
|
+
"503": { $ref: "#/components/responses/Error" }
|
|
20279
|
+
put:
|
|
20280
|
+
tags: [Platform]
|
|
20281
|
+
operationId: applyKubernetesHTTPRouteYaml
|
|
20282
|
+
x-soha-permissions:
|
|
20283
|
+
mode: all
|
|
20284
|
+
keys: [platform.network.http-routes.update]
|
|
20285
|
+
x-soha-implementation-status: implemented
|
|
20286
|
+
parameters:
|
|
20287
|
+
- $ref: "#/components/parameters/ClusterID"
|
|
20288
|
+
- $ref: "#/components/parameters/KubernetesResourceName"
|
|
20289
|
+
- $ref: "#/components/parameters/KubernetesNamespaceQuery"
|
|
20290
|
+
requestBody:
|
|
20291
|
+
required: true
|
|
20292
|
+
content:
|
|
20293
|
+
application/json:
|
|
20294
|
+
schema:
|
|
20295
|
+
$ref: "#/components/schemas/KubernetesResourceYamlInput"
|
|
20296
|
+
responses:
|
|
20297
|
+
"200":
|
|
20298
|
+
description: Authorized Kubernetes resource YAML.
|
|
20299
|
+
content:
|
|
20300
|
+
application/json:
|
|
20301
|
+
schema:
|
|
20302
|
+
$ref: "#/components/schemas/KubernetesResourceYamlEnvelope"
|
|
20303
|
+
"400": { $ref: "#/components/responses/Error" }
|
|
20304
|
+
"403": { $ref: "#/components/responses/Error" }
|
|
20305
|
+
"404": { $ref: "#/components/responses/Error" }
|
|
20306
|
+
"409": { $ref: "#/components/responses/Error" }
|
|
20307
|
+
"503": { $ref: "#/components/responses/Error" }
|
|
20308
|
+
/clusters/{clusterID}/network/grpcroutes/{name}:
|
|
20309
|
+
delete:
|
|
20310
|
+
tags: [Platform]
|
|
20311
|
+
operationId: deleteKubernetesGRPCRoute
|
|
20312
|
+
x-soha-permissions:
|
|
20313
|
+
mode: all
|
|
20314
|
+
keys: [platform.network.grpc-routes.delete]
|
|
20315
|
+
x-soha-implementation-status: implemented
|
|
20316
|
+
parameters:
|
|
20317
|
+
- $ref: "#/components/parameters/ClusterID"
|
|
20318
|
+
- $ref: "#/components/parameters/KubernetesResourceName"
|
|
20319
|
+
- $ref: "#/components/parameters/KubernetesNamespaceQuery"
|
|
20320
|
+
responses:
|
|
20321
|
+
"204": { description: Resource deleted. }
|
|
20322
|
+
"400": { $ref: "#/components/responses/Error" }
|
|
20323
|
+
"403": { $ref: "#/components/responses/Error" }
|
|
20324
|
+
"404": { $ref: "#/components/responses/Error" }
|
|
20325
|
+
"409": { $ref: "#/components/responses/Error" }
|
|
20326
|
+
"503": { $ref: "#/components/responses/Error" }
|
|
20327
|
+
/clusters/{clusterID}/network/grpcroutes/{name}/yaml:
|
|
20328
|
+
get:
|
|
20329
|
+
tags: [Platform]
|
|
20330
|
+
operationId: getKubernetesGRPCRouteYaml
|
|
20331
|
+
x-soha-permissions:
|
|
20332
|
+
mode: all
|
|
20333
|
+
keys: [platform.network.grpc-routes.view]
|
|
20334
|
+
x-soha-implementation-status: implemented
|
|
20335
|
+
parameters:
|
|
20336
|
+
- $ref: "#/components/parameters/ClusterID"
|
|
20337
|
+
- $ref: "#/components/parameters/KubernetesResourceName"
|
|
20338
|
+
- $ref: "#/components/parameters/KubernetesNamespaceQuery"
|
|
20339
|
+
responses:
|
|
20340
|
+
"200":
|
|
20341
|
+
description: Authorized Kubernetes resource YAML.
|
|
20342
|
+
content:
|
|
20343
|
+
application/json:
|
|
20344
|
+
schema:
|
|
20345
|
+
$ref: "#/components/schemas/KubernetesResourceYamlEnvelope"
|
|
20346
|
+
"400": { $ref: "#/components/responses/Error" }
|
|
20347
|
+
"403": { $ref: "#/components/responses/Error" }
|
|
20348
|
+
"404": { $ref: "#/components/responses/Error" }
|
|
20349
|
+
"409": { $ref: "#/components/responses/Error" }
|
|
20350
|
+
"503": { $ref: "#/components/responses/Error" }
|
|
20351
|
+
put:
|
|
20352
|
+
tags: [Platform]
|
|
20353
|
+
operationId: applyKubernetesGRPCRouteYaml
|
|
20354
|
+
x-soha-permissions:
|
|
20355
|
+
mode: all
|
|
20356
|
+
keys: [platform.network.grpc-routes.update]
|
|
20357
|
+
x-soha-implementation-status: implemented
|
|
20358
|
+
parameters:
|
|
20359
|
+
- $ref: "#/components/parameters/ClusterID"
|
|
20360
|
+
- $ref: "#/components/parameters/KubernetesResourceName"
|
|
20361
|
+
- $ref: "#/components/parameters/KubernetesNamespaceQuery"
|
|
20362
|
+
requestBody:
|
|
20363
|
+
required: true
|
|
20364
|
+
content:
|
|
20365
|
+
application/json:
|
|
20366
|
+
schema:
|
|
20367
|
+
$ref: "#/components/schemas/KubernetesResourceYamlInput"
|
|
20368
|
+
responses:
|
|
20369
|
+
"200":
|
|
20370
|
+
description: Authorized Kubernetes resource YAML.
|
|
20371
|
+
content:
|
|
20372
|
+
application/json:
|
|
20373
|
+
schema:
|
|
20374
|
+
$ref: "#/components/schemas/KubernetesResourceYamlEnvelope"
|
|
20375
|
+
"400": { $ref: "#/components/responses/Error" }
|
|
20376
|
+
"403": { $ref: "#/components/responses/Error" }
|
|
20377
|
+
"404": { $ref: "#/components/responses/Error" }
|
|
20378
|
+
"409": { $ref: "#/components/responses/Error" }
|
|
20379
|
+
"503": { $ref: "#/components/responses/Error" }
|
|
20380
|
+
/clusters/{clusterID}/network/backendtlspolicies/{name}:
|
|
20381
|
+
delete:
|
|
20382
|
+
tags: [Platform]
|
|
20383
|
+
operationId: deleteKubernetesBackendTLSPolicy
|
|
20384
|
+
x-soha-permissions:
|
|
20385
|
+
mode: all
|
|
20386
|
+
keys: [platform.network.backend-tls-policies.delete]
|
|
20387
|
+
x-soha-implementation-status: implemented
|
|
20388
|
+
parameters:
|
|
20389
|
+
- $ref: "#/components/parameters/ClusterID"
|
|
20390
|
+
- $ref: "#/components/parameters/KubernetesResourceName"
|
|
20391
|
+
- $ref: "#/components/parameters/KubernetesNamespaceQuery"
|
|
20392
|
+
responses:
|
|
20393
|
+
"204": { description: Resource deleted. }
|
|
20394
|
+
"400": { $ref: "#/components/responses/Error" }
|
|
20395
|
+
"403": { $ref: "#/components/responses/Error" }
|
|
20396
|
+
"404": { $ref: "#/components/responses/Error" }
|
|
20397
|
+
"409": { $ref: "#/components/responses/Error" }
|
|
20398
|
+
"503": { $ref: "#/components/responses/Error" }
|
|
20399
|
+
/clusters/{clusterID}/network/backendtlspolicies/{name}/yaml:
|
|
20400
|
+
get:
|
|
20401
|
+
tags: [Platform]
|
|
20402
|
+
operationId: getKubernetesBackendTLSPolicyYaml
|
|
20403
|
+
x-soha-permissions:
|
|
20404
|
+
mode: all
|
|
20405
|
+
keys: [platform.network.backend-tls-policies.view]
|
|
20406
|
+
x-soha-implementation-status: implemented
|
|
20407
|
+
parameters:
|
|
20408
|
+
- $ref: "#/components/parameters/ClusterID"
|
|
20409
|
+
- $ref: "#/components/parameters/KubernetesResourceName"
|
|
20410
|
+
- $ref: "#/components/parameters/KubernetesNamespaceQuery"
|
|
20411
|
+
responses:
|
|
20412
|
+
"200":
|
|
20413
|
+
description: Authorized Kubernetes resource YAML.
|
|
20414
|
+
content:
|
|
20415
|
+
application/json:
|
|
20416
|
+
schema:
|
|
20417
|
+
$ref: "#/components/schemas/KubernetesResourceYamlEnvelope"
|
|
20418
|
+
"400": { $ref: "#/components/responses/Error" }
|
|
20419
|
+
"403": { $ref: "#/components/responses/Error" }
|
|
20420
|
+
"404": { $ref: "#/components/responses/Error" }
|
|
20421
|
+
"409": { $ref: "#/components/responses/Error" }
|
|
20422
|
+
"503": { $ref: "#/components/responses/Error" }
|
|
20423
|
+
put:
|
|
20424
|
+
tags: [Platform]
|
|
20425
|
+
operationId: applyKubernetesBackendTLSPolicyYaml
|
|
20426
|
+
x-soha-permissions:
|
|
20427
|
+
mode: all
|
|
20428
|
+
keys: [platform.network.backend-tls-policies.update]
|
|
20429
|
+
x-soha-implementation-status: implemented
|
|
20430
|
+
parameters:
|
|
20431
|
+
- $ref: "#/components/parameters/ClusterID"
|
|
20432
|
+
- $ref: "#/components/parameters/KubernetesResourceName"
|
|
20433
|
+
- $ref: "#/components/parameters/KubernetesNamespaceQuery"
|
|
20434
|
+
requestBody:
|
|
20435
|
+
required: true
|
|
20436
|
+
content:
|
|
20437
|
+
application/json:
|
|
20438
|
+
schema:
|
|
20439
|
+
$ref: "#/components/schemas/KubernetesResourceYamlInput"
|
|
20440
|
+
responses:
|
|
20441
|
+
"200":
|
|
20442
|
+
description: Authorized Kubernetes resource YAML.
|
|
20443
|
+
content:
|
|
20444
|
+
application/json:
|
|
20445
|
+
schema:
|
|
20446
|
+
$ref: "#/components/schemas/KubernetesResourceYamlEnvelope"
|
|
20447
|
+
"400": { $ref: "#/components/responses/Error" }
|
|
20448
|
+
"403": { $ref: "#/components/responses/Error" }
|
|
20449
|
+
"404": { $ref: "#/components/responses/Error" }
|
|
20450
|
+
"409": { $ref: "#/components/responses/Error" }
|
|
20451
|
+
"503": { $ref: "#/components/responses/Error" }
|
|
20452
|
+
/clusters/{clusterID}/network/referencegrants/{name}:
|
|
20453
|
+
delete:
|
|
20454
|
+
tags: [Platform]
|
|
20455
|
+
operationId: deleteKubernetesReferenceGrant
|
|
20456
|
+
x-soha-permissions:
|
|
20457
|
+
mode: all
|
|
20458
|
+
keys: [platform.network.reference-grants.delete]
|
|
20459
|
+
x-soha-implementation-status: implemented
|
|
20460
|
+
parameters:
|
|
20461
|
+
- $ref: "#/components/parameters/ClusterID"
|
|
20462
|
+
- $ref: "#/components/parameters/KubernetesResourceName"
|
|
20463
|
+
- $ref: "#/components/parameters/KubernetesNamespaceQuery"
|
|
20464
|
+
responses:
|
|
20465
|
+
"204": { description: Resource deleted. }
|
|
20466
|
+
"400": { $ref: "#/components/responses/Error" }
|
|
20467
|
+
"403": { $ref: "#/components/responses/Error" }
|
|
20468
|
+
"404": { $ref: "#/components/responses/Error" }
|
|
20469
|
+
"409": { $ref: "#/components/responses/Error" }
|
|
20470
|
+
"503": { $ref: "#/components/responses/Error" }
|
|
20471
|
+
/clusters/{clusterID}/network/referencegrants/{name}/yaml:
|
|
20472
|
+
get:
|
|
20473
|
+
tags: [Platform]
|
|
20474
|
+
operationId: getKubernetesReferenceGrantYaml
|
|
20475
|
+
x-soha-permissions:
|
|
20476
|
+
mode: all
|
|
20477
|
+
keys: [platform.network.reference-grants.view]
|
|
20478
|
+
x-soha-implementation-status: implemented
|
|
20479
|
+
parameters:
|
|
20480
|
+
- $ref: "#/components/parameters/ClusterID"
|
|
20481
|
+
- $ref: "#/components/parameters/KubernetesResourceName"
|
|
20482
|
+
- $ref: "#/components/parameters/KubernetesNamespaceQuery"
|
|
20483
|
+
responses:
|
|
20484
|
+
"200":
|
|
20485
|
+
description: Authorized Kubernetes resource YAML.
|
|
20486
|
+
content:
|
|
20487
|
+
application/json:
|
|
20488
|
+
schema:
|
|
20489
|
+
$ref: "#/components/schemas/KubernetesResourceYamlEnvelope"
|
|
20490
|
+
"400": { $ref: "#/components/responses/Error" }
|
|
20491
|
+
"403": { $ref: "#/components/responses/Error" }
|
|
20492
|
+
"404": { $ref: "#/components/responses/Error" }
|
|
20493
|
+
"409": { $ref: "#/components/responses/Error" }
|
|
20494
|
+
"503": { $ref: "#/components/responses/Error" }
|
|
20495
|
+
put:
|
|
20496
|
+
tags: [Platform]
|
|
20497
|
+
operationId: applyKubernetesReferenceGrantYaml
|
|
20498
|
+
x-soha-permissions:
|
|
20499
|
+
mode: all
|
|
20500
|
+
keys: [platform.network.reference-grants.update]
|
|
20501
|
+
x-soha-implementation-status: implemented
|
|
20502
|
+
parameters:
|
|
20503
|
+
- $ref: "#/components/parameters/ClusterID"
|
|
20504
|
+
- $ref: "#/components/parameters/KubernetesResourceName"
|
|
20505
|
+
- $ref: "#/components/parameters/KubernetesNamespaceQuery"
|
|
20506
|
+
requestBody:
|
|
20507
|
+
required: true
|
|
20508
|
+
content:
|
|
20509
|
+
application/json:
|
|
20510
|
+
schema:
|
|
20511
|
+
$ref: "#/components/schemas/KubernetesResourceYamlInput"
|
|
20512
|
+
responses:
|
|
20513
|
+
"200":
|
|
20514
|
+
description: Authorized Kubernetes resource YAML.
|
|
20515
|
+
content:
|
|
20516
|
+
application/json:
|
|
20517
|
+
schema:
|
|
20518
|
+
$ref: "#/components/schemas/KubernetesResourceYamlEnvelope"
|
|
20519
|
+
"400": { $ref: "#/components/responses/Error" }
|
|
20520
|
+
"403": { $ref: "#/components/responses/Error" }
|
|
20521
|
+
"404": { $ref: "#/components/responses/Error" }
|
|
20522
|
+
"409": { $ref: "#/components/responses/Error" }
|
|
20523
|
+
"503": { $ref: "#/components/responses/Error" }
|
|
20524
|
+
/clusters/{clusterID}/configuration/hpas/{name}:
|
|
20525
|
+
delete:
|
|
20526
|
+
tags: [Platform]
|
|
20527
|
+
operationId: deleteKubernetesHorizontalPodAutoscaler
|
|
20528
|
+
x-soha-permissions:
|
|
20529
|
+
mode: all
|
|
20530
|
+
keys: [platform.configuration.horizontal-pod-autoscalers.delete]
|
|
20531
|
+
x-soha-implementation-status: implemented
|
|
20532
|
+
parameters:
|
|
20533
|
+
- $ref: "#/components/parameters/ClusterID"
|
|
20534
|
+
- $ref: "#/components/parameters/KubernetesResourceName"
|
|
20535
|
+
- $ref: "#/components/parameters/KubernetesNamespaceQuery"
|
|
20536
|
+
responses:
|
|
20537
|
+
"204": { description: Resource deleted. }
|
|
20538
|
+
"400": { $ref: "#/components/responses/Error" }
|
|
20539
|
+
"403": { $ref: "#/components/responses/Error" }
|
|
20540
|
+
"404": { $ref: "#/components/responses/Error" }
|
|
20541
|
+
"409": { $ref: "#/components/responses/Error" }
|
|
20542
|
+
"503": { $ref: "#/components/responses/Error" }
|
|
20543
|
+
/clusters/{clusterID}/configuration/hpas/{name}/yaml:
|
|
20544
|
+
get:
|
|
20545
|
+
tags: [Platform]
|
|
20546
|
+
operationId: getKubernetesHorizontalPodAutoscalerYaml
|
|
20547
|
+
x-soha-permissions:
|
|
20548
|
+
mode: all
|
|
20549
|
+
keys: [platform.configuration.horizontal-pod-autoscalers.view]
|
|
20550
|
+
x-soha-implementation-status: implemented
|
|
20551
|
+
parameters:
|
|
20552
|
+
- $ref: "#/components/parameters/ClusterID"
|
|
20553
|
+
- $ref: "#/components/parameters/KubernetesResourceName"
|
|
20554
|
+
- $ref: "#/components/parameters/KubernetesNamespaceQuery"
|
|
20555
|
+
responses:
|
|
20556
|
+
"200":
|
|
20557
|
+
description: Authorized Kubernetes resource YAML.
|
|
20558
|
+
content:
|
|
20559
|
+
application/json:
|
|
20560
|
+
schema:
|
|
20561
|
+
$ref: "#/components/schemas/KubernetesResourceYamlEnvelope"
|
|
20562
|
+
"400": { $ref: "#/components/responses/Error" }
|
|
20563
|
+
"403": { $ref: "#/components/responses/Error" }
|
|
20564
|
+
"404": { $ref: "#/components/responses/Error" }
|
|
20565
|
+
"409": { $ref: "#/components/responses/Error" }
|
|
20566
|
+
"503": { $ref: "#/components/responses/Error" }
|
|
20567
|
+
put:
|
|
20568
|
+
tags: [Platform]
|
|
20569
|
+
operationId: applyKubernetesHorizontalPodAutoscalerYaml
|
|
20570
|
+
x-soha-permissions:
|
|
20571
|
+
mode: all
|
|
20572
|
+
keys: [platform.configuration.horizontal-pod-autoscalers.update]
|
|
20573
|
+
x-soha-implementation-status: implemented
|
|
20574
|
+
parameters:
|
|
20575
|
+
- $ref: "#/components/parameters/ClusterID"
|
|
20576
|
+
- $ref: "#/components/parameters/KubernetesResourceName"
|
|
20577
|
+
- $ref: "#/components/parameters/KubernetesNamespaceQuery"
|
|
20578
|
+
requestBody:
|
|
20579
|
+
required: true
|
|
20580
|
+
content:
|
|
20581
|
+
application/json:
|
|
20582
|
+
schema:
|
|
20583
|
+
$ref: "#/components/schemas/KubernetesResourceYamlInput"
|
|
20584
|
+
responses:
|
|
20585
|
+
"200":
|
|
20586
|
+
description: Authorized Kubernetes resource YAML.
|
|
20587
|
+
content:
|
|
20588
|
+
application/json:
|
|
20589
|
+
schema:
|
|
20590
|
+
$ref: "#/components/schemas/KubernetesResourceYamlEnvelope"
|
|
20591
|
+
"400": { $ref: "#/components/responses/Error" }
|
|
20592
|
+
"403": { $ref: "#/components/responses/Error" }
|
|
20593
|
+
"404": { $ref: "#/components/responses/Error" }
|
|
20594
|
+
"409": { $ref: "#/components/responses/Error" }
|
|
20595
|
+
"503": { $ref: "#/components/responses/Error" }
|
|
20596
|
+
/clusters/{clusterID}/configuration/poddisruptionbudgets/{name}:
|
|
20597
|
+
delete:
|
|
20598
|
+
tags: [Platform]
|
|
20599
|
+
operationId: deleteKubernetesPodDisruptionBudget
|
|
20600
|
+
x-soha-permissions:
|
|
20601
|
+
mode: all
|
|
20602
|
+
keys: [platform.configuration.pod-disruption-budgets.delete]
|
|
20603
|
+
x-soha-implementation-status: implemented
|
|
20604
|
+
parameters:
|
|
20605
|
+
- $ref: "#/components/parameters/ClusterID"
|
|
20606
|
+
- $ref: "#/components/parameters/KubernetesResourceName"
|
|
20607
|
+
- $ref: "#/components/parameters/KubernetesNamespaceQuery"
|
|
20608
|
+
responses:
|
|
20609
|
+
"204": { description: Resource deleted. }
|
|
20610
|
+
"400": { $ref: "#/components/responses/Error" }
|
|
20611
|
+
"403": { $ref: "#/components/responses/Error" }
|
|
20612
|
+
"404": { $ref: "#/components/responses/Error" }
|
|
20613
|
+
"409": { $ref: "#/components/responses/Error" }
|
|
20614
|
+
"503": { $ref: "#/components/responses/Error" }
|
|
20615
|
+
/clusters/{clusterID}/configuration/poddisruptionbudgets/{name}/yaml:
|
|
20616
|
+
get:
|
|
20617
|
+
tags: [Platform]
|
|
20618
|
+
operationId: getKubernetesPodDisruptionBudgetYaml
|
|
20619
|
+
x-soha-permissions:
|
|
20620
|
+
mode: all
|
|
20621
|
+
keys: [platform.configuration.pod-disruption-budgets.view]
|
|
20622
|
+
x-soha-implementation-status: implemented
|
|
20623
|
+
parameters:
|
|
20624
|
+
- $ref: "#/components/parameters/ClusterID"
|
|
20625
|
+
- $ref: "#/components/parameters/KubernetesResourceName"
|
|
20626
|
+
- $ref: "#/components/parameters/KubernetesNamespaceQuery"
|
|
20627
|
+
responses:
|
|
20628
|
+
"200":
|
|
20629
|
+
description: Authorized Kubernetes resource YAML.
|
|
20630
|
+
content:
|
|
20631
|
+
application/json:
|
|
20632
|
+
schema:
|
|
20633
|
+
$ref: "#/components/schemas/KubernetesResourceYamlEnvelope"
|
|
20634
|
+
"400": { $ref: "#/components/responses/Error" }
|
|
20635
|
+
"403": { $ref: "#/components/responses/Error" }
|
|
20636
|
+
"404": { $ref: "#/components/responses/Error" }
|
|
20637
|
+
"409": { $ref: "#/components/responses/Error" }
|
|
20638
|
+
"503": { $ref: "#/components/responses/Error" }
|
|
20639
|
+
put:
|
|
20640
|
+
tags: [Platform]
|
|
20641
|
+
operationId: applyKubernetesPodDisruptionBudgetYaml
|
|
20642
|
+
x-soha-permissions:
|
|
20643
|
+
mode: all
|
|
20644
|
+
keys: [platform.configuration.pod-disruption-budgets.update]
|
|
20645
|
+
x-soha-implementation-status: implemented
|
|
20646
|
+
parameters:
|
|
20647
|
+
- $ref: "#/components/parameters/ClusterID"
|
|
20648
|
+
- $ref: "#/components/parameters/KubernetesResourceName"
|
|
20649
|
+
- $ref: "#/components/parameters/KubernetesNamespaceQuery"
|
|
20650
|
+
requestBody:
|
|
20651
|
+
required: true
|
|
20652
|
+
content:
|
|
20653
|
+
application/json:
|
|
20654
|
+
schema:
|
|
20655
|
+
$ref: "#/components/schemas/KubernetesResourceYamlInput"
|
|
20656
|
+
responses:
|
|
20657
|
+
"200":
|
|
20658
|
+
description: Authorized Kubernetes resource YAML.
|
|
20659
|
+
content:
|
|
20660
|
+
application/json:
|
|
20661
|
+
schema:
|
|
20662
|
+
$ref: "#/components/schemas/KubernetesResourceYamlEnvelope"
|
|
20663
|
+
"400": { $ref: "#/components/responses/Error" }
|
|
20664
|
+
"403": { $ref: "#/components/responses/Error" }
|
|
20665
|
+
"404": { $ref: "#/components/responses/Error" }
|
|
20666
|
+
"409": { $ref: "#/components/responses/Error" }
|
|
20667
|
+
"503": { $ref: "#/components/responses/Error" }
|
|
20668
|
+
/clusters/{clusterID}/workloads/replicationcontrollers/{name}:
|
|
20669
|
+
delete:
|
|
20670
|
+
tags: [Platform]
|
|
20671
|
+
operationId: deleteKubernetesReplicationController
|
|
20672
|
+
x-soha-permissions:
|
|
20673
|
+
mode: all
|
|
20674
|
+
keys: [platform.workloads.replication-controllers.delete]
|
|
20675
|
+
x-soha-implementation-status: implemented
|
|
20676
|
+
parameters:
|
|
20677
|
+
- $ref: "#/components/parameters/ClusterID"
|
|
20678
|
+
- $ref: "#/components/parameters/KubernetesResourceName"
|
|
20679
|
+
- $ref: "#/components/parameters/KubernetesNamespaceQuery"
|
|
20680
|
+
responses:
|
|
20681
|
+
"204": { description: Resource deleted. }
|
|
20682
|
+
"400": { $ref: "#/components/responses/Error" }
|
|
20683
|
+
"403": { $ref: "#/components/responses/Error" }
|
|
20684
|
+
"404": { $ref: "#/components/responses/Error" }
|
|
20685
|
+
"409": { $ref: "#/components/responses/Error" }
|
|
20686
|
+
"503": { $ref: "#/components/responses/Error" }
|
|
20687
|
+
|
|
20030
20688
|
components:
|
|
20031
20689
|
securitySchemes:
|
|
20032
20690
|
bearerAuth:
|
|
@@ -20942,6 +21600,7 @@ components:
|
|
|
20942
21600
|
schema:
|
|
20943
21601
|
type: string
|
|
20944
21602
|
enum: [default, bypass, read-only, refresh]
|
|
21603
|
+
x-enum-varnames: [CreateAIGatewayOpenAICompatibleProviderResponseParamsXSohaCacheModeDefault, CreateAIGatewayOpenAICompatibleProviderResponseParamsXSohaCacheModeBypass, CreateAIGatewayOpenAICompatibleProviderResponseParamsXSohaCacheModeReadOnly, CreateAIGatewayOpenAICompatibleProviderResponseParamsXSohaCacheModeRefresh]
|
|
20945
21604
|
description: Optional relay cache behavior hint.
|
|
20946
21605
|
headers:
|
|
20947
21606
|
SohaRouteIDHeader:
|
|
@@ -27105,7 +27764,10 @@ components:
|
|
|
27105
27764
|
type: object
|
|
27106
27765
|
properties:
|
|
27107
27766
|
publicModel: { type: string, maxLength: 200 }
|
|
27108
|
-
reasoningEffort:
|
|
27767
|
+
reasoningEffort:
|
|
27768
|
+
type: string
|
|
27769
|
+
enum: [auto, low, medium, high]
|
|
27770
|
+
x-enum-varnames: [WorkbenchModelPreferencesReasoningEffortAuto, WorkbenchModelPreferencesReasoningEffortLow, WorkbenchModelPreferencesReasoningEffortMedium, WorkbenchModelPreferencesReasoningEffortHigh]
|
|
27109
27771
|
additionalProperties: false
|
|
27110
27772
|
WorkbenchModelOption:
|
|
27111
27773
|
type: object
|
|
@@ -29614,6 +30276,7 @@ components:
|
|
|
29614
30276
|
properties:
|
|
29615
30277
|
path:
|
|
29616
30278
|
type: string
|
|
30279
|
+
description: Same-origin stream pathname. UID-aware Pod sessions include expectedUid, namespace, container and shell query fields to bind the one-use ticket to that exact target; other query fields are not part of the binding.
|
|
29617
30280
|
additionalProperties: false
|
|
29618
30281
|
StreamTicket:
|
|
29619
30282
|
type: object
|
|
@@ -30611,6 +31274,14 @@ components:
|
|
|
30611
31274
|
type: string
|
|
30612
31275
|
format: date-time
|
|
30613
31276
|
additionalProperties: false
|
|
31277
|
+
ResourceRelationSource: {"type": "object", "required": ["apiVersion", "resource", "kind", "namespace"], "properties": {"apiVersion": {"type": "string", "minLength": 1}, "resource": {"type": "string", "minLength": 1}, "kind": {"type": "string", "minLength": 1}, "namespace": {"type": "string", "minLength": 1}}, "additionalProperties": false}
|
|
31278
|
+
ResourceRelationRule: {"type": "object", "required": ["id", "type", "target"], "properties": {"id": {"type": "string", "minLength": 1}, "type": {"type": "string", "enum": ["reference", "manual", "selector"]}, "target": {"$ref": "#/components/schemas/ResourceRelationSource"}, "name": {"type": "string"}, "uid": {"type": "string"}, "selector": {"type": "object", "additionalProperties": {"type": "string"}, "maxProperties": 16}}, "additionalProperties": false}
|
|
31279
|
+
ResourceRelationConfig: {"type": "object", "required": ["version", "rootUid", "sources", "rules"], "properties": {"version": {"type": "string", "const": "v1"}, "rootUid": {"type": "string", "minLength": 1}, "sources": {"type": "array", "items": {"$ref": "#/components/schemas/ResourceRelationSource"}, "maxItems": 8}, "rules": {"type": "array", "items": {"$ref": "#/components/schemas/ResourceRelationRule"}, "maxItems": 8}}, "additionalProperties": false}
|
|
31280
|
+
ResourceRelationNode: {"type": "object", "required": ["resource", "role", "depth"], "properties": {"resource": {"$ref": "#/components/schemas/KubernetesResourceRef"}, "role": {"type": "string", "enum": ["root", "owned", "manual", "reference", "candidate"]}, "depth": {"type": "integer", "minimum": 0, "maximum": 8}}, "additionalProperties": false}
|
|
31281
|
+
ResourceRelationEdge: {"type": "object", "required": ["fromUid", "toUid", "type"], "properties": {"fromUid": {"type": "string", "minLength": 1}, "toUid": {"type": "string", "minLength": 1}, "type": {"type": "string", "enum": ["owns", "manual", "references", "selector_candidate"]}, "ruleId": {"type": "string"}}, "additionalProperties": false}
|
|
31282
|
+
ResourceRelationCoverage: {"type": "object", "required": ["queryId", "state", "truncated"], "properties": {"queryId": {"type": "string", "minLength": 1}, "state": {"type": "string", "enum": ["available", "partial", "denied", "error", "not_installed", "unsupported"]}, "reasonCode": {"type": "string"}, "truncated": {"type": "boolean"}}, "additionalProperties": false}
|
|
31283
|
+
ResourceRelationsView: {"type": "object", "required": ["root", "config", "nodes", "edges", "coverage", "partial", "observedAt"], "properties": {"root": {"$ref": "#/components/schemas/KubernetesResourceRef"}, "config": {"$ref": "#/components/schemas/ResourceRelationConfig"}, "nodes": {"type": "array", "items": {"$ref": "#/components/schemas/ResourceRelationNode"}, "maxItems": 500}, "edges": {"type": "array", "items": {"$ref": "#/components/schemas/ResourceRelationEdge"}}, "coverage": {"type": "array", "items": {"$ref": "#/components/schemas/ResourceRelationCoverage"}}, "partial": {"type": "boolean"}, "observedAt": {"type": "string"}}, "additionalProperties": false}
|
|
31284
|
+
ResourceRelationsEnvelope: {"type": "object", "required": ["data"], "properties": {"data": {"$ref": "#/components/schemas/ResourceRelationsView"}}, "additionalProperties": false}
|
|
30614
31285
|
ReleaseTarget:
|
|
30615
31286
|
type: object
|
|
30616
31287
|
required: [id, applicationEnvironmentId, clusterId, namespace, workloadKind, workloadName, enabled]
|
|
@@ -30996,6 +31667,8 @@ components:
|
|
|
30996
31667
|
type: object
|
|
30997
31668
|
required: [deliveryPlanId, targetId, applicationId, applicationEnvironmentId, serviceId, serviceVersion, clusterId, namespace, releaseName, operation, chart, chartVersion, chartDigest, configurationDigest, valuesDigest, renderedDigest, expectedRevision, resources, preflightTaskId]
|
|
30998
31669
|
properties:
|
|
31670
|
+
templateInputs: {"$ref": "#/components/schemas/TemplateVersionReference"}
|
|
31671
|
+
migration: {"$ref": "#/components/schemas/TemplateMigrationAssessment"}
|
|
30999
31672
|
deliveryPlanId: { type: string, minLength: 1 }
|
|
31000
31673
|
targetId: { type: string, minLength: 1 }
|
|
31001
31674
|
applicationId: { type: string, minLength: 1 }
|
|
@@ -31043,6 +31716,11 @@ components:
|
|
|
31043
31716
|
action: { type: string, enum: [preflight, apply, observe] }
|
|
31044
31717
|
snapshot: { $ref: "#/components/schemas/HelmDeliverySnapshot" }
|
|
31045
31718
|
prepared: { $ref: "#/components/schemas/HelmPreparedRelease" }
|
|
31719
|
+
initializationResources:
|
|
31720
|
+
type: array
|
|
31721
|
+
maxItems: 300
|
|
31722
|
+
description: Server-derived original successful initialization apply receipt. Required for initialization observation or already-applied recovery; current same-name objects cannot establish original ownership.
|
|
31723
|
+
items: { $ref: "#/components/schemas/ManifestResourceInventory" }
|
|
31046
31724
|
additionalProperties: false
|
|
31047
31725
|
HelmExecutionTaskResult:
|
|
31048
31726
|
type: object
|
|
@@ -31118,6 +31796,7 @@ components:
|
|
|
31118
31796
|
type: object
|
|
31119
31797
|
required: [key, name, source, parameterSchema, defaults, health, enabled]
|
|
31120
31798
|
properties:
|
|
31799
|
+
migrationPolicy: { $ref: "#/components/schemas/TemplateMigrationPolicy" }
|
|
31121
31800
|
copiedFrom: { $ref: '#/components/schemas/TemplateCopyOrigin' }
|
|
31122
31801
|
key: { type: string, minLength: 1, maxLength: 128, pattern: '^[a-z0-9][a-z0-9._-]*$' }
|
|
31123
31802
|
name: { type: string, minLength: 1, maxLength: 200 }
|
|
@@ -31143,6 +31822,7 @@ components:
|
|
|
31143
31822
|
type: object
|
|
31144
31823
|
required: [id, key, name, source, parameterSchema, defaults, health, enabled, revision, publishedVersion, publicationState, createdAt, updatedAt]
|
|
31145
31824
|
properties:
|
|
31825
|
+
migrationPolicy: { $ref: "#/components/schemas/TemplateMigrationPolicy" }
|
|
31146
31826
|
id: { type: string, minLength: 1 }
|
|
31147
31827
|
key: { type: string, minLength: 1 }
|
|
31148
31828
|
name: { type: string, minLength: 1 }
|
|
@@ -31236,6 +31916,7 @@ components:
|
|
|
31236
31916
|
type: object
|
|
31237
31917
|
required: [id, key, name, enabled, createdAt, updatedAt]
|
|
31238
31918
|
properties:
|
|
31919
|
+
migrationPolicy: {"$ref": "#/components/schemas/TemplateMigrationPolicy"}
|
|
31239
31920
|
revision:
|
|
31240
31921
|
type: integer
|
|
31241
31922
|
minimum: 1
|
|
@@ -31277,6 +31958,7 @@ components:
|
|
|
31277
31958
|
type: object
|
|
31278
31959
|
required: [key, name, enabled]
|
|
31279
31960
|
properties:
|
|
31961
|
+
migrationPolicy: {"$ref": "#/components/schemas/TemplateMigrationPolicy"}
|
|
31280
31962
|
copiedFrom: { $ref: '#/components/schemas/TemplateCopyOrigin' }
|
|
31281
31963
|
expectedRevision:
|
|
31282
31964
|
type: integer
|
|
@@ -31433,10 +32115,44 @@ components:
|
|
|
31433
32115
|
type: string
|
|
31434
32116
|
minLength: 1
|
|
31435
32117
|
additionalProperties: false
|
|
32118
|
+
KubernetesImportOwnerReference:
|
|
32119
|
+
type: object
|
|
32120
|
+
required: [apiVersion, kind, name, uid]
|
|
32121
|
+
properties:
|
|
32122
|
+
apiVersion: { type: string, minLength: 1 }
|
|
32123
|
+
kind: { type: string, minLength: 1 }
|
|
32124
|
+
name: { type: string, minLength: 1 }
|
|
32125
|
+
uid: { type: string, minLength: 1 }
|
|
32126
|
+
controller: { type: boolean }
|
|
32127
|
+
blockOwnerDeletion: { type: boolean }
|
|
32128
|
+
additionalProperties: false
|
|
32129
|
+
KubernetesImportSource:
|
|
32130
|
+
type: object
|
|
32131
|
+
description: Safe source identity captured from an authorized live read. No YAML, spec values, annotations or status are persisted here. For native workloads specDigest covers configuration and ownership metadata excluding status/resourceVersion. For CRs it fences the public UID, generation and owner references without hashing secret content; metadata-only edits are outside that fence. CRs without a positive generation are rejected. UID identifies recreation.
|
|
32132
|
+
required: [resource, specDigest, observedAt]
|
|
32133
|
+
properties:
|
|
32134
|
+
resource:
|
|
32135
|
+
allOf:
|
|
32136
|
+
- $ref: "#/components/schemas/KubernetesResourceRef"
|
|
32137
|
+
- type: object
|
|
32138
|
+
required: [uid]
|
|
32139
|
+
properties:
|
|
32140
|
+
uid: { type: string, minLength: 1 }
|
|
32141
|
+
specDigest: { type: string, pattern: '^[a-f0-9]{64}$' }
|
|
32142
|
+
generation: { type: integer, format: int64, minimum: 0 }
|
|
32143
|
+
crdName: { type: string, minLength: 1 }
|
|
32144
|
+
plural: { type: string, minLength: 1 }
|
|
32145
|
+
observedAt: { type: string, format: date-time }
|
|
32146
|
+
owners:
|
|
32147
|
+
type: array
|
|
32148
|
+
maxItems: 32
|
|
32149
|
+
items: { $ref: "#/components/schemas/KubernetesImportOwnerReference" }
|
|
32150
|
+
additionalProperties: false
|
|
31436
32151
|
KubernetesImportCandidate:
|
|
31437
32152
|
type: object
|
|
31438
32153
|
required: [clusterId, namespace, workloadKind, workloadName, desiredReplicas, readyReplicas, relatedResources]
|
|
31439
32154
|
properties:
|
|
32155
|
+
source: { $ref: "#/components/schemas/KubernetesImportSource" }
|
|
31440
32156
|
clusterId:
|
|
31441
32157
|
type: string
|
|
31442
32158
|
minLength: 1
|
|
@@ -31445,7 +32161,7 @@ components:
|
|
|
31445
32161
|
minLength: 1
|
|
31446
32162
|
workloadKind:
|
|
31447
32163
|
type: string
|
|
31448
|
-
enum: [Deployment, StatefulSet, DaemonSet]
|
|
32164
|
+
enum: [Deployment, StatefulSet, DaemonSet, Job, CronJob, CustomResource]
|
|
31449
32165
|
workloadName:
|
|
31450
32166
|
type: string
|
|
31451
32167
|
minLength: 1
|
|
@@ -31484,14 +32200,21 @@ components:
|
|
|
31484
32200
|
type: object
|
|
31485
32201
|
required: [workloadKind, workloadName]
|
|
31486
32202
|
properties:
|
|
32203
|
+
expectedUid: { type: string, minLength: 1 }
|
|
32204
|
+
expectedSpecDigest: { type: string, pattern: '^[a-f0-9]{64}$' }
|
|
32205
|
+
crdName:
|
|
32206
|
+
type: string
|
|
32207
|
+
minLength: 1
|
|
32208
|
+
description: Required for CustomResource. Resolve the served GVR and scope from this CRD; never infer API group or plural from Kind.
|
|
31487
32209
|
workloadKind:
|
|
31488
32210
|
type: string
|
|
31489
|
-
enum: [Deployment, StatefulSet, DaemonSet]
|
|
32211
|
+
enum: [Deployment, StatefulSet, DaemonSet, Job, CronJob, CustomResource]
|
|
31490
32212
|
workloadName:
|
|
31491
32213
|
type: string
|
|
31492
32214
|
minLength: 1
|
|
31493
32215
|
additionalProperties: false
|
|
31494
32216
|
KubernetesServiceImportRequest:
|
|
32217
|
+
description: Initial association is observe_only. A managed request is rejected until a separate UID-aware ownership handoff and release preflight are available; it must never silently enable publishing.
|
|
31495
32218
|
type: object
|
|
31496
32219
|
required: [clusterId, namespace, applicationKey, applicationName, environmentKey, environmentName, ownershipMode, workloads]
|
|
31497
32220
|
properties:
|
|
@@ -31549,7 +32272,7 @@ components:
|
|
|
31549
32272
|
type: string
|
|
31550
32273
|
workloadKind:
|
|
31551
32274
|
type: string
|
|
31552
|
-
enum: [Deployment, StatefulSet, DaemonSet]
|
|
32275
|
+
enum: [Deployment, StatefulSet, DaemonSet, Job, CronJob, CustomResource]
|
|
31553
32276
|
workloadName:
|
|
31554
32277
|
type: string
|
|
31555
32278
|
created:
|
|
@@ -31559,11 +32282,12 @@ components:
|
|
|
31559
32282
|
type: object
|
|
31560
32283
|
required: [id, workloadKind, workloadName, created]
|
|
31561
32284
|
properties:
|
|
32285
|
+
source: { $ref: "#/components/schemas/KubernetesImportSource" }
|
|
31562
32286
|
id:
|
|
31563
32287
|
type: string
|
|
31564
32288
|
workloadKind:
|
|
31565
32289
|
type: string
|
|
31566
|
-
enum: [Deployment, StatefulSet, DaemonSet]
|
|
32290
|
+
enum: [Deployment, StatefulSet, DaemonSet, Job, CronJob, CustomResource]
|
|
31567
32291
|
workloadName:
|
|
31568
32292
|
type: string
|
|
31569
32293
|
created:
|
|
@@ -31702,6 +32426,7 @@ components:
|
|
|
31702
32426
|
type: object
|
|
31703
32427
|
required: [id, key, name, enabled, createdAt, updatedAt]
|
|
31704
32428
|
properties:
|
|
32429
|
+
migrationPolicy: {"$ref": "#/components/schemas/TemplateMigrationPolicy"}
|
|
31705
32430
|
revision:
|
|
31706
32431
|
type: integer
|
|
31707
32432
|
minimum: 1
|
|
@@ -31753,6 +32478,7 @@ components:
|
|
|
31753
32478
|
type: object
|
|
31754
32479
|
required: [key, name, enabled]
|
|
31755
32480
|
properties:
|
|
32481
|
+
migrationPolicy: {"$ref": "#/components/schemas/TemplateMigrationPolicy"}
|
|
31756
32482
|
copiedFrom: { $ref: '#/components/schemas/TemplateCopyOrigin' }
|
|
31757
32483
|
expectedRevision:
|
|
31758
32484
|
type: integer
|
|
@@ -31855,9 +32581,10 @@ components:
|
|
|
31855
32581
|
type: object
|
|
31856
32582
|
required: [id, applicationId, serviceId, action]
|
|
31857
32583
|
properties:
|
|
32584
|
+
templateCandidateId: { type: string, minLength: 1, maxLength: 256 }
|
|
31858
32585
|
id: { type: string, pattern: '^[A-Za-z0-9][A-Za-z0-9_-]{0,63}$' }
|
|
31859
32586
|
applicationId: { type: string, minLength: 1 }
|
|
31860
|
-
serviceId: { type: string
|
|
32587
|
+
serviceId: { type: string }
|
|
31861
32588
|
applicationEnvironmentId: { type: string, minLength: 1 }
|
|
31862
32589
|
releaseTargetId: { type: string }
|
|
31863
32590
|
helmRevision: { type: integer, minimum: 1, description: Existing owned Helm revision to restore through a new config_update batch. }
|
|
@@ -31878,10 +32605,25 @@ components:
|
|
|
31878
32605
|
items: { type: string }
|
|
31879
32606
|
allOf:
|
|
31880
32607
|
- if:
|
|
31881
|
-
|
|
31882
|
-
action: { enum: [build_deploy, deploy, config_update] }
|
|
32608
|
+
required: [templateCandidateId]
|
|
31883
32609
|
then:
|
|
31884
|
-
|
|
32610
|
+
properties:
|
|
32611
|
+
action: { const: config_update }
|
|
32612
|
+
releaseBundleId: { type: string, maxLength: 0 }
|
|
32613
|
+
not:
|
|
32614
|
+
anyOf:
|
|
32615
|
+
- required: [helmRevision]
|
|
32616
|
+
- required: [buildArgs]
|
|
32617
|
+
- required: [repositoryRefs]
|
|
32618
|
+
else:
|
|
32619
|
+
properties:
|
|
32620
|
+
serviceId: { type: string, minLength: 1 }
|
|
32621
|
+
allOf:
|
|
32622
|
+
- if:
|
|
32623
|
+
properties:
|
|
32624
|
+
action: { enum: [build_deploy, deploy, config_update] }
|
|
32625
|
+
then:
|
|
32626
|
+
required: [applicationEnvironmentId]
|
|
31885
32627
|
- if:
|
|
31886
32628
|
properties:
|
|
31887
32629
|
action: { const: deploy }
|
|
@@ -31929,6 +32671,7 @@ components:
|
|
|
31929
32671
|
type: object
|
|
31930
32672
|
additionalProperties: false
|
|
31931
32673
|
properties:
|
|
32674
|
+
migrationPolicy: { $ref: "#/components/schemas/TemplateMigrationPolicy" }
|
|
31932
32675
|
builderKind: { type: string, minLength: 1, maxLength: 128, default: custom }
|
|
31933
32676
|
dockerfileTemplate: { type: string, maxLength: 1048576 }
|
|
31934
32677
|
buildCommands:
|
|
@@ -31961,6 +32704,7 @@ components:
|
|
|
31961
32704
|
additionalProperties: false
|
|
31962
32705
|
required: [source, parameterSchema, defaults, health]
|
|
31963
32706
|
properties:
|
|
32707
|
+
migrationPolicy: {"$ref": "#/components/schemas/TemplateMigrationPolicy"}
|
|
31964
32708
|
source: { $ref: '#/components/schemas/DeploymentTemplateSource' }
|
|
31965
32709
|
parameterSchema: { $ref: '#/components/schemas/TemplateParameterSchema' }
|
|
31966
32710
|
defaults: { $ref: '#/components/schemas/TemplateParameterValues' }
|
|
@@ -32117,6 +32861,7 @@ components:
|
|
|
32117
32861
|
additionalProperties: false
|
|
32118
32862
|
required: [definition]
|
|
32119
32863
|
properties:
|
|
32864
|
+
migrationPolicy: { $ref: "#/components/schemas/TemplateMigrationPolicy" }
|
|
32120
32865
|
category: { type: string, minLength: 1, maxLength: 128, not: { pattern: '^application:' }, default: release }
|
|
32121
32866
|
definition:
|
|
32122
32867
|
oneOf:
|
|
@@ -32837,6 +33582,7 @@ components:
|
|
|
32837
33582
|
type: object
|
|
32838
33583
|
required: [target, applicationName, serviceName, serviceVersion, configurationDigest]
|
|
32839
33584
|
properties:
|
|
33585
|
+
templateUpdate: { $ref: "#/components/schemas/TemplateUpdateReceipt" }
|
|
32840
33586
|
target: { $ref: "#/components/schemas/DeliveryTargetInput" }
|
|
32841
33587
|
applicationName: { type: string }
|
|
32842
33588
|
serviceName: { type: string }
|
|
@@ -33198,6 +33944,13 @@ components:
|
|
|
33198
33944
|
type: object
|
|
33199
33945
|
required: [applicationEnvironmentId, clusterId, namespace, workloadKind, workloadName, desiredReplicas, readyReplicas, updatedReplicas, availableReplicas]
|
|
33200
33946
|
properties:
|
|
33947
|
+
targetId:
|
|
33948
|
+
type: string
|
|
33949
|
+
source:
|
|
33950
|
+
$ref: "#/components/schemas/KubernetesImportSource"
|
|
33951
|
+
sourceStatus:
|
|
33952
|
+
type: string
|
|
33953
|
+
enum: [linked, changed, replaced, missing, unavailable, forbidden]
|
|
33201
33954
|
applicationEnvironmentId:
|
|
33202
33955
|
type: string
|
|
33203
33956
|
clusterId:
|
|
@@ -33747,11 +34500,28 @@ components:
|
|
|
33747
34500
|
type: string
|
|
33748
34501
|
enum: [preflight, apply, observe, repair, adopt, rollback, sync, rollout_control]
|
|
33749
34502
|
x-enum-varnames: [ManifestTaskActionPreflight, ManifestTaskActionApply, ManifestTaskActionObserve, ManifestTaskActionRepair, ManifestTaskActionAdopt, ManifestTaskActionRollback, ManifestTaskActionSync, ManifestTaskActionRolloutControl]
|
|
34503
|
+
ManifestRootResource:
|
|
34504
|
+
type: object
|
|
34505
|
+
description: Server-frozen imported namespaced CR identity and user-reviewed generation. Publication requires the original imported target with metadata ownershipMode=managed, rootCRGeneration matching the reviewed generation, and configRef selecting its Manifest binding. Only spec may be updated; missing roots are never created. Current user or token permissions, external ownership and UID are rechecked. Requires manifest.root-cr.v1 Agent capability and manifest_root_cr_v1 provider. Configuration copies, revisions, plans and deployments retain the sensitive configuration read permission; ordinary task summaries omit root documents.
|
|
34506
|
+
required: [apiVersion, kind, namespace, name, uid, generation, crdName, targetId, deliveryPlanId]
|
|
34507
|
+
properties:
|
|
34508
|
+
targetId: { type: string, minLength: 1 }
|
|
34509
|
+
deliveryPlanId: { type: string, minLength: 1 }
|
|
34510
|
+
apiVersion: { type: string, minLength: 3 }
|
|
34511
|
+
kind: { type: string, minLength: 1 }
|
|
34512
|
+
namespace: { type: string, minLength: 1 }
|
|
34513
|
+
name: { type: string, minLength: 1 }
|
|
34514
|
+
uid: { type: string, minLength: 1 }
|
|
34515
|
+
generation: { type: integer, format: int64, minimum: 1 }
|
|
34516
|
+
crdName: { type: string, minLength: 1 }
|
|
34517
|
+
additionalProperties: false
|
|
33750
34518
|
ManifestExecutionTaskPayload:
|
|
33751
34519
|
type: object
|
|
33752
34520
|
description: Controller-aware tasks use providerKind manifest_agent_v3.<clusterId> and require manifest.execution.v3. Older runners must not claim these tasks or bypass GitOps and Rollout ownership.
|
|
33753
34521
|
required: [action, packageId, generation, idempotencyKey]
|
|
33754
34522
|
properties:
|
|
34523
|
+
initializationPlanId: { type: string, minLength: 1, maxLength: 128, description: "Server-frozen initialization Plan identity. Requires manifest.initialize.v1 and its dedicated provider; preflight uses create dry-run, apply creates only, and observation verifies the created UIDs. Never a force or adoption flag." }
|
|
34524
|
+
rootResource: { $ref: "#/components/schemas/ManifestRootResource" }
|
|
33755
34525
|
rolloutControl: { $ref: "#/components/schemas/ProgressiveRolloutControlInput" }
|
|
33756
34526
|
gitOpsDocuments:
|
|
33757
34527
|
type: array
|
|
@@ -33814,6 +34584,7 @@ components:
|
|
|
33814
34584
|
type: object
|
|
33815
34585
|
required: [ready, capability, renderedDigest, resourceCount, diagnostics]
|
|
33816
34586
|
properties:
|
|
34587
|
+
initializationPlanId: { type: string, minLength: 1, maxLength: 128, description: "Server-frozen initialization Plan identity. Requires manifest.initialize.v1 and its dedicated provider; preflight uses create dry-run, apply creates only, and observation verifies the created UIDs. Never a force or adoption flag." }
|
|
33817
34588
|
ready: { type: boolean }
|
|
33818
34589
|
capability: { type: string, enum: [available, degraded, unsupported] }
|
|
33819
34590
|
renderedDigest: { type: string }
|
|
@@ -33860,6 +34631,7 @@ components:
|
|
|
33860
34631
|
type: object
|
|
33861
34632
|
required: [action, generation, stale, diagnostics, inventory]
|
|
33862
34633
|
properties:
|
|
34634
|
+
initializationPlanId: { type: string, minLength: 1, maxLength: 128, description: "Server-frozen initialization Plan identity. Requires manifest.initialize.v1 and its dedicated provider; preflight uses create dry-run, apply creates only, and observation verifies the created UIDs. Never a force or adoption flag." }
|
|
33863
34635
|
rollout: { $ref: "#/components/schemas/ProgressiveRolloutStatus" }
|
|
33864
34636
|
action: { $ref: "#/components/schemas/ManifestTaskAction" }
|
|
33865
34637
|
deploymentId: { type: string }
|
|
@@ -33972,6 +34744,7 @@ components:
|
|
|
33972
34744
|
type: object
|
|
33973
34745
|
required: [id, packageId, applicationEnvironmentId, environmentKey, clusterId, namespace, overlay, driftPolicy, deletionPolicy, enabled, version, createdAt, updatedAt]
|
|
33974
34746
|
properties:
|
|
34747
|
+
templateSelection: { $ref: "#/components/schemas/ManifestTemplateSelection" }
|
|
33975
34748
|
templateParameters: { $ref: "#/components/schemas/TemplateParameterValues" }
|
|
33976
34749
|
id: { type: string, minLength: 1 }
|
|
33977
34750
|
packageId: { type: string, minLength: 1 }
|
|
@@ -34109,6 +34882,7 @@ components:
|
|
|
34109
34882
|
type: object
|
|
34110
34883
|
required: [observedGeneration, phase, conditions, inventory]
|
|
34111
34884
|
properties:
|
|
34885
|
+
appliedTemplate: {"$ref": "#/components/schemas/TemplateVersionReference"}
|
|
34112
34886
|
observedGeneration: { type: integer, format: int64, minimum: 0 }
|
|
34113
34887
|
appliedRevision: { type: integer, minimum: 1 }
|
|
34114
34888
|
appliedDigest: { type: string }
|
|
@@ -34653,6 +35427,7 @@ components:
|
|
|
34653
35427
|
type: object
|
|
34654
35428
|
required: [id, source, status, applicationId, applicationEnvironmentId, action, requiresApproval, createdAt, updatedAt]
|
|
34655
35429
|
properties:
|
|
35430
|
+
templateCandidateId: { type: string, minLength: 1, maxLength: 256 }
|
|
34656
35431
|
dockerSnapshots:
|
|
34657
35432
|
type: array
|
|
34658
35433
|
maxItems: 50
|
|
@@ -34751,6 +35526,8 @@ components:
|
|
|
34751
35526
|
type: object
|
|
34752
35527
|
required: [deliveryPlanId, targetId, packageId, bindingId, bindingVersion, applicationEnvironmentId, clusterId, namespace, revision, revisionDigest, packageUpdatedAt, rendererVersion, inputDigest, renderedDigest, documents, preflightTaskId, expectedGeneration]
|
|
34753
35528
|
properties:
|
|
35529
|
+
migration: {"$ref": "#/components/schemas/TemplateMigrationAssessment"}
|
|
35530
|
+
rootResource: { $ref: "#/components/schemas/ManifestRootResource" }
|
|
34754
35531
|
gitOpsDocuments:
|
|
34755
35532
|
type: array
|
|
34756
35533
|
minItems: 1
|
|
@@ -36979,6 +37756,10 @@ components:
|
|
|
36979
37756
|
type: object
|
|
36980
37757
|
required: [transport, syncStrategy, cacheStatus, cacheReady, connectionState]
|
|
36981
37758
|
properties:
|
|
37759
|
+
actionChecks:
|
|
37760
|
+
type: array
|
|
37761
|
+
maxItems: 64
|
|
37762
|
+
items: { $ref: "#/components/schemas/KubernetesAgentActionCheck" }
|
|
36982
37763
|
transport:
|
|
36983
37764
|
type: string
|
|
36984
37765
|
syncStrategy:
|
|
@@ -36999,6 +37780,22 @@ components:
|
|
|
36999
37780
|
message:
|
|
37000
37781
|
type: string
|
|
37001
37782
|
additionalProperties: false
|
|
37783
|
+
KubernetesAgentActionCheck:
|
|
37784
|
+
type: object
|
|
37785
|
+
required: [action, implementation, configured, kubernetesRBAC]
|
|
37786
|
+
properties:
|
|
37787
|
+
action: { type: string }
|
|
37788
|
+
implementation: { type: string, enum: [supported, unsupported, unknown] }
|
|
37789
|
+
configured: { type: string, enum: [allowed, denied, unknown] }
|
|
37790
|
+
kubernetesRBAC: { type: string, enum: [allowed, denied, unknown, not_applicable] }
|
|
37791
|
+
checkedAt: { type: string, format: date-time }
|
|
37792
|
+
reasonCode: { type: string }
|
|
37793
|
+
scope: { type: string, enum: [cluster], x-enum-varnames: [KubernetesAgentActionCheckScopeCluster] }
|
|
37794
|
+
additionalProperties: false
|
|
37795
|
+
KubernetesAgentActionProfile:
|
|
37796
|
+
type: string
|
|
37797
|
+
enum: [legacy, workbench, read-only]
|
|
37798
|
+
description: Installation preset only. Legacy preserves existing permissions; selecting workbench or read-only requires regenerating and reviewing the installation manifest.
|
|
37002
37799
|
KubernetesClusterConnectionDetail:
|
|
37003
37800
|
type: object
|
|
37004
37801
|
required: [mode, credentialType, sourceType, hasInlineKubeconfig, hasToken, usesInformerCache]
|
|
@@ -37021,6 +37818,7 @@ components:
|
|
|
37021
37818
|
type: boolean
|
|
37022
37819
|
usesInformerCache:
|
|
37023
37820
|
type: boolean
|
|
37821
|
+
actionProfile: { $ref: "#/components/schemas/KubernetesAgentActionProfile" }
|
|
37024
37822
|
customResourceRules:
|
|
37025
37823
|
type: array
|
|
37026
37824
|
maxItems: 50
|
|
@@ -37062,6 +37860,7 @@ components:
|
|
|
37062
37860
|
prometheusClusterLabel: { type: string }
|
|
37063
37861
|
grafanaBaseUrl: { type: string }
|
|
37064
37862
|
prometheusTransport: { $ref: "#/components/schemas/KubernetesPrometheusTransport" }
|
|
37863
|
+
agentActionProfile: { $ref: "#/components/schemas/KubernetesAgentActionProfile" }
|
|
37065
37864
|
agentCustomResourceRules:
|
|
37066
37865
|
type: array
|
|
37067
37866
|
maxItems: 50
|
|
@@ -37249,6 +38048,18 @@ components:
|
|
|
37249
38048
|
type: string
|
|
37250
38049
|
unschedulable:
|
|
37251
38050
|
type: boolean
|
|
38051
|
+
taints:
|
|
38052
|
+
type: array
|
|
38053
|
+
nullable: true
|
|
38054
|
+
description: Current Node spec taints. Empty means none; null or absent means not reported.
|
|
38055
|
+
items:
|
|
38056
|
+
$ref: "#/components/schemas/KubernetesNodeTaint"
|
|
38057
|
+
conditions:
|
|
38058
|
+
type: array
|
|
38059
|
+
nullable: true
|
|
38060
|
+
description: Current Node conditions, independent of scheduling and drain operations.
|
|
38061
|
+
items:
|
|
38062
|
+
$ref: "#/components/schemas/KubernetesWorkloadCondition"
|
|
37252
38063
|
roles:
|
|
37253
38064
|
type: array
|
|
37254
38065
|
items:
|
|
@@ -37496,6 +38307,10 @@ components:
|
|
|
37496
38307
|
type: object
|
|
37497
38308
|
required: [name, namespace, phase, readyContainers, restarts, ageSeconds]
|
|
37498
38309
|
properties:
|
|
38310
|
+
uid:
|
|
38311
|
+
type: string
|
|
38312
|
+
minLength: 1
|
|
38313
|
+
description: Immutable Pod identity. Required by clients restoring a saved live session; absent on older providers.
|
|
37499
38314
|
name:
|
|
37500
38315
|
type: string
|
|
37501
38316
|
namespace:
|
|
@@ -37655,6 +38470,10 @@ components:
|
|
|
37655
38470
|
type: object
|
|
37656
38471
|
required: [name, namespace, phase]
|
|
37657
38472
|
properties:
|
|
38473
|
+
uid:
|
|
38474
|
+
type: string
|
|
38475
|
+
minLength: 1
|
|
38476
|
+
description: Immutable Pod identity. Required by clients restoring a saved live session; absent on older providers.
|
|
37658
38477
|
name:
|
|
37659
38478
|
type: string
|
|
37660
38479
|
namespace:
|
|
@@ -39689,6 +40508,193 @@ components:
|
|
|
39689
40508
|
properties:
|
|
39690
40509
|
data: { $ref: "#/components/schemas/KubernetesNetworkPolicyDetail" }
|
|
39691
40510
|
additionalProperties: false
|
|
40511
|
+
KubernetesTopologyProvider:
|
|
40512
|
+
type: string
|
|
40513
|
+
enum: [kubernetes, gateway, traefik, apisix]
|
|
40514
|
+
x-enum-varnames: [KubernetesTopologyProviderKubernetes, KubernetesTopologyProviderGateway, KubernetesTopologyProviderTraefik, KubernetesTopologyProviderApisix]
|
|
40515
|
+
KubernetesTopologyResolution:
|
|
40516
|
+
type: string
|
|
40517
|
+
enum: [resolved, unresolved, not_found, not_visible, no_ready_endpoints, external, unsupported_fragment, unknown]
|
|
40518
|
+
x-enum-varnames: [KubernetesTopologyResolutionResolved, KubernetesTopologyResolutionUnresolved, KubernetesTopologyResolutionNotFound, KubernetesTopologyResolutionNotVisible, KubernetesTopologyResolutionNoReadyEndpoints, KubernetesTopologyResolutionExternal, KubernetesTopologyResolutionUnsupportedFragment, KubernetesTopologyResolutionUnknown]
|
|
40519
|
+
KubernetesTopologyProperty:
|
|
40520
|
+
type: object
|
|
40521
|
+
required: [name, value]
|
|
40522
|
+
properties:
|
|
40523
|
+
name: { type: string, maxLength: 64 }
|
|
40524
|
+
value: { type: string, maxLength: 1024 }
|
|
40525
|
+
additionalProperties: false
|
|
40526
|
+
KubernetesTopologyMatch:
|
|
40527
|
+
type: object
|
|
40528
|
+
required: [type]
|
|
40529
|
+
properties:
|
|
40530
|
+
type: { type: string, maxLength: 32 }
|
|
40531
|
+
name: { type: string, maxLength: 128 }
|
|
40532
|
+
operator: { type: string, maxLength: 32 }
|
|
40533
|
+
value: { type: string, maxLength: 1024 }
|
|
40534
|
+
additionalProperties: false
|
|
40535
|
+
KubernetesTopologyRule:
|
|
40536
|
+
type: object
|
|
40537
|
+
required: [index]
|
|
40538
|
+
properties:
|
|
40539
|
+
name: { type: string, maxLength: 253 }
|
|
40540
|
+
index: { type: integer, minimum: 0 }
|
|
40541
|
+
matchGroups:
|
|
40542
|
+
description: Groups are ORed; matches inside each group are ANDed. Opaque expressions remain a bounded summary and are marked unsupported_fragment.
|
|
40543
|
+
type: array
|
|
40544
|
+
maxItems: 64
|
|
40545
|
+
items:
|
|
40546
|
+
type: array
|
|
40547
|
+
maxItems: 64
|
|
40548
|
+
items: { $ref: "#/components/schemas/KubernetesTopologyMatch" }
|
|
40549
|
+
matchSummary: { type: string, maxLength: 2048 }
|
|
40550
|
+
priority: { type: integer, format: int64 }
|
|
40551
|
+
tlsMode: { type: string, maxLength: 64 }
|
|
40552
|
+
additionalProperties: false
|
|
40553
|
+
KubernetesTopologyCondition:
|
|
40554
|
+
type: object
|
|
40555
|
+
required: [type, status]
|
|
40556
|
+
properties:
|
|
40557
|
+
type: { type: string, maxLength: 128 }
|
|
40558
|
+
status: { type: string, maxLength: 32 }
|
|
40559
|
+
reason: { type: string, maxLength: 128 }
|
|
40560
|
+
observedGeneration: { type: integer, format: int64 }
|
|
40561
|
+
lastTransitionTime: { type: string, format: date-time }
|
|
40562
|
+
additionalProperties: false
|
|
40563
|
+
KubernetesTopologyGraphNode:
|
|
40564
|
+
type: object
|
|
40565
|
+
required: [id, type, label, provider, resolutionState]
|
|
40566
|
+
properties:
|
|
40567
|
+
id: { type: string, minLength: 1, maxLength: 2048 }
|
|
40568
|
+
type:
|
|
40569
|
+
type: string
|
|
40570
|
+
enum: [entry, rule, processor, backend-group, service, endpoint-group, pod, external]
|
|
40571
|
+
x-enum-varnames: [KubernetesTopologyGraphNodeTypeEntry, KubernetesTopologyGraphNodeTypeRule, KubernetesTopologyGraphNodeTypeProcessor, KubernetesTopologyGraphNodeTypeBackendGroup, KubernetesTopologyGraphNodeTypeService, KubernetesTopologyGraphNodeTypeEndpointGroup, KubernetesTopologyGraphNodeTypePod, KubernetesTopologyGraphNodeTypeExternal]
|
|
40572
|
+
label: { type: string, maxLength: 1024 }
|
|
40573
|
+
provider: { $ref: "#/components/schemas/KubernetesTopologyProvider" }
|
|
40574
|
+
protocol: { type: string, maxLength: 16 }
|
|
40575
|
+
resolutionState: { $ref: "#/components/schemas/KubernetesTopologyResolution" }
|
|
40576
|
+
resource: { $ref: "#/components/schemas/KubernetesResourceRef" }
|
|
40577
|
+
rule: { $ref: "#/components/schemas/KubernetesTopologyRule" }
|
|
40578
|
+
generation: { type: integer, format: int64 }
|
|
40579
|
+
properties:
|
|
40580
|
+
type: array
|
|
40581
|
+
maxItems: 64
|
|
40582
|
+
items: { $ref: "#/components/schemas/KubernetesTopologyProperty" }
|
|
40583
|
+
conditions:
|
|
40584
|
+
type: array
|
|
40585
|
+
maxItems: 64
|
|
40586
|
+
items: { $ref: "#/components/schemas/KubernetesTopologyCondition" }
|
|
40587
|
+
additionalProperties: false
|
|
40588
|
+
KubernetesTopologyGraphEdge:
|
|
40589
|
+
type: object
|
|
40590
|
+
required: [id, source, target, relation, resolutionState]
|
|
40591
|
+
properties:
|
|
40592
|
+
id: { type: string, minLength: 1, maxLength: 2048 }
|
|
40593
|
+
source: { type: string, minLength: 1, maxLength: 2048 }
|
|
40594
|
+
target: { type: string, minLength: 1, maxLength: 2048 }
|
|
40595
|
+
relation:
|
|
40596
|
+
type: string
|
|
40597
|
+
enum: [matches, processes, forwards, weights, mirrors, resolves, selects]
|
|
40598
|
+
x-enum-varnames: [KubernetesTopologyGraphEdgeRelationMatches, KubernetesTopologyGraphEdgeRelationProcesses, KubernetesTopologyGraphEdgeRelationForwards, KubernetesTopologyGraphEdgeRelationWeights, KubernetesTopologyGraphEdgeRelationMirrors, KubernetesTopologyGraphEdgeRelationResolves, KubernetesTopologyGraphEdgeRelationSelects]
|
|
40599
|
+
resolutionState: { $ref: "#/components/schemas/KubernetesTopologyResolution" }
|
|
40600
|
+
protocol: { type: string, maxLength: 16 }
|
|
40601
|
+
port: { type: string, maxLength: 64 }
|
|
40602
|
+
weight: { type: integer, format: int64, minimum: 0 }
|
|
40603
|
+
totalWeight: { type: integer, format: int64, minimum: 0 }
|
|
40604
|
+
mirrorPercent: { type: number, minimum: 0, maximum: 100 }
|
|
40605
|
+
ruleRef: { type: string, maxLength: 2048 }
|
|
40606
|
+
sourceRef: { $ref: "#/components/schemas/KubernetesResourceRef" }
|
|
40607
|
+
note: { type: string, maxLength: 2048 }
|
|
40608
|
+
additionalProperties: false
|
|
40609
|
+
KubernetesTopologyCoverage:
|
|
40610
|
+
type: object
|
|
40611
|
+
required: [provider, sourceId, state]
|
|
40612
|
+
properties:
|
|
40613
|
+
provider: { $ref: "#/components/schemas/KubernetesTopologyProvider" }
|
|
40614
|
+
sourceId: { type: string, maxLength: 128 }
|
|
40615
|
+
state:
|
|
40616
|
+
type: string
|
|
40617
|
+
enum: [available, not_installed, unsupported, denied, error, partial]
|
|
40618
|
+
x-enum-varnames: [KubernetesTopologyCoverageStateAvailable, KubernetesTopologyCoverageStateNotInstalled, KubernetesTopologyCoverageStateUnsupported, KubernetesTopologyCoverageStateDenied, KubernetesTopologyCoverageStateError, KubernetesTopologyCoverageStatePartial]
|
|
40619
|
+
namespace: { type: string, maxLength: 63 }
|
|
40620
|
+
supportedKinds:
|
|
40621
|
+
type: array
|
|
40622
|
+
maxItems: 32
|
|
40623
|
+
items: { type: string, maxLength: 128 }
|
|
40624
|
+
reasonCode: { type: string, maxLength: 128 }
|
|
40625
|
+
checkedAt: { type: string, format: date-time }
|
|
40626
|
+
observedAt: { type: string, format: date-time }
|
|
40627
|
+
truncated: { type: boolean }
|
|
40628
|
+
additionalProperties: false
|
|
40629
|
+
KubernetesTopologySourceQuery:
|
|
40630
|
+
type: object
|
|
40631
|
+
required: [sourceId]
|
|
40632
|
+
properties:
|
|
40633
|
+
sourceId:
|
|
40634
|
+
type: string
|
|
40635
|
+
enum: [kubernetes.services, kubernetes.pods, kubernetes.endpointslices, kubernetes.ingresses, kubernetes.ingressclasses, gateway.gateways, gateway.gatewayclasses, gateway.httproutes, gateway.grpcroutes, gateway.tcproutes, gateway.tlsroutes, gateway.udproutes, gateway.referencegrants, traefik.ingressroutes, traefik.ingressroutetcps, traefik.ingressrouteudps, traefik.traefikservices, traefik.middlewares, traefik.middlewaretcps, apisix.apisixroutes, apisix.apisixupstreams, apisix.apisixtls]
|
|
40636
|
+
x-enum-varnames: [KubernetesTopologySourceKubernetesServices, KubernetesTopologySourceKubernetesPods, KubernetesTopologySourceKubernetesEndpointslices, KubernetesTopologySourceKubernetesIngresses, KubernetesTopologySourceKubernetesIngressclasses, KubernetesTopologySourceGatewayGateways, KubernetesTopologySourceGatewayGatewayclasses, KubernetesTopologySourceGatewayHttproutes, KubernetesTopologySourceGatewayGrpcroutes, KubernetesTopologySourceGatewayTcproutes, KubernetesTopologySourceGatewayTlsroutes, KubernetesTopologySourceGatewayUdproutes, KubernetesTopologySourceGatewayReferencegrants, KubernetesTopologySourceTraefikIngressroutes, KubernetesTopologySourceTraefikIngressroutetcps, KubernetesTopologySourceTraefikIngressrouteudps, KubernetesTopologySourceTraefikTraefikservices, KubernetesTopologySourceTraefikMiddlewares, KubernetesTopologySourceTraefikMiddlewaretcps, KubernetesTopologySourceApisixApisixroutes, KubernetesTopologySourceApisixApisixupstreams, KubernetesTopologySourceApisixApisixtls]
|
|
40637
|
+
namespace: { type: string, maxLength: 63, pattern: '^$|^[a-z0-9]([a-z0-9-]*[a-z0-9])?$' }
|
|
40638
|
+
allOf:
|
|
40639
|
+
- if:
|
|
40640
|
+
properties:
|
|
40641
|
+
sourceId: { enum: [kubernetes.ingressclasses, gateway.gatewayclasses] }
|
|
40642
|
+
required: [sourceId]
|
|
40643
|
+
then:
|
|
40644
|
+
properties:
|
|
40645
|
+
namespace: { type: string, maxLength: 0 }
|
|
40646
|
+
additionalProperties: false
|
|
40647
|
+
KubernetesTopologySnapshotRequest:
|
|
40648
|
+
type: object
|
|
40649
|
+
required: [queries]
|
|
40650
|
+
properties:
|
|
40651
|
+
queries:
|
|
40652
|
+
type: array
|
|
40653
|
+
minItems: 1
|
|
40654
|
+
maxItems: 64
|
|
40655
|
+
uniqueItems: true
|
|
40656
|
+
items: { $ref: "#/components/schemas/KubernetesTopologySourceQuery" }
|
|
40657
|
+
additionalProperties: false
|
|
40658
|
+
KubernetesTopologySourceObject:
|
|
40659
|
+
type: object
|
|
40660
|
+
required: [resource, content]
|
|
40661
|
+
properties:
|
|
40662
|
+
resource: { $ref: "#/components/schemas/KubernetesResourceRef" }
|
|
40663
|
+
generation: { type: integer, format: int64 }
|
|
40664
|
+
content:
|
|
40665
|
+
type: string
|
|
40666
|
+
maxLength: 65536
|
|
40667
|
+
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.
|
|
40668
|
+
additionalProperties: false
|
|
40669
|
+
KubernetesTopologySourceResult:
|
|
40670
|
+
type: object
|
|
40671
|
+
required: [coverage, objects]
|
|
40672
|
+
properties:
|
|
40673
|
+
coverage: { $ref: "#/components/schemas/KubernetesTopologyCoverage" }
|
|
40674
|
+
objects:
|
|
40675
|
+
type: array
|
|
40676
|
+
maxItems: 200
|
|
40677
|
+
items: { $ref: "#/components/schemas/KubernetesTopologySourceObject" }
|
|
40678
|
+
additionalProperties: false
|
|
40679
|
+
KubernetesTopologySnapshot:
|
|
40680
|
+
type: object
|
|
40681
|
+
required: [version, sources]
|
|
40682
|
+
properties:
|
|
40683
|
+
version: { type: string, pattern: '^v1$' }
|
|
40684
|
+
sources:
|
|
40685
|
+
type: array
|
|
40686
|
+
maxItems: 64
|
|
40687
|
+
items: { $ref: "#/components/schemas/KubernetesTopologySourceResult" }
|
|
40688
|
+
additionalProperties: false
|
|
40689
|
+
ResourceMonitoringQuality: {"type":"string","enum":["valid","partial","stale","not_configured","not_collected","unsupported","denied","error","empty"],"x-enum-varnames":["ResourceMonitoringQualityValid","ResourceMonitoringQualityPartial","ResourceMonitoringQualityStale","ResourceMonitoringQualityNotConfigured","ResourceMonitoringQualityNotCollected","ResourceMonitoringQualityUnsupported","ResourceMonitoringQualityDenied","ResourceMonitoringQualityError","ResourceMonitoringQualityEmpty"]}
|
|
40690
|
+
ResourceMonitoringViewName: {"type":"string","enum":["overview","cpu","memory","conntrack","pods"],"x-enum-varnames":["ResourceMonitoringViewOverview","ResourceMonitoringViewCPU","ResourceMonitoringViewMemory","ResourceMonitoringViewConntrack","ResourceMonitoringViewPods"]}
|
|
40691
|
+
ResourceMonitoringQuantity: {"type":"object","additionalProperties":false,"required":["cpuCores","memoryBytes","podSlots"],"properties":{"cpuCores":{"type":"number","format":"double","nullable":true},"memoryBytes":{"type":"number","format":"double","nullable":true},"podSlots":{"type":"number","format":"double","nullable":true}}}
|
|
40692
|
+
ResourceMonitoringNode: {"type":"object","additionalProperties":false,"required":["nodeRef","ready","cordoned","memoryPressure","diskPressure","pidPressure","capacity","allocatable","requests","limits","cpuLimitsComplete","memoryLimitsComplete","boundPods","pendingPods","remainingPodSlots","overflowPodSlots","quality"],"properties":{"nodeRef":{"$ref":"#/components/schemas/KubernetesResourceRef"},"internalIP":{"type":"string"},"os":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"ready":{"type":"string"},"cordoned":{"type":"boolean"},"memoryPressure":{"type":"string"},"diskPressure":{"type":"string"},"pidPressure":{"type":"string"},"capacity":{"$ref":"#/components/schemas/ResourceMonitoringQuantity"},"allocatable":{"$ref":"#/components/schemas/ResourceMonitoringQuantity"},"requests":{"$ref":"#/components/schemas/ResourceMonitoringQuantity"},"limits":{"$ref":"#/components/schemas/ResourceMonitoringQuantity"},"cpuLimitsComplete":{"type":"boolean"},"memoryLimitsComplete":{"type":"boolean"},"boundPods":{"type":"number","format":"double","nullable":true},"pendingPods":{"type":"number","format":"double","nullable":true},"remainingPodSlots":{"type":"number","format":"double","nullable":true},"overflowPodSlots":{"type":"number","format":"double","nullable":true},"quality":{"$ref":"#/components/schemas/ResourceMonitoringQuality"},"observedAt":{"type":"string","format":"date-time"}}}
|
|
40693
|
+
ResourceMonitoringPoint: {"type":"object","additionalProperties":false,"required":["timestamp","value"],"properties":{"timestamp":{"type":"string","format":"date-time"},"value":{"type":"number","format":"double","nullable":true}}}
|
|
40694
|
+
ResourceMonitoringSeries: {"type":"object","additionalProperties":false,"required":["nodeRef","metricKey","unit","quality","source","latest","points"],"properties":{"nodeRef":{"$ref":"#/components/schemas/KubernetesResourceRef"},"metricKey":{"type":"string","maxLength":64},"unit":{"type":"string","enum":["cores","bytes","count","events/s","events","percent"],"x-enum-varnames":["ResourceMonitoringUnitCores","ResourceMonitoringUnitBytes","ResourceMonitoringUnitCount","ResourceMonitoringUnitEventsPerSecond","ResourceMonitoringUnitEvents","ResourceMonitoringUnitPercent"]},"quality":{"$ref":"#/components/schemas/ResourceMonitoringQuality"},"reasonCode":{"type":"string","maxLength":64},"source":{"type":"string"},"sampledAt":{"type":"string","format":"date-time"},"latest":{"type":"number","format":"double","nullable":true},"points":{"type":"array","maxItems":1440,"items":{"$ref":"#/components/schemas/ResourceMonitoringPoint"}}}}
|
|
40695
|
+
ResourceMonitoringPanel: {"type":"object","additionalProperties":false,"required":["key","label","unit","quality","series"],"properties":{"key":{"type":"string","maxLength":64},"label":{"type":"string"},"unit":{"type":"string"},"quality":{"$ref":"#/components/schemas/ResourceMonitoringQuality"},"reasonCode":{"type":"string","maxLength":64},"estimated":{"type":"boolean"},"windowSeconds":{"type":"integer","minimum":300,"maximum":3600},"series":{"type":"array","maxItems":500,"items":{"$ref":"#/components/schemas/ResourceMonitoringSeries"}}}}
|
|
40696
|
+
ResourceMonitoringView: {"type":"object","additionalProperties":false,"required":["clusterId","view","from","to","stepSeconds","generatedAt","snapshotQuality","unscheduledPendingPods","nodes","panels"],"properties":{"clusterId":{"type":"string"},"view":{"$ref":"#/components/schemas/ResourceMonitoringViewName"},"node":{"type":"string"},"from":{"type":"string","format":"date-time"},"to":{"type":"string","format":"date-time"},"stepSeconds":{"type":"integer","minimum":15,"maximum":3600},"generatedAt":{"type":"string","format":"date-time"},"snapshotObservedAt":{"type":"string","format":"date-time"},"snapshotQuality":{"$ref":"#/components/schemas/ResourceMonitoringQuality"},"unscheduledPendingPods":{"type":"number","format":"double","nullable":true},"nodes":{"type":"array","maxItems":500,"items":{"$ref":"#/components/schemas/ResourceMonitoringNode"}},"panels":{"type":"array","maxItems":32,"items":{"$ref":"#/components/schemas/ResourceMonitoringPanel"}},"truncated":{"type":"boolean"},"nodeOptions":{"type":"array","maxItems":500,"items":{"$ref":"#/components/schemas/KubernetesResourceRef"}}}}
|
|
40697
|
+
ResourceMonitoringEnvelope: {"type":"object","additionalProperties":false,"required":["data"],"properties":{"data":{"$ref":"#/components/schemas/ResourceMonitoringView"}}}
|
|
39692
40698
|
KubernetesNetworkTopologySummary:
|
|
39693
40699
|
type: object
|
|
39694
40700
|
required: [entryCount, routeCount, serviceCount, missingServiceCount, backendPodCount, pendingRouteCount]
|
|
@@ -39737,6 +40743,21 @@ components:
|
|
|
39737
40743
|
source: { type: string }
|
|
39738
40744
|
generatedAt: { type: string }
|
|
39739
40745
|
summary: { $ref: "#/components/schemas/KubernetesNetworkTopologySummary" }
|
|
40746
|
+
graphVersion: { type: string, pattern: '^v1$' }
|
|
40747
|
+
nodes:
|
|
40748
|
+
type: array
|
|
40749
|
+
maxItems: 500
|
|
40750
|
+
items: { $ref: "#/components/schemas/KubernetesTopologyGraphNode" }
|
|
40751
|
+
edges:
|
|
40752
|
+
type: array
|
|
40753
|
+
maxItems: 1000
|
|
40754
|
+
items: { $ref: "#/components/schemas/KubernetesTopologyGraphEdge" }
|
|
40755
|
+
coverage:
|
|
40756
|
+
type: array
|
|
40757
|
+
maxItems: 128
|
|
40758
|
+
items: { $ref: "#/components/schemas/KubernetesTopologyCoverage" }
|
|
40759
|
+
observedAt: { type: string, format: date-time }
|
|
40760
|
+
truncated: { type: boolean }
|
|
39740
40761
|
traces:
|
|
39741
40762
|
type: array
|
|
39742
40763
|
items: { $ref: "#/components/schemas/KubernetesNetworkTopologyTrace" }
|
|
@@ -43187,6 +44208,7 @@ components:
|
|
|
43187
44208
|
namespace: { type: string, minLength: 1 }
|
|
43188
44209
|
scopeMode: { $ref: "#/components/schemas/KubernetesResourceScopeMode" }
|
|
43189
44210
|
uid: { type: string }
|
|
44211
|
+
resourceVersion: { type: string }
|
|
43190
44212
|
additionalProperties: false
|
|
43191
44213
|
KubernetesResourceStreamEventType:
|
|
43192
44214
|
type: string
|
|
@@ -49791,3 +50813,50 @@ components:
|
|
|
49791
50813
|
properties:
|
|
49792
50814
|
data: { $ref: "#/components/schemas/NetworkPolicyPreviewResult" }
|
|
49793
50815
|
additionalProperties: false
|
|
50816
|
+
|
|
50817
|
+
TemplateUpdateKind:
|
|
50818
|
+
{"type": "string", "enum": ["deployment", "build", "workflow", "blueprint"]}
|
|
50819
|
+
TemplateUpdateMode:
|
|
50820
|
+
{"type": "string", "enum": ["fixed", "manual", "automatic", "approval"]}
|
|
50821
|
+
ManifestTemplateSelection:
|
|
50822
|
+
{"type": "object", "properties": {"templateId": {"type": "string", "maxLength": 256}, "version": {"type": "integer", "format": "int64", "minimum": 1, "maximum": 2147483647}, "parameters": {"$ref": "#/components/schemas/TemplateParameterValues"}, "baseFilesDigest": {"type": "string", "maxLength": 80}, "adoptionId": {"type": "string", "maxLength": 256}}, "required": ["templateId", "version", "parameters", "baseFilesDigest", "adoptionId"], "additionalProperties": false}
|
|
50823
|
+
TemplateUpdateTarget:
|
|
50824
|
+
{"type": "object", "properties": {"id": {"type": "string", "maxLength": 256}, "kind": {"$ref": "#/components/schemas/TemplateUpdateKind"}, "templateId": {"type": "string", "maxLength": 256}, "applicationId": {"type": "string", "maxLength": 256}, "applicationName": {"type": "string", "maxLength": 256}, "serviceId": {"type": "string", "maxLength": 256}, "serviceName": {"type": "string", "maxLength": 256}, "applicationEnvironmentId": {"type": "string", "maxLength": 256}, "environmentName": {"type": "string", "maxLength": 256}, "releaseTargetId": {"type": "string", "maxLength": 256}, "fromVersion": {"type": "integer", "format": "int64", "minimum": 1, "maximum": 2147483647}, "mode": {"$ref": "#/components/schemas/TemplateUpdateMode"}, "requiresApproval": {"type": "boolean"}, "eligible": {"type": "boolean"}, "reason": {"type": "string", "maxLength": 1024}, "independentOverrides": {"type": "array", "items": {"type": "string", "maxLength": 256}, "maxItems": 100}, "bindingRevision": {"type": "string", "maxLength": 256}, "scope": {"type": "string", "enum": ["environment", "application", "creation_only"]}}, "required": ["id", "kind", "templateId", "applicationId", "applicationName", "serviceId", "serviceName", "applicationEnvironmentId", "environmentName", "releaseTargetId", "fromVersion", "mode", "requiresApproval", "eligible", "reason", "independentOverrides", "bindingRevision", "scope"], "additionalProperties": false}
|
|
50825
|
+
TemplateUpdateTargetPage:
|
|
50826
|
+
{"type": "object", "properties": {"items": {"type": "array", "items": {"$ref": "#/components/schemas/TemplateUpdateTarget"}, "maxItems": 100}, "total": {"type": "integer", "format": "int64", "minimum": 0, "maximum": 2147483647}, "page": {"type": "integer", "format": "int64", "minimum": 1, "maximum": 2147483647}, "pageSize": {"type": "integer", "format": "int64", "minimum": 1, "maximum": 100}}, "required": ["items", "total", "page", "pageSize"], "additionalProperties": false}
|
|
50827
|
+
TemplateUpdateSelection:
|
|
50828
|
+
{"type": "object", "properties": {"targetId": {"type": "string", "maxLength": 256, "minLength": 1}, "parameters": {"$ref": "#/components/schemas/TemplateParameterValues"}, "useNewDefaults": {"type": "array", "items": {"type": "string", "maxLength": 256}, "maxItems": 100, "uniqueItems": true}, "wave": {"type": "integer", "format": "int64", "minimum": 0, "maximum": 199}}, "required": ["targetId"], "additionalProperties": false}
|
|
50829
|
+
TemplateUpdatePreviewInput:
|
|
50830
|
+
{"type": "object", "properties": {"kind": {"$ref": "#/components/schemas/TemplateUpdateKind"}, "templateId": {"type": "string", "maxLength": 256, "minLength": 1}, "toVersion": {"type": "integer", "format": "int64", "minimum": 1, "maximum": 2147483647}, "targets": {"type": "array", "items": {"$ref": "#/components/schemas/TemplateUpdateSelection"}, "maxItems": 100, "minItems": 1}, "applicationId": {"type": "string", "minLength": 1, "maxLength": 256}}, "required": ["kind", "templateId", "toVersion", "targets"], "additionalProperties": false}
|
|
50831
|
+
TemplateUpdateChange:
|
|
50832
|
+
{"type": "object", "properties": {"section": {"type": "string", "enum": ["source", "schema", "defaults", "parameters", "resources"]}, "path": {"type": "string", "maxLength": 1024}, "before": {"type": "string", "maxLength": 32768}, "after": {"type": "string", "maxLength": 32768}}, "required": ["section", "path", "before", "after"], "additionalProperties": false}
|
|
50833
|
+
TemplateUpdateDiff:
|
|
50834
|
+
{"type": "object", "properties": {"fromVersion": {"type": "integer", "format": "int64", "minimum": 1, "maximum": 2147483647}, "toVersion": {"type": "integer", "format": "int64", "minimum": 1, "maximum": 2147483647}, "changes": {"type": "array", "items": {"$ref": "#/components/schemas/TemplateUpdateChange"}, "maxItems": 500}, "renderStatus": {"type": "string", "enum": ["available", "unavailable", "invalid"]}, "diagnostics": {"type": "array", "items": {"type": "string", "maxLength": 2048}, "maxItems": 32}, "historyGap": {"type": "boolean"}, "migration": {"$ref": "#/components/schemas/TemplateMigrationAssessment"}}, "required": ["fromVersion", "toVersion", "changes", "renderStatus", "diagnostics", "historyGap"], "additionalProperties": false}
|
|
50835
|
+
TemplateUpdateCandidate:
|
|
50836
|
+
{"type": "object", "properties": {"id": {"type": "string", "maxLength": 256}, "target": {"$ref": "#/components/schemas/TemplateUpdateTarget"}, "toVersion": {"type": "integer", "format": "int64", "minimum": 1, "maximum": 2147483647}, "digest": {"type": "string", "maxLength": 80}, "parameters": {"$ref": "#/components/schemas/TemplateParameterValues"}, "cumulative": {"$ref": "#/components/schemas/TemplateUpdateDiff"}, "versions": {"type": "array", "items": {"$ref": "#/components/schemas/TemplateUpdateDiff"}, "maxItems": 200}, "eligible": {"type": "boolean"}, "reason": {"type": "string", "maxLength": 1024}, "requiresApproval": {"type": "boolean"}, "wave": {"type": "integer", "format": "int64", "minimum": 0, "maximum": 199}}, "required": ["id", "target", "toVersion", "digest", "parameters", "cumulative", "versions", "eligible", "reason", "requiresApproval", "wave"], "additionalProperties": false}
|
|
50837
|
+
TemplateUpdatePreview:
|
|
50838
|
+
{"type": "object", "properties": {"id": {"type": "string", "maxLength": 256}, "kind": {"$ref": "#/components/schemas/TemplateUpdateKind"}, "templateId": {"type": "string", "maxLength": 256}, "toVersion": {"type": "integer", "format": "int64", "minimum": 1, "maximum": 2147483647}, "digest": {"type": "string", "maxLength": 80}, "candidates": {"type": "array", "items": {"$ref": "#/components/schemas/TemplateUpdateCandidate"}, "maxItems": 100}, "createdAt": {"type": "string", "format": "date-time"}, "expiresAt": {"type": "string", "format": "date-time"}, "configurationOnly": {"type": "boolean", "const": true}}, "required": ["id", "kind", "templateId", "toVersion", "digest", "candidates", "createdAt", "expiresAt", "configurationOnly"], "additionalProperties": false}
|
|
50839
|
+
TemplateUpdateBatchInput:
|
|
50840
|
+
{"type": "object", "properties": {"previewDigest": {"type": "string", "maxLength": 80, "minLength": 1}, "candidateIds": {"type": "array", "items": {"type": "string", "maxLength": 256, "minLength": 1}, "maxItems": 100, "minItems": 1, "uniqueItems": true}, "waveSize": {"type": "integer", "format": "int64", "minimum": 1, "maximum": 100}, "stopOnFailure": {"type": "boolean"}, "acknowledgeHistoryGaps": {"type": "boolean"}, "idempotencyKey": {"type": "string", "maxLength": 128, "minLength": 8}}, "required": ["previewDigest", "candidateIds", "waveSize", "stopOnFailure", "acknowledgeHistoryGaps", "idempotencyKey"], "additionalProperties": false}
|
|
50841
|
+
TemplateUpdatePolicyInput:
|
|
50842
|
+
{"type": "object", "properties": {"kind": {"$ref": "#/components/schemas/TemplateUpdateKind"}, "templateId": {"type": "string", "maxLength": 256, "minLength": 1}, "targetId": {"type": "string", "maxLength": 256, "minLength": 1}, "mode": {"$ref": "#/components/schemas/TemplateUpdateMode"}, "paused": {"type": "boolean"}, "expectedVersion": {"type": "integer", "format": "int64", "minimum": 0, "maximum": 2147483647}}, "required": ["kind", "templateId", "targetId", "mode", "paused", "expectedVersion"], "additionalProperties": false}
|
|
50843
|
+
TemplateUpdatePolicy:
|
|
50844
|
+
{"type": "object", "properties": {"id": {"type": "string", "maxLength": 256}, "kind": {"$ref": "#/components/schemas/TemplateUpdateKind"}, "templateId": {"type": "string", "maxLength": 256}, "targetId": {"type": "string", "maxLength": 256}, "mode": {"$ref": "#/components/schemas/TemplateUpdateMode"}, "paused": {"type": "boolean"}, "version": {"type": "integer", "format": "int64", "minimum": 1, "maximum": 2147483647}, "lastBatchId": {"type": "string", "maxLength": 256}, "lastError": {"type": "string", "maxLength": 1024}, "updatedAt": {"type": "string", "format": "date-time"}}, "required": ["id", "kind", "templateId", "targetId", "mode", "paused", "version", "lastBatchId", "lastError", "updatedAt"], "additionalProperties": false}
|
|
50845
|
+
TemplateUpdateTargetPageEnvelope:
|
|
50846
|
+
{"type": "object", "properties": {"data": {"$ref": "#/components/schemas/TemplateUpdateTargetPage"}}, "required": ["data"], "additionalProperties": false}
|
|
50847
|
+
TemplateUpdatePreviewEnvelope:
|
|
50848
|
+
{"type": "object", "properties": {"data": {"$ref": "#/components/schemas/TemplateUpdatePreview"}}, "required": ["data"], "additionalProperties": false}
|
|
50849
|
+
TemplateUpdatePolicyEnvelope:
|
|
50850
|
+
{"type": "object", "properties": {"data": {"$ref": "#/components/schemas/TemplateUpdatePolicy"}}, "required": ["data"], "additionalProperties": false}
|
|
50851
|
+
TemplateUpdatePolicyListEnvelope:
|
|
50852
|
+
{"type": "object", "properties": {"data": {"type": "array", "items": {"$ref": "#/components/schemas/TemplateUpdatePolicy"}, "maxItems": 2000}}, "required": ["data"], "additionalProperties": false}
|
|
50853
|
+
TemplateUpdateReceipt:
|
|
50854
|
+
{"type": "object", "required": ["kind", "templateId", "bindingId", "previewId", "candidateId", "fromVersion", "toVersion", "requiresApproval"], "properties": {"kind": {"$ref": "#/components/schemas/TemplateUpdateKind"}, "templateId": {"type": "string", "minLength": 1, "maxLength": 256}, "bindingId": {"type": "string", "minLength": 1, "maxLength": 256}, "previewId": {"type": "string", "minLength": 1, "maxLength": 256}, "candidateId": {"type": "string", "minLength": 1, "maxLength": 256}, "fromVersion": {"type": "integer", "format": "int64", "minimum": 1}, "toVersion": {"type": "integer", "format": "int64", "minimum": 1}, "requiresApproval": {"type": "boolean"}}, "additionalProperties": false}
|
|
50855
|
+
TemplateMigrationPolicy:
|
|
50856
|
+
{"type": "object", "additionalProperties": false, "properties": {"sequential": {"type": "boolean", "description": "Must cross this boundary as adjacent published versions; approval cannot waive it."}, "irreversible": {"type": "boolean", "description": "Forward changes require approval; ordinary rollback across this boundary is forbidden."}, "guide": {"type": "string", "maxLength": 2000, "description": "Human migration/recovery instructions. Never executed as a script."}}, "required": ["sequential", "irreversible"], "if": {"anyOf": [{"required": ["sequential"], "properties": {"sequential": {"const": true}}}, {"required": ["irreversible"], "properties": {"irreversible": {"const": true}}}]}, "then": {"required": ["guide"], "properties": {"guide": {"minLength": 1, "pattern": "\\S"}}}}
|
|
50857
|
+
TemplateVersionReference:
|
|
50858
|
+
{"type": "object", "additionalProperties": false, "properties": {"templateId": {"type": "string", "maxLength": 128, "minLength": 1}, "templateVersion": {"type": "integer", "format": "int64", "minimum": 1}, "templateDigest": {"type": "string", "maxLength": 80, "minLength": 1}}, "required": ["templateId", "templateVersion", "templateDigest"]}
|
|
50859
|
+
TemplateMigrationStep:
|
|
50860
|
+
{"type": "object", "additionalProperties": false, "properties": {"version": {"type": "integer", "format": "int64", "minimum": 1}, "contentDigest": {"type": "string", "maxLength": 80}, "policy": {"$ref": "#/components/schemas/TemplateMigrationPolicy"}}, "required": ["version", "contentDigest", "policy"]}
|
|
50861
|
+
TemplateMigrationAssessment:
|
|
50862
|
+
{"type": "object", "additionalProperties": false, "properties": {"initialization": {"type": "boolean", "description": "Server-classified first-deployment candidate; requires create-only preflight and explicit Plan approval. It is not a successful runtime baseline or proof that external data is empty."}, "fromVersion": {"type": "integer", "format": "int64", "minimum": 0}, "toVersion": {"type": "integer", "format": "int64", "minimum": 1}, "blocked": {"type": "boolean"}, "requiresApproval": {"type": "boolean"}, "reason": {"type": "string", "maxLength": 1024}, "steps": {"type": "array", "maxItems": 200, "items": {"$ref": "#/components/schemas/TemplateMigrationStep"}}}, "required": ["fromVersion", "toVersion", "blocked", "requiresApproval", "reason", "steps"]}
|