@opensoha/contracts 0.1.15 → 0.1.16

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 (83) hide show
  1. package/auth/catalog_generated.go +2 -2
  2. package/auth/permission-catalog.json +9 -8
  3. package/compat/json-schema-ecosystem-0.1.0.json +1 -1
  4. package/compat/openapi-loose-boundaries-0.1.0.json +58 -1
  5. package/fixtures/openapi/AlertRuleEnvelope/invalid/missing-data.json +1 -0
  6. package/fixtures/openapi/AlertRuleEnvelope/valid/metrics.json +11 -0
  7. package/fixtures/openapi/AlertRuleInput/invalid/missing-name.json +3 -0
  8. package/fixtures/openapi/AlertRuleInput/valid/metrics.json +25 -0
  9. package/fixtures/openapi/AlertRuleRunListEnvelope/invalid/missing-rule-id.json +12 -0
  10. package/fixtures/openapi/AlertRuleRunListEnvelope/valid/items.json +13 -0
  11. package/fixtures/openapi/AlertRuleTestResultEnvelope/invalid/missing-executed-at.json +5 -0
  12. package/fixtures/openapi/AlertRuleTestResultEnvelope/valid/clear.json +10 -0
  13. package/fixtures/openapi/ApplicationRuntimeEnvironment/invalid/unknown-status.json +7 -0
  14. package/fixtures/openapi/ApplicationRuntimeEnvironment/valid/unavailable.json +7 -0
  15. package/fixtures/openapi/ApplicationWorkflowInput/invalid/owner-fields.json +7 -0
  16. package/fixtures/openapi/ApplicationWorkflowInput/valid/minimal.json +9 -0
  17. package/fixtures/openapi/BrandingAssetUploadEnvelope/valid/svg-data-url.json +5 -0
  18. package/fixtures/openapi/BrowserHandoffCompletionEnvelope/invalid/token-leak.json +7 -0
  19. package/fixtures/openapi/BrowserHandoffCompletionEnvelope/valid/completed.json +6 -0
  20. package/fixtures/openapi/BrowserHandoffEnvelope/invalid/missing-principal.json +12 -0
  21. package/fixtures/openapi/BrowserHandoffEnvelope/valid/pending.json +11 -0
  22. package/fixtures/openapi/ChangePasswordRequest/invalid/missing-current-password.json +3 -0
  23. package/fixtures/openapi/ChangePasswordRequest/invalid/short-new-password.json +4 -0
  24. package/fixtures/openapi/ChangePasswordRequest/valid/password.json +4 -0
  25. package/fixtures/openapi/DesktopAuthAttemptCreateRequest/invalid/https-redirect.json +6 -0
  26. package/fixtures/openapi/DesktopAuthAttemptCreateRequest/invalid/localhost-redirect.json +6 -0
  27. package/fixtures/openapi/DesktopAuthAttemptCreateRequest/invalid/plain-challenge.json +6 -0
  28. package/fixtures/openapi/DesktopAuthAttemptCreateRequest/invalid/privileged-port.json +6 -0
  29. package/fixtures/openapi/DesktopAuthAttemptCreateRequest/invalid/short-callback.json +6 -0
  30. package/fixtures/openapi/DesktopAuthAttemptCreateRequest/valid/loopback.json +6 -0
  31. package/fixtures/openapi/DesktopAuthAttemptEnvelope/invalid/missing-expiry.json +6 -0
  32. package/fixtures/openapi/DesktopAuthAttemptEnvelope/valid/attempt.json +7 -0
  33. package/fixtures/openapi/DesktopAuthAttemptExchangeRequest/invalid/short-verifier.json +4 -0
  34. package/fixtures/openapi/DesktopAuthAttemptExchangeRequest/valid/exchange.json +4 -0
  35. package/fixtures/openapi/IdentityApplication/invalid/missing-id.json +7 -0
  36. package/fixtures/openapi/IdentityApplication/valid/full.json +30 -0
  37. package/fixtures/openapi/IdentityApplicationEnvelope/invalid/missing-data.json +1 -0
  38. package/fixtures/openapi/IdentityApplicationEnvelope/valid/minimal.json +10 -0
  39. package/fixtures/openapi/IdentityApplicationLaunchListEnvelope/invalid/missing-user.json +11 -0
  40. package/fixtures/openapi/IdentityApplicationLaunchListEnvelope/valid/minimal.json +12 -0
  41. package/fixtures/openapi/LogQuery/invalid/empty-data-source-id.json +7 -0
  42. package/fixtures/openapi/LogQuery/valid/durable-data-source.json +14 -0
  43. package/fixtures/openapi/ManifestPackage/invalid/missing-application.json +12 -0
  44. package/fixtures/openapi/ManifestPackage/valid/service-scoped.json +29 -0
  45. package/fixtures/openapi/OIDCClientInput/valid/generated-client-id.json +8 -0
  46. package/fixtures/openapi/OIDCClientSecretRevealEnvelope/invalid/missing-secret.json +6 -0
  47. package/fixtures/openapi/OIDCClientSecretRevealEnvelope/valid/reveal.json +7 -0
  48. package/fixtures/openapi/PasswordChangeResult/invalid/unexpected-status.json +3 -0
  49. package/fixtures/openapi/PasswordChangeResult/valid/ok.json +3 -0
  50. package/fixtures/openapi/PortalApplicationListEnvelope/invalid/missing-items.json +1 -0
  51. package/fixtures/openapi/PortalApplicationListEnvelope/valid/minimal.json +12 -0
  52. package/fixtures/openapi/PortalBootstrapEnvelope/invalid/missing-security.json +17 -0
  53. package/fixtures/openapi/PortalBootstrapEnvelope/valid/minimal.json +31 -0
  54. package/fixtures/openapi/PortalLaunchDecisionEnvelope/invalid/missing-launch-url.json +14 -0
  55. package/fixtures/openapi/PortalLaunchDecisionEnvelope/valid/desktop-handoff.json +16 -0
  56. package/fixtures/openapi/PortalLaunchRequest/invalid/unknown-surface.json +3 -0
  57. package/fixtures/openapi/PortalLaunchRequest/valid/default-web.json +1 -0
  58. package/fixtures/openapi/PortalLaunchRequest/valid/desktop.json +3 -0
  59. package/fixtures/openapi/PortalSecuritySummaryEnvelope/invalid/missing-session-count.json +15 -0
  60. package/fixtures/openapi/PortalSecuritySummaryEnvelope/valid/minimal.json +16 -0
  61. package/fixtures/openapi/ScopeGrantInput/invalid/delivery-missing-business-line.json +7 -0
  62. package/fixtures/openapi/ScopeGrantInput/invalid/platform-missing-clusters.json +7 -0
  63. package/fixtures/openapi/ScopeGrantInput/valid/platform.json +8 -0
  64. package/fixtures/openapi/SoftwarePackage/valid/software-package.json +6 -0
  65. package/fixtures/openapi/SoftwarePackageDownloadRecord/invalid/negative-duration.json +6 -0
  66. package/fixtures/openapi/SoftwarePackageDownloadRecord/valid/software-package-download-record.json +8 -0
  67. package/fixtures/openapi/SoftwarePackageURLImportRequest/valid/software-package-url-import-request.json +4 -0
  68. package/fixtures/openapi/SoftwareStorage/invalid/software-storage.json +1 -1
  69. package/fixtures/openapi/SoftwareStorage/valid/software-storage.json +13 -1
  70. package/fixtures/openapi/SystemIntegrationCreateRequest/invalid/s3-storage-missing-name.json +5 -0
  71. package/fixtures/openapi/SystemIntegrationCreateRequest/valid/s3-software-storage.json +18 -0
  72. package/fixtures/openapi/UpdateProfileRequest/invalid/invalid-avatar-fit.json +5 -0
  73. package/fixtures/openapi/UpdateProfileRequest/invalid/missing-email.json +3 -0
  74. package/fixtures/openapi/UpdateProfileRequest/valid/profile.json +7 -0
  75. package/gen/go/sohaapi/client.go +210 -5
  76. package/gen/go/sohaapi/client_test.go +128 -5
  77. package/gen/go/sohaapi/types.go +1105 -132
  78. package/gen/go/sohaapi/types_test.go +22 -0
  79. package/gen/ts/sohaapi/index.ts +2007 -34
  80. package/openapi/soha-api.json +4169 -136
  81. package/openapi/soha-api.yaml +2219 -9
  82. package/openapi/spec_generated.go +3 -3
  83. 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.15
4
+ version: 0.1.16
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
@@ -37,6 +37,7 @@ tags:
37
37
  - name: Software
38
38
  - name: Access
39
39
  - name: Identity
40
+ - name: Portal
40
41
  - name: Directory
41
42
  paths:
42
43
  /healthz:
@@ -166,6 +167,142 @@ paths:
166
167
  application/json:
167
168
  schema:
168
169
  $ref: "#/components/schemas/AuthResultEnvelope"
170
+ /auth/desktop/attempts:
171
+ post:
172
+ tags: [Auth]
173
+ operationId: createDesktopAuthAttempt
174
+ security: []
175
+ requestBody:
176
+ required: true
177
+ content:
178
+ application/json:
179
+ schema:
180
+ $ref: "#/components/schemas/DesktopAuthAttemptCreateRequest"
181
+ responses:
182
+ "201":
183
+ description: Short-lived desktop authentication attempt.
184
+ content:
185
+ application/json:
186
+ schema:
187
+ $ref: "#/components/schemas/DesktopAuthAttemptEnvelope"
188
+ "400":
189
+ $ref: "#/components/responses/Error"
190
+ "404":
191
+ $ref: "#/components/responses/Error"
192
+ "413":
193
+ $ref: "#/components/responses/Error"
194
+ "429":
195
+ $ref: "#/components/responses/Error"
196
+ "501":
197
+ $ref: "#/components/responses/Error"
198
+ /auth/desktop/attempts/{attemptID}/start:
199
+ get:
200
+ tags: [Auth]
201
+ operationId: startDesktopAuthAttempt
202
+ security: []
203
+ parameters:
204
+ - $ref: "#/components/parameters/AttemptID"
205
+ responses:
206
+ "307":
207
+ description: Redirect to the identity provider for this attempt.
208
+ "400":
209
+ $ref: "#/components/responses/Error"
210
+ "404":
211
+ $ref: "#/components/responses/Error"
212
+ "410":
213
+ $ref: "#/components/responses/Error"
214
+ "429":
215
+ $ref: "#/components/responses/Error"
216
+ "501":
217
+ $ref: "#/components/responses/Error"
218
+ /auth/desktop/attempts/{attemptID}/exchange:
219
+ post:
220
+ tags: [Auth]
221
+ operationId: exchangeDesktopAuthAttempt
222
+ security: []
223
+ parameters:
224
+ - $ref: "#/components/parameters/AttemptID"
225
+ requestBody:
226
+ required: true
227
+ content:
228
+ application/json:
229
+ schema:
230
+ $ref: "#/components/schemas/DesktopAuthAttemptExchangeRequest"
231
+ responses:
232
+ "200":
233
+ description: Authenticated desktop session.
234
+ content:
235
+ application/json:
236
+ schema:
237
+ $ref: "#/components/schemas/AuthResultEnvelope"
238
+ "400":
239
+ $ref: "#/components/responses/Error"
240
+ "401":
241
+ $ref: "#/components/responses/Error"
242
+ "404":
243
+ $ref: "#/components/responses/Error"
244
+ "409":
245
+ $ref: "#/components/responses/Error"
246
+ "410":
247
+ $ref: "#/components/responses/Error"
248
+ "413":
249
+ $ref: "#/components/responses/Error"
250
+ "429":
251
+ $ref: "#/components/responses/Error"
252
+ "501":
253
+ $ref: "#/components/responses/Error"
254
+ /auth/browser-handoffs/{browserHandoffID}:
255
+ get:
256
+ tags: [Auth]
257
+ operationId: getBrowserHandoff
258
+ security: []
259
+ parameters:
260
+ - $ref: "#/components/parameters/BrowserHandoffID"
261
+ responses:
262
+ "200":
263
+ description: Pending desktop-to-browser session handoff.
264
+ headers:
265
+ Cache-Control:
266
+ schema: { type: string, enum: [no-store] }
267
+ Referrer-Policy:
268
+ schema: { type: string, enum: [no-referrer] }
269
+ content:
270
+ application/json:
271
+ schema:
272
+ $ref: "#/components/schemas/BrowserHandoffEnvelope"
273
+ "404":
274
+ $ref: "#/components/responses/Error"
275
+ "410":
276
+ $ref: "#/components/responses/Error"
277
+ "429":
278
+ $ref: "#/components/responses/Error"
279
+ /auth/browser-handoffs/{browserHandoffID}/complete:
280
+ post:
281
+ tags: [Auth]
282
+ operationId: completeBrowserHandoff
283
+ security: []
284
+ parameters:
285
+ - $ref: "#/components/parameters/BrowserHandoffID"
286
+ responses:
287
+ "200":
288
+ description: Browser session created after explicit confirmation.
289
+ headers:
290
+ Cache-Control:
291
+ schema: { type: string, enum: [no-store] }
292
+ Referrer-Policy:
293
+ schema: { type: string, enum: [no-referrer] }
294
+ content:
295
+ application/json:
296
+ schema:
297
+ $ref: "#/components/schemas/BrowserHandoffCompletionEnvelope"
298
+ "400":
299
+ $ref: "#/components/responses/Error"
300
+ "409":
301
+ $ref: "#/components/responses/Error"
302
+ "410":
303
+ $ref: "#/components/responses/Error"
304
+ "429":
305
+ $ref: "#/components/responses/Error"
169
306
  /auth/login/{providerID}/start:
170
307
  get:
171
308
  tags: [Auth]
@@ -212,6 +349,51 @@ paths:
212
349
  application/json:
213
350
  schema:
214
351
  $ref: "#/components/schemas/UserProfileEnvelope"
352
+ "401":
353
+ $ref: "#/components/responses/Error"
354
+ patch:
355
+ tags: [Auth]
356
+ operationId: updateCurrentUserProfile
357
+ requestBody:
358
+ required: true
359
+ content:
360
+ application/json:
361
+ schema:
362
+ $ref: "#/components/schemas/UpdateProfileRequest"
363
+ responses:
364
+ "200":
365
+ description: Updated current user profile.
366
+ content:
367
+ application/json:
368
+ schema:
369
+ $ref: "#/components/schemas/UserProfileEnvelope"
370
+ "400":
371
+ $ref: "#/components/responses/Error"
372
+ "401":
373
+ $ref: "#/components/responses/Error"
374
+ "409":
375
+ $ref: "#/components/responses/Error"
376
+ /auth/profile/password:
377
+ post:
378
+ tags: [Auth]
379
+ operationId: changeCurrentUserPassword
380
+ requestBody:
381
+ required: true
382
+ content:
383
+ application/json:
384
+ schema:
385
+ $ref: "#/components/schemas/ChangePasswordRequest"
386
+ responses:
387
+ "200":
388
+ description: Password changed.
389
+ content:
390
+ application/json:
391
+ schema:
392
+ $ref: "#/components/schemas/PasswordChangeResult"
393
+ "400":
394
+ $ref: "#/components/responses/Error"
395
+ "401":
396
+ $ref: "#/components/responses/Error"
215
397
  /auth/bootstrap:
216
398
  get:
217
399
  tags: [Auth]
@@ -1050,6 +1232,32 @@ paths:
1050
1232
  $ref: "#/components/schemas/ApplicationRuntimeDetailEnvelope"
1051
1233
  "404":
1052
1234
  $ref: "#/components/responses/Error"
1235
+ /applications/{applicationID}/application-environments/{applicationEnvironmentID}/workflow:
1236
+ put:
1237
+ tags: [Applications, Delivery]
1238
+ operationId: saveApplicationEnvironmentWorkflow
1239
+ parameters:
1240
+ - $ref: "#/components/parameters/ApplicationID"
1241
+ - $ref: "#/components/parameters/ApplicationEnvironmentID"
1242
+ requestBody:
1243
+ required: true
1244
+ content:
1245
+ application/json:
1246
+ schema:
1247
+ $ref: "#/components/schemas/ApplicationWorkflowInput"
1248
+ responses:
1249
+ "200":
1250
+ description: Application environment with its atomically saved workflow.
1251
+ content:
1252
+ application/json:
1253
+ schema:
1254
+ $ref: "#/components/schemas/ApplicationEnvironmentEnvelope"
1255
+ "400":
1256
+ $ref: "#/components/responses/Error"
1257
+ "403":
1258
+ $ref: "#/components/responses/Error"
1259
+ "404":
1260
+ $ref: "#/components/responses/Error"
1053
1261
  /applications/{applicationID}/services:
1054
1262
  get:
1055
1263
  tags: [Applications]
@@ -1788,6 +1996,142 @@ paths:
1788
1996
  $ref: "#/components/schemas/OperationStatus"
1789
1997
  "404":
1790
1998
  $ref: "#/components/responses/Error"
1999
+ /delivery/environments:
2000
+ get:
2001
+ tags: [Delivery]
2002
+ operationId: listDeliveryEnvironments
2003
+ responses:
2004
+ "200":
2005
+ description: Reusable delivery environments visible to the current principal.
2006
+ content:
2007
+ application/json:
2008
+ schema:
2009
+ $ref: "#/components/schemas/DeliveryEnvironmentListEnvelope"
2010
+ "403":
2011
+ $ref: "#/components/responses/Error"
2012
+ /delivery/manifest-packages:
2013
+ get:
2014
+ tags: [Delivery]
2015
+ operationId: listManifestPackages
2016
+ parameters:
2017
+ - name: applicationId
2018
+ in: query
2019
+ required: false
2020
+ schema: { type: string }
2021
+ - name: serviceId
2022
+ in: query
2023
+ required: false
2024
+ schema: { type: string }
2025
+ - name: clusterId
2026
+ in: query
2027
+ required: false
2028
+ schema: { type: string }
2029
+ - name: namespace
2030
+ in: query
2031
+ required: false
2032
+ schema: { type: string }
2033
+ - name: search
2034
+ in: query
2035
+ required: false
2036
+ schema: { type: string }
2037
+ - name: page
2038
+ in: query
2039
+ required: false
2040
+ schema: { type: integer, minimum: 1 }
2041
+ - name: pageSize
2042
+ in: query
2043
+ required: false
2044
+ schema: { type: integer, minimum: 1, maximum: 200 }
2045
+ - name: limit
2046
+ in: query
2047
+ required: false
2048
+ schema: { type: integer, minimum: 1, maximum: 200 }
2049
+ responses:
2050
+ "200":
2051
+ description: Manifest packages visible to the current principal.
2052
+ content:
2053
+ application/json:
2054
+ schema:
2055
+ $ref: "#/components/schemas/ManifestPackagePageEnvelope"
2056
+ "403":
2057
+ $ref: "#/components/responses/Error"
2058
+ post:
2059
+ tags: [Delivery]
2060
+ operationId: createManifestPackage
2061
+ requestBody:
2062
+ required: true
2063
+ content:
2064
+ application/json:
2065
+ schema:
2066
+ $ref: "#/components/schemas/ManifestPackageInput"
2067
+ responses:
2068
+ "201":
2069
+ description: Created manifest package.
2070
+ content:
2071
+ application/json:
2072
+ schema:
2073
+ $ref: "#/components/schemas/ManifestPackageEnvelope"
2074
+ "400":
2075
+ $ref: "#/components/responses/Error"
2076
+ "403":
2077
+ $ref: "#/components/responses/Error"
2078
+ /delivery/manifest-packages/{manifestPackageID}:
2079
+ get:
2080
+ tags: [Delivery]
2081
+ operationId: getManifestPackage
2082
+ parameters:
2083
+ - $ref: "#/components/parameters/ManifestPackageID"
2084
+ responses:
2085
+ "200":
2086
+ description: Manifest package detail.
2087
+ content:
2088
+ application/json:
2089
+ schema:
2090
+ $ref: "#/components/schemas/ManifestPackageEnvelope"
2091
+ "403":
2092
+ $ref: "#/components/responses/Error"
2093
+ "404":
2094
+ $ref: "#/components/responses/Error"
2095
+ put:
2096
+ tags: [Delivery]
2097
+ operationId: updateManifestPackage
2098
+ parameters:
2099
+ - $ref: "#/components/parameters/ManifestPackageID"
2100
+ requestBody:
2101
+ required: true
2102
+ content:
2103
+ application/json:
2104
+ schema:
2105
+ $ref: "#/components/schemas/ManifestPackageInput"
2106
+ responses:
2107
+ "200":
2108
+ description: Updated manifest package.
2109
+ content:
2110
+ application/json:
2111
+ schema:
2112
+ $ref: "#/components/schemas/ManifestPackageEnvelope"
2113
+ "400":
2114
+ $ref: "#/components/responses/Error"
2115
+ "403":
2116
+ $ref: "#/components/responses/Error"
2117
+ "404":
2118
+ $ref: "#/components/responses/Error"
2119
+ delete:
2120
+ tags: [Delivery]
2121
+ operationId: deleteManifestPackage
2122
+ parameters:
2123
+ - $ref: "#/components/parameters/ManifestPackageID"
2124
+ responses:
2125
+ "200":
2126
+ description: Deleted manifest package.
2127
+ content:
2128
+ application/json:
2129
+ schema:
2130
+ $ref: "#/components/schemas/OperationStatus"
2131
+ "403":
2132
+ $ref: "#/components/responses/Error"
2133
+ "404":
2134
+ $ref: "#/components/responses/Error"
1791
2135
  /delivery/manifest-packages/{manifestPackageID}/source:
