@opensoha/contracts 0.1.25 → 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.
Files changed (81) hide show
  1. package/COMPATIBILITY.md +24 -0
  2. package/README.md +1 -1
  3. package/agent/environment/export.go +1 -0
  4. package/agent/environment/protocol_test.go +1 -1
  5. package/agent/guest/protocol_test.go +2 -2
  6. package/compat/json-schema-ecosystem-0.1.0.json +1 -1
  7. package/compat/openapi-loose-boundaries-0.1.0.json +1 -1
  8. package/delivery/document.schema.json +127 -9
  9. package/examples/relations_compat_test.go +18 -0
  10. package/fixtures/openapi/DeliveryDocument/invalid/migration-missing-guide-build-template.json +30 -0
  11. package/fixtures/openapi/DeliveryDocument/invalid/migration-missing-guide-deployment-template.json +30 -0
  12. package/fixtures/openapi/DeliveryDocument/invalid/migration-missing-guide-workflow-template.json +27 -0
  13. package/fixtures/openapi/DeliveryDocument/valid/migration-build-template.json +31 -0
  14. package/fixtures/openapi/DeliveryDocument/valid/migration-deployment-template.json +31 -0
  15. package/fixtures/openapi/DeliveryDocument/valid/migration-workflow-template.json +28 -0
  16. package/fixtures/openapi/DeliveryPlanInput/invalid/manual-plan.json +7 -0
  17. package/fixtures/openapi/DeliveryPlanInput/valid/manual-plan.json +6 -0
  18. package/fixtures/openapi/DeliveryTargetInput/invalid/candidate-on-runtime-deploy.json +9 -0
  19. package/fixtures/openapi/DeliveryTargetInput/invalid/config-update-missing-service.json +7 -0
  20. package/fixtures/openapi/DeliveryTargetInput/valid/template-configuration-only.json +8 -0
  21. package/fixtures/openapi/DeliveryTargetInput/valid/template-configuration-without-runtime-environment.json +1 -0
  22. package/fixtures/openapi/KubernetesImportCandidateListEnvelope/invalid/source-with-spec.json +33 -0
  23. package/fixtures/openapi/KubernetesImportCandidateListEnvelope/invalid/source-without-uid.json +29 -0
  24. package/fixtures/openapi/KubernetesImportCandidateListEnvelope/valid/stable-source.json +30 -0
  25. package/fixtures/openapi/KubernetesPod/invalid/pod-uid.json +9 -0
  26. package/fixtures/openapi/KubernetesPod/valid/pod-uid.json +9 -0
  27. package/fixtures/openapi/KubernetesPodDetail/invalid/pod-uid.json +6 -0
  28. package/fixtures/openapi/KubernetesPodDetail/valid/pod-uid.json +6 -0
  29. package/fixtures/openapi/KubernetesServiceImportRequest/invalid/empty-source-uid.json +48 -0
  30. package/fixtures/openapi/KubernetesServiceImportRequest/valid/pinned-workloads-and-cr.json +48 -0
  31. package/fixtures/openapi/ManifestExecutionTaskPayload/invalid/initialization.json +7 -0
  32. package/fixtures/openapi/ManifestExecutionTaskPayload/valid/initialization.json +7 -0
  33. package/fixtures/openapi/ManifestRootResource/invalid/root.json +1 -0
  34. package/fixtures/openapi/ManifestRootResource/valid/root.json +1 -0
  35. package/fixtures/openapi/ResourceRelationConfig/invalid/executable-rule.json +17 -0
  36. package/fixtures/openapi/ResourceRelationConfig/valid/unknown-kind.json +13 -0
  37. package/fixtures/openapi/ServiceDeploymentTemplateInput/invalid/migration-missing-guide-valid-yaml.json +38 -0
  38. package/fixtures/openapi/ServiceDeploymentTemplateInput/valid/migration-valid-yaml.json +39 -0
  39. package/fixtures/openapi/TemplateMigrationAssessment/invalid/initialization.json +9 -0
  40. package/fixtures/openapi/TemplateMigrationAssessment/valid/initialization.json +9 -0
  41. package/fixtures/openapi/TemplateMigrationPolicy/invalid/blank-guide.json +5 -0
  42. package/fixtures/openapi/TemplateMigrationPolicy/invalid/missing-guide.json +4 -0
  43. package/fixtures/openapi/TemplateMigrationPolicy/invalid/unknown-escape-hatch.json +6 -0
  44. package/fixtures/openapi/TemplateMigrationPolicy/valid/legacy-safe.json +4 -0
  45. package/fixtures/openapi/TemplateMigrationPolicy/valid/ordered-data-change.json +5 -0
  46. package/fixtures/openapi/TemplateUpdateBatchInput/invalid/duplicate-candidates.json +11 -0
  47. package/fixtures/openapi/TemplateUpdateBatchInput/invalid/empty-identities.json +10 -0
  48. package/fixtures/openapi/TemplateUpdateBatchInput/valid/staged-adoption.json +10 -0
  49. package/fixtures/openapi/TemplateUpdatePolicyInput/invalid/unknown-mode.json +8 -0
  50. package/fixtures/openapi/TemplateUpdatePolicyInput/valid/explicit-automatic.json +8 -0
  51. package/fixtures/openapi/TemplateUpdatePreviewInput/invalid/empty-identities.json +10 -0
  52. package/fixtures/openapi/TemplateUpdatePreviewInput/invalid/empty-targets.json +6 -0
  53. package/fixtures/openapi/TemplateUpdatePreviewInput/valid/cross-version-manual.json +14 -0
  54. package/gen/go/sohaapi/client.go +1 -1
  55. package/gen/go/sohaapi/client_test.go +2 -2
  56. package/gen/go/sohaapi/import_source_compat_test.go +12 -0
  57. package/gen/go/sohaapi/types.go +945 -159
  58. package/gen/ts/sohaapi/index.ts +746 -4
  59. package/go.mod +2 -2
  60. package/helmrelease/delivery.go +4 -1
  61. package/helmrelease/initialization.go +10 -0
  62. package/helmrelease/runtime/delivery.go +40 -10
  63. package/helmrelease/runtime/delivery_test.go +4 -0
  64. package/helmrelease/runtime/initialization.go +186 -0
  65. package/helmrelease/runtime/initialization_test.go +203 -0
  66. package/openapi/soha-api.json +2195 -55
  67. package/openapi/soha-api.yaml +349 -9
  68. package/openapi/spec_generated.go +3 -3
  69. package/openapi/spec_test.go +42 -0
  70. package/package.json +1 -1
  71. package/resource/models.go +2 -0
  72. package/resource/relations.go +225 -0
  73. package/resource/relations_test.go +47 -0
  74. package/resource/root_cr.go +38 -0
  75. package/resource/runtime/argocd_integration_test.go +1 -1
  76. package/resource/runtime/initialization.go +66 -0
  77. package/resource/runtime/initialization_test.go +80 -0
  78. package/resource/runtime/relations.go +161 -0
  79. package/resource/runtime/relations_test.go +100 -0
  80. package/resource/runtime/root_cr.go +79 -0
  81. package/resource/runtime/root_cr_test.go +118 -0
