@opensoha/contracts 0.1.6 → 0.1.7

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 (62) hide show
  1. package/auth/catalog_generated.go +3 -3
  2. package/auth/permission-catalog.json +108 -2
  3. package/capabilities/cluster-capability-matrix.schema.json +30 -1
  4. package/compat/json-schema-ecosystem-0.1.0.json +1 -1
  5. package/compat/openapi-loose-boundaries-0.1.0.json +1 -1
  6. package/examples/gateway-manifest/minimal.json +6 -6
  7. package/examples/openapi/agent-run-tool-call-request.json +1 -1
  8. package/examples/openapi/agent-tool-call-result-envelope.json +1 -1
  9. package/examples/openapi/gateway-manifest-envelope.json +4 -4
  10. package/examples/openapi/tool-invocation-request.json +1 -1
  11. package/examples/openapi/tool-invocation-result-envelope.json +1 -1
  12. package/examples/plugin-manifest/skill-pack.json +2 -2
  13. package/examples/skill-manifest/k8s-sre.json +2 -2
  14. package/examples/token-claims/service-account.json +1 -1
  15. package/fixtures/json-schema/cluster-capability-matrix/valid/runtime-parity.json +3 -0
  16. package/fixtures/json-schema/gateway-manifest/valid/minimal.json +4 -4
  17. package/fixtures/json-schema/skill-manifest/valid/minimal.json +2 -2
  18. package/fixtures/json-schema/token-claims/valid/service-account.json +1 -1
  19. package/fixtures/openapi/AIGatewayManifestEnvelope/valid/minimal.json +1 -1
  20. package/fixtures/openapi/AgentInstallationEnvelope/invalid/missing-command.json +7 -0
  21. package/fixtures/openapi/AgentInstallationEnvelope/valid/minimal.json +8 -0
  22. package/fixtures/openapi/ApplicationInput/invalid/missing-key.json +4 -0
  23. package/fixtures/openapi/ApplicationInput/valid/minimal.json +5 -0
  24. package/fixtures/openapi/HelmReleaseImportRequest/invalid/empty-releases.json +10 -0
  25. package/fixtures/openapi/HelmReleaseImportRequest/valid/managed.json +14 -0
  26. package/fixtures/openapi/HelmReleaseImportResultEnvelope/invalid/missing-mode.json +20 -0
  27. package/fixtures/openapi/HelmReleaseImportResultEnvelope/valid/created.json +35 -0
  28. package/fixtures/openapi/KubernetesImportCandidateListEnvelope/invalid/unknown-kind.json +14 -0
  29. package/fixtures/openapi/KubernetesImportCandidateListEnvelope/valid/grouped.json +31 -0
  30. package/fixtures/openapi/KubernetesServiceImportRequest/invalid/unsupported-mode.json +15 -0
  31. package/fixtures/openapi/KubernetesServiceImportRequest/valid/managed.json +15 -0
  32. package/fixtures/openapi/KubernetesServiceImportRequest/valid/observe-only.json +15 -0
  33. package/fixtures/openapi/KubernetesServiceImportResultEnvelope/invalid/missing-mode.json +20 -0
  34. package/fixtures/openapi/KubernetesServiceImportResultEnvelope/valid/created.json +37 -0
  35. package/fixtures/openapi/MCPCapabilityListEnvelope/invalid/missing-scopes.json +1 -1
  36. package/fixtures/openapi/MCPCapabilityListEnvelope/valid/minimal.json +1 -1
  37. package/fixtures/openapi/ObservabilityDashboardImportResultEnvelope/invalid/missing-dashboard.json +7 -0
  38. package/fixtures/openapi/ObservabilityDashboardImportResultEnvelope/valid/imported.json +36 -0
  39. package/fixtures/openapi/ObservabilityGrafanaDashboardImportInput/invalid/missing-data-source.json +3 -0
  40. package/fixtures/openapi/ObservabilityGrafanaDashboardImportInput/invalid/missing-json.json +3 -0
  41. package/fixtures/openapi/ObservabilityGrafanaDashboardImportInput/valid/classic.json +4 -0
  42. package/fixtures/openapi/ObservabilityMetricDataSourceListEnvelope/invalid/missing-name.json +7 -0
  43. package/fixtures/openapi/ObservabilityMetricDataSourceListEnvelope/valid/list.json +8 -0
  44. package/fixtures/openapi/PersonalAccessTokenInput/invalid/extra-field.json +1 -1
  45. package/fixtures/openapi/PersonalAccessTokenInput/valid/create.json +1 -1
  46. package/fixtures/openapi/RegistryConnectionInput/invalid/missing-type.json +4 -0
  47. package/fixtures/openapi/RegistryConnectionInput/valid/harbor.json +9 -0
  48. package/fixtures/openapi/RegistryConnectionListEnvelope/invalid/exposed-secret.json +18 -0
  49. package/fixtures/openapi/RegistryConnectionListEnvelope/valid/configured.json +19 -0
  50. package/fixtures/openapi/SoftwarePackage/invalid/unsafe-software-package.json +15 -0
  51. package/fixtures/openapi/SoftwarePackage/valid/software-package.json +17 -0
  52. package/fixtures/openapi/SoftwarePackageURLImportRequest/invalid/software-package-url-import-request.json +9 -0
  53. package/fixtures/openapi/SoftwarePackageURLImportRequest/valid/software-package-url-import-request.json +12 -0
  54. package/fixtures/openapi/SoftwareStorage/invalid/software-storage.json +6 -0
  55. package/fixtures/openapi/SoftwareStorage/valid/software-storage.json +22 -0
  56. package/gen/go/sohaapi/client.go +1 -1
  57. package/gen/go/sohaapi/types.go +719 -3
  58. package/gen/ts/sohaapi/index.ts +1235 -23
  59. package/openapi/soha-api.json +2241 -3
  60. package/openapi/soha-api.yaml +1498 -156
  61. package/openapi/spec_generated.go +3 -3
  62. package/package.json +1 -1
@@ -1,7 +1,7 @@
1
1
  openapi: 3.1.0
2
2
  info:
3
3
  title: Soha API
4
- version: 0.1.6
4
+ version: 0.1.7
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
@@ -34,6 +34,7 @@ tags:
34
34
  - name: Compute
35
35
  - name: MCP
36
36
  - name: Plugins
37
+ - name: Software
37
38
  - name: Access
38
39
  - name: Identity
39
40
  - name: Directory
@@ -1304,6 +1305,93 @@ paths:
1304
1305
  $ref: "#/components/schemas/ApplicationEnvironmentEnvelope"
1305
1306
  "400":
1306
1307
  $ref: "#/components/responses/Error"
1308
+ /application-environments/target-candidates:
1309
+ get:
1310
+ tags: [Delivery]
1311
+ operationId: listApplicationEnvironmentTargetCandidates
1312
+ parameters:
1313
+ - name: clusterId
1314
+ in: query
1315
+ required: true
1316
+ schema:
1317
+ type: string
1318
+ minLength: 1
1319
+ - name: namespace
1320
+ in: query
1321
+ required: true
1322
+ schema:
1323
+ type: string
1324
+ minLength: 1
1325
+ - name: search
1326
+ in: query
1327
+ required: false
1328
+ schema:
1329
+ type: string
1330
+ - name: limit
1331
+ in: query
1332
+ required: false
1333
+ schema:
1334
+ type: integer
1335
+ minimum: 1
1336
+ maximum: 200
1337
+ default: 100
1338
+ responses:
1339
+ "200":
1340
+ description: Discoverable Kubernetes workloads and their related resources.
1341
+ content:
1342
+ application/json:
1343
+ schema:
1344
+ $ref: "#/components/schemas/KubernetesImportCandidateListEnvelope"
1345
+ "400":
1346
+ $ref: "#/components/responses/Error"
1347
+ "403":
1348
+ $ref: "#/components/responses/Error"
1349
+ /application-environments/imports:
1350
+ post:
1351
+ tags: [Delivery]
1352
+ operationId: importKubernetesServices
1353
+ requestBody:
1354
+ required: true
1355
+ content:
1356
+ application/json:
1357
+ schema:
1358
+ $ref: "#/components/schemas/KubernetesServiceImportRequest"
1359
+ responses:
1360
+ "200":
1361
+ description: Idempotent Kubernetes service import result.
1362
+ content:
1363
+ application/json:
1364
+ schema:
1365
+ $ref: "#/components/schemas/KubernetesServiceImportResultEnvelope"
1366
+ "400":
1367
+ $ref: "#/components/responses/Error"
1368
+ "403":
1369
+ $ref: "#/components/responses/Error"
1370
+ "409":
1371
+ $ref: "#/components/responses/Error"
1372
+ /application-environments/helm-release-imports:
1373
+ post:
1374
+ tags: [Delivery]
1375
+ operationId: importHelmReleases
1376
+ requestBody:
1377
+ required: true
1378
+ content:
1379
+ application/json:
1380
+ schema:
1381
+ $ref: "#/components/schemas/HelmReleaseImportRequest"
1382
+ responses:
1383
+ "200":
1384
+ description: Idempotent Helm release import result.
1385
+ content:
1386
+ application/json:
1387
+ schema:
1388
+ $ref: "#/components/schemas/HelmReleaseImportResultEnvelope"
1389
+ "400":
1390
+ $ref: "#/components/responses/Error"
1391
+ "403":
1392
+ $ref: "#/components/responses/Error"
1393
+ "409":
1394
+ $ref: "#/components/responses/Error"
1307
1395
  /application-environments/{applicationEnvironmentID}:
1308
1396
  get:
1309
1397
  tags: [Delivery]
@@ -1370,6 +1458,88 @@ paths:
1370
1458
  $ref: "#/components/schemas/ApplicationEnvironmentDeliveryDetailEnvelope"
1371
1459
  "404":
1372
1460
  $ref: "#/components/responses/Error"
1461
+ /registries:
1462
+ get:
1463
+ tags: [Delivery]
1464
+ operationId: listRegistryConnections
1465
+ parameters:
1466
+ - name: limit
1467
+ in: query
1468
+ required: false
1469
+ schema:
1470
+ type: integer
1471
+ minimum: 1
1472
+ maximum: 200
1473
+ responses:
1474
+ "200":
1475
+ description: Registry connections visible to the current principal.
1476
+ content:
1477
+ application/json:
1478
+ schema:
1479
+ $ref: "#/components/schemas/RegistryConnectionListEnvelope"
1480
+ "403":
1481
+ $ref: "#/components/responses/Error"
1482
+ post:
1483
+ tags: [Delivery]
1484
+ operationId: createRegistryConnection
1485
+ requestBody:
1486
+ required: true
1487
+ content:
1488
+ application/json:
1489
+ schema:
1490
+ $ref: "#/components/schemas/RegistryConnectionInput"
1491
+ responses:
1492
+ "201":
1493
+ description: Created registry connection.
1494
+ content:
1495
+ application/json:
1496
+ schema:
1497
+ $ref: "#/components/schemas/RegistryConnectionEnvelope"
1498
+ "400":
1499
+ $ref: "#/components/responses/Error"
1500
+ "403":
1501
+ $ref: "#/components/responses/Error"
1502
+ /registries/{connectionID}:
1503
+ put:
1504
+ tags: [Delivery]
1505
+ operationId: updateRegistryConnection
1506
+ parameters:
1507
+ - $ref: "#/components/parameters/RegistryConnectionID"
1508
+ requestBody:
1509
+ required: true
1510
+ content:
1511
+ application/json:
1512
+ schema:
1513
+ $ref: "#/components/schemas/RegistryConnectionInput"
1514
+ responses:
1515
+ "200":
1516
+ description: Updated registry connection.
1517
+ content:
1518
+ application/json:
1519
+ schema:
1520
+ $ref: "#/components/schemas/RegistryConnectionEnvelope"
1521
+ "400":
1522
+ $ref: "#/components/responses/Error"
1523
+ "403":
1524
+ $ref: "#/components/responses/Error"
1525
+ "404":
1526
+ $ref: "#/components/responses/Error"
1527
+ delete:
1528
+ tags: [Delivery]
1529
+ operationId: deleteRegistryConnection
1530
+ parameters:
1531
+ - $ref: "#/components/parameters/RegistryConnectionID"
1532
+ responses:
1533
+ "200":
1534
+ description: Deleted registry connection.
1535
+ content:
1536
+ application/json:
1537
+ schema:
1538
+ $ref: "#/components/schemas/OperationStatus"
1539
+ "403":
1540
+ $ref: "#/components/responses/Error"
1541
+ "404":
1542
+ $ref: "#/components/responses/Error"
1373
1543
  /build-templates:
1374
1544
  get:
1375
1545
  tags: [Delivery]
@@ -2738,6 +2908,66 @@ paths:
2738
2908
  $ref: "#/components/schemas/ClusterCapabilityMatrixEnvelope"
2739
2909
  "403":
2740
2910
  $ref: "#/components/responses/Error"
2911
+ /clusters/{clusterID}/agent-installation:
2912
+ post:
2913
+ tags: [Platform]
2914
+ operationId: createClusterAgentInstallation
2915
+ parameters:
2916
+ - $ref: "#/components/parameters/ClusterID"
2917
+ responses:
2918
+ "200":
2919
+ description: Short-lived Kubernetes manifest URL and kubectl command for installing the cluster Agent.
2920
+ content:
2921
+ application/json:
2922
+ schema:
2923
+ $ref: "#/components/schemas/AgentInstallationEnvelope"
2924
+ "400":
2925
+ $ref: "#/components/responses/Error"
2926
+ "403":
2927
+ $ref: "#/components/responses/Error"
2928
+ "404":
2929
+ $ref: "#/components/responses/Error"
2930
+ "409":
2931
+ $ref: "#/components/responses/Error"
2932
+ /kubernetes/agent-installations/{installTicket}/manifest.yaml:
2933
+ get:
2934
+ tags: [Platform]
2935
+ operationId: downloadKubernetesAgentInstallationManifest
2936
+ security: []
2937
+ parameters:
2938
+ - $ref: "#/components/parameters/AgentInstallTicket"
2939
+ responses:
2940
+ "200":
2941
+ description: Complete Kubernetes Agent installation manifest. The download URL is short-lived.
2942
+ content:
2943
+ application/yaml:
2944
+ schema:
2945
+ type: string
2946
+ "404":
2947
+ $ref: "#/components/responses/Error"
2948
+ "410":
2949
+ $ref: "#/components/responses/Error"
2950
+ /agent-sessions/connect:
2951
+ get:
2952
+ tags: [Platform]
2953
+ operationId: connectClusterAgentSession
2954
+ description: >
2955
+ Upgrades to the soha-agent-tunnel.v1 WebSocket subprotocol. The Agent
2956
+ initiates this connection and carries multiplexed HTTP and stream traffic
2957
+ over the resulting session.
2958
+ security:
2959
+ - agentBearerAuth: []
2960
+ parameters:
2961
+ - $ref: "#/components/parameters/ClusterIDQuery"
2962
+ responses:
2963
+ "101":
2964
+ description: WebSocket session established.
2965
+ "400":
2966
+ $ref: "#/components/responses/Error"
2967
+ "401":
2968
+ $ref: "#/components/responses/Error"
2969
+ "409":
2970
+ $ref: "#/components/responses/Error"
2741
2971
  /clusters/{clusterID}/logs/query:
2742
2972
  post:
2743
2973
  tags: [Platform]
@@ -3021,120 +3251,230 @@ paths:
3021
3251
  $ref: "#/components/schemas/ObservabilityProviderListEnvelope"
3022
3252
  "403":
3023
3253
  $ref: "#/components/responses/Error"
3024
- /observability/metrics/query:
3025
- post:
3254
+ /observability/dashboards:
3255
+ get:
3026
3256
  tags: [Observability]
3027
- operationId: queryObservabilityMetrics
3028
- requestBody:
3029
- required: true
3030
- content:
3031
- application/json:
3032
- schema:
3033
- $ref: "#/components/schemas/ObservabilityMetricQueryInput"
3257
+ operationId: listObservabilityDashboards
3034
3258
  responses:
3035
3259
  "200":
3036
- description: Normalized metric series from an authorized configured provider.
3260
+ description: Dashboards visible to the current principal.
3037
3261
  content:
3038
3262
  application/json:
3039
3263
  schema:
3040
- $ref: "#/components/schemas/ObservabilityMetricQueryEnvelope"
3041
- "400":
3042
- $ref: "#/components/responses/Error"
3264
+ $ref: "#/components/schemas/ObservabilityDashboardListEnvelope"
3043
3265
  "403":
3044
3266
  $ref: "#/components/responses/Error"
3045
- "404":
3046
- $ref: "#/components/responses/Error"
3047
- "503":
3267
+ /observability/metrics/data-sources:
3268
+ get:
3269
+ tags: [Observability]
3270
+ operationId: listObservabilityMetricDataSources
3271
+ responses:
3272
+ "200":
3273
+ description: Enabled Prometheus data sources available for metric dashboards.
3274
+ content:
3275
+ application/json:
3276
+ schema:
3277
+ $ref: "#/components/schemas/ObservabilityMetricDataSourceListEnvelope"
3278
+ "403":
3048
3279
  $ref: "#/components/responses/Error"
3049
- /observability/traces/query:
3280
+ /observability/dashboards/imports:
3050
3281
  post:
3051
3282
  tags: [Observability]
3052
- operationId: queryObservabilityTraces
3283
+ operationId: importGrafanaDashboard
3053
3284
  requestBody:
3054
3285
  required: true
3055
3286
  content:
3056
3287
  application/json:
3057
3288
  schema:
3058
- $ref: "#/components/schemas/ObservabilityTraceQueryInput"
3289
+ $ref: "#/components/schemas/ObservabilityGrafanaDashboardImportInput"
3059
3290
  responses:
3060
- "200":
3061
- description: Normalized trace spans from an authorized configured provider.
3291
+ "201":
3292
+ description: Imported native dashboard and explicit compatibility warnings.
3062
3293
  content:
3063
3294
  application/json:
3064
3295
  schema:
3065
- $ref: "#/components/schemas/ObservabilityTraceQueryEnvelope"
3296
+ $ref: "#/components/schemas/ObservabilityDashboardImportResultEnvelope"
3066
3297
  "400":
3067
3298
  $ref: "#/components/responses/Error"
3068
3299
  "403":
3069
3300
  $ref: "#/components/responses/Error"
3070
3301
  "404":
3071
3302
  $ref: "#/components/responses/Error"
3072
- "503":
3073
- $ref: "#/components/responses/Error"
3074
- /observability/data-sources:
3303
+ /observability/dashboards/{dashboardID}:
3075
3304
  get:
3076
3305
  tags: [Observability]
3077
- operationId: listObservabilityDataSources
3306
+ operationId: getObservabilityDashboard
3307
+ parameters:
3308
+ - $ref: "#/components/parameters/DashboardID"
3078
3309
  responses:
3079
3310
  "200":
3080
- description: Permission-filtered log data sources with credentials redacted.
3311
+ description: Dashboard detail including normalized panels and targets.
3081
3312
  content:
3082
3313
  application/json:
3083
3314
  schema:
3084
- $ref: "#/components/schemas/ObservabilityDataSourceListEnvelope"
3315
+ $ref: "#/components/schemas/ObservabilityDashboardEnvelope"
3085
3316
  "403":
3086
3317
  $ref: "#/components/responses/Error"
3087
- post:
3318
+ "404":
3319
+ $ref: "#/components/responses/Error"
3320
+ delete:
3088
3321
  tags: [Observability]
3089
- operationId: createObservabilityDataSource
3090
- requestBody:
3091
- required: true
3092
- content:
3093
- application/json:
3094
- schema:
3095
- $ref: "#/components/schemas/ObservabilityDataSourceInput"
3322
+ operationId: deleteObservabilityDashboard
3323
+ parameters:
3324
+ - $ref: "#/components/parameters/DashboardID"
3096
3325
  responses:
3097
- "201":
3098
- description: Log data source created with credentials redacted.
3326
+ "200":
3327
+ description: Dashboard deleted.
3099
3328
  content:
3100
3329
  application/json:
3101
3330
  schema:
3102
- $ref: "#/components/schemas/ObservabilityDataSourceEnvelope"
3103
- "400":
3104
- $ref: "#/components/responses/Error"
3331
+ $ref: "#/components/schemas/OperationStatus"
3105
3332
  "403":
3106
3333
  $ref: "#/components/responses/Error"
3107
- /observability/data-sources/{dataSourceID}:
3108
- put:
3334
+ "404":
3335
+ $ref: "#/components/responses/Error"
3336
+ /observability/dashboards/{dashboardID}/panels/{panelID}/query:
3337
+ post:
3109
3338
  tags: [Observability]
3110
- operationId: updateObservabilityDataSource
3339
+ operationId: queryObservabilityDashboardPanel
3111
3340
  parameters:
3112
- - $ref: "#/components/parameters/DataSourceID"
3341
+ - $ref: "#/components/parameters/DashboardID"
3342
+ - $ref: "#/components/parameters/DashboardPanelID"
3113
3343
  requestBody:
3114
3344
  required: true
3115
3345
  content:
3116
3346
  application/json:
3117
3347
  schema:
3118
- $ref: "#/components/schemas/ObservabilityDataSourceInput"
3348
+ $ref: "#/components/schemas/ObservabilityDashboardPanelQueryInput"
3119
3349
  responses:
3120
3350
  "200":
3121
- description: Log data source updated with credentials redacted.
3351
+ description: Normalized metric series for the persisted dashboard panel targets.
3122
3352
  content:
3123
3353
  application/json:
3124
3354
  schema:
3125
- $ref: "#/components/schemas/ObservabilityDataSourceEnvelope"
3355
+ $ref: "#/components/schemas/ObservabilityMetricQueryEnvelope"
3126
3356
  "400":
3127
3357
  $ref: "#/components/responses/Error"
3128
3358
  "403":
3129
3359
  $ref: "#/components/responses/Error"
3130
3360
  "404":
3131
3361
  $ref: "#/components/responses/Error"
3132
- /observability/data-sources/{dataSourceID}/validate:
3362
+ "503":
3363
+ $ref: "#/components/responses/Error"
3364
+ /observability/metrics/query:
3133
3365
  post:
3134
3366
  tags: [Observability]
3135
- operationId: validateObservabilityDataSource
3136
- parameters:
3137
- - $ref: "#/components/parameters/DataSourceID"
3367
+ operationId: queryObservabilityMetrics
3368
+ requestBody:
3369
+ required: true
3370
+ content:
3371
+ application/json:
3372
+ schema:
3373
+ $ref: "#/components/schemas/ObservabilityMetricQueryInput"
3374
+ responses:
3375
+ "200":
3376
+ description: Normalized metric series from an authorized configured provider.
3377
+ content:
3378
+ application/json:
3379
+ schema:
3380
+ $ref: "#/components/schemas/ObservabilityMetricQueryEnvelope"
3381
+ "400":
3382
+ $ref: "#/components/responses/Error"
3383
+ "403":
3384
+ $ref: "#/components/responses/Error"
3385
+ "404":
3386
+ $ref: "#/components/responses/Error"
3387
+ "503":
3388
+ $ref: "#/components/responses/Error"
3389
+ /observability/traces/query:
3390
+ post:
3391
+ tags: [Observability]
3392
+ operationId: queryObservabilityTraces
3393
+ requestBody:
3394
+ required: true
3395
+ content:
3396
+ application/json:
3397
+ schema:
3398
+ $ref: "#/components/schemas/ObservabilityTraceQueryInput"
3399
+ responses:
3400
+ "200":
3401
+ description: Normalized trace spans from an authorized configured provider.
3402
+ content:
3403
+ application/json:
3404
+ schema:
3405
+ $ref: "#/components/schemas/ObservabilityTraceQueryEnvelope"
3406
+ "400":
3407
+ $ref: "#/components/responses/Error"
3408
+ "403":
3409
+ $ref: "#/components/responses/Error"
3410
+ "404":
3411
+ $ref: "#/components/responses/Error"
3412
+ "503":
3413
+ $ref: "#/components/responses/Error"
3414
+ /observability/data-sources:
3415
+ get:
3416
+ tags: [Observability]
3417
+ operationId: listObservabilityDataSources
3418
+ responses:
3419
+ "200":
3420
+ description: Permission-filtered log data sources with credentials redacted.
3421
+ content:
3422
+ application/json:
3423
+ schema:
3424
+ $ref: "#/components/schemas/ObservabilityDataSourceListEnvelope"
3425
+ "403":
3426
+ $ref: "#/components/responses/Error"
3427
+ post:
3428
+ tags: [Observability]
3429
+ operationId: createObservabilityDataSource
3430
+ requestBody:
3431
+ required: true
3432
+ content:
3433
+ application/json:
3434
+ schema:
3435
+ $ref: "#/components/schemas/ObservabilityDataSourceInput"
3436
+ responses:
3437
+ "201":
3438
+ description: Log data source created with credentials redacted.
3439
+ content:
3440
+ application/json:
3441
+ schema:
3442
+ $ref: "#/components/schemas/ObservabilityDataSourceEnvelope"
3443
+ "400":
3444
+ $ref: "#/components/responses/Error"
3445
+ "403":
3446
+ $ref: "#/components/responses/Error"
3447
+ /observability/data-sources/{dataSourceID}:
3448
+ put:
3449
+ tags: [Observability]
3450
+ operationId: updateObservabilityDataSource
3451
+ parameters:
3452
+ - $ref: "#/components/parameters/DataSourceID"
3453
+ requestBody:
3454
+ required: true
3455
+ content:
3456
+ application/json:
3457
+ schema:
3458
+ $ref: "#/components/schemas/ObservabilityDataSourceInput"
3459
+ responses:
3460
+ "200":
3461
+ description: Log data source updated with credentials redacted.
3462
+ content:
3463
+ application/json:
3464
+ schema:
3465
+ $ref: "#/components/schemas/ObservabilityDataSourceEnvelope"
3466
+ "400":
3467
+ $ref: "#/components/responses/Error"
3468
+ "403":
3469
+ $ref: "#/components/responses/Error"
3470
+ "404":
3471
+ $ref: "#/components/responses/Error"
3472
+ /observability/data-sources/{dataSourceID}/validate:
3473
+ post:
3474
+ tags: [Observability]
3475
+ operationId: validateObservabilityDataSource
3476
+ parameters:
3477
+ - $ref: "#/components/parameters/DataSourceID"
3138
3478
  responses:
3139
3479
  "200":
3140
3480
  description: Current data-source validation and backend health result.
@@ -6133,6 +6473,166 @@ paths:
6133
6473
  application/json:
6134
6474
  schema:
6135
6475
  $ref: "#/components/schemas/MarketplacePluginEnvelope"
6476
+ /software/packages:
6477
+ get:
6478
+ tags: [Software]
6479
+ operationId: listSoftwarePackages
6480
+ parameters:
6481
+ - name: platform
6482
+ in: query
6483
+ required: false
6484
+ schema:
6485
+ type: string
6486
+ maxLength: 64
6487
+ - name: arch
6488
+ in: query
6489
+ required: false
6490
+ schema:
6491
+ type: string
6492
+ maxLength: 64
6493
+ - name: cursor
6494
+ in: query
6495
+ required: false
6496
+ schema:
6497
+ type: string
6498
+ maxLength: 256
6499
+ - name: limit
6500
+ in: query
6501
+ required: false
6502
+ schema:
6503
+ type: integer
6504
+ minimum: 1
6505
+ maximum: 200
6506
+ responses:
6507
+ "200":
6508
+ description: Software packages visible to the current principal.
6509
+ content:
6510
+ application/json:
6511
+ schema:
6512
+ $ref: "#/components/schemas/SoftwarePackageListEnvelope"
6513
+ "401":
6514
+ $ref: "#/components/responses/Error"
6515
+ "403":
6516
+ $ref: "#/components/responses/Error"
6517
+ post:
6518
+ tags: [Software]
6519
+ operationId: uploadSoftwarePackage
6520
+ requestBody:
6521
+ required: true
6522
+ content:
6523
+ multipart/form-data:
6524
+ schema:
6525
+ $ref: "#/components/schemas/SoftwarePackageUploadRequest"
6526
+ responses:
6527
+ "201":
6528
+ description: Software package uploaded and published.
6529
+ content:
6530
+ application/json:
6531
+ schema:
6532
+ $ref: "#/components/schemas/SoftwarePackageEnvelope"
6533
+ "400":
6534
+ $ref: "#/components/responses/Error"
6535
+ "401":
6536
+ $ref: "#/components/responses/Error"
6537
+ "403":
6538
+ $ref: "#/components/responses/Error"
6539
+ "409":
6540
+ $ref: "#/components/responses/Error"
6541
+ "413":
6542
+ $ref: "#/components/responses/Error"
6543
+ /software/packages/import:
6544
+ post:
6545
+ tags: [Software]
6546
+ operationId: importSoftwarePackage
6547
+ requestBody:
6548
+ required: true
6549
+ content:
6550
+ application/json:
6551
+ schema:
6552
+ $ref: "#/components/schemas/SoftwarePackageURLImportRequest"
6553
+ responses:
6554
+ "201":
6555
+ description: Software package downloaded from the source URL and published.
6556
+ content:
6557
+ application/json:
6558
+ schema:
6559
+ $ref: "#/components/schemas/SoftwarePackageEnvelope"
6560
+ "400":
6561
+ $ref: "#/components/responses/Error"
6562
+ "401":
6563
+ $ref: "#/components/responses/Error"
6564
+ "403":
6565
+ $ref: "#/components/responses/Error"
6566
+ "409":
6567
+ $ref: "#/components/responses/Error"
6568
+ "413":
6569
+ $ref: "#/components/responses/Error"
6570
+ /software/storage:
6571
+ get:
6572
+ tags: [Software]
6573
+ operationId: getSoftwareStorage
6574
+ parameters:
6575
+ - name: cursor
6576
+ in: query
6577
+ required: false
6578
+ schema:
6579
+ type: string
6580
+ maxLength: 256
6581
+ - name: limit
6582
+ in: query
6583
+ required: false
6584
+ schema:
6585
+ type: integer
6586
+ minimum: 1
6587
+ maximum: 200
6588
+ responses:
6589
+ "200":
6590
+ description: Managed software storage summary and object records.
6591
+ content:
6592
+ application/json:
6593
+ schema:
6594
+ $ref: "#/components/schemas/SoftwareStorageEnvelope"
6595
+ "400":
6596
+ $ref: "#/components/responses/Error"
6597
+ "401":
6598
+ $ref: "#/components/responses/Error"
6599
+ "403":
6600
+ $ref: "#/components/responses/Error"
6601
+ /software/packages/{packageID}:
6602
+ delete:
6603
+ tags: [Software]
6604
+ operationId: deleteSoftwarePackage
6605
+ parameters:
6606
+ - $ref: "#/components/parameters/SoftwarePackageID"
6607
+ responses:
6608
+ "204":
6609
+ description: Software package deleted.
6610
+ "401":
6611
+ $ref: "#/components/responses/Error"
6612
+ "403":
6613
+ $ref: "#/components/responses/Error"
6614
+ "404":
6615
+ $ref: "#/components/responses/Error"
6616
+ /software/packages/{packageID}/download:
6617
+ get:
6618
+ tags: [Software]
6619
+ operationId: downloadSoftwarePackage
6620
+ parameters:
6621
+ - $ref: "#/components/parameters/SoftwarePackageID"
6622
+ responses:
6623
+ "200":
6624
+ description: Software package binary.
6625
+ content:
6626
+ application/octet-stream:
6627
+ schema:
6628
+ type: string
6629
+ format: binary
6630
+ "401":
6631
+ $ref: "#/components/responses/Error"
6632
+ "403":
6633
+ $ref: "#/components/responses/Error"
6634
+ "404":
6635
+ $ref: "#/components/responses/Error"
6136
6636
  /plugins/installed:
6137
6637
  get:
6138
6638
  tags: [Plugins]
@@ -8301,6 +8801,10 @@ components:
8301
8801
  type: http
8302
8802
  scheme: bearer
8303
8803
  description: Runtime execution runner token.
8804
+ agentBearerAuth:
8805
+ type: http
8806
+ scheme: bearer
8807
+ description: Per-cluster Agent session token provisioned through the installation manifest.
8304
8808
  sohaXAPIKey:
8305
8809
  type: apiKey
8306
8810
  in: header
@@ -8421,6 +8925,21 @@ components:
8421
8925
  schema:
8422
8926
  type: string
8423
8927
  minLength: 1
8928
+ ClusterIDQuery:
8929
+ name: clusterId
8930
+ in: query
8931
+ required: true
8932
+ schema:
8933
+ type: string
8934
+ minLength: 1
8935
+ AgentInstallTicket:
8936
+ name: installTicket
8937
+ in: path
8938
+ required: true
8939
+ schema:
8940
+ type: string
8941
+ minLength: 16
8942
+ maxLength: 1024
8424
8943
  DataSourceID:
8425
8944
  name: dataSourceID
8426
8945
  in: path
@@ -8429,11 +8948,27 @@ components:
8429
8948
  type: string
8430
8949
  minLength: 1
8431
8950
  maxLength: 128
8432
- ComputeCursor:
8433
- name: cursor
8434
- in: query
8435
- required: false
8436
- schema:
8951
+ DashboardID:
8952
+ name: dashboardID
8953
+ in: path
8954
+ required: true
8955
+ schema:
8956
+ type: string
8957
+ minLength: 1
8958
+ maxLength: 128
8959
+ DashboardPanelID:
8960
+ name: panelID
8961
+ in: path
8962
+ required: true
8963
+ schema:
8964
+ type: string
8965
+ minLength: 1
8966
+ maxLength: 128
8967
+ ComputeCursor:
8968
+ name: cursor
8969
+ in: query
8970
+ required: false
8971
+ schema:
8437
8972
  type: string
8438
8973
  ComputeLimit:
8439
8974
  name: limit
@@ -8631,6 +9166,13 @@ components:
8631
9166
  required: true
8632
9167
  schema:
8633
9168
  type: string
9169
+ RegistryConnectionID:
9170
+ name: connectionID
9171
+ in: path
9172
+ required: true
9173
+ schema:
9174
+ type: string
9175
+ minLength: 1
8634
9176
  BundleID:
8635
9177
  name: bundleID
8636
9178
  in: path
@@ -8717,6 +9259,14 @@ components:
8717
9259
  type: string
8718
9260
  minLength: 1
8719
9261
  maxLength: 128
9262
+ SoftwarePackageID:
9263
+ name: packageID
9264
+ in: path
9265
+ required: true
9266
+ schema:
9267
+ type: string
9268
+ minLength: 1
9269
+ maxLength: 128
8720
9270
  AIMemoryID:
8721
9271
  name: memoryID
8722
9272
  in: path
@@ -14088,7 +14638,7 @@ components:
14088
14638
  additionalProperties: false
14089
14639
  ApplicationInput:
14090
14640
  type: object
14091
- required: [name, key, group, language, enabled]
14641
+ required: [name, key, enabled]
14092
14642
  properties:
14093
14643
  id:
14094
14644
  type: string
@@ -14448,6 +14998,87 @@ components:
14448
14998
  enabled:
14449
14999
  type: boolean
14450
15000
  additionalProperties: false