1792
2136
  get:
1793
2137
  tags: [Delivery]
@@ -2776,6 +3120,11 @@ paths:
2776
3120
  name: virtualization.vms.create.plan
2777
3121
  riskLevel: analyze
2778
3122
  requiresApproval: false
3123
+ permissionKeys:
3124
+ - ai.gateway.invoke
3125
+ - virtualization.flavors.view
3126
+ - virtualization.images.view
3127
+ - virtualization.vms.view
2779
3128
  requestBody:
2780
3129
  required: true
2781
3130
  content:
@@ -2825,6 +3174,9 @@ paths:
2825
3174
  name: virtualization.vms.create.trigger
2826
3175
  riskLevel: execute
2827
3176
  requiresApproval: true
3177
+ permissionKeys:
3178
+ - ai.gateway.invoke
3179
+ - virtualization.vms.create
2828
3180
  parameters:
2829
3181
  - $ref: "#/components/parameters/IdempotencyKey"
2830
3182
  requestBody:
@@ -3351,6 +3703,10 @@ paths:
3351
3703
  name: docker.hosts.quick_create.plan
3352
3704
  riskLevel: analyze
3353
3705
  requiresApproval: false
3706
+ permissionKeys:
3707
+ - ai.gateway.invoke
3708
+ - docker.hosts.view
3709
+ - virtualization.vms.view
3354
3710
  requestBody:
3355
3711
  required: true
3356
3712
  content:
@@ -3377,6 +3733,10 @@ paths:
3377
3733
  name: docker.hosts.quick_create.trigger
3378
3734
  riskLevel: execute
3379
3735
  requiresApproval: true
3736
+ permissionKeys:
3737
+ - ai.gateway.invoke
3738
+ - docker.hosts.create
3739
+ - virtualization.vms.create
3380
3740
  parameters:
3381
3741
  - $ref: "#/components/parameters/IdempotencyKey"
3382
3742
  requestBody:
@@ -3407,6 +3767,10 @@ paths:
3407
3767
  name: docker.projects.deploy.plan
3408
3768
  riskLevel: analyze
3409
3769
  requiresApproval: false
3770
+ permissionKeys:
3771
+ - ai.gateway.invoke
3772
+ - docker.projects.view
3773
+ - docker.templates.view
3410
3774
  parameters:
3411
3775
  - $ref: "#/components/parameters/DockerProjectID"
3412
3776
  requestBody:
@@ -3437,6 +3801,9 @@ paths:
3437
3801
  name: docker.projects.deploy.trigger
3438
3802
  riskLevel: execute
3439
3803
  requiresApproval: true
3804
+ permissionKeys:
3805
+ - ai.gateway.invoke
3806
+ - docker.projects.deploy
3440
3807
  parameters:
3441
3808
  - $ref: "#/components/parameters/DockerProjectID"
3442
3809
  - $ref: "#/components/parameters/IdempotencyKey"
@@ -4497,6 +4864,10 @@ paths:
4497
4864
  get:
4498
4865
  tags: [Platform]
4499
4866
  operationId: listKubernetesClusters
4867
+ x-soha-permissions:
4868
+ mode: all
4869
+ keys:
4870
+ - platform.clusters.view
4500
4871
  x-soha-implementation-status: implemented
4501
4872
  responses:
4502
4873
  "200":
@@ -4511,6 +4882,10 @@ paths:
4511
4882
  get:
4512
4883
  tags: [Platform]
4513
4884
  operationId: getKubernetesClusterDetail
4885
+ x-soha-permissions:
4886
+ mode: all
4887
+ keys:
4888
+ - platform.clusters.view
4514
4889
  x-soha-implementation-status: implemented
4515
4890
  parameters:
4516
4891
  - $ref: "#/components/parameters/ClusterID"
@@ -4529,6 +4904,10 @@ paths:
4529
4904
  get:
4530
4905
  tags: [Platform]
4531
4906
  operationId: listKubernetesNamespaces
4907
+ x-soha-permissions:
4908
+ mode: all
4909
+ keys:
4910
+ - platform.namespaces.view
4532
4911
  x-soha-implementation-status: implemented
4533
4912
  parameters:
4534
4913
  - $ref: "#/components/parameters/ClusterID"
@@ -4549,6 +4928,10 @@ paths:
4549
4928
  get:
4550
4929
  tags: [Platform]
4551
4930
  operationId: listKubernetesNodes
4931
+ x-soha-permissions:
4932
+ mode: all
4933
+ keys:
4934
+ - platform.nodes.view
4552
4935
  x-soha-implementation-status: implemented
4553
4936
  parameters:
4554
4937
  - $ref: "#/components/parameters/ClusterID"
@@ -4569,11 +4952,19 @@ paths:
4569
4952
  get:
4570
4953
  tags: [Platform]
4571
4954
  operationId: getKubernetesNodeDetail
4955
+ x-soha-permissions:
4956
+ mode: all
4957
+ keys:
4958
+ - platform.nodes.view
4572
4959
  x-soha-implementation-status: implemented
4573
4960
  x-soha-capability:
4574
4961
  name: k8s.nodes.detail
4575
4962
  riskLevel: read
4576
4963
  requiresApproval: false
4964
+ permissionKeys:
4965
+ - ai.gateway.invoke
4966
+ - platform.nodes.view
4967
+ - workspace.resource.view
4577
4968
  parameters:
4578
4969
  - $ref: "#/components/parameters/ClusterID"
4579
4970
  - $ref: "#/components/parameters/KubernetesNodeName"
@@ -4594,6 +4985,10 @@ paths:
4594
4985
  get:
4595
4986
  tags: [Platform]
4596
4987
  operationId: getKubernetesWorkloadOverview
4988
+ x-soha-permissions:
4989
+ mode: all
4990
+ keys:
4991
+ - platform.workloads.overview.view
4597
4992
  x-soha-implementation-status: implemented
4598
4993
  parameters:
4599
4994
  - $ref: "#/components/parameters/ClusterID"
@@ -4615,11 +5010,19 @@ paths:
4615
5010
  get:
4616
5011
  tags: [Platform]
4617
5012
  operationId: listKubernetesPods
5013
+ x-soha-permissions:
5014
+ mode: all
5015
+ keys:
5016
+ - platform.pods.view
4618
5017
  x-soha-implementation-status: implemented
4619
5018
  x-soha-capability:
4620
5019
  name: k8s.pods.list
4621
5020
  riskLevel: read
4622
5021
  requiresApproval: false
5022
+ permissionKeys:
5023
+ - ai.gateway.invoke
5024
+ - platform.pods.view
5025
+ - workspace.resource.view
4623
5026
  parameters:
4624
5027
  - $ref: "#/components/parameters/ClusterID"
4625
5028
  - $ref: "#/components/parameters/KubernetesNamespaceQuery"
@@ -4640,11 +5043,19 @@ paths:
4640
5043
  get:
4641
5044
  tags: [Platform]
4642
5045
  operationId: getKubernetesPodDetail
5046
+ x-soha-permissions:
5047
+ mode: all
5048
+ keys:
5049
+ - platform.pods.view
4643
5050
  x-soha-implementation-status: implemented
4644
5051
  x-soha-capability:
4645
5052
  name: k8s.pods.describe
4646
5053
  riskLevel: read
4647
5054
  requiresApproval: false
5055
+ permissionKeys:
5056
+ - ai.gateway.invoke
5057
+ - platform.pods.view
5058
+ - workspace.resource.view
4648
5059
  parameters:
4649
5060
  - $ref: "#/components/parameters/ClusterID"
4650
5061
  - $ref: "#/components/parameters/KubernetesPodName"
@@ -4666,11 +5077,19 @@ paths:
4666
5077
  get:
4667
5078
  tags: [Platform]
4668
5079
  operationId: listKubernetesDeployments
5080
+ x-soha-permissions:
5081
+ mode: all
5082
+ keys:
5083
+ - platform.deployment.view
4669
5084
  x-soha-implementation-status: implemented
4670
5085
  x-soha-capability:
4671
5086
  name: k8s.deployments.list
4672
5087
  riskLevel: read
4673
5088
  requiresApproval: false
5089
+ permissionKeys:
5090
+ - ai.gateway.invoke
5091
+ - platform.deployment.view
5092
+ - workspace.resource.view
4674
5093
  parameters:
4675
5094
  - $ref: "#/components/parameters/ClusterID"
4676
5095
  - $ref: "#/components/parameters/KubernetesNamespaceQuery"
@@ -4691,6 +5110,10 @@ paths:
4691
5110
  get:
4692
5111
  tags: [Platform]
4693
5112
  operationId: getKubernetesDeploymentDetail
5113
+ x-soha-permissions:
5114
+ mode: all
5115
+ keys:
5116
+ - platform.deployment.view
4694
5117
  x-soha-implementation-status: implemented
4695
5118
  parameters:
4696
5119
  - $ref: "#/components/parameters/ClusterID"
@@ -4713,11 +5136,19 @@ paths:
4713
5136
  get:
4714
5137
  tags: [Platform]
4715
5138
  operationId: getKubernetesPodLogs
5139
+ x-soha-permissions:
5140
+ mode: all
5141
+ keys:
5142
+ - platform.pods.logs
4716
5143
  x-soha-implementation-status: implemented
4717
5144
  x-soha-capability:
4718
5145
  name: k8s.pods.logs
4719
5146
  riskLevel: read
4720
5147
  requiresApproval: false
5148
+ permissionKeys:
5149
+ - ai.gateway.invoke
5150
+ - platform.pods.logs
5151
+ - workspace.resource.view
4721
5152
  parameters:
4722
5153
  - $ref: "#/components/parameters/ClusterID"
4723
5154
  - $ref: "#/components/parameters/KubernetesPodName"
@@ -4748,6 +5179,10 @@ paths:
4748
5179
  get:
4749
5180
  tags: [Platform]
4750
5181
  operationId: getKubernetesPodYaml
5182
+ x-soha-permissions:
5183
+ mode: all
5184
+ keys:
5185
+ - platform.pods.view
4751
5186
  x-soha-implementation-status: implemented
4752
5187
  parameters:
4753
5188
  - $ref: "#/components/parameters/ClusterID"
@@ -4767,6 +5202,10 @@ paths:
4767
5202
  get:
4768
5203
  tags: [Platform]
4769
5204
  operationId: getKubernetesDeploymentYaml
5205
+ x-soha-permissions:
5206
+ mode: all
5207
+ keys:
5208
+ - platform.deployment.view
4770
5209
  x-soha-implementation-status: implemented
4771
5210
  parameters:
4772
5211
  - $ref: "#/components/parameters/ClusterID"
@@ -4786,6 +5225,10 @@ paths:
4786
5225
  get:
4787
5226
  tags: [Platform]
4788
5227
  operationId: getKubernetesDeploymentMetrics
5228
+ x-soha-permissions:
5229
+ mode: all
5230
+ keys:
5231
+ - platform.deployment.view
4789
5232
  x-soha-implementation-status: implemented
4790
5233
  parameters:
4791
5234
  - $ref: "#/components/parameters/ClusterID"
@@ -4808,11 +5251,19 @@ paths:
4808
5251
  get:
4809
5252
  tags: [Platform]
4810
5253
  operationId: getKubernetesDeploymentRolloutStatus
5254
+ x-soha-permissions:
5255
+ mode: all
5256
+ keys:
5257
+ - platform.deployment.view
4811
5258
  x-soha-implementation-status: implemented
4812
5259
  x-soha-capability:
4813
5260
  name: k8s.deployments.rollout_status
4814
5261
  riskLevel: read
4815
5262
  requiresApproval: false
5263
+ permissionKeys:
5264
+ - ai.gateway.invoke
5265
+ - platform.deployment.view
5266
+ - workspace.resource.view
4816
5267
  parameters:
4817
5268
  - $ref: "#/components/parameters/ClusterID"
4818
5269
  - $ref: "#/components/parameters/KubernetesDeploymentName"
@@ -4831,6 +5282,10 @@ paths:
4831
5282
  get:
4832
5283
  tags: [Platform]
4833
5284
  operationId: listKubernetesDeploymentRollouts
5285
+ x-soha-permissions:
5286
+ mode: all
5287
+ keys:
5288
+ - platform.deployment.view
4834
5289
  x-soha-implementation-status: implemented
4835
5290
  parameters:
4836
5291
  - $ref: "#/components/parameters/ClusterID"
@@ -4850,6 +5305,10 @@ paths:
4850
5305
  get:
4851
5306
  tags: [Platform]
4852
5307
  operationId: listKubernetesStatefulSets
5308
+ x-soha-permissions:
5309
+ mode: all
5310
+ keys:
5311
+ - platform.workloads.stateful-sets.view
4853
5312
  x-soha-implementation-status: implemented
4854
5313
  parameters:
4855
5314
  - $ref: "#/components/parameters/ClusterID"
@@ -4868,6 +5327,10 @@ paths:
4868
5327
  get:
4869
5328
  tags: [Platform]
4870
5329
  operationId: getKubernetesStatefulSetDetail
5330
+ x-soha-permissions:
5331
+ mode: all
5332
+ keys:
5333
+ - platform.workloads.stateful-sets.view
4871
5334
  x-soha-implementation-status: implemented
4872
5335
  parameters:
4873
5336
  - $ref: "#/components/parameters/ClusterID"
@@ -4887,6 +5350,10 @@ paths:
4887
5350
  get:
4888
5351
  tags: [Platform]
4889
5352
  operationId: getKubernetesStatefulSetYaml
5353
+ x-soha-permissions:
5354
+ mode: all
5355
+ keys:
5356
+ - platform.workloads.stateful-sets.view
4890
5357
  x-soha-implementation-status: implemented
4891
5358
  parameters:
4892
5359
  - $ref: "#/components/parameters/ClusterID"
@@ -4906,6 +5373,10 @@ paths:
4906
5373
  get:
4907
5374
  tags: [Platform]
4908
5375
  operationId: getKubernetesStatefulSetMetrics
5376
+ x-soha-permissions:
5377
+ mode: all
5378
+ keys:
5379
+ - platform.workloads.stateful-sets.view
4909
5380
  x-soha-implementation-status: implemented
4910
5381
  parameters:
4911
5382
  - $ref: "#/components/parameters/ClusterID"
@@ -4928,6 +5399,10 @@ paths:
4928
5399
  get:
4929
5400
  tags: [Platform]
4930
5401
  operationId: listKubernetesDaemonSets
5402
+ x-soha-permissions:
5403
+ mode: all
5404
+ keys:
5405
+ - platform.workloads.daemon-sets.view
4931
5406
  x-soha-implementation-status: implemented
4932
5407
  parameters:
4933
5408
  - $ref: "#/components/parameters/ClusterID"
@@ -4946,6 +5421,10 @@ paths:
4946
5421
  get:
4947
5422
  tags: [Platform]
4948
5423
  operationId: getKubernetesDaemonSetDetail
5424
+ x-soha-permissions:
5425
+ mode: all
5426
+ keys:
5427
+ - platform.workloads.daemon-sets.view
4949
5428
  x-soha-implementation-status: implemented
4950
5429
  parameters:
4951
5430
  - $ref: "#/components/parameters/ClusterID"
@@ -4965,6 +5444,10 @@ paths:
4965
5444
  get:
4966
5445
  tags: [Platform]
4967
5446
  operationId: getKubernetesDaemonSetYaml
5447
+ x-soha-permissions:
5448
+ mode: all
5449
+ keys:
5450
+ - platform.workloads.daemon-sets.view
4968
5451
  x-soha-implementation-status: implemented
4969
5452
  parameters:
4970
5453
  - $ref: "#/components/parameters/ClusterID"
@@ -4984,6 +5467,10 @@ paths:
4984
5467
  get:
4985
5468
  tags: [Platform]
4986
5469
  operationId: getKubernetesDaemonSetMetrics
5470
+ x-soha-permissions:
5471
+ mode: all
5472
+ keys:
5473
+ - platform.workloads.daemon-sets.view
4987
5474
  x-soha-implementation-status: implemented
4988
5475
  parameters:
4989
5476
  - $ref: "#/components/parameters/ClusterID"
@@ -5006,6 +5493,10 @@ paths:
5006
5493
  get:
5007
5494
  tags: [Platform]
5008
5495
  operationId: listKubernetesJobs
5496
+ x-soha-permissions:
5497
+ mode: all
5498
+ keys:
5499
+ - platform.workloads.jobs.view
5009
5500
  x-soha-implementation-status: implemented
5010
5501
  parameters:
5011
5502
  - $ref: "#/components/parameters/ClusterID"
@@ -5024,6 +5515,10 @@ paths:
5024
5515
  get:
5025
5516
  tags: [Platform]
5026
5517
  operationId: getKubernetesJobDetail
5518
+ x-soha-permissions:
5519
+ mode: all
5520
+ keys:
5521
+ - platform.workloads.jobs.view
5027
5522
  x-soha-implementation-status: implemented
5028
5523
  parameters:
5029
5524
  - $ref: "#/components/parameters/ClusterID"
@@ -5043,6 +5538,10 @@ paths:
5043
5538
  get:
5044
5539
  tags: [Platform]
5045
5540
  operationId: getKubernetesJobYaml
5541
+ x-soha-permissions:
5542
+ mode: all
5543
+ keys:
5544
+ - platform.workloads.jobs.view
5046
5545
  x-soha-implementation-status: implemented
5047
5546
  parameters:
5048
5547
  - $ref: "#/components/parameters/ClusterID"
@@ -5062,6 +5561,10 @@ paths:
5062
5561
  get:
5063
5562
  tags: [Platform]