@@ -1317,6 +1317,40 @@ export interface paths {
1317
1317
  patch?: never;
1318
1318
  trace?: never;
1319
1319
  };
1320
+ "/application-environments/{applicationEnvironmentID}/targets/{targetID}/source": {
1321
+ parameters: {
1322
+ query?: never;
1323
+ header?: never;
1324
+ path?: never;
1325
+ cookie?: never;
1326
+ };
1327
+ /** @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. */
1328
+ get: operations["getApplicationEnvironmentTargetSource"];
1329
+ put?: never;
1330
+ post?: never;
1331
+ delete?: never;
1332
+ options?: never;
1333
+ head?: never;
1334
+ patch?: never;
1335
+ trace?: never;
1336
+ };
1337
+ "/application-environments/{applicationEnvironmentID}/targets/{targetID}/relations": {
1338
+ parameters: {
1339
+ query?: never;
1340
+ header?: never;
1341
+ path?: never;
1342
+ cookie?: never;
1343
+ };
1344
+ /** @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. */
1345
+ get: operations["getApplicationEnvironmentTargetRelations"];
1346
+ put?: never;
1347
+ post?: never;
1348
+ delete?: never;
1349
+ options?: never;
1350
+ head?: never;
1351
+ patch?: never;
1352
+ trace?: never;
1353
+ };
1320
1354
  "/application-environments/target-candidates": {
1321
1355
  parameters: {
1322
1356
  query?: never;
@@ -2150,6 +2184,110 @@ export interface paths {
2150
2184
  patch?: never;
2151
2185
  trace?: never;
2152
2186
  };
2187
+ "/delivery/template-updates/targets": {
2188
+ parameters: {
2189
+ query?: never;
2190
+ header?: never;
2191
+ path?: never;
2192
+ cookie?: never;
2193
+ };
2194
+ /**
2195
+ * Preview affected application bindings with honest paginated totals
2196
+ * @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.
2197
+ */
2198
+ get: operations["listTemplateUpdateTargets"];
2199
+ put?: never;
2200
+ post?: never;
2201
+ delete?: never;
2202
+ options?: never;
2203
+ head?: never;
2204
+ patch?: never;
2205
+ trace?: never;
2206
+ };
2207
+ "/delivery/template-updates/previews": {
2208
+ parameters: {
2209
+ query?: never;
2210
+ header?: never;
2211
+ path?: never;
2212
+ cookie?: never;
2213
+ };
2214
+ get?: never;
2215
+ put?: never;
2216
+ /**
2217
+ * Freeze final template adoption and cumulative plus adjacent-version differences
2218
+ * @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.
2219
+ */
2220
+ post: operations["createTemplateUpdatePreview"];
2221
+ delete?: never;
2222
+ options?: never;
2223
+ head?: never;
2224
+ patch?: never;
2225
+ trace?: never;
2226
+ };
2227
+ "/delivery/template-updates/previews/{previewID}": {
2228
+ parameters: {
2229
+ query?: never;
2230
+ header?: never;
2231
+ path?: never;
2232
+ cookie?: never;
2233
+ };
2234
+ /**
2235
+ * Read a frozen adoption preview with current scope revalidation
2236
+ * @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.
2237
+ */
2238
+ get: operations["getTemplateUpdatePreview"];
2239
+ put?: never;
2240
+ post?: never;
2241
+ delete?: never;
2242
+ options?: never;
2243
+ head?: never;
2244
+ patch?: never;
2245
+ trace?: never;
2246
+ };
2247
+ "/delivery/template-updates/previews/{previewID}/batches": {
2248
+ parameters: {
2249
+ query?: never;
2250
+ header?: never;
2251
+ path?: never;
2252
+ cookie?: never;
2253
+ };
2254
+ get?: never;
2255
+ put?: never;
2256
+ /**
2257
+ * Adopt selected candidates in waves through existing DeliveryBatch and Plan approvals
2258
+ * @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.
2259
+ */
2260
+ post: operations["createTemplateUpdateBatch"];
2261
+ delete?: never;
2262
+ options?: never;
2263
+ head?: never;
2264
+ patch?: never;
2265
+ trace?: never;
2266
+ };
2267
+ "/delivery/template-updates/policies": {
2268
+ parameters: {
2269
+ query?: never;
2270
+ header?: never;
2271
+ path?: never;
2272
+ cookie?: never;
2273
+ };
2274
+ /**
2275
+ * List explicit adoption policies visible to the current principal
2276
+ * @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.
2277
+ */
2278
+ get: operations["listTemplateUpdatePolicies"];
2279
+ /**
2280
+ * Save fixed manual automatic or approval policy using a binding-scoped CAS
2281
+ * @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.
2282
+ */
2283
+ put: operations["saveTemplateUpdatePolicy"];
2284
+ post?: never;
2285
+ delete?: never;
2286
+ options?: never;
2287
+ head?: never;
2288
+ patch?: never;
2289
+ trace?: never;
2290
+ };
2153
2291
  "/delivery/manifest-packages": {
2154
2292
  parameters: {
2155
2293
  query?: never;
@@ -17151,6 +17289,7 @@ export interface components {
17151
17289
  codeVerifier: string;
17152
17290
  };
17153
17291
  StreamTicketRequest: {
17292
+ /** @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. */
17154
17293
  path: string;
17155
17294
  };
17156
17295
  StreamTicket: {
@@ -17680,6 +17819,62 @@ export interface components {
17680
17819
  /** Format: date-time */
17681
17820
  updatedAt: string;
17682
17821
  };
17822
+ ResourceRelationSource: {
17823
+ apiVersion: string;
17824
+ resource: string;
17825
+ kind: string;
17826
+ namespace: string;
17827
+ };
17828
+ ResourceRelationRule: {
17829
+ id: string;
17830
+ /** @enum {string} */
17831
+ type: "reference" | "manual" | "selector";
17832
+ target: components["schemas"]["ResourceRelationSource"];
17833
+ name?: string;
17834
+ uid?: string;
17835
+ selector?: {
17836
+ [key: string]: string;
17837
+ };
17838
+ };
17839
+ ResourceRelationConfig: {
17840
+ /** @constant */
17841
+ version: "v1";
17842
+ rootUid: string;
17843
+ sources: components["schemas"]["ResourceRelationSource"][];
17844
+ rules: components["schemas"]["ResourceRelationRule"][];
17845
+ };
17846
+ ResourceRelationNode: {
17847
+ resource: components["schemas"]["KubernetesResourceRef"];
17848
+ /** @enum {string} */
17849
+ role: "root" | "owned" | "manual" | "reference" | "candidate";
17850
+ depth: number;
17851
+ };
17852
+ ResourceRelationEdge: {
17853
+ fromUid: string;
17854
+ toUid: string;
17855
+ /** @enum {string} */
17856
+ type: "owns" | "manual" | "references" | "selector_candidate";
17857
+ ruleId?: string;
17858
+ };
17859
+ ResourceRelationCoverage: {
17860
+ queryId: string;
17861
+ /** @enum {string} */
17862
+ state: "available" | "partial" | "denied" | "error" | "not_installed" | "unsupported";
17863
+ reasonCode?: string;
17864
+ truncated: boolean;
17865
+ };
17866
+ ResourceRelationsView: {
17867
+ root: components["schemas"]["KubernetesResourceRef"];
17868
+ config: components["schemas"]["ResourceRelationConfig"];
17869
+ nodes: components["schemas"]["ResourceRelationNode"][];
17870
+ edges: components["schemas"]["ResourceRelationEdge"][];
17871
+ coverage: components["schemas"]["ResourceRelationCoverage"][];
17872
+ partial: boolean;
17873
+ observedAt: string;
17874
+ };
17875
+ ResourceRelationsEnvelope: {
17876
+ data: components["schemas"]["ResourceRelationsView"];
17877
+ };
17683
17878
  ReleaseTarget: {
17684
17879
  docker?: components["schemas"]["DockerDeliveryConfiguration"];
17685
17880
  helm?: components["schemas"]["HelmDeliveryConfiguration"];
@@ -17886,6 +18081,8 @@ export interface components {
17886
18081
  hook?: boolean;
17887
18082
  };
17888
18083
  HelmDeliverySnapshot: {
18084
+ templateInputs?: components["schemas"]["TemplateVersionReference"];
18085
+ migration?: components["schemas"]["TemplateMigrationAssessment"];
17889
18086
  deliveryPlanId: string;
17890
18087
  targetId: string;
17891
18088
  applicationId: string;
@@ -17923,6 +18120,8 @@ export interface components {
17923
18120
  action: "preflight" | "apply" | "observe";
17924
18121
  snapshot: components["schemas"]["HelmDeliverySnapshot"];
17925
18122
  prepared?: components["schemas"]["HelmPreparedRelease"];
18123
+ /** @description Server-derived original successful initialization apply receipt. Required for initialization observation or already-applied recovery; current same-name objects cannot establish original ownership. */
18124
+ initializationResources?: components["schemas"]["ManifestResourceInventory"][];
17926
18125
  };
17927
18126
  HelmExecutionTaskResult: {
17928
18127
  ready: boolean;
@@ -17957,6 +18156,7 @@ export interface components {
17957
18156
  timeoutSeconds: number;
17958
18157
  };
17959
18158
  ServiceDeploymentTemplateInput: {
18159
+ migrationPolicy?: components["schemas"]["TemplateMigrationPolicy"];
17960
18160
  copiedFrom?: components["schemas"]["TemplateCopyOrigin"];
17961
18161
  key: string;
17962
18162
  name: string;
@@ -17975,6 +18175,7 @@ export interface components {
17975
18175
  expectedRevision?: number;
17976
18176
  };
17977
18177
  ServiceDeploymentTemplate: {
18178
+ migrationPolicy?: components["schemas"]["TemplateMigrationPolicy"];
17978
18179
  id: string;
17979
18180
  key: string;
17980
18181
  name: string;
@@ -18043,6 +18244,7 @@ export interface components {
18043
18244
  expectedRevision: number;
18044
18245
  };
18045
18246
  WorkflowTemplate: {
18247
+ migrationPolicy?: components["schemas"]["TemplateMigrationPolicy"];
18046
18248
  /** @description Current editable revision used for conditional saves. */
18047
18249
  revision?: number;
18048
18250
  /** @description Latest immutable published version; zero means unpublished. */
@@ -18066,6 +18268,7 @@ export interface components {
18066
18268
  updatedAt: string;
18067
18269
  };
18068
18270
  WorkflowTemplateInput: {
18271
+ migrationPolicy?: components["schemas"]["TemplateMigrationPolicy"];
18069
18272
  copiedFrom?: components["schemas"]["TemplateCopyOrigin"];
18070
18273
  /** @description Reject an update if the stored revision differs. */
18071
18274
  expectedRevision?: number;
@@ -18151,11 +18354,34 @@ export interface components {
18151
18354
  kind: "Service" | "Ingress" | "HorizontalPodAutoscaler";
18152
18355
  name: string;
18153
18356
  };
18357
+ KubernetesImportOwnerReference: {
18358
+ apiVersion: string;
18359
+ kind: string;
18360
+ name: string;
18361
+ uid: string;
18362
+ controller?: boolean;
18363
+ blockOwnerDeletion?: boolean;
18364
+ };
18365
+ /** @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. */
18366
+ KubernetesImportSource: {
18367
+ resource: components["schemas"]["KubernetesResourceRef"] & {
18368
+ uid: string;
18369
+ };
18370
+ specDigest: string;
18371
+ /** Format: int64 */
18372
+ generation?: number;
18373
+ crdName?: string;
18374
+ plural?: string;
18375
+ /** Format: date-time */
18376
+ observedAt: string;
18377
+ owners?: components["schemas"]["KubernetesImportOwnerReference"][];
18378
+ };
18154
18379
  KubernetesImportCandidate: {
18380
+ source?: components["schemas"]["KubernetesImportSource"];
18155
18381
  clusterId: string;
18156
18382
  namespace: string;
18157
18383
  /** @enum {string} */
18158
- workloadKind: "Deployment" | "StatefulSet" | "DaemonSet";
18384
+ workloadKind: "Deployment" | "StatefulSet" | "DaemonSet" | "Job" | "CronJob" | "CustomResource";
18159
18385
  workloadName: string;
18160
18386
  desiredReplicas: number;
18161
18387
  readyReplicas: number;
@@ -18170,10 +18396,15 @@ export interface components {
18170
18396
  truncated: boolean;
18171
18397
  };
18172
18398
  KubernetesWorkloadImportInput: {
18399
+ expectedUid?: string;
18400
+ expectedSpecDigest?: string;
18401
+ /** @description Required for CustomResource. Resolve the served GVR and scope from this CRD; never infer API group or plural from Kind. */
18402
+ crdName?: string;
18173
18403
  /** @enum {string} */
18174
- workloadKind: "Deployment" | "StatefulSet" | "DaemonSet";
18404
+ workloadKind: "Deployment" | "StatefulSet" | "DaemonSet" | "Job" | "CronJob" | "CustomResource";
18175
18405
  workloadName: string;
18176
18406
  };
18407
+ /** @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. */
18177
18408
  KubernetesServiceImportRequest: {
18178
18409
  clusterId: string;
18179
18410
  namespace: string;
@@ -18196,14 +18427,15 @@ export interface components {
18196
18427
  key: string;
18197
18428
  name: string;
18198
18429
  /** @enum {string} */
18199
- workloadKind: "Deployment" | "StatefulSet" | "DaemonSet";
18430
+ workloadKind: "Deployment" | "StatefulSet" | "DaemonSet" | "Job" | "CronJob" | "CustomResource";
18200
18431
  workloadName: string;
18201
18432
  created: boolean;
18202
18433
  };
18203
18434
  KubernetesImportedTarget: {
18435
+ source?: components["schemas"]["KubernetesImportSource"];
18204
18436
  id: string;
18205
18437
  /** @enum {string} */
18206
- workloadKind: "Deployment" | "StatefulSet" | "DaemonSet";
18438
+ workloadKind: "Deployment" | "StatefulSet" | "DaemonSet" | "Job" | "CronJob" | "CustomResource";
18207
18439
  workloadName: string;
18208
18440
  created: boolean;
18209
18441
  };
@@ -18260,6 +18492,7 @@ export interface components {
18260
18492
  data: components["schemas"]["HelmReleaseImportResult"];
18261
18493
  };
18262
18494
  BuildTemplate: {
18495
+ migrationPolicy?: components["schemas"]["TemplateMigrationPolicy"];
18263
18496
  /** @description Current editable revision used for conditional saves. */
18264
18497
  revision?: number;
18265
18498
  /** @description Latest immutable published version; zero means unpublished. */
@@ -18289,6 +18522,7 @@ export interface components {
18289
18522
  updatedAt: string;
18290
18523
  };
18291
18524
  BuildTemplateInput: {
18525
+ migrationPolicy?: components["schemas"]["TemplateMigrationPolicy"];
18292
18526
  copiedFrom?: components["schemas"]["TemplateCopyOrigin"];
18293
18527
  /** @description Reject an update if the stored revision differs. */
18294
18528
  expectedRevision?: number;
@@ -18350,6 +18584,7 @@ export interface components {
18350
18584
  summary?: string;
18351
18585
  };
18352
18586
  DeliveryTargetInput: {
18587
+ templateCandidateId?: string;
18353
18588
  id: string;
18354
18589
  applicationId: string;
18355
18590
  serviceId: string;
@@ -18390,6 +18625,7 @@ export interface components {
18390
18625
  maxLength?: number;
18391
18626
  };
18392
18627
  DeliveryBuildTemplateSpec: {
18628
+ migrationPolicy?: components["schemas"]["TemplateMigrationPolicy"];
18393
18629
  /** @default custom */
18394
18630
  builderKind?: string;
18395
18631
  dockerfileTemplate?: string;
@@ -18406,6 +18642,7 @@ export interface components {
18406
18642
  dockerfileTemplate: string;
18407
18643
  } | unknown);
18408
18644
  DeliveryDeploymentTemplateSpec: {
18645
+ migrationPolicy?: components["schemas"]["TemplateMigrationPolicy"];
18409
18646
  source: components["schemas"]["DeploymentTemplateSource"];
18410
18647
  parameterSchema: components["schemas"]["TemplateParameterSchema"];
18411
18648
  defaults: components["schemas"]["TemplateParameterValues"];
@@ -18484,6 +18721,7 @@ export interface components {
18484
18721
  onFailure?: components["schemas"]["DeliveryDocumentStep"][];
18485
18722
  } & (unknown | unknown | unknown);
18486
18723
  DeliveryWorkflowTemplateSpec: {
18724
+ migrationPolicy?: components["schemas"]["TemplateMigrationPolicy"];
18487
18725
  /** @default release */
18488
18726
  category?: string;
18489
18727
  definition: components["schemas"]["DeliveryBatchTemplateDefinition"] | components["schemas"]["DeliveryDocumentDAG"];
@@ -19005,6 +19243,7 @@ export interface components {
19005
19243
  sourceCommit?: components["schemas"]["DeliverySourceCommit"];
19006
19244
  } & (unknown | unknown);
19007
19245
  DeliveryTargetSnapshot: {
19246
+ templateUpdate?: components["schemas"]["TemplateUpdateReceipt"];
19008
19247
  target: components["schemas"]["DeliveryTargetInput"];
19009
19248
  applicationName: string;
19010
19249
  serviceName: string;
@@ -19215,6 +19454,10 @@ export interface components {
19215
19454
  latestRelease?: components["schemas"]["ReleaseRecord"];
19216
19455
  };
19217
19456
  ApplicationRuntimeWorkload: {
19457
+ targetId?: string;
19458
+ source?: components["schemas"]["KubernetesImportSource"];
19459
+ /** @enum {string} */
19460
+ sourceStatus?: "linked" | "changed" | "replaced" | "missing" | "unavailable" | "forbidden";
19218
19461
  applicationEnvironmentId: string;
19219
19462
  clusterId: string;
19220
19463
  namespace: string;
@@ -19555,8 +19798,24 @@ export interface components {
19555
19798
  };
19556
19799
  /** @enum {string} */
19557
19800
  ManifestTaskAction: "preflight" | "apply" | "observe" | "repair" | "adopt" | "rollback" | "sync" | "rollout_control";
19801
+ /** @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. */
19802
+ ManifestRootResource: {
19803
+ targetId: string;
19804
+ deliveryPlanId: string;
19805
+ apiVersion: string;
19806
+ kind: string;
19807
+ namespace: string;
19808
+ name: string;
19809
+ uid: string;
19810
+ /** Format: int64 */
19811
+ generation: number;
19812
+ crdName: string;
19813
+ };
19558
19814
  /** @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. */
19559
19815
  ManifestExecutionTaskPayload: {
19816
+ /** @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. */
19817
+ initializationPlanId?: string;
19818
+ rootResource?: components["schemas"]["ManifestRootResource"];
19560
19819
  rolloutControl?: components["schemas"]["ProgressiveRolloutControlInput"];
19561
19820
  /** @description Server-rendered child resources from the single Argo Application's immutable Git source and image overrides; used for ownership admission and live verification, never direct apply. */
19562
19821
  gitOpsDocuments?: components["schemas"]["ManifestRenderedDocument"][];
@@ -19597,6 +19856,8 @@ export interface components {
19597
19856
  data: components["schemas"]["ManifestExecutionTask"];
19598
19857
  };
19599
19858
  ManifestPreflightResult: {
19859
+ /** @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. */
19860
+ initializationPlanId?: string;
19600
19861
  ready: boolean;
19601
19862
  /** @enum {string} */
19602
19863
  capability: "available" | "degraded" | "unsupported";
@@ -19626,6 +19887,8 @@ export interface components {
19626
19887
  evidenceRefs: string[];
19627
19888
  };
19628
19889
  ManifestExecutionTaskResult: {
19890
+ /** @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. */
19891
+ initializationPlanId?: string;
19629
19892
  rollout?: components["schemas"]["ProgressiveRolloutStatus"];
19630
19893
  action: components["schemas"]["ManifestTaskAction"];
19631
19894
  deploymentId?: string;
@@ -19702,6 +19965,7 @@ export interface components {
19702
19965
  /** @enum {string} */
19703
19966
  ManifestDeletionPolicy: "orphan" | "delete_managed";
19704
19967
  ManifestBinding: {
19968
+ templateSelection?: components["schemas"]["ManifestTemplateSelection"];
19705
19969
  templateParameters?: components["schemas"]["TemplateParameterValues"];
19706
19970
  id: string;
19707
19971
  packageId: string;
@@ -19819,6 +20083,7 @@ export interface components {
19819
20083
  deletionPolicy: components["schemas"]["ManifestDeletionPolicy"];
19820
20084
  };
19821
20085
  ManifestDeploymentStatus: {
20086
+ appliedTemplate?: components["schemas"]["TemplateVersionReference"];
19822
20087
  /** Format: int64 */
19823
20088
  observedGeneration: number;
19824
20089
  appliedRevision?: number;
@@ -20108,6 +20373,7 @@ export interface components {
20108
20373
  spec: components["schemas"]["RenderedDeliverySpec"];
20109
20374
  };
20110
20375
  DeliveryPlan: {
20376
+ templateCandidateId?: string;
20111
20377
  dockerSnapshots?: components["schemas"]["DockerDeliverySnapshot"][];
20112
20378
  helmSnapshots?: components["schemas"]["HelmDeliverySnapshot"][];
20113
20379
  id: string;
@@ -20166,6 +20432,8 @@ export interface components {
20166
20432
  releaseBundleId?: string;
20167
20433
  };
20168
20434
  ManifestDeliverySnapshot: {
20435
+ migration?: components["schemas"]["TemplateMigrationAssessment"];
20436
+ rootResource?: components["schemas"]["ManifestRootResource"];
20169
20437
  /** @description Frozen GitOps child resources sharing this plan's preflight, ownership and observation boundaries. */
20170
20438
  gitOpsDocuments?: components["schemas"]["ManifestRenderedDocument"][];
20171
20439
  deliveryPlanId: string;
@@ -21808,6 +22076,8 @@ export interface components {
21808
22076
  data: components["schemas"]["KubernetesWorkloadOverview"];
21809
22077
  };
21810
22078
  KubernetesPod: {
22079
+ /** @description Immutable Pod identity. Required by clients restoring a saved live session; absent on older providers. */
22080
+ uid?: string;
21811
22081
  name: string;
21812
22082
  namespace: string;
21813
22083
  phase: string;
@@ -21876,6 +22146,8 @@ export interface components {
21876
22146
  relation?: string;
21877
22147
  };
21878
22148
  KubernetesPodDetail: {
22149
+ /** @description Immutable Pod identity. Required by clients restoring a saved live session; absent on older providers. */
22150
+ uid?: string;
21879
22151
  name: string;
21880
22152
  namespace: string;
21881
22153
  phase: string;
@@ -28365,6 +28637,201 @@ export interface components {
28365
28637
  NetworkPolicyPreviewEnvelope: {
28366
28638
  data: components["schemas"]["NetworkPolicyPreviewResult"];
28367
28639
  };
28640
+ /** @enum {string} */
28641
+ TemplateUpdateKind: "deployment" | "build" | "workflow" | "blueprint";
28642
+ /** @enum {string} */
28643
+ TemplateUpdateMode: "fixed" | "manual" | "automatic" | "approval";
28644
+ ManifestTemplateSelection: {
28645
+ templateId: string;
28646
+ /** Format: int64 */
28647
+ version: number;
28648
+ parameters: components["schemas"]["TemplateParameterValues"];
28649
+ baseFilesDigest: string;
28650
+ adoptionId: string;
28651
+ };
28652
+ TemplateUpdateTarget: {
28653
+ id: string;
28654
+ kind: components["schemas"]["TemplateUpdateKind"];
28655
+ templateId: string;
28656
+ applicationId: string;
28657
+ applicationName: string;
28658
+ serviceId: string;
28659
+ serviceName: string;
28660
+ applicationEnvironmentId: string;
28661
+ environmentName: string;
28662
+ releaseTargetId: string;
28663
+ /** Format: int64 */
28664
+ fromVersion: number;
28665
+ mode: components["schemas"]["TemplateUpdateMode"];
28666
+ requiresApproval: boolean;
28667
+ eligible: boolean;
28668
+ reason: string;
28669
+ independentOverrides: string[];
28670
+ bindingRevision: string;
28671
+ /** @enum {string} */
28672
+ scope: "environment" | "application" | "creation_only";
28673
+ };
28674
+ TemplateUpdateTargetPage: {
28675
+ items: components["schemas"]["TemplateUpdateTarget"][];
28676
+ /** Format: int64 */
28677
+ total: number;
28678
+ /** Format: int64 */
28679
+ page: number;
28680
+ /** Format: int64 */
28681
+ pageSize: number;
28682
+ };
28683
+ TemplateUpdateSelection: {
28684
+ targetId: string;
28685
+ parameters?: components["schemas"]["TemplateParameterValues"];
28686
+ useNewDefaults?: string[];
28687
+ /** Format: int64 */
28688
+ wave?: number;
28689
+ };
28690
+ TemplateUpdatePreviewInput: {
28691
+ kind: components["schemas"]["TemplateUpdateKind"];
28692
+ templateId: string;
28693
+ /** Format: int64 */
28694
+ toVersion: number;
28695
+ targets: components["schemas"]["TemplateUpdateSelection"][];
28696
+ applicationId?: string;
28697
+ };
28698
+ TemplateUpdateChange: {
28699
+ /** @enum {string} */
28700
+ section: "source" | "schema" | "defaults" | "parameters" | "resources";
28701
+ path: string;
28702
+ before: string;
28703
+ after: string;
28704
+ };
28705
+ TemplateUpdateDiff: {
28706
+ /** Format: int64 */
28707
+ fromVersion: number;
28708
+ /** Format: int64 */
28709
+ toVersion: number;
28710
+ changes: components["schemas"]["TemplateUpdateChange"][];
28711
+ /** @enum {string} */
28712
+ renderStatus: "available" | "unavailable" | "invalid";
28713
+ diagnostics: string[];
28714
+ historyGap: boolean;
28715
+ migration?: components["schemas"]["TemplateMigrationAssessment"];
28716
+ };
28717
+ TemplateUpdateCandidate: {
28718
+ id: string;
28719
+ target: components["schemas"]["TemplateUpdateTarget"];
28720
+ /** Format: int64 */
28721
+ toVersion: number;
28722
+ digest: string;
28723
+ parameters: components["schemas"]["TemplateParameterValues"];
28724
+ cumulative: components["schemas"]["TemplateUpdateDiff"];
28725
+ versions: components["schemas"]["TemplateUpdateDiff"][];
28726
+ eligible: boolean;
28727
+ reason: string;
28728
+ requiresApproval: boolean;
28729
+ /** Format: int64 */
28730
+ wave: number;
28731
+ };
28732
+ TemplateUpdatePreview: {
28733
+ id: string;
28734
+ kind: components["schemas"]["TemplateUpdateKind"];
28735
+ templateId: string;
28736
+ /** Format: int64 */
28737
+ toVersion: number;
28738
+ digest: string;
28739
+ candidates: components["schemas"]["TemplateUpdateCandidate"][];
28740
+ /** Format: date-time */
28741
+ createdAt: string;
28742
+ /** Format: date-time */
28743
+ expiresAt: string;
28744
+ /** @constant */
28745
+ configurationOnly: true;
28746
+ };
28747
+ TemplateUpdateBatchInput: {
28748
+ previewDigest: string;
28749
+ candidateIds: string[];
28750
+ /** Format: int64 */
28751
+ waveSize: number;
28752
+ stopOnFailure: boolean;
28753
+ acknowledgeHistoryGaps: boolean;
28754
+ idempotencyKey: string;
28755
+ };
28756
+ TemplateUpdatePolicyInput: {
28757
+ kind: components["schemas"]["TemplateUpdateKind"];
28758
+ templateId: string;
28759
+ targetId: string;
28760
+ mode: components["schemas"]["TemplateUpdateMode"];
28761
+ paused: boolean;
28762
+ /** Format: int64 */
28763
+ expectedVersion: number;
28764
+ };
28765
+ TemplateUpdatePolicy: {
28766
+ id: string;
28767
+ kind: components["schemas"]["TemplateUpdateKind"];
28768
+ templateId: string;
28769
+ targetId: string;
28770
+ mode: components["schemas"]["TemplateUpdateMode"];
28771
+ paused: boolean;
28772
+ /** Format: int64 */
28773
+ version: number;
28774
+ lastBatchId: string;
28775
+ lastError: string;
28776
+ /** Format: date-time */
28777
+ updatedAt: string;
28778
+ };
28779
+ TemplateUpdateTargetPageEnvelope: {
28780
+ data: components["schemas"]["TemplateUpdateTargetPage"];
28781
+ };
28782
+ TemplateUpdatePreviewEnvelope: {
28783
+ data: components["schemas"]["TemplateUpdatePreview"];
28784
+ };
28785
+ TemplateUpdatePolicyEnvelope: {
28786
+ data: components["schemas"]["TemplateUpdatePolicy"];
28787
+ };
28788
+ TemplateUpdatePolicyListEnvelope: {
28789
+ data: components["schemas"]["TemplateUpdatePolicy"][];
28790
+ };
28791
+ TemplateUpdateReceipt: {
28792
+ kind: components["schemas"]["TemplateUpdateKind"];
28793
+ templateId: string;
28794
+ bindingId: string;
28795
+ previewId: string;
28796
+ candidateId: string;
28797
+ /** Format: int64 */
28798
+ fromVersion: number;
28799
+ /** Format: int64 */
28800
+ toVersion: number;
28801
+ requiresApproval: boolean;
28802
+ };
28803
+ TemplateMigrationPolicy: {
28804
+ /** @description Must cross this boundary as adjacent published versions; approval cannot waive it. */
28805
+ sequential: boolean;
28806
+ /** @description Forward changes require approval; ordinary rollback across this boundary is forbidden. */
28807
+ irreversible: boolean;
28808
+ /** @description Human migration/recovery instructions. Never executed as a script. */
28809
+ guide?: string;
28810
+ };
28811
+ TemplateVersionReference: {
28812
+ templateId: string;
28813
+ /** Format: int64 */
28814
+ templateVersion: number;
28815
+ templateDigest: string;
28816
+ };
28817
+ TemplateMigrationStep: {
28818
+ /** Format: int64 */
28819
+ version: number;
28820
+ contentDigest: string;
28821
+ policy: components["schemas"]["TemplateMigrationPolicy"];
28822
+ };
28823
+ TemplateMigrationAssessment: {
28824
+ /** @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. */
28825
+ initialization?: boolean;
28826
+ /** Format: int64 */
28827
+ fromVersion: number;
28828
+ /** Format: int64 */
28829
+ toVersion: number;
28830
+ blocked: boolean;
28831
+ requiresApproval: boolean;
28832
+ reason: string;
28833
+ steps: components["schemas"]["TemplateMigrationStep"][];
28834
+ };
28368
28835
  };
28369
28836
  responses: {
28370
28837
  /** @description Stable redacted Identity protocol or management error. */
@@ -29282,6 +29749,14 @@ export type BuildPolicy = components['schemas']['BuildPolicy'];
29282
29749
  export type ResourceSelector = components['schemas']['ResourceSelector'];
29283
29750
  export type ReleasePolicy = components['schemas']['ReleasePolicy'];
29284
29751
  export type DeliveryEnvironment = components['schemas']['DeliveryEnvironment'];
29752
+ export type ResourceRelationSource = components['schemas']['ResourceRelationSource'];
29753
+ export type ResourceRelationRule = components['schemas']['ResourceRelationRule'];
29754
+ export type ResourceRelationConfig = components['schemas']['ResourceRelationConfig'];
29755
+ export type ResourceRelationNode = components['schemas']['ResourceRelationNode'];
29756
+ export type ResourceRelationEdge = components['schemas']['ResourceRelationEdge'];
29757
+ export type ResourceRelationCoverage = components['schemas']['ResourceRelationCoverage'];
29758
+ export type ResourceRelationsView = components['schemas']['ResourceRelationsView'];
29759
+ export type ResourceRelationsEnvelope = components['schemas']['ResourceRelationsEnvelope'];
29285
29760
  export type ReleaseTarget = components['schemas']['ReleaseTarget'];
29286
29761
  export type ReleaseTargetInput = components['schemas']['ReleaseTargetInput'];
29287
29762
  export type DockerDeliveryConfiguration = components['schemas']['DockerDeliveryConfiguration'];
@@ -29327,6 +29802,8 @@ export type ApplicationWorkflowInput = components['schemas']['ApplicationWorkflo
29327
29802
  export type ApplicationEnvironment = components['schemas']['ApplicationEnvironment'];
29328
29803
  export type ApplicationEnvironmentInput = components['schemas']['ApplicationEnvironmentInput'];
29329
29804
  export type KubernetesRelatedResource = components['schemas']['KubernetesRelatedResource'];
29805
+ export type KubernetesImportOwnerReference = components['schemas']['KubernetesImportOwnerReference'];
29806
+ export type KubernetesImportSource = components['schemas']['KubernetesImportSource'];
29330
29807
  export type KubernetesImportCandidate = components['schemas']['KubernetesImportCandidate'];
29331
29808
  export type KubernetesImportCandidateListEnvelope = components['schemas']['KubernetesImportCandidateListEnvelope'];
29332
29809
  export type KubernetesWorkloadImportInput = components['schemas']['KubernetesWorkloadImportInput'];
@@ -29470,6 +29947,7 @@ export type ProgressiveRolloutMetric = components['schemas']['ProgressiveRollout
29470
29947
  export type ProgressiveRolloutStatus = components['schemas']['ProgressiveRolloutStatus'];
29471
29948
  export type ProgressiveRolloutStatusEnvelope = components['schemas']['ProgressiveRolloutStatusEnvelope'];
29472
29949
  export type ManifestTaskAction = components['schemas']['ManifestTaskAction'];
29950
+ export type ManifestRootResource = components['schemas']['ManifestRootResource'];
29473
29951
  export type ManifestExecutionTaskPayload = components['schemas']['ManifestExecutionTaskPayload'];
29474
29952
  export type ManifestExecutionTask = components['schemas']['ManifestExecutionTask'];
29475
29953
  export type ManifestExecutionTaskEnvelope = components['schemas']['ManifestExecutionTaskEnvelope'];
@@ -30531,6 +31009,29 @@ export type NetworkSessionCommandEnvelope = components['schemas']['NetworkSessio
30531
31009
  export type NetworkPolicyPreviewRequest = components['schemas']['NetworkPolicyPreviewRequest'];
30532
31010
  export type NetworkPolicyPreviewResult = components['schemas']['NetworkPolicyPreviewResult'];
30533
31011
  export type NetworkPolicyPreviewEnvelope = components['schemas']['NetworkPolicyPreviewEnvelope'];
31012
+ export type TemplateUpdateKind = components['schemas']['TemplateUpdateKind'];
31013
+ export type TemplateUpdateMode = components['schemas']['TemplateUpdateMode'];
31014
+ export type ManifestTemplateSelection = components['schemas']['ManifestTemplateSelection'];
31015
+ export type TemplateUpdateTarget = components['schemas']['TemplateUpdateTarget'];
31016
+ export type TemplateUpdateTargetPage = components['schemas']['TemplateUpdateTargetPage'];
31017
+ export type TemplateUpdateSelection = components['schemas']['TemplateUpdateSelection'];
31018
+ export type TemplateUpdatePreviewInput = components['schemas']['TemplateUpdatePreviewInput'];
31019
+ export type TemplateUpdateChange = components['schemas']['TemplateUpdateChange'];
31020
+ export type TemplateUpdateDiff = components['schemas']['TemplateUpdateDiff'];
31021
+ export type TemplateUpdateCandidate = components['schemas']['TemplateUpdateCandidate'];
31022
+ export type TemplateUpdatePreview = components['schemas']['TemplateUpdatePreview'];
31023
+ export type TemplateUpdateBatchInput = components['schemas']['TemplateUpdateBatchInput'];
31024
+ export type TemplateUpdatePolicyInput = components['schemas']['TemplateUpdatePolicyInput'];
31025
+ export type TemplateUpdatePolicy = components['schemas']['TemplateUpdatePolicy'];
31026
+ export type TemplateUpdateTargetPageEnvelope = components['schemas']['TemplateUpdateTargetPageEnvelope'];
31027
+ export type TemplateUpdatePreviewEnvelope = components['schemas']['TemplateUpdatePreviewEnvelope'];
31028
+ export type TemplateUpdatePolicyEnvelope = components['schemas']['TemplateUpdatePolicyEnvelope'];
31029
+ export type TemplateUpdatePolicyListEnvelope = components['schemas']['TemplateUpdatePolicyListEnvelope'];
31030
+ export type TemplateUpdateReceipt = components['schemas']['TemplateUpdateReceipt'];
31031
+ export type TemplateMigrationPolicy = components['schemas']['TemplateMigrationPolicy'];
31032
+ export type TemplateVersionReference = components['schemas']['TemplateVersionReference'];
31033
+ export type TemplateMigrationStep = components['schemas']['TemplateMigrationStep'];
31034
+ export type TemplateMigrationAssessment = components['schemas']['TemplateMigrationAssessment'];
30534
31035
  export type ResponseIdentityError = components['responses']['IdentityError'];
30535
31036
  export type ResponseError = components['responses']['Error'];
30536
31037
  export type ResponseComputeError = components['responses']['ComputeError'];
@@ -33451,9 +33952,67 @@ export interface operations {
33451
33952
  400: components["responses"]["Error"];
33452
33953
  };
33453
33954
  };
33955
+ getApplicationEnvironmentTargetSource: {
33956
+ parameters: {
33957
+ query?: never;
33958
+ header?: never;
33959
+ path: {
33960
+ applicationEnvironmentID: string;
33961
+ targetID: string;
33962
+ };
33963
+ cookie?: never;
33964
+ };
33965
+ requestBody?: never;
33966
+ responses: {
33967
+ /** @description Current cluster YAML for the linked resource, never a fabricated source file. */
33968
+ 200: {
33969
+ headers: {
33970
+ "Cache-Control": "no-store";
33971
+ [name: string]: unknown;
33972
+ };
33973
+ content: {
33974
+ "application/json": components["schemas"]["KubernetesResourceYamlEnvelope"];
33975
+ };
33976
+ };
33977
+ 403: components["responses"]["Error"];
33978
+ 404: components["responses"]["Error"];
33979
+ 409: components["responses"]["Error"];
33980
+ };
33981
+ };
33982
+ getApplicationEnvironmentTargetRelations: {
33983
+ parameters: {
33984
+ query?: never;
33985
+ header?: never;
33986
+ path: {
33987
+ applicationEnvironmentID: string;
33988
+ targetID: string;
33989
+ };
33990
+ cookie?: never;
33991
+ };
33992
+ requestBody?: never;
33993
+ responses: {
33994
+ /** @description Bounded observed relations, including coverage gaps. */
33995
+ 200: {
33996
+ headers: {
33997
+ "Cache-Control": "no-store";
33998
+ [name: string]: unknown;
33999
+ };
34000
+ content: {
34001
+ "application/json": components["schemas"]["ResourceRelationsEnvelope"];
34002
+ };
34003
+ };
34004
+ 400: components["responses"]["Error"];
34005
+ 403: components["responses"]["Error"];
34006
+ 404: components["responses"]["Error"];
34007
+ 409: components["responses"]["Error"];
34008
+ };
34009
+ };
33454
34010
  listApplicationEnvironmentTargetCandidates: {
33455
34011
  parameters: {
33456
34012
  query: {
34013
+ workloadKind?: "Deployment" | "StatefulSet" | "DaemonSet" | "Job" | "CronJob" | "CustomResource";
34014
+ /** @description Explicit CRD selection for CustomResource discovery. Only this served resource and namespace are queried. */
34015
+ crdName?: string;
33457
34016
  clusterId: string;
33458
34017
  namespace: string;
33459
34018
  search?: string;
@@ -35390,6 +35949,178 @@ export interface operations {
35390
35949
  403: components["responses"]["Error"];
35391
35950
  };
35392
35951
  };
35952
+ listTemplateUpdateTargets: {
35953
+ parameters: {
35954
+ query: {
35955
+ kind: components["schemas"]["TemplateUpdateKind"];
35956
+ templateId: string;
35957
+ applicationId?: string;
35958
+ page?: number;
35959
+ pageSize?: number;
35960
+ serviceId?: string;
35961
+ applicationEnvironmentId?: string;
35962
+ };
35963
+ header?: never;
35964
+ path?: never;
35965
+ cookie?: never;
35966
+ };
35967
+ requestBody?: never;
35968
+ responses: {
35969
+ /** @description Success */
35970
+ 200: {
35971
+ headers: {
35972
+ [name: string]: unknown;
35973
+ };
35974
+ content: {
35975
+ "application/json": components["schemas"]["TemplateUpdateTargetPageEnvelope"];
35976
+ };
35977
+ };
35978
+ 400: components["responses"]["Error"];
35979
+ 403: components["responses"]["Error"];
35980
+ 404: components["responses"]["Error"];
35981
+ 409: components["responses"]["Error"];
35982
+ };
35983
+ };
35984
+ createTemplateUpdatePreview: {
35985
+ parameters: {
35986
+ query?: never;
35987
+ header?: never;
35988
+ path?: never;
35989
+ cookie?: never;
35990
+ };
35991
+ requestBody: {
35992
+ content: {
35993
+ "application/json": components["schemas"]["TemplateUpdatePreviewInput"];
35994
+ };
35995
+ };
35996
+ responses: {
35997
+ /** @description Success */
35998
+ 200: {
35999
+ headers: {
36000
+ [name: string]: unknown;
36001
+ };
36002
+ content: {
36003
+ "application/json": components["schemas"]["TemplateUpdatePreviewEnvelope"];
36004
+ };
36005
+ };
36006
+ 400: components["responses"]["Error"];
36007
+ 403: components["responses"]["Error"];
36008
+ 404: components["responses"]["Error"];
36009
+ 409: components["responses"]["Error"];
36010
+ };
36011
+ };
36012
+ getTemplateUpdatePreview: {
36013
+ parameters: {
36014
+ query?: never;
36015
+ header?: never;
36016
+ path: {
36017
+ previewID: string;
36018
+ };
36019
+ cookie?: never;
36020
+ };
36021
+ requestBody?: never;
36022
+ responses: {
36023
+ /** @description Success */
36024
+ 200: {
36025
+ headers: {
36026
+ [name: string]: unknown;
36027
+ };
36028
+ content: {
36029
+ "application/json": components["schemas"]["TemplateUpdatePreviewEnvelope"];
36030
+ };
36031
+ };
36032
+ 400: components["responses"]["Error"];
36033
+ 403: components["responses"]["Error"];
36034
+ 404: components["responses"]["Error"];
36035
+ 409: components["responses"]["Error"];
36036
+ };
36037
+ };
36038
+ createTemplateUpdateBatch: {
36039
+ parameters: {
36040
+ query?: never;
36041
+ header?: never;
36042
+ path: {
36043
+ previewID: string;
36044
+ };
36045
+ cookie?: never;
36046
+ };
36047
+ requestBody: {
36048
+ content: {
36049
+ "application/json": components["schemas"]["TemplateUpdateBatchInput"];
36050
+ };
36051
+ };
36052
+ responses: {
36053
+ /** @description Success */
36054
+ 200: {
36055
+ headers: {
36056
+ [name: string]: unknown;
36057
+ };
36058
+ content: {
36059
+ "application/json": components["schemas"]["DeliveryBatchEnvelope"];
36060
+ };
36061
+ };
36062
+ 400: components["responses"]["Error"];
36063
+ 403: components["responses"]["Error"];
36064
+ 404: components["responses"]["Error"];
36065
+ 409: components["responses"]["Error"];
36066
+ };
36067
+ };
36068
+ listTemplateUpdatePolicies: {
36069
+ parameters: {
36070
+ query: {
36071
+ kind: components["schemas"]["TemplateUpdateKind"];
36072
+ templateId: string;
36073
+ applicationId?: string;
36074
+ };
36075
+ header?: never;
36076
+ path?: never;
36077
+ cookie?: never;
36078
+ };
36079
+ requestBody?: never;
36080
+ responses: {
36081
+ /** @description Success */
36082
+ 200: {
36083
+ headers: {
36084
+ [name: string]: unknown;
36085
+ };
36086
+ content: {
36087
+ "application/json": components["schemas"]["TemplateUpdatePolicyListEnvelope"];
36088
+ };
36089
+ };
36090
+ 400: components["responses"]["Error"];
36091
+ 403: components["responses"]["Error"];
36092
+ 404: components["responses"]["Error"];
36093
+ 409: components["responses"]["Error"];
36094
+ };
36095
+ };
36096
+ saveTemplateUpdatePolicy: {
36097
+ parameters: {
36098
+ query?: never;
36099
+ header?: never;
36100
+ path?: never;
36101
+ cookie?: never;
36102
+ };
36103
+ requestBody: {
36104
+ content: {
36105
+ "application/json": components["schemas"]["TemplateUpdatePolicyInput"];
36106
+ };
36107
+ };
36108
+ responses: {
36109
+ /** @description Success */
36110
+ 200: {
36111
+ headers: {
36112
+ [name: string]: unknown;
36113
+ };
36114
+ content: {
36115
+ "application/json": components["schemas"]["TemplateUpdatePolicyEnvelope"];
36116
+ };
36117
+ };
36118
+ 400: components["responses"]["Error"];
36119
+ 403: components["responses"]["Error"];
36120
+ 404: components["responses"]["Error"];
36121
+ 409: components["responses"]["Error"];
36122
+ };
36123
+ };
35393
36124
  listManifestPackages: {
35394
36125
  parameters: {
35395
36126
  query?: {
@@ -41188,6 +41919,8 @@ export interface operations {
41188
41919
  parameters: {
41189
41920
  query?: {
41190
41921
  namespace?: components["parameters"]["KubernetesNamespaceDefaultQuery"];
41922
+ /** @description Reject the request if the live Pod UID differs. Omit only for legacy clients, never when restoring a saved session. */
41923
+ expectedUid?: string;
41191
41924
  container?: string;
41192
41925
  tailLines?: number;
41193
41926
  sinceSeconds?: number;
@@ -41213,6 +41946,15 @@ export interface operations {
41213
41946
  };
41214
41947
  403: components["responses"]["Error"];
41215
41948
  404: components["responses"]["Error"];
41949
+ /** @description The current Pod UID differs from expectedUid; open the current Pod instead of adopting it by name. */
41950
+ 409: {
41951
+ headers: {
41952
+ [name: string]: unknown;
41953
+ };
41954
+ content: {
41955
+ "application/json": components["schemas"]["ErrorEnvelope"];
41956
+ };
41957
+ };
41216
41958
  503: components["responses"]["Error"];
41217
41959
  };
41218
41960
  };