15001
+ RegistryConnectionMetadata:
15002
+ type: object
15003
+ required: [secretConfigured, secretStorage]
15004
+ properties:
15005
+ secretConfigured:
15006
+ type: boolean
15007
+ secretStorage:
15008
+ type: string
15009
+ additionalProperties: false
15010
+ RegistryConnection:
15011
+ type: object
15012
+ required: [id, name, registryType, endpoint, insecure, metadata, createdAt, updatedAt]
15013
+ properties:
15014
+ id:
15015
+ type: string
15016
+ minLength: 1
15017
+ name:
15018
+ type: string
15019
+ minLength: 1
15020
+ registryType:
15021
+ type: string
15022
+ minLength: 1
15023
+ endpoint:
15024
+ type: string
15025
+ minLength: 1
15026
+ namespace:
15027
+ type: string
15028
+ username:
15029
+ type: string
15030
+ insecure:
15031
+ type: boolean
15032
+ metadata:
15033
+ $ref: "#/components/schemas/RegistryConnectionMetadata"
15034
+ createdAt:
15035
+ type: string
15036
+ format: date-time
15037
+ updatedAt:
15038
+ type: string
15039
+ format: date-time
15040
+ additionalProperties: false
15041
+ RegistryConnectionInput:
15042
+ type: object
15043
+ required: [name, registryType, endpoint]
15044
+ properties:
15045
+ id:
15046
+ type: string
15047
+ name:
15048
+ type: string
15049
+ minLength: 1
15050
+ registryType:
15051
+ type: string
15052
+ minLength: 1
15053
+ endpoint:
15054
+ type: string
15055
+ minLength: 1
15056
+ namespace:
15057
+ type: string
15058
+ username:
15059
+ type: string
15060
+ secret:
15061
+ type: string
15062
+ writeOnly: true
15063
+ insecure:
15064
+ type: boolean
15065
+ additionalProperties: false
15066
+ RegistryConnectionEnvelope:
15067
+ type: object
15068
+ required: [data]
15069
+ properties:
15070
+ data:
15071
+ $ref: "#/components/schemas/RegistryConnection"
15072
+ additionalProperties: false
15073
+ RegistryConnectionListEnvelope:
15074
+ type: object
15075
+ required: [items]
15076
+ properties:
15077
+ items:
15078
+ type: array
15079
+ items:
15080
+ $ref: "#/components/schemas/RegistryConnection"
15081
+ additionalProperties: false
14451
15082
  WorkflowTemplate:
14452
15083
  type: object
14453
15084
  required: [id, key, name, enabled, createdAt, updatedAt]
@@ -14549,22 +15180,298 @@ components:
14549
15180
  type: string
14550
15181
  strategyProfileId:
14551
15182
  type: string
14552
- promotionPolicyId:
15183
+ promotionPolicyId:
15184
+ type: string
15185
+ artifactPolicyId:
15186
+ type: string
15187
+ workflowTemplateId:
15188
+ type: string
15189
+ buildPolicy:
15190
+ $ref: "#/components/schemas/BuildPolicy"
15191
+ releasePolicy:
15192
+ $ref: "#/components/schemas/ReleasePolicy"
15193
+ resourceSelector:
15194
+ $ref: "#/components/schemas/ResourceSelector"
15195
+ targets:
15196
+ type: array
15197
+ items:
15198
+ $ref: "#/components/schemas/ReleaseTargetInput"
15199
+ additionalProperties: false
15200
+ KubernetesRelatedResource:
15201
+ type: object
15202
+ required: [kind, name]
15203
+ properties:
15204
+ kind:
15205
+ type: string
15206
+ enum: [Service, Ingress, HorizontalPodAutoscaler]
15207
+ name:
15208
+ type: string
15209
+ minLength: 1
15210
+ additionalProperties: false
15211
+ KubernetesImportCandidate:
15212
+ type: object
15213
+ required: [clusterId, namespace, workloadKind, workloadName, desiredReplicas, readyReplicas, relatedResources]
15214
+ properties:
15215
+ clusterId:
15216
+ type: string
15217
+ minLength: 1
15218
+ namespace:
15219
+ type: string
15220
+ minLength: 1
15221
+ workloadKind:
15222
+ type: string
15223
+ enum: [Deployment, StatefulSet, DaemonSet]
15224
+ workloadName:
15225
+ type: string
15226
+ minLength: 1
15227
+ desiredReplicas:
15228
+ type: integer
15229
+ minimum: 0
15230
+ readyReplicas:
15231
+ type: integer
15232
+ minimum: 0
15233
+ containers:
15234
+ type: array
15235
+ uniqueItems: true
15236
+ items:
15237
+ type: string
15238
+ labels:
15239
+ type: object
15240
+ additionalProperties:
15241
+ type: string
15242
+ relatedResources:
15243
+ type: array
15244
+ items:
15245
+ $ref: "#/components/schemas/KubernetesRelatedResource"
15246
+ additionalProperties: false
15247
+ KubernetesImportCandidateListEnvelope:
15248
+ type: object
15249
+ required: [items, truncated]
15250
+ properties:
15251
+ items:
15252
+ type: array
15253
+ items:
15254
+ $ref: "#/components/schemas/KubernetesImportCandidate"
15255
+ truncated:
15256
+ type: boolean
15257
+ additionalProperties: false
15258
+ KubernetesWorkloadImportInput:
15259
+ type: object
15260
+ required: [workloadKind, workloadName]
15261
+ properties:
15262
+ workloadKind:
15263
+ type: string
15264
+ enum: [Deployment, StatefulSet, DaemonSet]
15265
+ workloadName:
15266
+ type: string
15267
+ minLength: 1
15268
+ additionalProperties: false
15269
+ KubernetesServiceImportRequest:
15270
+ type: object
15271
+ required: [clusterId, namespace, applicationKey, applicationName, environmentKey, environmentName, ownershipMode, workloads]
15272
+ properties:
15273
+ clusterId:
15274
+ type: string
15275
+ minLength: 1
15276
+ namespace:
15277
+ type: string
15278
+ minLength: 1
15279
+ applicationKey:
15280
+ type: string
15281
+ minLength: 1
15282
+ applicationName:
15283
+ type: string
15284
+ minLength: 1
15285
+ environmentKey:
15286
+ type: string
15287
+ minLength: 1
15288
+ environmentName:
15289
+ type: string
15290
+ minLength: 1
15291
+ ownershipMode:
15292
+ type: string
15293
+ enum: [observe_only, managed]
15294
+ workloads:
15295
+ type: array
15296
+ minItems: 1
15297
+ maxItems: 100
15298
+ uniqueItems: true
15299
+ items:
15300
+ $ref: "#/components/schemas/KubernetesWorkloadImportInput"
15301
+ additionalProperties: false
15302
+ KubernetesImportEntityRef:
15303
+ type: object
15304
+ required: [id, key, name, created]
15305
+ properties:
15306
+ id:
15307
+ type: string
15308
+ key:
15309
+ type: string
15310
+ name:
15311
+ type: string
15312
+ created:
15313
+ type: boolean
15314
+ additionalProperties: false
15315
+ KubernetesImportedService:
15316
+ type: object
15317
+ required: [id, key, name, workloadKind, workloadName, created]
15318
+ properties:
15319
+ id:
15320
+ type: string
15321
+ key:
15322
+ type: string
15323
+ name:
15324
+ type: string
15325
+ workloadKind:
15326
+ type: string
15327
+ enum: [Deployment, StatefulSet, DaemonSet]
15328
+ workloadName:
15329
+ type: string
15330
+ created:
15331
+ type: boolean
15332
+ additionalProperties: false
15333
+ KubernetesImportedTarget:
15334
+ type: object
15335
+ required: [id, workloadKind, workloadName, created]
15336
+ properties:
15337
+ id:
15338
+ type: string
15339
+ workloadKind:
15340
+ type: string
15341
+ enum: [Deployment, StatefulSet, DaemonSet]
15342
+ workloadName:
15343
+ type: string
15344
+ created:
15345
+ type: boolean
15346
+ additionalProperties: false
15347
+ KubernetesServiceImportResult:
15348
+ type: object
15349
+ required: [application, environment, applicationEnvironmentId, applicationEnvironmentCreated, ownershipMode, services, targets]
15350
+ properties:
15351
+ application:
15352
+ $ref: "#/components/schemas/KubernetesImportEntityRef"
15353
+ environment:
15354
+ $ref: "#/components/schemas/KubernetesImportEntityRef"
15355
+ applicationEnvironmentId:
15356
+ type: string
15357
+ applicationEnvironmentCreated:
15358
+ type: boolean
15359
+ ownershipMode:
15360
+ type: string
15361
+ enum: [observe_only, managed]
15362
+ services:
15363
+ type: array
15364
+ items:
15365
+ $ref: "#/components/schemas/KubernetesImportedService"
15366
+ targets:
15367
+ type: array
15368
+ items:
15369
+ $ref: "#/components/schemas/KubernetesImportedTarget"
15370
+ additionalProperties: false
15371
+ KubernetesServiceImportResultEnvelope:
15372
+ type: object
15373
+ required: [data]
15374
+ properties:
15375
+ data:
15376
+ $ref: "#/components/schemas/KubernetesServiceImportResult"
15377
+ additionalProperties: false
15378
+ HelmReleaseImportInput:
15379
+ type: object
15380
+ required: [releaseName]
15381
+ properties:
15382
+ releaseName:
15383
+ type: string
15384
+ minLength: 1
15385
+ additionalProperties: false
15386
+ HelmReleaseImportRequest:
15387
+ type: object
15388
+ required: [clusterId, namespace, applicationKey, applicationName, environmentKey, environmentName, ownershipMode, releases]
15389
+ properties:
15390
+ clusterId:
15391
+ type: string
15392
+ minLength: 1
15393
+ namespace:
15394
+ type: string
15395
+ minLength: 1
15396
+ applicationKey:
15397
+ type: string
15398
+ minLength: 1
15399
+ applicationName:
15400
+ type: string
15401
+ minLength: 1
15402
+ environmentKey:
15403
+ type: string
15404
+ minLength: 1
15405
+ environmentName:
15406
+ type: string
15407
+ minLength: 1
15408
+ ownershipMode:
15409
+ type: string
15410
+ enum: [observe_only, managed]
15411
+ releases:
15412
+ type: array
15413
+ minItems: 1
15414
+ maxItems: 100
15415
+ uniqueItems: true
15416
+ items:
15417
+ $ref: "#/components/schemas/HelmReleaseImportInput"
15418
+ additionalProperties: false
15419
+ HelmImportedService:
15420
+ type: object
15421
+ required: [id, key, name, releaseName, created]
15422
+ properties:
15423
+ id:
15424
+ type: string
15425
+ key:
15426
+ type: string
15427
+ name:
15428
+ type: string
15429
+ releaseName:
15430
+ type: string
15431
+ created:
15432
+ type: boolean
15433
+ additionalProperties: false
15434
+ HelmImportedTarget:
15435
+ type: object
15436
+ required: [id, releaseName, created]
15437
+ properties:
15438
+ id:
15439
+ type: string
15440
+ releaseName:
14553
15441
  type: string