5064
5563
  operationId: listKubernetesCronJobs
5564
+ x-soha-permissions:
5565
+ mode: all
5566
+ keys:
5567
+ - platform.workloads.cron-jobs.view
5065
5568
  x-soha-implementation-status: implemented
5066
5569
  parameters:
5067
5570
  - $ref: "#/components/parameters/ClusterID"
@@ -5080,6 +5583,10 @@ paths:
5080
5583
  get:
5081
5584
  tags: [Platform]
5082
5585
  operationId: getKubernetesCronJobDetail
5586
+ x-soha-permissions:
5587
+ mode: all
5588
+ keys:
5589
+ - platform.workloads.cron-jobs.view
5083
5590
  x-soha-implementation-status: implemented
5084
5591
  parameters:
5085
5592
  - $ref: "#/components/parameters/ClusterID"
@@ -5099,6 +5606,10 @@ paths:
5099
5606
  get:
5100
5607
  tags: [Platform]
5101
5608
  operationId: getKubernetesCronJobYaml
5609
+ x-soha-permissions:
5610
+ mode: all
5611
+ keys:
5612
+ - platform.workloads.cron-jobs.view
5102
5613
  x-soha-implementation-status: implemented
5103
5614
  parameters:
5104
5615
  - $ref: "#/components/parameters/ClusterID"
@@ -5118,6 +5629,10 @@ paths:
5118
5629
  get:
5119
5630
  tags: [Platform]
5120
5631
  operationId: listKubernetesReplicaSets
5632
+ x-soha-permissions:
5633
+ mode: all
5634
+ keys:
5635
+ - platform.workloads.replica-sets.view
5121
5636
  x-soha-implementation-status: implemented
5122
5637
  parameters:
5123
5638
  - $ref: "#/components/parameters/ClusterID"
@@ -5136,6 +5651,10 @@ paths:
5136
5651
  get:
5137
5652
  tags: [Platform]
5138
5653
  operationId: getKubernetesReplicaSetDetail
5654
+ x-soha-permissions:
5655
+ mode: all
5656
+ keys:
5657
+ - platform.workloads.replica-sets.view
5139
5658
  x-soha-implementation-status: implemented
5140
5659
  parameters:
5141
5660
  - $ref: "#/components/parameters/ClusterID"
@@ -5155,6 +5674,10 @@ paths:
5155
5674
  get:
5156
5675
  tags: [Platform]
5157
5676
  operationId: getKubernetesReplicaSetYaml
5677
+ x-soha-permissions:
5678
+ mode: all
5679
+ keys:
5680
+ - platform.workloads.replica-sets.view
5158
5681
  x-soha-implementation-status: implemented
5159
5682
  parameters:
5160
5683
  - $ref: "#/components/parameters/ClusterID"
@@ -5174,6 +5697,10 @@ paths:
5174
5697
  get:
5175
5698
  tags: [Platform]
5176
5699
  operationId: listKubernetesReplicationControllers
5700
+ x-soha-permissions:
5701
+ mode: all
5702
+ keys:
5703
+ - platform.workloads.replication-controllers.view
5177
5704
  x-soha-implementation-status: implemented
5178
5705
  parameters:
5179
5706
  - $ref: "#/components/parameters/ClusterID"
@@ -5192,6 +5719,10 @@ paths:
5192
5719
  get:
5193
5720
  tags: [Platform]
5194
5721
  operationId: getKubernetesReplicationControllerDetail
5722
+ x-soha-permissions:
5723
+ mode: all
5724
+ keys:
5725
+ - platform.workloads.replication-controllers.view
5195
5726
  x-soha-implementation-status: implemented
5196
5727
  parameters:
5197
5728
  - $ref: "#/components/parameters/ClusterID"
@@ -5211,6 +5742,10 @@ paths:
5211
5742
  get:
5212
5743
  tags: [Platform]
5213
5744
  operationId: getKubernetesReplicationControllerYaml
5745
+ x-soha-permissions:
5746
+ mode: all
5747
+ keys:
5748
+ - platform.workloads.replication-controllers.view
5214
5749
  x-soha-implementation-status: implemented
5215
5750
  parameters:
5216
5751
  - $ref: "#/components/parameters/ClusterID"
@@ -5230,6 +5765,10 @@ paths:
5230
5765
  get:
5231
5766
  tags: [Platform]
5232
5767
  operationId: listKubernetesConfigMaps
5768
+ x-soha-permissions:
5769
+ mode: all
5770
+ keys:
5771
+ - platform.configuration.config-maps.view
5233
5772
  x-soha-implementation-status: implemented
5234
5773
  parameters:
5235
5774
  - $ref: "#/components/parameters/ClusterID"
@@ -5251,6 +5790,10 @@ paths:
5251
5790
  get:
5252
5791
  tags: [Platform]
5253
5792
  operationId: getKubernetesConfigMapDetail
5793
+ x-soha-permissions:
5794
+ mode: all
5795
+ keys:
5796
+ - platform.configuration.config-maps.view
5254
5797
  x-soha-implementation-status: implemented
5255
5798
  parameters:
5256
5799
  - $ref: "#/components/parameters/ClusterID"
@@ -5273,6 +5816,10 @@ paths:
5273
5816
  get:
5274
5817
  tags: [Platform]
5275
5818
  operationId: listKubernetesSecretMetadata
5819
+ x-soha-permissions:
5820
+ mode: all
5821
+ keys:
5822
+ - platform.configuration.secrets.view
5276
5823
  x-soha-implementation-status: implemented
5277
5824
  parameters:
5278
5825
  - $ref: "#/components/parameters/ClusterID"
@@ -5294,6 +5841,10 @@ paths:
5294
5841
  get:
5295
5842
  tags: [Platform]
5296
5843
  operationId: listKubernetesConfigMapReferences
5844
+ x-soha-permissions:
5845
+ mode: all
5846
+ keys:
5847
+ - platform.configuration.config-maps.view
5297
5848
  x-soha-implementation-status: implemented
5298
5849
  parameters:
5299
5850
  - $ref: "#/components/parameters/ClusterID"
@@ -5312,6 +5863,10 @@ paths:
5312
5863
  get:
5313
5864
  tags: [Platform]
5314
5865
  operationId: listKubernetesSecretReferences
5866
+ x-soha-permissions:
5867
+ mode: all
5868
+ keys:
5869
+ - platform.configuration.secrets.view
5315
5870
  x-soha-implementation-status: implemented
5316
5871
  parameters:
5317
5872
  - $ref: "#/components/parameters/ClusterID"
@@ -5330,6 +5885,10 @@ paths:
5330
5885
  get:
5331
5886
  tags: [Platform]
5332
5887
  operationId: listKubernetesHorizontalPodAutoscalers
5888
+ x-soha-permissions:
5889
+ mode: all
5890
+ keys:
5891
+ - platform.configuration.horizontal-pod-autoscalers.view
5333
5892
  x-soha-implementation-status: implemented
5334
5893
  parameters:
5335
5894
  - $ref: "#/components/parameters/ClusterID"
@@ -5347,6 +5906,10 @@ paths:
5347
5906
  get:
5348
5907
  tags: [Platform]
5349
5908
  operationId: getKubernetesHorizontalPodAutoscalerDetail
5909
+ x-soha-permissions:
5910
+ mode: all
5911
+ keys:
5912
+ - platform.configuration.horizontal-pod-autoscalers.view
5350
5913
  x-soha-implementation-status: implemented
5351
5914
  parameters:
5352
5915
  - $ref: "#/components/parameters/ClusterID"
@@ -5365,6 +5928,10 @@ paths:
5365
5928
  get:
5366
5929
  tags: [Platform]
5367
5930
  operationId: listKubernetesPodDisruptionBudgets
5931
+ x-soha-permissions:
5932
+ mode: all
5933
+ keys:
5934
+ - platform.configuration.pod-disruption-budgets.view
5368
5935
  x-soha-implementation-status: implemented
5369
5936
  parameters:
5370
5937
  - $ref: "#/components/parameters/ClusterID"
@@ -5382,6 +5949,10 @@ paths:
5382
5949
  get:
5383
5950
  tags: [Platform]
5384
5951
  operationId: getKubernetesPodDisruptionBudgetDetail
5952
+ x-soha-permissions:
5953
+ mode: all
5954
+ keys:
5955
+ - platform.configuration.pod-disruption-budgets.view
5385
5956
  x-soha-implementation-status: implemented
5386
5957
  parameters:
5387
5958
  - $ref: "#/components/parameters/ClusterID"
@@ -5400,6 +5971,10 @@ paths:
5400
5971
  get:
5401
5972
  tags: [Platform]
5402
5973
  operationId: listKubernetesPriorityClasses
5974
+ x-soha-permissions:
5975
+ mode: all
5976
+ keys:
5977
+ - platform.configuration.priority-classes.view
5403
5978
  x-soha-implementation-status: implemented
5404
5979
  parameters:
5405
5980
  - $ref: "#/components/parameters/ClusterID"
@@ -5416,6 +5991,10 @@ paths:
5416
5991
  get:
5417
5992
  tags: [Platform]
5418
5993
  operationId: listKubernetesRuntimeClasses
5994
+ x-soha-permissions:
5995
+ mode: all
5996
+ keys:
5997
+ - platform.configuration.runtime-classes.view
5419
5998
  x-soha-implementation-status: implemented
5420
5999
  parameters:
5421
6000
  - $ref: "#/components/parameters/ClusterID"
@@ -5432,6 +6011,10 @@ paths:
5432
6011
  get:
5433
6012
  tags: [Platform]
5434
6013
  operationId: listKubernetesMutatingWebhookConfigurations
6014
+ x-soha-permissions:
6015
+ mode: all
6016
+ keys:
6017
+ - platform.configuration.mutating-webhook-configurations.view
5435
6018
  x-soha-implementation-status: implemented
5436
6019
  parameters:
5437
6020
  - $ref: "#/components/parameters/ClusterID"
@@ -5448,6 +6031,10 @@ paths:
5448
6031
  get:
5449
6032
  tags: [Platform]
5450
6033
  operationId: getKubernetesMutatingWebhookConfigurationDetail
6034
+ x-soha-permissions:
6035
+ mode: all
6036
+ keys:
6037
+ - platform.configuration.mutating-webhook-configurations.view
5451
6038
  x-soha-implementation-status: implemented
5452
6039
  parameters:
5453
6040
  - $ref: "#/components/parameters/ClusterID"
@@ -5465,6 +6052,10 @@ paths:
5465
6052
  get:
5466
6053
  tags: [Platform]
5467
6054
  operationId: listKubernetesValidatingWebhookConfigurations
6055
+ x-soha-permissions:
6056
+ mode: all
6057
+ keys:
6058
+ - platform.configuration.validating-webhook-configurations.view
5468
6059
  x-soha-implementation-status: implemented
5469
6060
  parameters:
5470
6061
  - $ref: "#/components/parameters/ClusterID"
@@ -5481,6 +6072,10 @@ paths:
5481
6072
  get:
5482
6073
  tags: [Platform]
5483
6074
  operationId: getKubernetesValidatingWebhookConfigurationDetail
6075
+ x-soha-permissions:
6076
+ mode: all
6077
+ keys:
6078
+ - platform.configuration.validating-webhook-configurations.view
5484
6079
  x-soha-implementation-status: implemented
5485
6080
  parameters:
5486
6081
  - $ref: "#/components/parameters/ClusterID"
@@ -5498,6 +6093,10 @@ paths:
5498
6093
  get:
5499
6094
  tags: [Platform]
5500
6095
  operationId: listKubernetesResourceQuotas
6096
+ x-soha-permissions:
6097
+ mode: all
6098
+ keys:
6099
+ - platform.configuration.resource-quotas.view
5501
6100
  x-soha-implementation-status: implemented
5502
6101
  parameters:
5503
6102
  - $ref: "#/components/parameters/ClusterID"
@@ -5515,6 +6114,10 @@ paths:
5515
6114
  get:
5516
6115
  tags: [Platform]
5517
6116
  operationId: getKubernetesResourceQuotaDetail
6117
+ x-soha-permissions:
6118
+ mode: all
6119
+ keys:
6120
+ - platform.configuration.resource-quotas.view
5518
6121
  x-soha-implementation-status: implemented
5519
6122
  parameters:
5520
6123
  - $ref: "#/components/parameters/ClusterID"
@@ -5533,6 +6136,10 @@ paths:
5533
6136
  get:
5534
6137
  tags: [Platform]
5535
6138
  operationId: listKubernetesLimitRanges
6139
+ x-soha-permissions:
6140
+ mode: all
6141
+ keys:
6142
+ - platform.configuration.limit-ranges.view
5536
6143
  x-soha-implementation-status: implemented
5537
6144
  parameters:
5538
6145
  - $ref: "#/components/parameters/ClusterID"
@@ -5550,6 +6157,10 @@ paths:
5550
6157
  get:
5551
6158
  tags: [Platform]
5552
6159
  operationId: getKubernetesLimitRangeDetail
6160
+ x-soha-permissions:
6161
+ mode: all
6162
+ keys:
6163
+ - platform.configuration.limit-ranges.view
5553
6164
  x-soha-implementation-status: implemented
5554
6165
  parameters:
5555
6166
  - $ref: "#/components/parameters/ClusterID"
@@ -5568,6 +6179,10 @@ paths:
5568
6179
  get:
5569
6180
  tags: [Platform]
5570
6181
  operationId: listKubernetesLeases
6182
+ x-soha-permissions:
6183
+ mode: all
6184
+ keys:
6185
+ - platform.configuration.leases.view
5571
6186
  x-soha-implementation-status: implemented
5572
6187
  parameters:
5573
6188
  - $ref: "#/components/parameters/ClusterID"
@@ -5585,6 +6200,10 @@ paths:
5585
6200
  get:
5586
6201
  tags: [Platform]
5587
6202
  operationId: listKubernetesServiceAccounts
6203
+ x-soha-permissions:
6204
+ mode: all
6205
+ keys:
6206
+ - platform.access-control.service-accounts.view
5588
6207
  x-soha-implementation-status: implemented
5589
6208
  parameters:
5590
6209
  - $ref: "#/components/parameters/ClusterID"
@@ -5602,6 +6221,10 @@ paths:
5602
6221
  get:
5603
6222
  tags: [Platform]
5604
6223
  operationId: getKubernetesServiceAccountDetail
6224
+ x-soha-permissions:
6225
+ mode: all
6226
+ keys:
6227
+ - platform.access-control.service-accounts.view
5605
6228
  x-soha-implementation-status: implemented
5606
6229
  parameters:
5607
6230
  - $ref: "#/components/parameters/ClusterID"
@@ -5620,6 +6243,10 @@ paths:
5620
6243
  get:
5621
6244
  tags: [Platform]
5622
6245
  operationId: listKubernetesRoles
6246
+ x-soha-permissions:
6247
+ mode: all
6248
+ keys:
6249
+ - platform.access-control.roles.view
5623
6250
  x-soha-implementation-status: implemented
5624
6251
  parameters:
5625
6252
  - $ref: "#/components/parameters/ClusterID"
@@ -5637,6 +6264,10 @@ paths:
5637
6264
  get:
5638
6265
  tags: [Platform]
5639
6266
  operationId: getKubernetesRoleDetail
6267
+ x-soha-permissions:
6268
+ mode: all
6269
+ keys:
6270
+ - platform.access-control.roles.view
5640
6271
  x-soha-implementation-status: implemented
5641
6272
  parameters:
5642
6273
  - $ref: "#/components/parameters/ClusterID"
@@ -5655,6 +6286,10 @@ paths:
5655
6286
  get:
5656
6287
  tags: [Platform]
5657
6288
  operationId: listKubernetesRoleBindings
6289
+ x-soha-permissions:
6290
+ mode: all
6291
+ keys:
6292
+ - platform.access-control.role-bindings.view
5658
6293
  x-soha-implementation-status: implemented
5659
6294
  parameters:
5660
6295
  - $ref: "#/components/parameters/ClusterID"
@@ -5676,6 +6311,10 @@ paths:
5676
6311
  get:
5677
6312
  tags: [Platform]
5678
6313
  operationId: getKubernetesRoleBindingDetail
6314
+ x-soha-permissions:
6315
+ mode: all
6316
+ keys:
6317
+ - platform.access-control.role-bindings.view
5679
6318
  x-soha-implementation-status: implemented
5680
6319
  parameters:
5681
6320
  - $ref: "#/components/parameters/ClusterID"
@@ -5694,6 +6333,10 @@ paths:
5694
6333
  get:
5695
6334
  tags: [Platform]
5696
6335
  operationId: listKubernetesClusterRoles
6336
+ x-soha-permissions:
6337
+ mode: all
6338
+ keys:
6339
+ - platform.access-control.cluster-roles.view
5697
6340
  x-soha-implementation-status: implemented
5698
6341
  parameters:
5699
6342
  - $ref: "#/components/parameters/ClusterID"
@@ -5710,6 +6353,10 @@ paths:
5710
6353
  get:
5711
6354
  tags: [Platform]
5712
6355
  operationId: getKubernetesClusterRoleDetail
6356
+ x-soha-permissions:
6357
+ mode: all
6358
+ keys:
6359
+ - platform.access-control.cluster-roles.view
5713
6360
  x-soha-implementation-status: implemented
5714
6361
  parameters:
5715
6362
  - $ref: "#/components/parameters/ClusterID"
@@ -5727,6 +6374,10 @@ paths:
5727
6374
  get:
5728
6375
  tags: [Platform]
5729
6376
  operationId: listKubernetesClusterRoleBindings
6377
+ x-soha-permissions:
6378
+ mode: all
6379
+ keys:
6380
+ - platform.access-control.cluster-role-bindings.view
5730
6381
  x-soha-implementation-status: implemented
5731
6382
  parameters:
5732
6383
  - $ref: "#/components/parameters/ClusterID"
@@ -5747,6 +6398,10 @@ paths:
5747
6398
  get:
5748
6399
  tags: [Platform]
5749
6400
  operationId: getKubernetesClusterRoleBindingDetail
6401
+ x-soha-permissions:
6402
+ mode: all
6403
+ keys:
6404
+ - platform.access-control.cluster-role-bindings.view
5750
6405
  x-soha-implementation-status: implemented
5751
6406
  parameters:
5752
6407
  - $ref: "#/components/parameters/ClusterID"
@@ -5764,6 +6419,10 @@ paths:
5764
6419
  get:
5765
6420
  tags: [Platform]
5766
6421
  operationId: listKubernetesPersistentVolumeClaims
6422
+ x-soha-permissions:
6423
+ mode: all
6424
+ keys:
6425
+ - platform.storage.persistent-volume-claims.view
5767
6426
  x-soha-implementation-status: implemented
5768
6427
  parameters:
5769
6428
  - $ref: "#/components/parameters/ClusterID"
@@ -5781,6 +6440,10 @@ paths:
5781
6440
  get:
5782
6441
  tags: [Platform]
5783
6442
  operationId: getKubernetesPersistentVolumeClaimDetail
6443
+ x-soha-permissions:
6444
+ mode: all
6445
+ keys:
6446
+ - platform.storage.persistent-volume-claims.view
5784
6447
  x-soha-implementation-status: implemented
5785
6448
  parameters:
5786
6449
  - $ref: "#/components/parameters/ClusterID"
@@ -5799,6 +6462,10 @@ paths:
5799
6462
  get:
5800
6463
  tags: [Platform]
5801
6464
  operationId: listKubernetesPersistentVolumes
6465
+ x-soha-permissions:
6466
+ mode: all
6467
+ keys:
6468
+ - platform.storage.persistent-volumes.view
5802
6469
  x-soha-implementation-status: implemented