14554
- artifactPolicyId:
15442
+ created:
15443
+ type: boolean
15444
+ additionalProperties: false
15445
+ HelmReleaseImportResult:
15446
+ type: object
15447
+ required: [application, environment, applicationEnvironmentId, applicationEnvironmentCreated, ownershipMode, services, targets]
15448
+ properties:
15449
+ application:
15450
+ $ref: "#/components/schemas/KubernetesImportEntityRef"
15451
+ environment:
15452
+ $ref: "#/components/schemas/KubernetesImportEntityRef"
15453
+ applicationEnvironmentId:
14555
15454
  type: string
14556
- workflowTemplateId:
15455
+ applicationEnvironmentCreated:
15456
+ type: boolean
15457
+ ownershipMode:
14557
15458
  type: string
14558
- buildPolicy:
14559
- $ref: "#/components/schemas/BuildPolicy"
14560
- releasePolicy:
14561
- $ref: "#/components/schemas/ReleasePolicy"
14562
- resourceSelector:
14563
- $ref: "#/components/schemas/ResourceSelector"
15459
+ enum: [observe_only, managed]
15460
+ services:
15461
+ type: array
15462
+ items:
15463
+ $ref: "#/components/schemas/HelmImportedService"
14564
15464
  targets:
14565
15465
  type: array
14566
15466
  items:
14567
- $ref: "#/components/schemas/ReleaseTargetInput"
15467
+ $ref: "#/components/schemas/HelmImportedTarget"
15468
+ additionalProperties: false
15469
+ HelmReleaseImportResultEnvelope:
15470
+ type: object
15471
+ required: [data]
15472
+ properties:
15473
+ data:
15474
+ $ref: "#/components/schemas/HelmReleaseImportResult"
14568
15475
  additionalProperties: false
14569
15476
  BuildTemplate:
14570
15477
  type: object
@@ -15072,6 +15979,10 @@ components:
15072
15979
  type: string
15073
15980
  containerName:
15074
15981
  type: string
15982
+ valuesContent:
15983
+ type: string
15984
+ maxLength: 1048576
15985
+ description: Complete Helm values YAML used when the selected target is a managed Helm release.
15075
15986
  variables:
15076
15987
  type: object
15077
15988
  additionalProperties: true
@@ -17048,120 +17959,369 @@ components:
17048
17959
  notes:
17049
17960
  type: array
17050
17961
  items:
17051
- type: string
17962
+ type: string
17963
+ additionalProperties: false
17964
+ ClusterCapabilityMatrixEntry:
17965
+ type: object
17966
+ required: [key, label, category, riskLevel, requiresApproval, direct, agent]
17967
+ properties:
17968
+ key:
17969
+ type: string
17970
+ label:
17971
+ type: string
17972
+ category:
17973
+ type: string
17974
+ requiredScopes:
17975
+ type: array
17976
+ items:
17977
+ type: string
17978
+ riskLevel:
17979
+ $ref: "#/components/schemas/RiskLevel"
17980
+ requiresApproval:
17981
+ type: boolean
17982
+ docsUrl:
17983
+ type: string
17984
+ direct:
17985
+ $ref: "#/components/schemas/ClusterCapabilityModeSupport"
17986
+ agent:
17987
+ $ref: "#/components/schemas/ClusterCapabilityModeSupport"
17988
+ additionalProperties: false
17989
+ ClusterCapabilityMatrixEnvelope:
17990
+ type: object
17991
+ required: [items]
17992
+ properties:
17993
+ items:
17994
+ type: array
17995
+ items:
17996
+ $ref: "#/components/schemas/ClusterCapabilityMatrixEntry"
17997
+ additionalProperties: false
17998
+ AgentInstallation:
17999
+ type: object
18000
+ required: [clusterId, manifestUrl, command, expiresAt]
18001
+ properties:
18002
+ clusterId:
18003
+ type: string
18004
+ minLength: 1
18005
+ manifestUrl:
18006
+ type: string
18007
+ format: uri
18008
+ command:
18009
+ type: string
18010
+ minLength: 1
18011
+ expiresAt:
18012
+ type: string
18013
+ format: date-time
18014
+ additionalProperties: false
18015
+ AgentInstallationEnvelope:
18016
+ type: object
18017
+ required: [data]
18018
+ properties:
18019
+ data:
18020
+ $ref: "#/components/schemas/AgentInstallation"
18021
+ additionalProperties: false
18022
+ ObservabilityProviderSignal:
18023
+ type: string
18024
+ enum: [logs, metrics, traces, profiles]
18025
+ x-enum-varnames:
18026
+ - ObservabilityProviderSignalLogs
18027
+ - ObservabilityProviderSignalMetrics
18028
+ - ObservabilityProviderSignalTraces
18029
+ - ObservabilityProviderSignalProfiles
18030
+ ObservabilityProviderRuntimeMode:
18031
+ type: string
18032
+ enum: [builtin, external-http, managed-container]
18033
+ x-enum-varnames:
18034
+ - ObservabilityProviderRuntimeModeBuiltin
18035
+ - ObservabilityProviderRuntimeModeExternalHTTP
18036
+ - ObservabilityProviderRuntimeModeManagedContainer
18037
+ ObservabilityProviderStatus:
18038
+ type: string
18039
+ enum: [supported, degraded, unsupported]
18040
+ x-enum-varnames:
18041
+ - ObservabilityProviderStatusSupported
18042
+ - ObservabilityProviderStatusDegraded
18043
+ - ObservabilityProviderStatusUnsupported
18044
+ ObservabilityProviderDefinition:
18045
+ type: object
18046
+ required: [providerKey, displayName, protocolVersion, signals, capabilities, runtimeMode, builtIn, status]
18047
+ properties:
18048
+ providerKey:
18049
+ type: string
18050
+ pattern: "^[a-z][a-z0-9._-]*$"
18051
+ maxLength: 128
18052
+ description: Required when backendType is provider.
18053
+ displayName:
18054
+ type: string
18055
+ minLength: 1
18056
+ maxLength: 200
18057
+ description:
18058
+ type: string
18059
+ maxLength: 1000
18060
+ protocolVersion:
18061
+ type: string
18062
+ pattern: "^v[1-9][0-9]*$"
18063
+ signals:
18064
+ type: array
18065
+ minItems: 1
18066
+ uniqueItems: true
18067
+ items:
18068
+ $ref: "#/components/schemas/ObservabilityProviderSignal"
18069
+ capabilities:
18070
+ type: array
18071
+ minItems: 1
18072
+ uniqueItems: true
18073
+ items:
18074
+ type: string
18075
+ pattern: "^[a-z][a-z0-9_-]*(\\.[a-z][a-z0-9_-]*)+$"
18076
+ runtimeMode:
18077
+ $ref: "#/components/schemas/ObservabilityProviderRuntimeMode"
18078
+ builtIn:
18079
+ type: boolean
18080
+ status:
18081
+ $ref: "#/components/schemas/ObservabilityProviderStatus"
18082
+ statusReason:
18083
+ type: string
18084
+ maxLength: 500
18085
+ pluginId:
18086
+ type: string
18087
+ maxLength: 200
18088
+ configSchemaRef:
18089
+ type: string
18090
+ maxLength: 512
18091
+ additionalProperties: false
18092
+ ObservabilityProviderListEnvelope:
18093
+ type: object
18094
+ required: [items]
18095
+ properties:
18096
+ items:
18097
+ type: array
18098
+ items:
18099
+ $ref: "#/components/schemas/ObservabilityProviderDefinition"
18100
+ additionalProperties: false
18101
+ ObservabilityDashboardSource:
18102
+ type: string
18103
+ enum: [grafana]
18104
+ x-enum-varnames:
18105
+ - ObservabilityDashboardSourceGrafana
18106
+ ObservabilityDashboardPanelType:
18107
+ type: string
18108
+ enum: [timeseries, stat, text, row]
18109
+ x-enum-varnames:
18110
+ - ObservabilityDashboardPanelTypeTimeseries
18111
+ - ObservabilityDashboardPanelTypeStat
18112
+ - ObservabilityDashboardPanelTypeText
18113
+ - ObservabilityDashboardPanelTypeRow
18114
+ ObservabilityDashboardPanelLayout:
18115
+ type: object
18116
+ required: [x, y, w, h]
18117
+ properties:
18118
+ x:
18119
+ type: integer
18120
+ minimum: 0
18121
+ maximum: 23
18122
+ y:
18123
+ type: integer
18124
+ minimum: 0
18125
+ w:
18126
+ type: integer
18127
+ minimum: 1
18128
+ maximum: 24
18129
+ h:
18130
+ type: integer
18131
+ minimum: 1
18132
+ maximum: 100
18133
+ additionalProperties: false
18134
+ ObservabilityDashboardTarget:
18135
+ type: object
18136
+ required: [refId, expression]
18137
+ properties:
18138
+ refId:
18139
+ type: string
18140
+ minLength: 1
18141
+ maxLength: 16
18142
+ expression:
18143
+ type: string
18144
+ minLength: 1
18145
+ maxLength: 8192
18146
+ legend:
18147
+ type: string
18148
+ maxLength: 256
18149
+ additionalProperties: false
18150
+ ObservabilityDashboardPanel:
18151
+ type: object
18152
+ required: [id, title, type, layout, targets, queryable]
18153
+ properties:
18154
+ id:
18155
+ type: string
18156
+ minLength: 1
18157
+ maxLength: 128
18158
+ title:
18159
+ type: string
18160
+ minLength: 1
18161
+ maxLength: 200
18162
+ type:
18163
+ $ref: "#/components/schemas/ObservabilityDashboardPanelType"
18164
+ layout:
18165
+ $ref: "#/components/schemas/ObservabilityDashboardPanelLayout"
18166
+ targets:
18167
+ type: array
18168
+ maxItems: 8
18169
+ items:
18170
+ $ref: "#/components/schemas/ObservabilityDashboardTarget"
18171
+ queryable:
18172
+ type: boolean
18173
+ markdown:
18174
+ type: string
18175
+ maxLength: 32768
18176
+ additionalProperties: false
18177
+ ObservabilityDashboard:
18178
+ type: object
18179
+ required: [id, name, source, tags, panels, createdAt, updatedAt]
18180
+ properties:
18181
+ id:
18182
+ type: string
18183
+ minLength: 1
18184
+ maxLength: 128
18185
+ name:
18186
+ type: string
18187
+ minLength: 1
18188
+ maxLength: 200
18189
+ source:
18190
+ $ref: "#/components/schemas/ObservabilityDashboardSource"
18191
+ sourceSchemaVersion:
18192
+ type: integer
18193
+ minimum: 0
18194
+ dataSourceId:
18195
+ type: string
18196
+ maxLength: 200
18197
+ tags:
18198
+ type: array
18199
+ maxItems: 50
18200
+ uniqueItems: true
18201
+ items:
18202
+ type: string
18203
+ minLength: 1
18204
+ maxLength: 100
18205
+ panels:
18206
+ type: array
18207
+ maxItems: 200
18208
+ items:
18209
+ $ref: "#/components/schemas/ObservabilityDashboardPanel"
18210
+ createdAt:
18211
+ type: string
18212
+ format: date-time
18213
+ updatedAt:
18214
+ type: string
18215
+ format: date-time
18216
+ additionalProperties: false
18217
+ ObservabilityDashboardEnvelope:
18218
+ type: object
18219
+ required: [data]
18220
+ properties:
18221
+ data:
18222
+ $ref: "#/components/schemas/ObservabilityDashboard"
18223
+ additionalProperties: false
18224
+ ObservabilityDashboardListEnvelope:
18225
+ type: object
18226
+ required: [items]
18227
+ properties:
18228
+ items:
18229
+ type: array
18230
+ items:
18231
+ $ref: "#/components/schemas/ObservabilityDashboard"
17052
18232
  additionalProperties: false
17053
- ClusterCapabilityMatrixEntry:
18233
+ ObservabilityGrafanaDashboardImportInput:
17054
18234
  type: object
17055
- required: [key, label, category, riskLevel, requiresApproval, direct, agent]
18235
+ required: [json, dataSourceId]
17056
18236
  properties:
17057
- key:
18237
+ json:
17058
18238
  type: string
17059
- label:
18239
+ minLength: 2
18240
+ maxLength: 2097152
18241
+ description: Grafana Classic dashboard JSON or a V1 resource whose spec contains the Classic dashboard model.
18242
+ dataSourceId:
17060
18243
  type: string
17061
- category:
18244
+ minLength: 1
18245
+ maxLength: 200
18246
+ description: Enabled Soha Prometheus data source used by every imported queryable panel.
18247
+ additionalProperties: false
18248
+ ObservabilityMetricDataSource:
18249
+ type: object
18250
+ required: [id, name]
18251
+ properties:
18252
+ id:
17062
18253
  type: string
17063
- requiredScopes:
17064
- type: array
17065
- items:
17066
- type: string
17067
- riskLevel:
17068
- $ref: "#/components/schemas/RiskLevel"
17069
- requiresApproval:
17070
- type: boolean
17071
- docsUrl:
18254
+ minLength: 1
18255
+ maxLength: 200
18256
+ name:
17072
18257
  type: string
17073
- direct:
17074
- $ref: "#/components/schemas/ClusterCapabilityModeSupport"
17075
- agent:
17076
- $ref: "#/components/schemas/ClusterCapabilityModeSupport"
18258
+ minLength: 1
18259
+ maxLength: 200
17077
18260
  additionalProperties: false
17078
- ClusterCapabilityMatrixEnvelope:
18261
+ ObservabilityMetricDataSourceListEnvelope:
17079
18262
  type: object
17080
18263
  required: [items]
17081
18264
  properties:
17082
18265
  items:
17083
18266
  type: array
17084
18267
  items:
17085
- $ref: "#/components/schemas/ClusterCapabilityMatrixEntry"
18268
+ $ref: "#/components/schemas/ObservabilityMetricDataSource"
17086
18269
  additionalProperties: false
17087
- ObservabilityProviderSignal:
17088
- type: string
17089
- enum: [logs, metrics, traces, profiles]
17090
- x-enum-varnames:
17091
- - ObservabilityProviderSignalLogs
17092
- - ObservabilityProviderSignalMetrics
17093
- - ObservabilityProviderSignalTraces
17094
- - ObservabilityProviderSignalProfiles
17095
- ObservabilityProviderRuntimeMode:
17096
- type: string
17097
- enum: [builtin, external-http, managed-container]
17098
- x-enum-varnames:
17099
- - ObservabilityProviderRuntimeModeBuiltin
17100
- - ObservabilityProviderRuntimeModeExternalHTTP
17101
- - ObservabilityProviderRuntimeModeManagedContainer
17102
- ObservabilityProviderStatus:
17103
- type: string
17104
- enum: [supported, degraded, unsupported]
17105
- x-enum-varnames:
17106
- - ObservabilityProviderStatusSupported
17107
- - ObservabilityProviderStatusDegraded
17108
- - ObservabilityProviderStatusUnsupported
17109
- ObservabilityProviderDefinition:
18270
+ ObservabilityDashboardImportWarning:
17110
18271
  type: object
17111
- required: [providerKey, displayName, protocolVersion, signals, capabilities, runtimeMode, builtIn, status]
18272
+ required: [code, message]
17112
18273
  properties:
17113
- providerKey:
18274
+ code:
17114
18275
  type: string
17115
- pattern: "^[a-z][a-z0-9._-]*$"
17116
- maxLength: 128
17117
- description: Required when backendType is provider.
17118
- displayName:
18276
+ enum: [unsupported_panel_type, skipped_target, unsupported_variable, datasource_rebound, unsupported_feature]
18277
+ message:
17119
18278
  type: string
17120
18279
  minLength: 1