5803
6470
  parameters:
5804
6471
  - $ref: "#/components/parameters/ClusterID"
@@ -5815,6 +6482,10 @@ paths:
5815
6482
  get:
5816
6483
  tags: [Platform]
5817
6484
  operationId: getKubernetesPersistentVolumeDetail
6485
+ x-soha-permissions:
6486
+ mode: all
6487
+ keys:
6488
+ - platform.storage.persistent-volumes.view
5818
6489
  x-soha-implementation-status: implemented
5819
6490
  parameters:
5820
6491
  - $ref: "#/components/parameters/ClusterID"
@@ -5832,6 +6503,10 @@ paths:
5832
6503
  get:
5833
6504
  tags: [Platform]
5834
6505
  operationId: listKubernetesStorageClasses
6506
+ x-soha-permissions:
6507
+ mode: all
6508
+ keys:
6509
+ - platform.storage.storage-classes.view
5835
6510
  x-soha-implementation-status: implemented
5836
6511
  parameters:
5837
6512
  - $ref: "#/components/parameters/ClusterID"
@@ -5848,6 +6523,10 @@ paths:
5848
6523
  get:
5849
6524
  tags: [Platform]
5850
6525
  operationId: getKubernetesStorageClassDetail
6526
+ x-soha-permissions:
6527
+ mode: all
6528
+ keys:
6529
+ - platform.storage.storage-classes.view
5851
6530
  x-soha-implementation-status: implemented
5852
6531
  parameters:
5853
6532
  - $ref: "#/components/parameters/ClusterID"
@@ -5865,11 +6544,19 @@ paths:
5865
6544
  get:
5866
6545
  tags: [Platform]
5867
6546
  operationId: listKubernetesServices
6547
+ x-soha-permissions:
6548
+ mode: all
6549
+ keys:
6550
+ - platform.network.services.view
5868
6551
  x-soha-implementation-status: implemented
5869
6552
  x-soha-capability:
5870
6553
  name: k8s.services.list
5871
6554
  riskLevel: read
5872
6555
  requiresApproval: false
6556
+ permissionKeys:
6557
+ - ai.gateway.invoke
6558
+ - platform.network.services.view
6559
+ - workspace.resource.view
5873
6560
  parameters: [{ $ref: "#/components/parameters/ClusterID" }, { $ref: "#/components/parameters/KubernetesNamespaceQuery" }]
5874
6561
  responses:
5875
6562
  "200": { description: Kubernetes Services visible in the selected scope., content: { application/json: { schema: { $ref: "#/components/schemas/KubernetesServiceListEnvelope" } } } }
@@ -5880,6 +6567,10 @@ paths:
5880
6567
  get:
5881
6568
  tags: [Platform]
5882
6569
  operationId: getKubernetesServiceDetail
6570
+ x-soha-permissions:
6571
+ mode: all
6572
+ keys:
6573
+ - platform.network.services.view
5883
6574
  x-soha-implementation-status: implemented
5884
6575
  parameters: [{ $ref: "#/components/parameters/ClusterID" }, { $ref: "#/components/parameters/KubernetesServiceName" }, { $ref: "#/components/parameters/KubernetesNamespaceQuery" }]
5885
6576
  responses:
@@ -5891,6 +6582,10 @@ paths:
5891
6582
  get:
5892
6583
  tags: [Platform]
5893
6584
  operationId: getKubernetesNetworkTopology
6585
+ x-soha-permissions:
6586
+ mode: all
6587
+ keys:
6588
+ - platform.network.topology.view
5894
6589
  x-soha-implementation-status: implemented
5895
6590
  parameters: [{ $ref: "#/components/parameters/ClusterID" }, { $ref: "#/components/parameters/KubernetesNamespaceQuery" }]
5896
6591
  responses:
@@ -5902,6 +6597,10 @@ paths:
5902
6597
  get:
5903
6598
  tags: [Platform]
5904
6599
  operationId: getKubernetesServiceMetrics
6600
+ x-soha-permissions:
6601
+ mode: all
6602
+ keys:
6603
+ - platform.network.services.view
5905
6604
  x-soha-implementation-status: implemented
5906
6605
  parameters:
5907
6606
  - $ref: "#/components/parameters/ClusterID"
@@ -5918,6 +6617,10 @@ paths:
5918
6617
  get:
5919
6618
  tags: [Platform]
5920
6619
  operationId: listKubernetesIngresses
6620
+ x-soha-permissions:
6621
+ mode: all
6622
+ keys:
6623
+ - platform.network.ingresses.view
5921
6624
  x-soha-implementation-status: implemented
5922
6625
  parameters: [{ $ref: "#/components/parameters/ClusterID" }, { $ref: "#/components/parameters/KubernetesNamespaceQuery" }]
5923
6626
  responses:
@@ -5929,6 +6632,10 @@ paths:
5929
6632
  get:
5930
6633
  tags: [Platform]
5931
6634
  operationId: getKubernetesIngressDetail
6635
+ x-soha-permissions:
6636
+ mode: all
6637
+ keys:
6638
+ - platform.network.ingresses.view
5932
6639
  x-soha-implementation-status: implemented
5933
6640
  parameters: [{ $ref: "#/components/parameters/ClusterID" }, { $ref: "#/components/parameters/KubernetesResourceName" }, { $ref: "#/components/parameters/KubernetesNamespaceQuery" }]
5934
6641
  responses:
@@ -5940,6 +6647,10 @@ paths:
5940
6647
  get:
5941
6648
  tags: [Platform]
5942
6649
  operationId: listKubernetesEndpointSlices
6650
+ x-soha-permissions:
6651
+ mode: all
6652
+ keys:
6653
+ - platform.network.endpoint-slices.view
5943
6654
  x-soha-implementation-status: implemented
5944
6655
  parameters: [{ $ref: "#/components/parameters/ClusterID" }, { $ref: "#/components/parameters/KubernetesNamespaceQuery" }]
5945
6656
  responses:
@@ -5951,6 +6662,10 @@ paths:
5951
6662
  get:
5952
6663
  tags: [Platform]
5953
6664
  operationId: getKubernetesEndpointSliceDetail
6665
+ x-soha-permissions:
6666
+ mode: all
6667
+ keys:
6668
+ - platform.network.endpoint-slices.view
5954
6669
  x-soha-implementation-status: implemented
5955
6670
  parameters: [{ $ref: "#/components/parameters/ClusterID" }, { $ref: "#/components/parameters/KubernetesResourceName" }, { $ref: "#/components/parameters/KubernetesNamespaceQuery" }]
5956
6671
  responses:
@@ -5962,6 +6677,10 @@ paths:
5962
6677
  get:
5963
6678
  tags: [Platform]
5964
6679
  operationId: listKubernetesNetworkPolicies
6680
+ x-soha-permissions:
6681
+ mode: all
6682
+ keys:
6683
+ - platform.network.network-policies.view
5965
6684
  x-soha-implementation-status: implemented
5966
6685
  parameters: [{ $ref: "#/components/parameters/ClusterID" }, { $ref: "#/components/parameters/KubernetesNamespaceQuery" }]
5967
6686
  responses:
@@ -5973,6 +6692,10 @@ paths:
5973
6692
  get:
5974
6693
  tags: [Platform]
5975
6694
  operationId: getKubernetesNetworkPolicyDetail
6695
+ x-soha-permissions:
6696
+ mode: all
6697
+ keys:
6698
+ - platform.network.network-policies.view
5976
6699
  x-soha-implementation-status: implemented
5977
6700
  parameters: [{ $ref: "#/components/parameters/ClusterID" }, { $ref: "#/components/parameters/KubernetesResourceName" }, { $ref: "#/components/parameters/KubernetesNamespaceQuery" }]
5978
6701
  responses:
@@ -5984,6 +6707,10 @@ paths:
5984
6707
  get:
5985
6708
  tags: [Platform]
5986
6709
  operationId: listKubernetesGatewayClasses
6710
+ x-soha-permissions:
6711
+ mode: all
6712
+ keys:
6713
+ - platform.network.gateway-classes.view
5987
6714
  x-soha-implementation-status: implemented
5988
6715
  parameters: [{ $ref: "#/components/parameters/ClusterID" }]
5989
6716
  responses:
@@ -5995,6 +6722,10 @@ paths:
5995
6722
  get:
5996
6723
  tags: [Platform]
5997
6724
  operationId: getKubernetesGatewayClassDetail
6725
+ x-soha-permissions:
6726
+ mode: all
6727
+ keys:
6728
+ - platform.network.gateway-classes.view
5998
6729
  x-soha-implementation-status: implemented
5999
6730
  parameters: [{ $ref: "#/components/parameters/ClusterID" }, { $ref: "#/components/parameters/KubernetesResourceName" }]
6000
6731
  responses:
@@ -6006,6 +6737,10 @@ paths:
6006
6737
  get:
6007
6738
  tags: [Platform]
6008
6739
  operationId: listKubernetesGateways
6740
+ x-soha-permissions:
6741
+ mode: all
6742
+ keys:
6743
+ - platform.network.gateways.view
6009
6744
  x-soha-implementation-status: implemented
6010
6745
  parameters: [{ $ref: "#/components/parameters/ClusterID" }, { $ref: "#/components/parameters/KubernetesNamespaceQuery" }]
6011
6746
  responses:
@@ -6017,6 +6752,10 @@ paths:
6017
6752
  get:
6018
6753
  tags: [Platform]
6019
6754
  operationId: getKubernetesGatewayDetail
6755
+ x-soha-permissions:
6756
+ mode: all
6757
+ keys:
6758
+ - platform.network.gateways.view
6020
6759
  x-soha-implementation-status: implemented
6021
6760
  parameters: [{ $ref: "#/components/parameters/ClusterID" }, { $ref: "#/components/parameters/KubernetesResourceName" }, { $ref: "#/components/parameters/KubernetesNamespaceQuery" }]
6022
6761
  responses:
@@ -6028,6 +6767,10 @@ paths:
6028
6767
  get:
6029
6768
  tags: [Platform]
6030
6769
  operationId: listKubernetesHTTPRoutes
6770
+ x-soha-permissions:
6771
+ mode: all
6772
+ keys:
6773
+ - platform.network.http-routes.view
6031
6774
  x-soha-implementation-status: implemented
6032
6775
  parameters: [{ $ref: "#/components/parameters/ClusterID" }, { $ref: "#/components/parameters/KubernetesNamespaceQuery" }]
6033
6776
  responses:
@@ -6039,6 +6782,10 @@ paths:
6039
6782
  get:
6040
6783
  tags: [Platform]
6041
6784
  operationId: getKubernetesHTTPRouteDetail
6785
+ x-soha-permissions:
6786
+ mode: all
6787
+ keys:
6788
+ - platform.network.http-routes.view
6042
6789
  x-soha-implementation-status: implemented
6043
6790
  parameters: [{ $ref: "#/components/parameters/ClusterID" }, { $ref: "#/components/parameters/KubernetesResourceName" }, { $ref: "#/components/parameters/KubernetesNamespaceQuery" }]
6044
6791
  responses:
@@ -6050,6 +6797,10 @@ paths:
6050
6797
  get:
6051
6798
  tags: [Platform]
6052
6799
  operationId: listKubernetesBackendTLSPolicies
6800
+ x-soha-permissions:
6801
+ mode: all
6802
+ keys:
6803
+ - platform.network.backend-tls-policies.view
6053
6804
  x-soha-implementation-status: implemented
6054
6805
  parameters: [{ $ref: "#/components/parameters/ClusterID" }, { $ref: "#/components/parameters/KubernetesNamespaceQuery" }]
6055
6806
  responses:
@@ -6061,6 +6812,10 @@ paths:
6061
6812
  get:
6062
6813
  tags: [Platform]
6063
6814
  operationId: getKubernetesBackendTLSPolicyDetail
6815
+ x-soha-permissions:
6816
+ mode: all
6817
+ keys:
6818
+ - platform.network.backend-tls-policies.view
6064
6819
  x-soha-implementation-status: implemented
6065
6820
  parameters: [{ $ref: "#/components/parameters/ClusterID" }, { $ref: "#/components/parameters/KubernetesResourceName" }, { $ref: "#/components/parameters/KubernetesNamespaceQuery" }]
6066
6821
  responses:
@@ -6072,6 +6827,10 @@ paths:
6072
6827
  get:
6073
6828
  tags: [Platform]
6074
6829
  operationId: listKubernetesGRPCRoutes
6830
+ x-soha-permissions:
6831
+ mode: all
6832
+ keys:
6833
+ - platform.network.grpc-routes.view
6075
6834
  x-soha-implementation-status: implemented
6076
6835
  parameters: [{ $ref: "#/components/parameters/ClusterID" }, { $ref: "#/components/parameters/KubernetesNamespaceQuery" }]
6077
6836
  responses:
@@ -6083,6 +6842,10 @@ paths:
6083
6842
  get:
6084
6843
  tags: [Platform]
6085
6844
  operationId: getKubernetesGRPCRouteDetail
6845
+ x-soha-permissions:
6846
+ mode: all
6847
+ keys:
6848
+ - platform.network.grpc-routes.view
6086
6849
  x-soha-implementation-status: implemented
6087
6850
  parameters: [{ $ref: "#/components/parameters/ClusterID" }, { $ref: "#/components/parameters/KubernetesResourceName" }, { $ref: "#/components/parameters/KubernetesNamespaceQuery" }]
6088
6851
  responses:
@@ -6094,6 +6857,10 @@ paths:
6094
6857
  get:
6095
6858
  tags: [Platform]
6096
6859
  operationId: listKubernetesReferenceGrants
6860
+ x-soha-permissions:
6861
+ mode: all
6862
+ keys:
6863
+ - platform.network.reference-grants.view
6097
6864
  x-soha-implementation-status: implemented
6098
6865
  parameters: [{ $ref: "#/components/parameters/ClusterID" }, { $ref: "#/components/parameters/KubernetesNamespaceQuery" }]
6099
6866
  responses:
@@ -6105,6 +6872,10 @@ paths:
6105
6872
  get:
6106
6873
  tags: [Platform]
6107
6874
  operationId: getKubernetesReferenceGrantDetail
6875
+ x-soha-permissions:
6876
+ mode: all
6877
+ keys:
6878
+ - platform.network.reference-grants.view
6108
6879
  x-soha-implementation-status: implemented
6109
6880
  parameters: [{ $ref: "#/components/parameters/ClusterID" }, { $ref: "#/components/parameters/KubernetesResourceName" }, { $ref: "#/components/parameters/KubernetesNamespaceQuery" }]
6110
6881
  responses:
@@ -6116,6 +6887,10 @@ paths:
6116
6887
  get:
6117
6888
  tags: [Platform]
6118
6889
  operationId: listKubernetesIngressClasses
6890
+ x-soha-permissions:
6891
+ mode: all
6892
+ keys:
6893
+ - platform.network.ingress-classes.view
6119
6894
  x-soha-implementation-status: implemented
6120
6895
  parameters: [{ $ref: "#/components/parameters/ClusterID" }]
6121
6896
  responses:
@@ -6127,6 +6902,10 @@ paths:
6127
6902
  get:
6128
6903
  tags: [Platform]
6129
6904
  operationId: getKubernetesIngressClassDetail
6905
+ x-soha-permissions:
6906
+ mode: all
6907
+ keys:
6908
+ - platform.network.ingress-classes.view
6130
6909
  x-soha-implementation-status: implemented
6131
6910
  parameters: [{ $ref: "#/components/parameters/ClusterID" }, { $ref: "#/components/parameters/KubernetesResourceName" }]
6132
6911
  responses:
@@ -6138,6 +6917,10 @@ paths:
6138
6917
  get:
6139
6918
  tags: [Platform]
6140
6919
  operationId: listKubernetesCustomResourceDefinitions
6920
+ x-soha-permissions:
6921
+ mode: all
6922
+ keys:
6923
+ - platform.extensions.view
6141
6924
  x-soha-implementation-status: implemented
6142
6925
  parameters: [{ $ref: "#/components/parameters/ClusterID" }]
6143
6926
  responses:
@@ -6149,6 +6932,10 @@ paths:
6149
6932
  get:
6150
6933
  tags: [Platform]
6151
6934
  operationId: listKubernetesCustomResources
6935
+ x-soha-permissions:
6936
+ mode: all
6937
+ keys:
6938
+ - platform.extensions.view
6152
6939
  x-soha-implementation-status: implemented
6153
6940
  parameters: [{ $ref: "#/components/parameters/ClusterID" }, { $ref: "#/components/parameters/KubernetesCRDName" }, { $ref: "#/components/parameters/KubernetesNamespaceQuery" }]
6154
6941
  responses:
@@ -6160,6 +6947,10 @@ paths:
6160
6947
  get:
6161
6948
  tags: [Platform]
6162
6949
  operationId: listKubernetesHelmCharts
6950
+ x-soha-permissions:
6951
+ mode: all
6952
+ keys:
6953
+ - platform.helm.view
6163
6954
  x-soha-implementation-status: implemented
6164
6955
  parameters:
6165
6956
  - $ref: "#/components/parameters/ClusterID"
@@ -6175,6 +6966,10 @@ paths:
6175
6966
  get:
6176
6967
  tags: [Platform]
6177
6968
  operationId: getKubernetesHelmChartDetail
6969
+ x-soha-permissions:
6970
+ mode: all
6971
+ keys:
6972
+ - platform.helm.view
6178
6973
  x-soha-implementation-status: implemented
6179
6974
  parameters:
6180
6975
  - $ref: "#/components/parameters/ClusterID"
@@ -6190,6 +6985,10 @@ paths:
6190
6985
  get:
6191
6986
  tags: [Platform]
6192
6987
  operationId: listKubernetesHelmReleases
6988
+ x-soha-permissions:
6989
+ mode: all
6990
+ keys:
6991
+ - platform.helm.view
6193
6992
  x-soha-implementation-status: implemented
6194
6993
  parameters: [{ $ref: "#/components/parameters/ClusterID" }, { $ref: "#/components/parameters/KubernetesNamespaceQuery" }]
6195
6994
  responses:
@@ -6201,6 +7000,10 @@ paths:
6201
7000
  get:
6202
7001
  tags: [Platform]
6203
7002
  operationId: getKubernetesHelmReleaseDetail
7003
+ x-soha-permissions:
7004
+ mode: all
7005
+ keys:
7006
+ - platform.helm.view
6204
7007
  x-soha-implementation-status: implemented
6205
7008
  parameters: [{ $ref: "#/components/parameters/ClusterID" }, { $ref: "#/components/parameters/KubernetesReleaseName" }, { $ref: "#/components/parameters/KubernetesNamespaceQuery" }]
6206
7009
  responses:
@@ -6212,6 +7015,10 @@ paths:
6212
7015
  get:
6213
7016
  tags: [Platform]
6214
7017
  operationId: listKubernetesHelmReleaseHistory
7018
+ x-soha-permissions:
7019
+ mode: all
7020
+ keys:
7021
+ - platform.helm.view
6215
7022
  x-soha-implementation-status: implemented
6216
7023
  parameters: [{ $ref: "#/components/parameters/ClusterID" }, { $ref: "#/components/parameters/KubernetesReleaseName" }, { $ref: "#/components/parameters/KubernetesNamespaceQuery" }]
6217
7024
  responses:
@@ -6223,6 +7030,11 @@ paths:
6223
7030
  get:
6224
7031
  tags: [Platform]
6225
7032
  operationId: getKubernetesHelmReleaseManifest
7033
+ x-soha-permissions:
7034
+ mode: all
7035
+ keys:
7036
+ - platform.helm.values.view
7037
+ - platform.helm.view
6226
7038
  x-soha-implementation-status: implemented
6227
7039
  parameters:
6228
7040
  - $ref: "#/components/parameters/ClusterID"
@@ -6241,6 +7053,10 @@ paths:
6241
7053
  post:
6242
7054
  tags: [Platform]
6243
7055
  operationId: planKubernetesHelmReleaseRollback
7056
+ x-soha-permissions:
7057
+ mode: all
7058
+ keys:
7059
+ - platform.helm.releases.rollback
6244
7060
  x-soha-implementation-status: implemented
6245
7061
  parameters: [{ $ref: "#/components/parameters/ClusterID" }, { $ref: "#/components/parameters/KubernetesReleaseName" }, { $ref: "#/components/parameters/KubernetesNamespaceQuery" }]
6246
7062
  requestBody:
@@ -6256,6 +7072,10 @@ paths:
6256
7072
  post:
6257
7073
  tags: [Platform]
6258
7074
  operationId: rollbackKubernetesHelmRelease
7075
+ x-soha-permissions:
7076
+ mode: all
7077
+ keys:
7078
+ - platform.helm.releases.rollback
6259
7079
  x-soha-implementation-status: implemented
6260
7080
  parameters: [{ $ref: "#/components/parameters/ClusterID" }, { $ref: "#/components/parameters/KubernetesReleaseName" }, { $ref: "#/components/parameters/KubernetesNamespaceQuery" }]
6261
7081
  requestBody:
@@ -6267,6 +7087,170 @@ paths:
6267
7087
  "403": { $ref: "#/components/responses/Error" }
6268
7088
  "404": { $ref: "#/components/responses/Error" }
6269
7089
  "503": { $ref: "#/components/responses/Error" }
7090
+ /alert-rules:
7091
+ get:
7092
+ tags: [Observability]
7093
+ operationId: listAlertRules
7094
+ responses:
7095
+ "200":
7096
+ description: Alert rules visible to the current principal.
7097
+ content:
7098
+ application/json:
7099
+ schema:
7100
+ $ref: "#/components/schemas/AlertRuleListEnvelope"
7101
+ "403":
7102
+ $ref: "#/components/responses/Error"
7103
+ post:
7104
+ tags: [Observability]
7105
+ operationId: createAlertRule
7106
+ requestBody:
7107
+ required: true
7108
+ content:
7109
+ application/json:
7110
+ schema:
7111
+ $ref: "#/components/schemas/AlertRuleInput"
7112
+ responses:
7113
+ "201":
7114
+ description: Alert rule created.
7115
+ content:
7116
+ application/json:
7117
+ schema:
7118
+ $ref: "#/components/schemas/AlertRuleEnvelope"
7119
+ "400":
7120
+ $ref: "#/components/responses/Error"
7121
+ "403":
7122
+ $ref: "#/components/responses/Error"
7123
+ /alert-rules/{ruleID}:
7124
+ get:
7125
+ tags: [Observability]
7126
+ operationId: getAlertRule
7127
+ parameters:
7128
+ - $ref: "#/components/parameters/AlertRuleID"
7129
+ responses:
7130
+ "200":
7131
+ description: Alert rule detail.
7132
+ content:
7133
+ application/json:
7134
+ schema:
7135
+ $ref: "#/components/schemas/AlertRuleEnvelope"
7136
+ "403":
7137
+ $ref: "#/components/responses/Error"
7138
+ "404":
7139
+ $ref: "#/components/responses/Error"
7140
+ put:
7141
+ tags: [Observability]
7142
+ operationId: updateAlertRule
7143
+ parameters:
7144
+ - $ref: "#/components/parameters/AlertRuleID"
7145
+ requestBody:
7146
+ required: true
7147
+ content:
7148
+ application/json:
7149
+ schema:
7150
+ $ref: "#/components/schemas/AlertRuleInput"
7151
+ responses:
7152
+ "200":
7153
+ description: Alert rule updated.
7154
+ content:
7155
+ application/json:
7156
+ schema:
7157
+ $ref: "#/components/schemas/AlertRuleEnvelope"
7158
+ "400":
7159
+ $ref: "#/components/responses/Error"
7160
+ "403":
7161
+ $ref: "#/components/responses/Error"
7162
+ "404":
7163
+ $ref: "#/components/responses/Error"
7164
+ /alert-rules/{ruleID}/validate:
7165
+ post:
7166
+ tags: [Observability]
7167
+ operationId: validateAlertRule
7168
+ description: Compatibility alias for testing an alert rule without persisting it.
7169
+ parameters:
7170
+ - name: ruleID
7171
+ in: path
7172
+ required: true
7173
+ description: Compatibility token retained in the legacy path; preview evaluation does not resolve a persisted rule.
7174
+ schema:
7175
+ type: string
7176
+ minLength: 1
7177
+ maxLength: 128
7178
+ requestBody:
7179
+ required: true
7180
+ content:
7181
+ application/json:
7182
+ schema:
7183
+ $ref: "#/components/schemas/AlertRuleInput"
7184
+ responses:
7185
+ "200":
7186
+ description: Alert rule evaluation preview.
7187
+ content:
7188
+ application/json:
7189
+ schema:
7190
+ $ref: "#/components/schemas/AlertRuleTestResultEnvelope"
7191
+ "400":
7192
+ $ref: "#/components/responses/Error"
7193
+ "403":
7194
+ $ref: "#/components/responses/Error"
7195
+ /alert-rules/{ruleID}/test:
7196
+ post:
7197
+ tags: [Observability]
7198
+ operationId: testAlertRule
7199
+ description: Test an alert rule payload without persisting it; ruleID is a legacy compatibility token.
7200
+ parameters:
7201
+ - name: ruleID
7202
+ in: path
7203
+ required: true
7204
+ description: Compatibility token retained in the legacy path; preview evaluation does not resolve a persisted rule.
7205
+ schema:
7206
+ type: string
7207
+ minLength: 1
7208
+ maxLength: 128
7209
+ requestBody:
7210
+ required: true
7211
+ content:
7212
+ application/json:
7213
+ schema:
7214
+ $ref: "#/components/schemas/AlertRuleInput"
7215
+ responses:
7216
+ "200":
7217
+ description: Alert rule evaluation preview.
7218
+ content:
7219
+ application/json:
7220
+ schema:
7221
+ $ref: "#/components/schemas/AlertRuleTestResultEnvelope"
7222
+ "400":
7223
+ $ref: "#/components/responses/Error"
7224
+ "403":
7225
+ $ref: "#/components/responses/Error"
7226
+ /alert-rule-runs:
7227
+ get:
7228
+ tags: [Observability]
7229
+ operationId: listAlertRuleRuns
7230
+ parameters:
7231
+ - name: ruleId
7232
+ in: query
7233
+ required: false
7234
+ schema:
7235
+ type: string
7236
+ minLength: 1
7237
+ maxLength: 128
7238
+ - name: limit
7239
+ in: query
7240
+ required: false
7241
+ schema:
7242
+ type: integer
7243
+ minimum: 1
7244
+ default: 20
7245
+ responses:
7246
+ "200":
7247
+ description: Recent alert rule evaluation runs visible to the current principal.
7248
+ content:
7249
+ application/json:
7250
+ schema:
7251
+ $ref: "#/components/schemas/AlertRuleRunListEnvelope"
7252
+ "403":
7253
+ $ref: "#/components/responses/Error"
6270
7254
  /alert-events/stream:
6271
7255
  get:
6272
7256
  tags: [Observability]
@@ -6287,11 +7271,20 @@ paths:
6287
7271
  get:
6288
7272
  tags: [Platform]
6289
7273
  operationId: listKubernetesClusterEvents
7274
+ x-soha-permissions:
7275
+ mode: all
7276
+ keys:
7277
+ - platform.workloads.overview.view
6290
7278
  x-soha-implementation-status: implemented
6291
7279
  x-soha-capability:
6292
7280
  name: k8s.events.list
6293
7281
  riskLevel: read
6294
7282
  requiresApproval: false
7283
+ permissionKeys:
7284
+ - ai.gateway.invoke
7285
+ - observe.events.view
7286
+ - platform.workloads.overview.view
7287
+ - workspace.resource.view
6295
7288
  parameters:
6296
7289
  - $ref: "#/components/parameters/ClusterID"
6297
7290
  - $ref: "#/components/parameters/KubernetesNamespaceQuery"
@@ -6305,6 +7298,8 @@ paths:
6305
7298
  get:
6306
7299
  tags: [Platform]
6307
7300
  operationId: searchKubernetesResources
7301
+ x-soha-permissions:
7302
+ mode: resource
6308
7303
  x-soha-implementation-status: implemented
6309
7304
  parameters:
6310
7305
  - $ref: "#/components/parameters/ClusterID"
@@ -6341,6 +7336,8 @@ paths:
6341
7336
  get:
6342
7337
  tags: [Platform]
6343
7338
  operationId: streamKubernetesResourceEvents
7339
+ x-soha-permissions:
7340
+ mode: resource
6344
7341
  x-soha-implementation-status: implemented
6345
7342
  description: >
6346
7343
  Upgrades to an authenticated WebSocket that publishes metadata-only Kubernetes
@@ -6368,6 +7365,8 @@ paths:
6368
7365
  get:
6369
7366
  tags: [Platform]
6370
7367
  operationId: getKubernetesResourceGraph
7368
+ x-soha-permissions:
7369
+ mode: resource
6371
7370
  x-soha-implementation-status: implemented
6372
7371
  parameters:
6373
7372
  - $ref: "#/components/parameters/ClusterID"
@@ -6390,6 +7389,10 @@ paths:
6390
7389
  get:
6391
7390
  tags: [Platform]
6392
7391
  operationId: getKubernetesSecurityPosture
7392
+ x-soha-permissions:
7393
+ mode: all
7394
+ keys:
7395
+ - platform.clusters.view
6393
7396
  x-soha-implementation-status: implemented
6394
7397
  parameters:
6395
7398
  - $ref: "#/components/parameters/ClusterID"
@@ -6407,6 +7410,8 @@ paths:
6407
7410
  post:
6408
7411
  tags: [Platform]
6409
7412
  operationId: planKubernetesResourceUpdate
7413
+ x-soha-permissions:
7414
+ mode: resource
6410
7415
  x-soha-implementation-status: implemented
6411
7416
  parameters:
6412
7417
  - $ref: "#/components/parameters/ClusterID"
@@ -6431,6 +7436,11 @@ paths:
6431
7436
  post:
6432
7437
  tags: [Platform]
6433
7438
  operationId: reviewKubernetesSubjectAccess
7439
+ x-soha-permissions:
7440
+ mode: subject
7441
+ keys:
7442
+ - platform.access-control.access-reviews.execute
7443
+ - platform.access-control.service-accounts.view
6434
7444
  x-soha-implementation-status: implemented
6435
7445
  parameters:
6436
7446
  - $ref: "#/components/parameters/ClusterID"
@@ -6450,6 +7460,8 @@ paths:
6450
7460
  get:
6451
7461
  tags: [Platform]
6452
7462
  operationId: listClusterCapabilityMatrix
7463
+ x-soha-permissions:
7464
+ mode: authenticated
6453
7465
  responses:
6454
7466
  "200":
6455
7467
  description: Cluster runtime capability matrix for Direct and Agent modes.
@@ -6463,6 +7475,10 @@ paths:
6463
7475
  get:
6464
7476
  tags: [Platform]
6465
7477
  operationId: getClusterPodMetrics
7478
+ x-soha-permissions:
7479
+ mode: all
7480
+ keys:
7481
+ - platform.pods.view
6466
7482
  x-soha-implementation-status: implemented
6467
7483
  parameters:
6468
7484
  - $ref: "#/components/parameters/ClusterID"
@@ -6512,6 +7528,10 @@ paths:
6512
7528
  post:
6513
7529
  tags: [Platform]
6514
7530
  operationId: createClusterAgentInstallation
7531
+ x-soha-permissions:
7532
+ mode: all
7533
+ keys:
7534
+ - platform.clusters.update
6515
7535
  parameters:
6516
7536
  - $ref: "#/components/parameters/ClusterID"
6517
7537
  responses:
@@ -6533,6 +7553,8 @@ paths:
6533
7553
  get:
6534
7554
  tags: [Platform]
6535
7555
  operationId: downloadKubernetesAgentInstallationManifest
7556
+ x-soha-permissions:
7557
+ mode: install-ticket
6536
7558
  security: []
6537
7559
  parameters:
6538
7560
  - $ref: "#/components/parameters/AgentInstallTicket"
@@ -6572,6 +7594,10 @@ paths:
6572
7594
  post:
6573
7595
  tags: [Platform]
6574
7596
  operationId: queryClusterLogs
7597
+ x-soha-permissions:
7598
+ mode: all
7599
+ keys:
7600
+ - platform.pods.logs
6575
7601
  parameters:
6576
7602
  - $ref: "#/components/parameters/ClusterID"
6577
7603
  requestBody:
@@ -6601,6 +7627,10 @@ paths:
6601
7627
  post:
6602
7628
  tags: [Platform]
6603
7629
  operationId: issueClusterLogStreamTicket
7630
+ x-soha-permissions:
7631
+ mode: all
7632
+ keys:
7633
+ - platform.pods.logs
6604
7634
  parameters:
6605
7635
  - $ref: "#/components/parameters/ClusterID"
6606
7636
  requestBody:
@@ -6748,6 +7778,10 @@ paths:
6748
7778
  get:
6749
7779
  tags: [Observability]
6750
7780
  operationId: getClusterLogCollection
7781
+ x-soha-permissions:
7782
+ mode: all
7783
+ keys:
7784
+ - platform.clusters.view
6751
7785
  parameters:
6752
7786
  - $ref: "#/components/parameters/ClusterID"
6753
7787
  responses:
@@ -6765,6 +7799,10 @@ paths:
6765
7799
  post:
6766
7800
  tags: [Observability]
6767
7801
  operationId: preflightClusterLogCollection
7802
+ x-soha-permissions:
7803
+ mode: all
7804
+ keys:
7805
+ - platform.observability.logging.enable
6768
7806
  parameters:
6769
7807
  - $ref: "#/components/parameters/ClusterID"
6770
7808
  requestBody:
@@ -6790,6 +7828,10 @@ paths:
6790
7828
  post:
6791
7829
  tags: [Observability]
6792
7830
  operationId: enableClusterLogCollection
7831
+ x-soha-permissions:
7832
+ mode: all
7833
+ keys:
7834
+ - platform.observability.logging.enable
6793
7835
  parameters:
6794
7836
  - $ref: "#/components/parameters/ClusterID"
6795
7837
  requestBody:
@@ -6817,6 +7859,10 @@ paths:
6817
7859
  post:
6818
7860
  tags: [Observability]
6819
7861
  operationId: disableClusterLogCollection
7862
+ x-soha-permissions:
7863
+ mode: all
7864
+ keys:
7865
+ - platform.observability.logging.disable
6820
7866
  parameters:
6821
7867
  - $ref: "#/components/parameters/ClusterID"
6822
7868
  requestBody:
@@ -7190,6 +8236,8 @@ paths:
7190
8236
  post:
7191
8237
  tags: [Platform]
7192
8238
  operationId: decideKubernetesResourceCreateScope
8239
+ x-soha-permissions:
8240
+ mode: resource
7193
8241
  parameters:
7194
8242
  - $ref: "#/components/parameters/ClusterID"
7195
8243
  requestBody:
@@ -7215,10 +8263,14 @@ paths:
7215
8263
  post:
7216
8264
  tags: [Platform]
7217
8265
  operationId: generateKubernetesWorkloadSnapshot
8266
+ x-soha-permissions:
8267
+ mode: resource
7218
8268
  x-soha-capability:
7219
8269
  name: k8s.workloads.snapshot.generate
7220
8270
  riskLevel: analyze
7221
8271
  requiresApproval: false
8272
+ permissionKeys:
8273
+ - ai.gateway.invoke
7222
8274
  parameters:
7223
8275
  - $ref: "#/components/parameters/ClusterID"
7224
8276
  requestBody:
@@ -7244,10 +8296,15 @@ paths:
7244
8296
  post:
7245
8297
  tags: [Platform]
7246
8298
  operationId: preflightKubernetesResourceCreate
8299
+ x-soha-permissions:
8300
+ mode: resource
7247
8301
  x-soha-capability:
7248
8302
  name: k8s.resources.create.preflight
7249
8303
  riskLevel: analyze
7250
8304
  requiresApproval: false
8305
+ permissionKeys:
8306
+ - ai.gateway.invoke
8307
+ - platform.resource-creation.use
7251
8308
  parameters:
7252
8309
  - $ref: "#/components/parameters/ClusterID"
7253
8310
  requestBody:
@@ -7275,10 +8332,15 @@ paths:
7275
8332
  post:
7276
8333
  tags: [Platform]
7277
8334
  operationId: executeKubernetesResourceCreate
8335
+ x-soha-permissions:
8336
+ mode: resource
7278
8337
  x-soha-capability:
7279
8338
  name: k8s.resources.create.trigger
7280
8339
  riskLevel: high
7281
8340
  requiresApproval: true
8341
+ permissionKeys:
8342
+ - ai.gateway.invoke
8343
+ - platform.resource-creation.use
7282
8344
  parameters:
7283
8345
  - $ref: "#/components/parameters/ClusterID"
7284
8346
  - $ref: "#/components/parameters/IdempotencyKey"
@@ -8229,6 +9291,13 @@ paths:
8229
9291
  schema:
8230
9292
  type: string
8231
9293
  enum: [success, failure, cancelled, client_cancelled, rate_limited, policy_denied]
9294
+ x-enum-varnames:
9295
+ - ListAIGatewayRelayModelCallsParamsStatusSuccess
9296
+ - ListAIGatewayRelayModelCallsParamsStatusFailure
9297
+ - ListAIGatewayRelayModelCallsParamsStatusCancelled
9298
+ - ListAIGatewayRelayModelCallsParamsStatusClientCancelled
9299
+ - ListAIGatewayRelayModelCallsParamsStatusRateLimited
9300
+ - ListAIGatewayRelayModelCallsParamsStatusPolicyDenied
8232
9301
  - name: endpoint
8233
9302
  in: query
8234
9303
  required: false
@@ -10269,6 +11338,13 @@ paths:
10269
11338
  schema:
10270
11339
  type: string
10271
11340
  maxLength: 64
11341
+ - name: storageIntegrationId
11342
+ in: query
11343
+ required: false
11344
+ schema:
11345
+ type: string
11346
+ minLength: 1
11347
+ maxLength: 128
10272
11348
  - name: cursor
10273
11349
  in: query
10274
11350
  required: false
@@ -10351,6 +11427,13 @@ paths:
10351
11427
  tags: [Software]
10352
11428
  operationId: getSoftwareStorage
10353
11429
  parameters:
11430
+ - name: storageIntegrationId
11431
+ in: query
11432
+ required: false
11433
+ schema:
11434
+ type: string
11435
+ minLength: 1
11436
+ maxLength: 128
10354
11437
  - name: cursor
10355
11438
  in: query
10356
11439
  required: false
@@ -10412,6 +11495,36 @@ paths:
10412
11495
  $ref: "#/components/responses/Error"
10413
11496
  "404":
10414
11497
  $ref: "#/components/responses/Error"