17121
- maxLength: 200
17122
- description:
17123
- type: string
17124
- maxLength: 1000
17125
- protocolVersion:
17126
- type: string
17127
- pattern: "^v[1-9][0-9]*$"
17128
- signals:
17129
- type: array
17130
- minItems: 1
17131
- uniqueItems: true
17132
- items:
17133
- $ref: "#/components/schemas/ObservabilityProviderSignal"
17134
- capabilities:
17135
- type: array
17136
- minItems: 1
17137
- uniqueItems: true
17138
- items:
17139
- type: string
17140
- pattern: "^[a-z][a-z0-9_-]*(\\.[a-z][a-z0-9_-]*)+$"
17141
- runtimeMode:
17142
- $ref: "#/components/schemas/ObservabilityProviderRuntimeMode"
17143
- builtIn:
17144
- type: boolean
17145
- status:
17146
- $ref: "#/components/schemas/ObservabilityProviderStatus"
17147
- statusReason:
17148
- type: string
17149
18280
  maxLength: 500
17150
- pluginId:
18281
+ panelId:
17151
18282
  type: string
17152
- maxLength: 200
17153
- configSchemaRef:
17154
- type: string
17155
- maxLength: 512
18283
+ maxLength: 128
17156
18284
  additionalProperties: false
17157
- ObservabilityProviderListEnvelope:
18285
+ ObservabilityDashboardImportResult:
17158
18286
  type: object
17159
- required: [items]
18287
+ required: [dashboard, warnings, importedPanelCount, skippedPanelCount]
17160
18288
  properties:
17161
- items:
18289
+ dashboard:
18290
+ $ref: "#/components/schemas/ObservabilityDashboard"
18291
+ warnings:
17162
18292
  type: array
18293
+ maxItems: 500
17163
18294
  items:
17164
- $ref: "#/components/schemas/ObservabilityProviderDefinition"
18295
+ $ref: "#/components/schemas/ObservabilityDashboardImportWarning"
18296
+ importedPanelCount:
18297
+ type: integer
18298
+ minimum: 1
18299
+ skippedPanelCount:
18300
+ type: integer
18301
+ minimum: 0
18302
+ additionalProperties: false
18303
+ ObservabilityDashboardImportResultEnvelope:
18304
+ type: object
18305
+ required: [data]
18306
+ properties:
18307
+ data:
18308
+ $ref: "#/components/schemas/ObservabilityDashboardImportResult"
18309
+ additionalProperties: false
18310
+ ObservabilityDashboardPanelQueryInput:
18311
+ type: object
18312
+ required: [timeFrom, timeTo]
18313
+ properties:
18314
+ timeFrom:
18315
+ type: string
18316
+ format: date-time
18317
+ timeTo:
18318
+ type: string
18319
+ format: date-time
18320
+ stepSeconds:
18321
+ type: integer
18322
+ minimum: 1
18323
+ maximum: 3600
18324
+ default: 60
17165
18325
  additionalProperties: false
17166
18326
  ObservabilityQueryScope:
17167
18327
  type: object
@@ -20767,6 +21927,188 @@ components:
20767
21927
  installed:
20768
21928
  type: boolean
20769
21929
  additionalProperties: false
21930
+ SoftwarePackage:
21931
+ type: object
21932
+ required:
21933
+ [id, softwareId, name, publisher, version, platform, arch, fileName, sizeBytes, sha256, downloadPath, createdAt, updatedAt]
21934
+ properties:
21935
+ id:
21936
+ type: string
21937
+ minLength: 1
21938
+ maxLength: 128
21939
+ softwareId:
21940
+ type: string
21941
+ pattern: "^[a-z0-9][a-z0-9._-]{0,63}$"
21942
+ name:
21943
+ type: string
21944
+ minLength: 1
21945
+ maxLength: 100
21946
+ description:
21947
+ type: string
21948
+ maxLength: 500
21949
+ publisher:
21950
+ type: string
21951
+ minLength: 1
21952
+ maxLength: 100
21953
+ category:
21954
+ type: string
21955
+ maxLength: 50
21956
+ version:
21957
+ type: string
21958
+ minLength: 1
21959
+ maxLength: 64
21960
+ platform:
21961
+ type: string
21962
+ pattern: "^[a-z0-9][a-z0-9._-]{0,63}$"
21963
+ arch:
21964
+ type: string
21965
+ pattern: "^[a-z0-9][a-z0-9._-]{0,63}$"
21966
+ fileName:
21967
+ type: string
21968
+ minLength: 1
21969
+ maxLength: 255
21970
+ sizeBytes:
21971
+ type: integer
21972
+ format: int64
21973
+ minimum: 1
21974
+ maximum: 4294967296
21975
+ sha256:
21976
+ type: string
21977
+ pattern: "^[0-9a-f]{64}$"
21978
+ downloadPath:
21979
+ type: string
21980
+ pattern: "^/api/v1/software/packages/[^/]+/download$"
21981
+ createdAt:
21982
+ type: string
21983
+ format: date-time
21984
+ updatedAt:
21985
+ type: string
21986
+ format: date-time
21987
+ additionalProperties: false
21988
+ SoftwarePackageEnvelope:
21989
+ type: object
21990
+ required: [data]
21991
+ properties:
21992
+ data:
21993
+ $ref: "#/components/schemas/SoftwarePackage"
21994
+ additionalProperties: false
21995
+ SoftwarePackageListEnvelope:
21996
+ type: object
21997
+ required: [items]
21998
+ properties:
21999
+ items:
22000
+ type: array
22001
+ items:
22002
+ $ref: "#/components/schemas/SoftwarePackage"
22003
+ nextCursor:
22004
+ type: string
22005
+ additionalProperties: false
22006
+ SoftwarePackageUploadRequest:
22007
+ type: object
22008
+ required: [softwareId, name, publisher, version, platform, arch, file]
22009
+ properties:
22010
+ softwareId:
22011
+ type: string
22012
+ pattern: "^[a-z0-9][a-z0-9._-]{0,63}$"
22013
+ name:
22014
+ type: string
22015
+ minLength: 1
22016
+ maxLength: 100
22017
+ description:
22018
+ type: string
22019
+ maxLength: 500
22020
+ publisher:
22021
+ type: string
22022
+ minLength: 1
22023
+ maxLength: 100
22024
+ category:
22025
+ type: string
22026
+ maxLength: 50
22027
+ version:
22028
+ type: string
22029
+ minLength: 1
22030
+ maxLength: 64
22031
+ platform:
22032
+ type: string
22033
+ pattern: "^[a-z0-9][a-z0-9._-]{0,63}$"
22034
+ arch:
22035
+ type: string
22036
+ pattern: "^[a-z0-9][a-z0-9._-]{0,63}$"
22037
+ file:
22038
+ type: string
22039
+ format: binary
22040
+ additionalProperties: false
22041
+ SoftwarePackageURLImportRequest:
22042
+ type: object
22043
+ required: [softwareId, name, publisher, version, platform, arch, url]
22044
+ properties:
22045
+ softwareId:
22046
+ type: string
22047
+ pattern: "^[a-z0-9][a-z0-9._-]{0,63}$"
22048
+ name:
22049
+ type: string
22050
+ minLength: 1
22051
+ maxLength: 100
22052
+ description:
22053
+ type: string
22054
+ maxLength: 500
22055
+ publisher:
22056
+ type: string
22057
+ minLength: 1
22058
+ maxLength: 100
22059
+ category:
22060
+ type: string
22061
+ maxLength: 50
22062
+ version:
22063
+ type: string
22064
+ minLength: 1
22065
+ maxLength: 64
22066
+ platform:
22067
+ type: string
22068
+ pattern: "^[a-z0-9][a-z0-9._-]{0,63}$"
22069
+ arch:
22070
+ type: string
22071
+ pattern: "^[a-z0-9][a-z0-9._-]{0,63}$"
22072
+ url:
22073
+ type: string
22074
+ format: uri
22075
+ pattern: "^https://"
22076
+ maxLength: 2048
22077
+ fileName:
22078
+ type: string
22079
+ minLength: 1
22080
+ maxLength: 255
22081
+ additionalProperties: false
22082
+ SoftwareStorage:
22083
+ type: object
22084
+ required: [backend, objectCount, totalBytes, items]
22085
+ properties:
22086
+ backend:
22087
+ type: string
22088
+ minLength: 1
22089
+ maxLength: 64
22090
+ objectCount:
22091
+ type: integer
22092
+ format: int64
22093
+ minimum: 0
22094
+ totalBytes:
22095
+ type: integer
22096
+ format: int64
22097
+ minimum: 0
22098
+ items:
22099
+ type: array
22100
+ items:
22101
+ $ref: "#/components/schemas/SoftwarePackage"
22102
+ nextCursor:
22103
+ type: string
22104
+ additionalProperties: false
22105
+ SoftwareStorageEnvelope:
22106
+ type: object
22107
+ required: [data]
22108
+ properties:
22109
+ data:
22110
+ $ref: "#/components/schemas/SoftwareStorage"
22111
+ additionalProperties: false
20770
22112
  InstalledPlugin:
20771
22113
  type: object
20772
22114
  required: [id, name, version, publisher, type, status, source, manifest, checksumStatus, installedBy, installedAt, updatedAt]