11498
+ /software/packages/{packageID}/download-records:
11499
+ get:
11500
+ tags: [Software]
11501
+ operationId: listSoftwarePackageDownloadRecords
11502
+ description: Lists recent successful downloads. Requires system.audit.view or identity.audit.view.
11503
+ parameters:
11504
+ - $ref: "#/components/parameters/SoftwarePackageID"
11505
+ - name: limit
11506
+ in: query
11507
+ required: false
11508
+ schema:
11509
+ type: integer
11510
+ minimum: 1
11511
+ maximum: 100
11512
+ default: 50
11513
+ responses:
11514
+ "200":
11515
+ description: Recent successful download records, newest first.
11516
+ content:
11517
+ application/json:
11518
+ schema:
11519
+ $ref: "#/components/schemas/SoftwarePackageDownloadRecordListEnvelope"
11520
+ "400":
11521
+ $ref: "#/components/responses/Error"
11522
+ "401":
11523
+ $ref: "#/components/responses/Error"
11524
+ "403":
11525
+ $ref: "#/components/responses/Error"
11526
+ "404":
11527
+ $ref: "#/components/responses/Error"
10415
11528
  /plugins/installed:
10416
11529
  get:
10417
11530
  tags: [Plugins]
@@ -12104,6 +13217,138 @@ paths:
12104
13217
  "401": { $ref: "#/components/responses/Error" }
12105
13218
  "403": { $ref: "#/components/responses/Error" }
12106
13219
  "404": { $ref: "#/components/responses/Error" }
13220
+ /access/users/{userID}/scope-grants:
13221
+ parameters:
13222
+ - $ref: "#/components/parameters/UserID"
13223
+ get:
13224
+ tags: [Access]
13225
+ operationId: listUserScopeGrants
13226
+ x-soha-implementation-status: implemented
13227
+ responses:
13228
+ "200":
13229
+ description: Resource scope grants for the user.
13230
+ content:
13231
+ application/json:
13232
+ schema: { $ref: "#/components/schemas/ScopeGrantListEnvelope" }
13233
+ "401": { $ref: "#/components/responses/Error" }
13234
+ "403": { $ref: "#/components/responses/Error" }
13235
+ post:
13236
+ tags: [Access]
13237
+ operationId: createUserScopeGrant
13238
+ x-soha-implementation-status: implemented
13239
+ requestBody:
13240
+ required: true
13241
+ content:
13242
+ application/json:
13243
+ schema: { $ref: "#/components/schemas/ScopeGrantInput" }
13244
+ responses:
13245
+ "201":
13246
+ description: Created resource scope grant for the user.
13247
+ content:
13248
+ application/json:
13249
+ schema: { $ref: "#/components/schemas/ScopeGrantEnvelope" }
13250
+ "400": { $ref: "#/components/responses/Error" }
13251
+ "401": { $ref: "#/components/responses/Error" }
13252
+ "403": { $ref: "#/components/responses/Error" }
13253
+ /access/users/{userID}/scope-grants/{scopeGrantID}:
13254
+ parameters:
13255
+ - $ref: "#/components/parameters/UserID"
13256
+ - $ref: "#/components/parameters/ScopeGrantID"
13257
+ put:
13258
+ tags: [Access]
13259
+ operationId: updateUserScopeGrant
13260
+ x-soha-implementation-status: implemented
13261
+ requestBody:
13262
+ required: true
13263
+ content:
13264
+ application/json:
13265
+ schema: { $ref: "#/components/schemas/ScopeGrantInput" }
13266
+ responses:
13267
+ "200":
13268
+ description: Updated resource scope grant for the user.
13269
+ content:
13270
+ application/json:
13271
+ schema: { $ref: "#/components/schemas/ScopeGrantEnvelope" }
13272
+ "400": { $ref: "#/components/responses/Error" }
13273
+ "401": { $ref: "#/components/responses/Error" }
13274
+ "403": { $ref: "#/components/responses/Error" }
13275
+ "404": { $ref: "#/components/responses/Error" }
13276
+ delete:
13277
+ tags: [Access]
13278
+ operationId: deleteUserScopeGrant
13279
+ x-soha-implementation-status: implemented
13280
+ responses:
13281
+ "204":
13282
+ description: Resource scope grant for the user deleted.
13283
+ "401": { $ref: "#/components/responses/Error" }
13284
+ "403": { $ref: "#/components/responses/Error" }
13285
+ "404": { $ref: "#/components/responses/Error" }
13286
+ /access/teams/{teamID}/scope-grants:
13287
+ parameters:
13288
+ - $ref: "#/components/parameters/TeamID"
13289
+ get:
13290
+ tags: [Access]
13291
+ operationId: listTeamScopeGrants
13292
+ x-soha-implementation-status: implemented
13293
+ responses:
13294
+ "200":
13295
+ description: Resource scope grants for the team.
13296
+ content:
13297
+ application/json:
13298
+ schema: { $ref: "#/components/schemas/ScopeGrantListEnvelope" }
13299
+ "401": { $ref: "#/components/responses/Error" }
13300
+ "403": { $ref: "#/components/responses/Error" }
13301
+ post:
13302
+ tags: [Access]
13303
+ operationId: createTeamScopeGrant
13304
+ x-soha-implementation-status: implemented
13305
+ requestBody:
13306
+ required: true
13307
+ content:
13308
+ application/json:
13309
+ schema: { $ref: "#/components/schemas/ScopeGrantInput" }
13310
+ responses:
13311
+ "201":
13312
+ description: Created resource scope grant for the team.
13313
+ content:
13314
+ application/json:
13315
+ schema: { $ref: "#/components/schemas/ScopeGrantEnvelope" }
13316
+ "400": { $ref: "#/components/responses/Error" }
13317
+ "401": { $ref: "#/components/responses/Error" }
13318
+ "403": { $ref: "#/components/responses/Error" }
13319
+ /access/teams/{teamID}/scope-grants/{scopeGrantID}:
13320
+ parameters:
13321
+ - $ref: "#/components/parameters/TeamID"
13322
+ - $ref: "#/components/parameters/ScopeGrantID"
13323
+ put:
13324
+ tags: [Access]
13325
+ operationId: updateTeamScopeGrant
13326
+ x-soha-implementation-status: implemented
13327
+ requestBody:
13328
+ required: true
13329
+ content:
13330
+ application/json:
13331
+ schema: { $ref: "#/components/schemas/ScopeGrantInput" }
13332
+ responses:
13333
+ "200":
13334
+ description: Updated resource scope grant for the team.
13335
+ content:
13336
+ application/json:
13337
+ schema: { $ref: "#/components/schemas/ScopeGrantEnvelope" }
13338
+ "400": { $ref: "#/components/responses/Error" }
13339
+ "401": { $ref: "#/components/responses/Error" }
13340
+ "403": { $ref: "#/components/responses/Error" }
13341
+ "404": { $ref: "#/components/responses/Error" }
13342
+ delete:
13343
+ tags: [Access]
13344
+ operationId: deleteTeamScopeGrant
13345
+ x-soha-implementation-status: implemented
13346
+ responses:
13347
+ "204":
13348
+ description: Resource scope grant for the team deleted.
13349
+ "401": { $ref: "#/components/responses/Error" }
13350
+ "403": { $ref: "#/components/responses/Error" }
13351
+ "404": { $ref: "#/components/responses/Error" }
12107
13352
  /identity/capabilities:
12108
13353
  get:
12109
13354
  tags: [Identity]
@@ -12115,6 +13360,112 @@ paths:
12115
13360
  application/json:
12116
13361
  schema: { $ref: "#/components/schemas/IdentityRuntimeCapabilityEnvelope" }
12117
13362
  "403": { $ref: "#/components/responses/IdentityError" }
13363
+ /portal/bootstrap:
13364
+ get:
13365
+ tags: [Portal]
13366
+ operationId: getPortalBootstrap
13367
+ responses:
13368
+ "200":
13369
+ description: Current principal and visible provider portal data.
13370
+ content:
13371
+ application/json:
13372
+ schema: { $ref: "#/components/schemas/PortalBootstrapEnvelope" }
13373
+ "401": { $ref: "#/components/responses/Error" }
13374
+ /portal/applications:
13375
+ get:
13376
+ tags: [Portal]
13377
+ operationId: listPortalApplications
13378
+ responses:
13379
+ "200":
13380
+ description: Applications visible to the current principal.
13381
+ content:
13382
+ application/json:
13383
+ schema: { $ref: "#/components/schemas/PortalApplicationListEnvelope" }
13384
+ "401": { $ref: "#/components/responses/Error" }
13385
+ /portal/applications/{applicationID}:
13386
+ parameters:
13387
+ - $ref: "#/components/parameters/PortalApplicationID"
13388
+ get:
13389
+ tags: [Portal]
13390
+ operationId: getPortalApplication
13391
+ responses:
13392
+ "200":
13393
+ description: Application visible to the current principal.
13394
+ content:
13395
+ application/json:
13396
+ schema: { $ref: "#/components/schemas/IdentityApplicationEnvelope" }
13397
+ "401": { $ref: "#/components/responses/Error" }
13398
+ "403": { $ref: "#/components/responses/Error" }
13399
+ "404": { $ref: "#/components/responses/Error" }
13400
+ /portal/applications/{applicationID}/launch:
13401
+ parameters:
13402
+ - $ref: "#/components/parameters/PortalApplicationID"
13403
+ post:
13404
+ tags: [Portal]
13405
+ operationId: launchPortalApplication
13406
+ requestBody:
13407
+ required: false
13408
+ content:
13409
+ application/json:
13410
+ schema: { $ref: "#/components/schemas/PortalLaunchRequest" }
13411
+ responses:
13412
+ "200":
13413
+ description: Authorized launch decision for Web or desktop.
13414
+ content:
13415
+ application/json:
13416
+ schema: { $ref: "#/components/schemas/PortalLaunchDecisionEnvelope" }
13417
+ "400": { $ref: "#/components/responses/Error" }
13418
+ "401": { $ref: "#/components/responses/Error" }
13419
+ "403": { $ref: "#/components/responses/Error" }
13420
+ "404": { $ref: "#/components/responses/Error" }
13421
+ /portal/applications/{applicationID}/favorite:
13422
+ parameters:
13423
+ - $ref: "#/components/parameters/PortalApplicationID"
13424
+ post:
13425
+ tags: [Portal]
13426
+ operationId: favoritePortalApplication
13427
+ responses:
13428
+ "200":
13429
+ description: Favorited application.
13430
+ content:
13431
+ application/json:
13432
+ schema: { $ref: "#/components/schemas/IdentityApplicationEnvelope" }
13433
+ "401": { $ref: "#/components/responses/Error" }
13434
+ "403": { $ref: "#/components/responses/Error" }
13435
+ "404": { $ref: "#/components/responses/Error" }
13436
+ delete:
13437
+ tags: [Portal]
13438
+ operationId: unfavoritePortalApplication
13439
+ responses:
13440
+ "204": { description: Application removed from favorites. }
13441
+ "401": { $ref: "#/components/responses/Error" }
13442
+ "404": { $ref: "#/components/responses/Error" }
13443
+ /portal/recent:
13444
+ get:
13445
+ tags: [Portal]
13446
+ operationId: listPortalRecentLaunches
13447
+ parameters:
13448
+ - name: limit
13449
+ in: query
13450
+ schema: { type: integer, minimum: 1, maximum: 100, default: 10 }
13451
+ responses:
13452
+ "200":
13453
+ description: Recent application launches for the current principal.
13454
+ content:
13455
+ application/json:
13456
+ schema: { $ref: "#/components/schemas/IdentityApplicationLaunchListEnvelope" }
13457
+ "401": { $ref: "#/components/responses/Error" }
13458
+ /portal/security:
13459
+ get:
13460
+ tags: [Portal]
13461
+ operationId: getPortalSecuritySummary
13462
+ responses:
13463
+ "200":
13464
+ description: Current principal security summary.
13465
+ content:
13466
+ application/json:
13467
+ schema: { $ref: "#/components/schemas/PortalSecuritySummaryEnvelope" }
13468
+ "401": { $ref: "#/components/responses/Error" }
12118
13469
  /identity/applications:
12119
13470
  get:
12120
13471
  tags: [Identity]
@@ -12426,6 +13777,10 @@ paths:
12426
13777
  responses:
12427
13778
  "201":
12428
13779
  description: Created OIDC client.
13780
+ headers:
13781
+ Cache-Control:
13782
+ description: Always no-store when the response includes a client secret.
13783
+ schema: { type: string }
12429
13784
  content:
12430
13785
  application/json:
12431
13786
  schema: { $ref: "#/components/schemas/OIDCClientCreatedEnvelope" }
@@ -12465,6 +13820,25 @@ paths:
12465
13820
  responses:
12466
13821
  "204": { description: OIDC client deleted. }
12467
13822
  "404": { $ref: "#/components/responses/IdentityError" }
13823
+ /identity/oidc-clients/{oidcClientID}/secret/reveal:
13824
+ parameters:
13825
+ - $ref: "#/components/parameters/OIDCClientID"
13826
+ post:
13827
+ tags: [Identity]
13828
+ operationId: revealIdentityOIDCClientSecret
13829
+ responses:
13830
+ "200":
13831
+ description: Decrypted OIDC client secret for an authorized administrator. The response must not be cached.
13832
+ headers:
13833
+ Cache-Control:
13834
+ description: Always `no-store` for secret responses.
13835
+ schema: { type: string }
13836
+ content:
13837
+ application/json:
13838
+ schema: { $ref: "#/components/schemas/OIDCClientSecretRevealEnvelope" }
13839
+ "403": { $ref: "#/components/responses/IdentityError" }
13840
+ "404": { $ref: "#/components/responses/IdentityError" }
13841
+ "409": { $ref: "#/components/responses/IdentityError" }
12468
13842
  /identity/saml/login-sources:
12469
13843
  get:
12470
13844
  tags: [Identity]
@@ -12966,6 +14340,16 @@ components:
12966
14340
  in: path
12967
14341
  required: true
12968
14342
  schema: { type: string, minLength: 1, maxLength: 128 }
14343
+ UserID:
14344
+ name: userID
14345
+ in: path
14346
+ required: true
14347
+ schema: { type: string, minLength: 1, maxLength: 128 }
14348
+ TeamID:
14349
+ name: teamID
14350
+ in: path
14351
+ required: true
14352
+ schema: { type: string, minLength: 1, maxLength: 128 }
12969
14353
  ScopeGrantID:
12970
14354
  name: scopeGrantID
12971
14355
  in: path
@@ -12976,6 +14360,16 @@ components:
12976
14360
  in: path
12977
14361
  required: true
12978
14362
  schema: { type: string, minLength: 1, maxLength: 128 }
14363
+ PortalApplicationID:
14364
+ name: applicationID
14365
+ in: path
14366
+ required: true
14367
+ schema: { type: string, minLength: 1, maxLength: 128 }
14368
+ BrowserHandoffID:
14369
+ name: browserHandoffID
14370
+ in: path
14371
+ required: true
14372
+ schema: { type: string, minLength: 1, maxLength: 128 }
12979
14373
  IdentityProviderID:
12980
14374
  name: identityProviderID
12981
14375
  in: path
@@ -13275,6 +14669,14 @@ components:
13275
14669
  type: string
13276
14670
  minLength: 1
13277
14671
  maxLength: 128
14672
+ AlertRuleID:
14673
+ name: ruleID
14674
+ in: path
14675
+ required: true
14676
+ schema:
14677
+ type: string
14678
+ minLength: 1
14679
+ maxLength: 128
13278
14680
  ObservabilityDataSourceIDQuery:
13279
14681
  name: dataSourceId
13280
14682
  in: query
@@ -13590,6 +14992,14 @@ components:
13590
14992
  required: true
13591
14993
  schema:
13592
14994
  type: string
14995
+ AttemptID:
14996
+ name: attemptID
14997
+ in: path
14998
+ required: true
14999
+ schema:
15000
+ type: string
15001
+ minLength: 1
15002
+ maxLength: 128
13593
15003
  PluginID:
13594
15004
  name: pluginID
13595
15005
  in: path
@@ -13949,7 +15359,36 @@ components:
13949
15359
  additionalProperties: false
13950
15360
  IdentityResourceStatus:
13951
15361
  type: string
13952
- enum: [active, disabled]
15362
+ enum: [active, draft, enabled, disabled, maintenance]
15363
+ IdentityApplicationProviderType:
15364
+ type: string
15365
+ enum: [link, oidc, proxy, saml]
15366
+ IdentityApplicationAssignmentSubjectType:
15367
+ type: string
15368
+ enum: [user, role, team, tag]
15369
+ IdentityApplicationAssignmentEffect:
15370
+ type: string
15371
+ enum: [allow, deny]
15372
+ IdentityApplicationAssignment:
15373
+ type: object
15374
+ required: [id, applicationId, subjectType, subjectId, effect, createdAt]
15375
+ properties:
15376
+ id: { type: string }
15377
+ applicationId: { type: string }
15378
+ subjectType: { $ref: "#/components/schemas/IdentityApplicationAssignmentSubjectType" }
15379
+ subjectId: { type: string }
15380
+ effect: { $ref: "#/components/schemas/IdentityApplicationAssignmentEffect" }
15381
+ createdBy: { type: string }
15382
+ createdAt: { type: string, format: date-time }
15383
+ additionalProperties: false
15384
+ IdentityApplicationAssignmentInput:
15385
+ type: object
15386
+ required: [subjectType, subjectId, effect]
15387
+ properties:
15388
+ subjectType: { $ref: "#/components/schemas/IdentityApplicationAssignmentSubjectType" }
15389
+ subjectId: { type: string, minLength: 1 }
15390
+ effect: { $ref: "#/components/schemas/IdentityApplicationAssignmentEffect" }
15391
+ additionalProperties: false
13953
15392
  IdentityApplication:
13954
15393
  type: object
13955
15394
  required: [id, name, slug, status, createdAt, updatedAt]
@@ -13958,8 +15397,24 @@ components:
13958
15397
  name: { type: string }
13959
15398
  slug: { type: string }
13960
15399
  description: { type: string }
15400
+ iconUrl: { type: string, format: uri }
15401
+ category: { type: string }
15402
+ tags: { type: array, items: { type: string } }
13961
15403
  launchUrl: { type: string, format: uri }
15404
+ providerId: { type: string }
15405
+ providerType: { $ref: "#/components/schemas/IdentityApplicationProviderType" }
15406
+ portalVisible: { type: boolean }
15407
+ featured: { type: boolean }
15408
+ sortOrder: { type: integer }
13962
15409
  status: { $ref: "#/components/schemas/IdentityResourceStatus" }
15410
+ metadata: { type: object, additionalProperties: true }
15411
+ assignments:
15412
+ type: array
15413
+ items: { $ref: "#/components/schemas/IdentityApplicationAssignment" }
15414
+ favorite: { type: boolean }
15415
+ lastLaunchedAt: { type: string, format: date-time }
15416
+ createdBy: { type: string }
15417
+ updatedBy: { type: string }
13963
15418
  createdAt: { type: string, format: date-time }
13964
15419
  updatedAt: { type: string, format: date-time }
13965
15420
  additionalProperties: false
@@ -13970,8 +15425,20 @@ components:
13970
15425
  name: { type: string, minLength: 1, maxLength: 200 }
13971
15426
  slug: { type: string, pattern: "^[a-z0-9][a-z0-9-]*$" }
13972
15427
  description: { type: string, maxLength: 2000 }
15428
+ iconUrl: { type: string, format: uri }
15429
+ category: { type: string }
15430
+ tags: { type: array, items: { type: string } }
13973
15431
  launchUrl: { type: string, format: uri }
15432
+ providerId: { type: string }
15433
+ providerType: { $ref: "#/components/schemas/IdentityApplicationProviderType" }
15434
+ portalVisible: { type: boolean }
15435
+ featured: { type: boolean }
15436
+ sortOrder: { type: integer }
13974
15437
  status: { $ref: "#/components/schemas/IdentityResourceStatus" }
15438
+ metadata: { type: object, additionalProperties: true }
15439
+ assignments:
15440
+ type: array
15441
+ items: { $ref: "#/components/schemas/IdentityApplicationAssignmentInput" }
13975
15442
  additionalProperties: false
13976
15443
  IdentityApplicationEnvelope:
13977
15444
  type: object
@@ -13985,6 +15452,125 @@ components:
13985
15452
  properties:
13986
15453
  items: { type: array, items: { $ref: "#/components/schemas/IdentityApplication" } }
13987
15454
  additionalProperties: false
15455
+ IdentityApplicationLaunch:
15456
+ type: object
15457
+ required: [id, applicationId, userId, providerType, result, createdAt]
15458
+ properties:
15459
+ id: { type: string }
15460
+ applicationId: { type: string }
15461
+ applicationName: { type: string }
15462
+ userId: { type: string }
15463
+ providerId: { type: string }
15464
+ providerType: { $ref: "#/components/schemas/IdentityApplicationProviderType" }
15465
+ result: { type: string }
15466
+ reason: { type: string }
15467
+ launchUrl: { type: string, format: uri-reference }
15468
+ sourceIp: { type: string }
15469
+ userAgent: { type: string }
15470
+ createdAt: { type: string, format: date-time }
15471
+ additionalProperties: false
15472
+ IdentityApplicationLaunchListEnvelope:
15473
+ type: object
15474
+ required: [items]
15475
+ properties:
15476
+ items: { type: array, items: { $ref: "#/components/schemas/IdentityApplicationLaunch" } }
15477
+ additionalProperties: false
15478
+ PortalSecuritySummary:
15479
+ type: object
15480
+ required: [principal, mfaEnabled, linkedSources, activeSession]
15481
+ properties:
15482
+ principal: { $ref: "#/components/schemas/Principal" }
15483
+ mfaEnabled: { type: boolean }
15484
+ linkedSources: { type: array, items: { type: string } }
15485
+ activeSession: { type: integer, minimum: 0 }
15486
+ recentLoginAt: { type: string, format: date-time }
15487
+ additionalProperties: false
15488
+ PortalSecuritySummaryEnvelope:
15489
+ type: object
15490
+ required: [data]
15491
+ properties:
15492
+ data: { $ref: "#/components/schemas/PortalSecuritySummary" }
15493
+ additionalProperties: false
15494
+ PortalBootstrap:
15495
+ type: object
15496
+ required: [principal, applications, favorites, recent, categories, security]
15497
+ properties:
15498
+ principal: { $ref: "#/components/schemas/Principal" }
15499
+ applications: { type: array, items: { $ref: "#/components/schemas/IdentityApplication" } }
15500
+ favorites: { type: array, items: { $ref: "#/components/schemas/IdentityApplication" } }
15501
+ recent: { type: array, items: { $ref: "#/components/schemas/IdentityApplicationLaunch" } }
15502
+ categories: { type: array, items: { type: string } }
15503
+ security: { $ref: "#/components/schemas/PortalSecuritySummary" }
15504
+ additionalProperties: false
15505
+ PortalBootstrapEnvelope:
15506
+ type: object
15507
+ required: [data]
15508
+ properties:
15509
+ data: { $ref: "#/components/schemas/PortalBootstrap" }
15510
+ additionalProperties: false
15511
+ PortalApplicationListEnvelope:
15512
+ type: object
15513
+ required: [items]
15514
+ properties:
15515
+ items: { type: array, items: { $ref: "#/components/schemas/IdentityApplication" } }
15516
+ additionalProperties: false
15517
+ PortalLaunchRequest:
15518
+ type: object
15519
+ properties:
15520
+ surface: { type: string, enum: [web, desktop] }
15521
+ additionalProperties: false
15522
+ PortalLaunchDecision:
15523
+ type: object
15524
+ required: [application, launchUrl, providerType, decision]
15525
+ properties:
15526
+ application: { $ref: "#/components/schemas/IdentityApplication" }
15527
+ launchUrl: { type: string, format: uri-reference }
15528
+ providerType: { $ref: "#/components/schemas/IdentityApplicationProviderType" }
15529
+ decision: { type: string, enum: [allow] }
15530
+ handoffExpiresAt: { type: string, format: date-time }
15531
+ additionalProperties: false
15532
+ PortalLaunchDecisionEnvelope:
15533
+ type: object
15534
+ required: [data]
15535
+ properties:
15536
+ data: { $ref: "#/components/schemas/PortalLaunchDecision" }
15537
+ additionalProperties: false
15538
+ BrowserHandoffApplication:
15539
+ type: object
15540
+ required: [id, name]
15541
+ properties:
15542
+ id: { type: string }
15543
+ name: { type: string }
15544
+ iconUrl: { type: string, format: uri }
15545
+ additionalProperties: false
15546
+ BrowserHandoff:
15547
+ type: object
15548
+ required: [application, accountName, status, expiresAt]
15549
+ properties:
15550
+ application: { $ref: "#/components/schemas/BrowserHandoffApplication" }
15551
+ accountName: { type: string }
15552
+ status: { type: string, enum: [pending] }
15553
+ expiresAt: { type: string, format: date-time }
15554
+ additionalProperties: false
15555
+ BrowserHandoffEnvelope:
15556
+ type: object
15557
+ required: [data]
15558
+ properties:
15559
+ data: { $ref: "#/components/schemas/BrowserHandoff" }
15560
+ additionalProperties: false
15561
+ BrowserHandoffCompletion:
15562
+ type: object
15563
+ required: [status, destinationUrl]
15564
+ properties:
15565
+ status: { type: string, enum: [completed] }
15566
+ destinationUrl: { type: string, format: uri-reference }
15567
+ additionalProperties: false
15568
+ BrowserHandoffCompletionEnvelope:
15569
+ type: object
15570
+ required: [data]
15571
+ properties:
15572
+ data: { $ref: "#/components/schemas/BrowserHandoffCompletion" }
15573
+ additionalProperties: false
13988
15574
  IdentityProviderType:
13989
15575
  type: string
13990
15576
  enum: [oidc, proxy, saml]
@@ -14021,6 +15607,9 @@ components:
14021
15607
  providerId: { type: string }
14022
15608
  clientId: { type: string }
14023
15609
  clientType: { type: string, enum: [public, confidential] }
15610
+ clientSecretAvailable:
15611
+ type: boolean
15612
+ description: True when the confidential client secret can be revealed by an authorized administrator.
14024
15613
  redirectUris:
14025
15614
  type: array
14026
15615
  description: Strict-match absolute HTTP or HTTPS redirect URIs. HTTPS is recommended for production deployments.
@@ -14052,10 +15641,11 @@ components:
14052
15641
  OIDCClientInput:
14053
15642
  allOf:
14054
15643
  - type: object
14055
- required: [clientId]
14056
15644
  properties:
14057
15645
  providerId: { type: string }
14058
- clientId: { type: string }
15646
+ clientId:
15647
+ type: string
15648
+ description: On create, an omitted or blank value is generated by the server. On update, it preserves the current Client ID.
14059
15649
  clientType: { type: string, enum: [public, confidential] }
14060
15650
  clientSecret: { type: string, minLength: 16, writeOnly: true }
14061
15651
  redirectUris:
@@ -14099,7 +15689,9 @@ components:
14099
15689
  required: [client]
14100
15690
  properties:
14101
15691
  client: { $ref: "#/components/schemas/OIDCClient" }
14102
- clientSecret: { type: string, writeOnly: true }
15692
+ clientSecret:
15693
+ type: string
15694
+ description: Generated or supplied client secret returned after creation. The same value can later be retrieved through the reveal action.
14103
15695
  additionalProperties: false
14104
15696
  OIDCClientCreatedEnvelope:
14105
15697
  type: object
@@ -14119,6 +15711,20 @@ components:
14119
15711
  properties:
14120
15712
  items: { type: array, items: { $ref: "#/components/schemas/OIDCClient" } }
14121
15713
  additionalProperties: false
15714
+ OIDCClientSecretReveal:
15715
+ type: object
15716
+ required: [clientId, clientSecret, revealedAt]
15717
+ properties:
15718
+ clientId: { type: string }
15719
+ clientSecret: { type: string }
15720
+ revealedAt: { type: string, format: date-time }
15721
+ additionalProperties: false
15722
+ OIDCClientSecretRevealEnvelope:
15723
+ type: object
15724
+ required: [data]
15725
+ properties:
15726
+ data: { $ref: "#/components/schemas/OIDCClientSecretReveal" }
15727
+ additionalProperties: false
14122
15728
  SAMLServiceProvider:
14123
15729
  type: object
14124
15730
  required: [entityId, acsUrls, nameIdFormat, wantAuthnRequestsSigned, wantAssertionsSigned, attributeMappings]
@@ -14700,7 +16306,7 @@ components:
14700
16306
  additionalProperties: false
14701
16307
  SystemIntegrationCategory:
14702
16308
  type: string
14703
- enum: [identity, source_control, project_management, configuration, ci_cd, code_quality, api_gateway, monitoring, messaging, ai, cloud, other]
16309
+ enum: [identity, source_control, project_management, configuration, ci_cd, code_quality, api_gateway, monitoring, messaging, ai, cloud, storage, other]
14704
16310
  x-enum-varnames:
14705
16311
  - SystemIntegrationCategoryIdentity
14706
16312
  - SystemIntegrationCategorySourceControl
@@ -14713,13 +16319,15 @@ components:
14713
16319
  - SystemIntegrationCategoryMessaging
14714
16320
  - SystemIntegrationCategoryAI
14715
16321
  - SystemIntegrationCategoryCloud
16322
+ - SystemIntegrationCategoryStorage
14716
16323
  - SystemIntegrationCategoryOther
14717
16324
  SystemIntegrationHealthStatus:
14718
16325
  type: string
14719
- enum: [unknown, healthy, unhealthy]
16326
+ enum: [unknown, healthy, degraded, unhealthy]
14720
16327
  x-enum-varnames:
14721
16328
  - SystemIntegrationHealthStatusUnknown
14722
16329
  - SystemIntegrationHealthStatusHealthy
16330
+ - SystemIntegrationHealthStatusDegraded
14723
16331
  - SystemIntegrationHealthStatusUnhealthy
14724
16332
  SystemIntegrationTestStatus:
14725
16333
  type: string
@@ -14778,7 +16386,7 @@ components:
14778
16386
  type: string
14779
16387
  pattern: "^[a-z][a-z0-9._-]*$"
14780
16388
  maxLength: 128
14781
- description: Extensible provider key such as gitlab, github, gitea, or zadig.
16389
+ description: Extensible provider key such as gitlab, github, gitea, zadig, or s3.
14782
16390
  name:
14783
16391
  type: string
14784
16392
  minLength: 1
@@ -15760,6 +17368,7 @@ components:
15760
17368
  ScopeGrantEffect:
15761
17369
  type: string
15762
17370
  enum: [allow, deny]
17371
+ x-enum-varnames: [Allow, Deny]
15763
17372
  ScopeGrant:
15764
17373
  type: object
15765
17374
  required: [id, subjectType, subjectId, businessLineId, scopeType, role, effect, enabled, createdAt, updatedAt]
@@ -15805,12 +17414,27 @@ components:
15805
17414
  ScopeGrantInput:
15806
17415
  type: object
15807
17416
  required: [subjectType, subjectId, role, enabled]
17417
+ if:
17418
+ properties:
17419
+ scopeType:
17420
+ enum: [legacy, delivery]
17421
+ then:
17422
+ required: [businessLineId]
17423
+ else:
17424
+ if:
17425
+ properties:
17426
+ scopeType:
17427
+ const: platform
17428
+ required: [scopeType]
17429
+ then:
17430
+ required: [clusterIds]
15808
17431
  properties:
15809
17432
  id: { type: string, minLength: 1 }
15810
17433
  subjectType: { $ref: "#/components/schemas/ScopeGrantSubjectType" }
15811
17434
  subjectId: { type: string, minLength: 1 }
15812
17435
  businessLineId:
15813
17436
  type: string
17437
+ minLength: 1
15814
17438
  description: Required when scopeType is legacy or delivery.
15815
17439
  environmentIds:
15816
17440
  type: array
@@ -18415,7 +20039,7 @@ components:
18415
20039
  properties:
18416
20040
  url:
18417
20041
  type: string
18418
- pattern: "^data:image/(jpeg|png|x-icon|webp);base64,"
20042
+ pattern: "^data:image/(jpeg|png|svg\\+xml|x-icon|webp);base64,"
18419
20043
  additionalProperties: false
18420
20044
  BrandingAssetUploadEnvelope:
18421
20045
  type: object
@@ -20123,6 +21747,12 @@ components:
20123
21747
  type: string
20124
21748
  phone:
20125
21749
  type: string
21750
+ avatarUrl:
21751
+ type: string
21752
+ maxLength: 700000
21753
+ avatarFit:
21754
+ type: string
21755
+ enum: [cover, contain, fill]
20126
21756
  status:
20127
21757
  type: string
20128
21758
  roles:
@@ -20155,6 +21785,43 @@ components:
20155
21785
  type: string
20156
21786
  format: date-time
20157
21787
  additionalProperties: true
21788
+ UpdateProfileRequest:
21789
+ type: object
21790
+ required: [displayName, email]
21791
+ properties:
21792
+ displayName:
21793
+ type: string
21794
+ email:
21795
+ type: string
21796
+ format: email
21797
+ phone:
21798
+ type: string
21799
+ avatarUrl:
21800
+ type: string
21801
+ maxLength: 700000
21802
+ avatarFit:
21803
+ type: string
21804
+ enum: [cover, contain, fill]
21805
+ additionalProperties: false
21806
+ ChangePasswordRequest:
21807
+ type: object
21808
+ required: [currentPassword, newPassword]
21809
+ properties:
21810
+ currentPassword:
21811
+ type: string
21812
+ minLength: 1
21813
+ newPassword:
21814
+ type: string
21815
+ minLength: 8
21816
+ additionalProperties: false
21817
+ PasswordChangeResult:
21818
+ type: object
21819
+ required: [status]
21820
+ properties:
21821
+ status:
21822
+ type: string
21823
+ const: ok
21824
+ additionalProperties: false
20158
21825
  TokenSet:
20159
21826
  type: object
20160
21827
  required: [accessToken, refreshToken, tokenType, expiresIn, expiresAt]
@@ -20236,6 +21903,67 @@ components:
20236
21903
  code:
20237
21904
  type: string
20238
21905
  additionalProperties: false
21906
+ DesktopAuthAttemptCreateRequest:
21907
+ type: object
21908
+ required: [providerId, redirectUri, codeChallenge, codeChallengeMethod]
21909
+ properties:
21910
+ providerId:
21911
+ type: string
21912
+ minLength: 1
21913
+ maxLength: 128
21914
+ redirectUri:
21915
+ type: string
21916
+ format: uri
21917
+ minLength: 1
21918
+ maxLength: 2048
21919
+ pattern: '^http://127\.0\.0\.1:(?:(?:10(?:2[4-9]|[3-9][0-9])|1[1-9][0-9]{2}|[2-9][0-9]{3})|(?:[1-5][0-9]{4})|(?:6[0-4][0-9]{3})|(?:65[0-4][0-9]{2})|(?:655[0-2][0-9])|(?:6553[0-5]))/callback/[A-Za-z0-9_-]{16,128}$'
21920
+ codeChallenge:
21921
+ type: string
21922
+ minLength: 43
21923
+ maxLength: 43
21924
+ pattern: "^[A-Za-z0-9_-]{43}$"
21925
+ codeChallengeMethod:
21926
+ type: string
21927
+ enum: [S256]
21928
+ additionalProperties: false
21929
+ DesktopAuthAttempt:
21930
+ type: object
21931
+ required: [attemptId, authorizationUrl, expiresAt]
21932
+ properties:
21933
+ attemptId:
21934
+ type: string
21935
+ minLength: 1
21936
+ maxLength: 128
21937
+ authorizationUrl:
21938
+ type: string
21939
+ format: uri
21940
+ minLength: 1
21941
+ maxLength: 2048
21942
+ expiresAt:
21943
+ type: string
21944
+ format: date-time
21945
+ additionalProperties: false
21946
+ DesktopAuthAttemptEnvelope:
21947
+ type: object
21948
+ required: [data]
21949
+ properties:
21950
+ data:
21951
+ $ref: "#/components/schemas/DesktopAuthAttempt"
21952
+ additionalProperties: false
21953
+ DesktopAuthAttemptExchangeRequest:
21954
+ type: object
21955
+ required: [code, codeVerifier]
21956
+ properties:
21957
+ code:
21958
+ type: string
21959
+ minLength: 1
21960
+ maxLength: 512
21961
+ codeVerifier:
21962
+ type: string
21963
+ minLength: 43
21964
+ maxLength: 128
21965
+ pattern: "^[A-Za-z0-9._~-]+$"
21966
+ additionalProperties: false
20239
21967
  StreamTicketRequest:
20240
21968
  type: object
20241
21969
  required: [path]
@@ -20549,11 +22277,44 @@ components:
20549
22277
  config:
20550
22278
  $ref: "#/components/schemas/BuildSourceConfig"
20551
22279
  additionalProperties: false
22280
+ BuildRepositoryBinding:
22281
+ type: object
22282
+ required: [repositoryId]
22283
+ properties:
22284
+ repositoryId:
22285
+ type: string
22286
+ checkoutPath:
22287
+ type: string
22288
+ defaultBranch:
22289
+ type: string
22290
+ allowCommitSelection:
22291
+ type: boolean
22292
+ default: false
22293
+ submodules:
22294
+ type: boolean
22295
+ default: false
22296
+ additionalProperties: false
22297
+ BuildRepositoryRefInput:
22298
+ type: object
22299
+ required: [repositoryId, refType, refName]
22300
+ properties:
22301
+ repositoryId:
22302
+ type: string
22303
+ refType:
22304
+ type: string
22305
+ enum: [branch, tag, commit]
22306
+ refName:
22307
+ type: string
22308
+ additionalProperties: false
20552
22309
  BuildSourceConfig:
20553
22310
  type: object
20554
22311
  properties:
20555
22312
  repositoryId:
20556
22313
  type: string
22314
+ repositoryBindings:
22315
+ type: array
22316
+ items:
22317
+ $ref: "#/components/schemas/BuildRepositoryBinding"
20557
22318
  dockerfilePath:
20558
22319
  type: string
20559
22320
  contextDir:
@@ -21134,6 +22895,21 @@ components:
21134
22895
  enabled:
21135
22896
  type: boolean
21136
22897
  additionalProperties: false
22898
+ ApplicationWorkflowInput:
22899
+ type: object
22900
+ required: [name, definition, enabled]
22901
+ properties:
22902
+ name:
22903
+ type: string
22904
+ minLength: 1
22905
+ description:
22906
+ type: string
22907
+ definition:
22908
+ type: object
22909
+ additionalProperties: true
22910
+ enabled:
22911
+ type: boolean
22912
+ additionalProperties: false
21137
22913
  ApplicationEnvironment:
21138
22914
  type: object
21139
22915
  required: [id, applicationId, environmentId, createdAt, updatedAt]
@@ -21150,6 +22926,14 @@ components:
21150
22926
  type: string
21151
22927
  environmentKey:
21152
22928
  type: string
22929
+ alias:
22930
+ type: string
22931
+ clusterId:
22932
+ type: string
22933
+ namespace:
22934
+ type: string
22935
+ registryId:
22936
+ type: string
21153
22937
  strategyProfileId:
21154
22938
  type: string
21155
22939
  promotionPolicyId:
@@ -21187,6 +22971,14 @@ components:
21187
22971
  type: string
21188
22972
  environmentId:
21189
22973
  type: string
22974
+ alias:
22975
+ type: string
22976
+ clusterId:
22977
+ type: string
22978
+ namespace:
22979
+ type: string
22980
+ registryId:
22981
+ type: string
21190
22982
  strategyProfileId:
21191
22983
  type: string
21192
22984
  promotionPolicyId:
@@ -21912,6 +23704,9 @@ components:
21912
23704
  type: string
21913
23705
  requiresApproval:
21914
23706
  type: boolean
23707
+ status:
23708
+ type: string
23709
+ enum: [available, unavailable]
21915
23710
  resourceSelector:
21916
23711
  $ref: "#/components/schemas/ResourceSelector"
21917
23712
  targets:
@@ -21982,6 +23777,10 @@ components:
21982
23777
  type: string
21983
23778
  refName:
21984
23779
  type: string
23780
+ repositoryRefs:
23781
+ type: array
23782
+ items:
23783
+ $ref: "#/components/schemas/BuildRepositoryRefInput"
21985
23784
  imageTag:
21986
23785
  type: string
21987
23786
  releaseName:
@@ -22030,6 +23829,96 @@ components:
22030
23829
  relatedIds:
22031
23830
  $ref: "#/components/schemas/ApplicationDeliveryActionRelatedIDs"
22032
23831
  additionalProperties: false
23832
+ ManifestPackageRenderer:
23833
+ type: string
23834
+ enum: [raw_yaml, kustomize]
23835
+ x-enum-varnames: [ManifestPackageRendererRawYAML, ManifestPackageRendererKustomize]
23836
+ ManifestPackageStatus:
23837
+ type: string
23838
+ enum: [draft, published]
23839
+ x-enum-varnames: [ManifestPackageStatusDraft, ManifestPackageStatusPublished]
23840
+ ManifestPackageBinding:
23841
+ type: object
23842
+ required: [applicationEnvironmentId, environmentKey, clusterId, namespace]
23843
+ properties:
23844
+ id: { type: string }
23845
+ applicationEnvironmentId: { type: string, minLength: 1 }
23846
+ environmentKey: { type: string, minLength: 1 }
23847
+ clusterId: { type: string, minLength: 1 }
23848
+ namespace: { type: string, minLength: 1 }
23849
+ overlay:
23850
+ type: object
23851
+ additionalProperties: { type: string }
23852
+ status: { type: string }
23853
+ additionalProperties: false
23854
+ ManifestPackage:
23855
+ type: object
23856
+ required: [id, name, applicationId, renderer, status, currentRevision, files, bindings, createdAt, updatedAt]
23857
+ properties:
23858
+ id: { type: string, minLength: 1 }
23859
+ name: { type: string, minLength: 1 }
23860
+ description: { type: string }
23861
+ applicationId: { type: string, minLength: 1 }
23862
+ serviceId:
23863
+ type: string
23864
+ nullable: true
23865
+ businessLineId: { type: string }
23866
+ renderer: { $ref: "#/components/schemas/ManifestPackageRenderer" }
23867
+ status: { $ref: "#/components/schemas/ManifestPackageStatus" }
23868
+ currentRevision: { type: integer, minimum: 0 }
23869
+ files:
23870
+ type: array
23871
+ items: { $ref: "#/components/schemas/ManifestFile" }
23872
+ bindings:
23873
+ type: array
23874
+ items: { $ref: "#/components/schemas/ManifestPackageBinding" }
23875
+ createdBy: { type: string }
23876
+ updatedBy: { type: string }
23877
+ createdAt: { type: string, format: date-time }
23878
+ updatedAt: { type: string, format: date-time }
23879
+ additionalProperties: false
23880
+ ManifestPackageInput:
23881
+ type: object
23882
+ required: [name, applicationId, renderer, files, bindings]
23883
+ properties:
23884
+ name: { type: string, minLength: 1 }
23885
+ description: { type: string }
23886
+ applicationId: { type: string, minLength: 1 }
23887
+ serviceId:
23888
+ type: string
23889
+ nullable: true
23890
+ businessLineId: { type: string }
23891
+ renderer: { $ref: "#/components/schemas/ManifestPackageRenderer" }
23892
+ files:
23893
+ type: array
23894
+ items: { $ref: "#/components/schemas/ManifestFile" }
23895
+ bindings:
23896
+ type: array
23897
+ items: { $ref: "#/components/schemas/ManifestPackageBinding" }
23898
+ additionalProperties: false
23899
+ ManifestPackagePage:
23900
+ type: object
23901
+ required: [items, total, page, pageSize]
23902
+ properties:
23903
+ items:
23904
+ type: array
23905
+ items: { $ref: "#/components/schemas/ManifestPackage" }
23906
+ total: { type: integer, minimum: 0 }
23907
+ page: { type: integer, minimum: 0 }
23908
+ pageSize: { type: integer, minimum: 0 }
23909
+ additionalProperties: false
23910
+ ManifestPackageEnvelope:
23911
+ type: object
23912
+ required: [data]
23913
+ properties:
23914
+ data: { $ref: "#/components/schemas/ManifestPackage" }
23915
+ additionalProperties: false
23916
+ ManifestPackagePageEnvelope:
23917
+ type: object
23918
+ required: [data]
23919
+ properties:
23920
+ data: { $ref: "#/components/schemas/ManifestPackagePage" }
23921
+ additionalProperties: false
22033
23922
  ManifestSourceMode:
22034
23923
  type: string
22035
23924
  enum: [soha_managed, git_synced]
@@ -23129,6 +25018,15 @@ components:
23129
25018
  items:
23130
25019
  $ref: "#/components/schemas/ApplicationEnvironment"
23131
25020
  additionalProperties: false
25021
+ DeliveryEnvironmentListEnvelope:
25022
+ type: object
25023
+ required: [data]
25024
+ properties:
25025
+ data:
25026
+ type: array
25027
+ items:
25028
+ $ref: "#/components/schemas/DeliveryEnvironment"
25029
+ additionalProperties: false
23132
25030
  BuildTemplateEnvelope:
23133
25031
  type: object
23134
25032
  required: [data]
@@ -29498,6 +31396,192 @@ components:
29498
31396
  pattern: "^[a-z][a-z0-9._-]*$"
29499
31397
  maxLength: 128
29500
31398
  additionalProperties: false
31399
+ AlertRuleType:
31400
+ type: string
31401
+ enum: [metrics, logs, traces, external_passthrough]
31402
+ x-enum-varnames:
31403
+ - AlertRuleTypeMetrics
31404
+ - AlertRuleTypeLogs
31405
+ - AlertRuleTypeTraces
31406
+ - AlertRuleTypeExternalPassthrough
31407
+ AlertRuleStringMap:
31408
+ type: object
31409
+ additionalProperties:
31410
+ type: string
31411
+ AlertRuleInput:
31412
+ type: object
31413
+ required: [name, ruleType]
31414
+ properties:
31415
+ id:
31416
+ type: string
31417
+ name:
31418
+ type: string
31419
+ minLength: 1
31420
+ ruleType:
31421
+ $ref: "#/components/schemas/AlertRuleType"
31422
+ datasourceSelector:
31423
+ $ref: "#/components/schemas/GenericObject"
31424
+ querySpec:
31425
+ $ref: "#/components/schemas/GenericObject"
31426
+ thresholdSpec:
31427
+ $ref: "#/components/schemas/GenericObject"
31428
+ forSeconds:
31429
+ type: integer
31430
+ groupBy:
31431
+ type: array
31432
+ items:
31433
+ type: string
31434
+ labels:
31435
+ $ref: "#/components/schemas/AlertRuleStringMap"
31436
+ annotations:
31437
+ $ref: "#/components/schemas/AlertRuleStringMap"
31438
+ notificationPolicyId:
31439
+ type: string
31440
+ healingPolicyIds:
31441
+ type: array
31442
+ items:
31443
+ type: string
31444
+ enabled:
31445
+ type: boolean
31446
+ additionalProperties: false
31447
+ AlertRule:
31448
+ type: object
31449
+ required: [id, name, ruleType, forSeconds, enabled, createdAt, updatedAt]
31450
+ properties:
31451
+ id:
31452
+ type: string
31453
+ name:
31454
+ type: string
31455
+ ruleType:
31456
+ $ref: "#/components/schemas/AlertRuleType"
31457
+ datasourceSelector:
31458
+ $ref: "#/components/schemas/GenericObject"
31459
+ querySpec:
31460
+ $ref: "#/components/schemas/GenericObject"
31461
+ thresholdSpec:
31462
+ $ref: "#/components/schemas/GenericObject"
31463
+ forSeconds:
31464
+ type: integer
31465
+ groupBy:
31466
+ type: array
31467
+ items:
31468
+ type: string
31469
+ labels:
31470
+ $ref: "#/components/schemas/AlertRuleStringMap"
31471
+ annotations:
31472
+ $ref: "#/components/schemas/AlertRuleStringMap"
31473
+ notificationPolicyId:
31474
+ type: string
31475
+ healingPolicyIds:
31476
+ type: array
31477
+ items:
31478
+ type: string
31479
+ enabled:
31480
+ type: boolean
31481
+ createdAt:
31482
+ type: string
31483
+ format: date-time
31484
+ updatedAt:
31485
+ type: string
31486
+ format: date-time
31487
+ additionalProperties: false
31488
+ AlertRuleEnvelope:
31489
+ type: object
31490
+ required: [data]
31491
+ properties:
31492
+ data:
31493
+ $ref: "#/components/schemas/AlertRule"
31494
+ additionalProperties: false
31495
+ AlertRuleListEnvelope:
31496
+ type: object
31497
+ required: [items]
31498
+ properties:
31499
+ items:
31500
+ type: array
31501
+ items:
31502
+ $ref: "#/components/schemas/AlertRule"
31503
+ additionalProperties: false
31504
+ AlertRuleTestResult:
31505
+ type: object
31506
+ required: [matched, executedAt]
31507
+ properties:
31508
+ ruleId:
31509
+ type: string
31510
+ ruleType:
31511
+ $ref: "#/components/schemas/AlertRuleType"
31512
+ state:
31513
+ type: string
31514
+ summary:
31515
+ type: string
31516
+ matched:
31517
+ type: boolean
31518
+ samples:
31519
+ type: array
31520
+ items:
31521
+ $ref: "#/components/schemas/GenericObject"
31522
+ dataSources:
31523
+ type: array
31524
+ items:
31525
+ type: string
31526
+ errors:
31527
+ type: array
31528
+ items:
31529
+ type: string
31530
+ querySnapshot:
31531
+ $ref: "#/components/schemas/ObservabilityQuerySnapshot"
31532
+ notificationPreview:
31533
+ type: array
31534
+ items:
31535
+ $ref: "#/components/schemas/GenericObject"
31536
+ executedAt:
31537
+ type: string
31538
+ format: date-time
31539
+ additionalProperties: false
31540
+ AlertRuleTestResultEnvelope:
31541
+ type: object
31542
+ required: [data]
31543
+ properties:
31544
+ data:
31545
+ $ref: "#/components/schemas/AlertRuleTestResult"
31546
+ additionalProperties: false
31547
+ AlertRuleRun:
31548
+ type: object
31549
+ required: [id, ruleId, status, matched, durationMs, createdAt, updatedAt]
31550
+ properties:
31551
+ id:
31552
+ type: string
31553
+ ruleId:
31554
+ type: string
31555
+ status:
31556
+ type: string
31557
+ summary:
31558
+ type: string
31559
+ matched:
31560
+ type: boolean
31561
+ durationMs:
31562
+ type: integer
31563
+ error:
31564
+ type: string
31565
+ result:
31566
+ $ref: "#/components/schemas/GenericObject"
31567
+ querySnapshot:
31568
+ $ref: "#/components/schemas/ObservabilityQuerySnapshot"
31569
+ createdAt:
31570
+ type: string
31571
+ format: date-time
31572
+ updatedAt:
31573
+ type: string
31574
+ format: date-time
31575
+ additionalProperties: false
31576
+ AlertRuleRunListEnvelope:
31577
+ type: object
31578
+ required: [items]
31579
+ properties:
31580
+ items:
31581
+ type: array
31582
+ items:
31583
+ $ref: "#/components/schemas/AlertRuleRun"
31584
+ additionalProperties: false
29501
31585
  ObservabilityDataSource:
29502
31586
  type: object
29503
31587
  required: [id, name, backendType, enabled, scope, queryBudget, redactionPolicy, config, credentialKeys, validationStatus, createdAt, updatedAt]
@@ -29836,6 +31920,11 @@ components:
29836
31920
  properties:
29837
31921
  sourceMode:
29838
31922
  $ref: "#/components/schemas/LogSourceMode"
31923
+ dataSourceId:
31924
+ type: string
31925
+ minLength: 1
31926
+ maxLength: 200
31927
+ description: Optional Soha-managed durable log data source. Existing permission and scope checks still apply.
29839
31928
  selector:
29840
31929
  $ref: "#/components/schemas/LogSourceSelector"
29841
31930
  from:
@@ -33307,6 +35396,18 @@ components:
33307
35396
  category:
33308
35397
  type: string
33309
35398
  maxLength: 50
35399
+ tenantId:
35400
+ type: string
35401
+ minLength: 1
35402
+ maxLength: 128
35403
+ workspaceId:
35404
+ type: string
35405
+ minLength: 1
35406
+ maxLength: 128
35407
+ visibility:
35408
+ $ref: "#/components/schemas/SoftwarePackageVisibility"
35409
+ status:
35410
+ $ref: "#/components/schemas/SoftwarePackageStatus"
33310
35411
  version:
33311
35412
  type: string
33312
35413
  minLength: 1
@@ -33332,6 +35433,14 @@ components:
33332
35433
  downloadPath:
33333
35434
  type: string
33334
35435
  pattern: "^/api/v1/software/packages/[^/]+/download$"
35436
+ downloadCount:
35437
+ type: integer
35438
+ format: int64
35439
+ minimum: 0
35440
+ storageIntegrationId:
35441
+ type: string
35442
+ minLength: 1
35443
+ maxLength: 128
33335
35444
  createdAt:
33336
35445
  type: string
33337
35446
  format: date-time
@@ -33339,6 +35448,41 @@ components:
33339
35448
  type: string
33340
35449
  format: date-time
33341
35450
  additionalProperties: false
35451
+ SoftwarePackageDownloadRecord:
35452
+ type: object
35453
+ required: [id, actorId, downloadedAt, durationMs]
35454
+ properties:
35455
+ id:
35456
+ type: string
35457
+ minLength: 1
35458
+ maxLength: 128
35459
+ actorId:
35460
+ type: string
35461
+ minLength: 1
35462
+ maxLength: 128
35463
+ actorName:
35464
+ type: string
35465
+ maxLength: 200
35466
+ downloadedAt:
35467
+ type: string
35468
+ format: date-time
35469
+ durationMs:
35470
+ type: integer
35471
+ format: int64
35472
+ minimum: 0
35473
+ sourceIp:
35474
+ type: string
35475
+ maxLength: 64
35476
+ additionalProperties: false
35477
+ SoftwarePackageDownloadRecordListEnvelope:
35478
+ type: object
35479
+ required: [items]
35480
+ properties:
35481
+ items:
35482
+ type: array
35483
+ items:
35484
+ $ref: "#/components/schemas/SoftwarePackageDownloadRecord"
35485
+ additionalProperties: false
33342
35486
  SoftwarePackageEnvelope:
33343
35487
  type: object
33344
35488
  required: [data]
@@ -33378,6 +35522,16 @@ components:
33378
35522
  category:
33379
35523
  type: string
33380
35524
  maxLength: 50
35525
+ tenantId:
35526
+ type: string
35527
+ minLength: 1
35528
+ maxLength: 128
35529
+ workspaceId:
35530
+ type: string
35531
+ minLength: 1
35532
+ maxLength: 128
35533
+ visibility:
35534
+ $ref: "#/components/schemas/SoftwarePackageVisibility"
33381
35535
  version:
33382
35536
  type: string
33383
35537
  minLength: 1
@@ -33388,6 +35542,10 @@ components:
33388
35542
  arch:
33389
35543
  type: string
33390
35544
  pattern: "^[a-z0-9][a-z0-9._-]{0,63}$"
35545
+ storageIntegrationId:
35546
+ type: string
35547
+ minLength: 1
35548
+ maxLength: 128
33391
35549
  file:
33392
35550
  type: string
33393
35551
  format: binary
@@ -33413,6 +35571,16 @@ components:
33413
35571
  category:
33414
35572
  type: string
33415
35573
  maxLength: 50
35574
+ tenantId:
35575
+ type: string
35576
+ minLength: 1
35577
+ maxLength: 128
35578
+ workspaceId:
35579
+ type: string
35580
+ minLength: 1
35581
+ maxLength: 128
35582
+ visibility:
35583
+ $ref: "#/components/schemas/SoftwarePackageVisibility"
33416
35584
  version:
33417
35585
  type: string
33418
35586
  minLength: 1
@@ -33423,6 +35591,10 @@ components:
33423
35591
  arch:
33424
35592
  type: string
33425
35593
  pattern: "^[a-z0-9][a-z0-9._-]{0,63}$"
35594
+ storageIntegrationId:
35595
+ type: string
35596
+ minLength: 1
35597
+ maxLength: 128
33426
35598
  url:
33427
35599
  type: string
33428
35600
  format: uri
@@ -33433,6 +35605,20 @@ components:
33433
35605
  minLength: 1
33434
35606
  maxLength: 255
33435
35607
  additionalProperties: false
35608
+ SoftwarePackageVisibility:
35609
+ type: string
35610
+ enum: [workspace, tenant, restricted]
35611
+ x-enum-varnames:
35612
+ - SoftwarePackageVisibilityWorkspace
35613
+ - SoftwarePackageVisibilityTenant
35614
+ - SoftwarePackageVisibilityRestricted
35615
+ SoftwarePackageStatus:
35616
+ type: string
35617
+ enum: [ready, quarantined, deleted]
35618
+ x-enum-varnames:
35619
+ - SoftwarePackageStatusReady
35620
+ - SoftwarePackageStatusQuarantined
35621
+ - SoftwarePackageStatusDeleted
33436
35622
  SoftwareStorage:
33437
35623
  type: object
33438
35624
  required: [backend, objectCount, totalBytes, items]
@@ -33441,6 +35627,30 @@ components:
33441
35627
  type: string
33442
35628
  minLength: 1
33443
35629
  maxLength: 64
35630
+ integrationId:
35631
+ type: string
35632
+ minLength: 1
35633
+ maxLength: 128
35634
+ providerType:
35635
+ type: string
35636
+ minLength: 1
35637
+ maxLength: 128
35638
+ endpoint:
35639
+ type: string
35640
+ format: uri
35641
+ maxLength: 2048
35642
+ bucket:
35643
+ type: string
35644
+ minLength: 1
35645
+ maxLength: 255
35646
+ region:
35647
+ type: string
35648
+ maxLength: 128
35649
+ healthStatus:
35650
+ $ref: "#/components/schemas/SystemIntegrationHealthStatus"
35651
+ lastCheckedAt:
35652
+ type: string
35653
+ format: date-time
33444
35654
  objectCount:
33445
35655
  type: integer
33446
35656
  format: int64