@opensoha/contracts 0.1.9 → 0.1.11

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 (56) hide show
  1. package/README.md +1 -1
  2. package/auth/catalog_generated.go +3 -3
  3. package/auth/catalog_test.go +35 -0
  4. package/auth/permission-catalog.json +19 -151
  5. package/compat/json-schema-ecosystem-0.1.0.json +1 -1
  6. package/compat/openapi-loose-boundaries-0.1.0.json +1 -5
  7. package/fixtures/openapi/DockerHostAgentInstallation/invalid/missing-command.json +6 -0
  8. package/fixtures/openapi/DockerHostAgentInstallation/valid/installation.json +7 -0
  9. package/fixtures/openapi/IdentityProvider/invalid/missing-id.json +9 -0
  10. package/fixtures/openapi/IdentityProvider/valid/current.json +12 -0
  11. package/fixtures/openapi/IdentityProvider/valid/v0.1.9.json +14 -0
  12. package/fixtures/openapi/MenuEnvelope/invalid/missing-data.json +1 -0
  13. package/fixtures/openapi/MenuEnvelope/valid/menu.json +13 -0
  14. package/fixtures/openapi/MenuInput/invalid/missing-icon.json +5 -0
  15. package/fixtures/openapi/MenuInput/valid/top-level.json +12 -0
  16. package/fixtures/openapi/MenuListEnvelope/invalid/items-object.json +3 -0
  17. package/fixtures/openapi/MenuListEnvelope/valid/tree.json +27 -0
  18. package/fixtures/openapi/OIDCClient/invalid/missing-grant-types.json +9 -0
  19. package/fixtures/openapi/OIDCClient/valid/current.json +19 -0
  20. package/fixtures/openapi/OIDCClient/valid/v0.1.9.json +10 -0
  21. package/fixtures/openapi/OIDCClientInput/invalid/empty-rules.json +5 -0
  22. package/fixtures/openapi/OIDCClientInput/valid/regex.json +4 -0
  23. package/fixtures/openapi/OIDCClientInput/valid/strict.json +4 -0
  24. package/fixtures/openapi/OIDCClientInput/valid/v0.1.9.json +7 -0
  25. package/fixtures/openapi/ObservabilityContext/invalid/missing-time-range.json +6 -0
  26. package/fixtures/openapi/ObservabilityContext/valid/scoped.json +27 -0
  27. package/fixtures/openapi/ObservabilityDashboardImportResultEnvelope/valid/imported.json +28 -1
  28. package/fixtures/openapi/ObservabilityDashboardPanelQueryInput/invalid/missing-time-to.json +6 -0
  29. package/fixtures/openapi/ObservabilityDashboardPanelQueryInput/valid/variables.json +8 -0
  30. package/fixtures/openapi/ObservabilityMetricCatalogEnvelope/invalid/missing-availability.json +10 -0
  31. package/fixtures/openapi/ObservabilityMetricCatalogEnvelope/valid/catalog.json +13 -0
  32. package/fixtures/openapi/ObservabilityQueryResultMeta/invalid/missing-state.json +3 -0
  33. package/fixtures/openapi/ObservabilityQueryResultMeta/valid/partial.json +15 -0
  34. package/fixtures/openapi/ObservabilityQuerySnapshot/invalid/missing-context.json +5 -0
  35. package/fixtures/openapi/ObservabilityQuerySnapshot/valid/prometheus.json +22 -0
  36. package/fixtures/openapi/ObservabilityServiceEnvelope/invalid/missing-status.json +12 -0
  37. package/fixtures/openapi/ObservabilityServiceEnvelope/valid/service.json +29 -0
  38. package/fixtures/openapi/ObservabilityServiceListEnvelope/invalid/missing-meta.json +3 -0
  39. package/fixtures/openapi/ObservabilityServiceListEnvelope/valid/services.json +39 -0
  40. package/fixtures/openapi/ObservabilityTopologyEnvelope/invalid/missing-edge-status.json +10 -0
  41. package/fixtures/openapi/ObservabilityTopologyEnvelope/valid/topology.json +22 -0
  42. package/fixtures/openapi/ScopeGrantEnvelope/invalid/missing-id.json +13 -0
  43. package/fixtures/openapi/ScopeGrantEnvelope/valid/platform.json +15 -0
  44. package/fixtures/openapi/ScopeGrantInput/invalid/missing-subject.json +7 -0
  45. package/fixtures/openapi/ScopeGrantInput/valid/delivery.json +11 -0
  46. package/fixtures/openapi/ScopeGrantListEnvelope/invalid/unknown-scope.json +16 -0
  47. package/fixtures/openapi/ScopeGrantListEnvelope/valid/list.json +18 -0
  48. package/gen/go/sohaapi/client.go +1 -1
  49. package/gen/go/sohaapi/client_test.go +18 -0
  50. package/gen/go/sohaapi/types.go +958 -93
  51. package/gen/ts/sohaapi/index.ts +1170 -34
  52. package/go.mod +1 -1
  53. package/openapi/soha-api.json +2364 -49
  54. package/openapi/soha-api.yaml +1294 -37
  55. package/openapi/spec_generated.go +3 -3
  56. 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.9
4
+ version: 0.1.11
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
@@ -3249,6 +3249,52 @@ paths:
3249
3249
  schema: { $ref: "#/components/schemas/VirtualizationOperationEnvelope" }
3250
3250
  "400": { $ref: "#/components/responses/Error" }
3251
3251
  "403": { $ref: "#/components/responses/Error" }
3252
+ /docker/hosts/{dockerHostID}/agent-installation:
3253
+ post:
3254
+ tags: [Docker]
3255
+ operationId: createDockerHostAgentInstallation
3256
+ x-soha-implementation-status: implemented
3257
+ parameters:
3258
+ - name: dockerHostID
3259
+ in: path
3260
+ required: true
3261
+ schema: { type: string, minLength: 1 }
3262
+ responses:
3263
+ "200":
3264
+ description: Short-lived shell installer URL and command for connecting an existing Linux Docker host.
3265
+ content:
3266
+ application/json:
3267
+ schema:
3268
+ $ref: "#/components/schemas/DockerHostAgentInstallationEnvelope"
3269
+ "400":
3270
+ $ref: "#/components/responses/Error"
3271
+ "403":
3272
+ $ref: "#/components/responses/Error"
3273
+ "404":
3274
+ $ref: "#/components/responses/Error"
3275
+ "409":
3276
+ $ref: "#/components/responses/Error"
3277
+ /docker/agent-installations/{installTicket}/install.sh:
3278
+ get:
3279
+ tags: [Docker]
3280
+ operationId: downloadDockerHostAgentInstaller
3281
+ x-soha-implementation-status: implemented
3282
+ security: []
3283
+ parameters:
3284
+ - name: installTicket
3285
+ in: path
3286
+ required: true
3287
+ schema: { type: string, minLength: 1 }
3288
+ responses:
3289
+ "200":
3290
+ description: Short-lived Linux shell installer for the selected Docker host Agent.
3291
+ content:
3292
+ text/x-shellscript:
3293
+ schema: { type: string }
3294
+ "404":
3295
+ $ref: "#/components/responses/Error"
3296
+ "410":
3297
+ $ref: "#/components/responses/Error"
3252
3298
  /docker/hosts/quick-create/plan:
3253
3299
  post:
3254
3300
  tags: [Docker]
@@ -5892,6 +5938,104 @@ paths:
5892
5938
  $ref: "#/components/schemas/ObservabilityMetricDataSourceListEnvelope"
5893
5939
  "403":
5894
5940
  $ref: "#/components/responses/Error"
5941
+ /observability/metrics/catalog:
5942
+ get:
5943
+ tags: [Observability]
5944
+ operationId: listObservabilityMetricCatalog
5945
+ parameters:
5946
+ - $ref: "#/components/parameters/ObservabilityDataSourceIDQuery"
5947
+ responses:
5948
+ "200":
5949
+ description: Semantic metric definitions supported by the configured metrics provider.
5950
+ content:
5951
+ application/json:
5952
+ schema:
5953
+ $ref: "#/components/schemas/ObservabilityMetricCatalogEnvelope"
5954
+ "403":
5955
+ $ref: "#/components/responses/Error"
5956
+ "404":
5957
+ $ref: "#/components/responses/Error"
5958
+ /observability/services:
5959
+ get:
5960
+ tags: [Observability]
5961
+ operationId: listObservabilityServices
5962
+ parameters:
5963
+ - $ref: "#/components/parameters/ObservabilityDataSourceIDQuery"
5964
+ - $ref: "#/components/parameters/ObservabilityClusterIDQuery"
5965
+ - $ref: "#/components/parameters/ObservabilityEnvironmentQuery"
5966
+ - $ref: "#/components/parameters/ObservabilityNamespaceQuery"
5967
+ - $ref: "#/components/parameters/ObservabilityServiceQuery"
5968
+ - $ref: "#/components/parameters/ObservabilityTimeFromQuery"
5969
+ - $ref: "#/components/parameters/ObservabilityTimeToQuery"
5970
+ responses:
5971
+ "200":
5972
+ description: OTel-identified services from the configured SkyWalking OAP provider.
5973
+ content:
5974
+ application/json:
5975
+ schema:
5976
+ $ref: "#/components/schemas/ObservabilityServiceListEnvelope"
5977
+ "400":
5978
+ $ref: "#/components/responses/Error"
5979
+ "403":
5980
+ $ref: "#/components/responses/Error"
5981
+ "404":
5982
+ $ref: "#/components/responses/Error"
5983
+ "502":
5984
+ $ref: "#/components/responses/Error"
5985
+ /observability/services/{serviceID}:
5986
+ get:
5987
+ tags: [Observability]
5988
+ operationId: getObservabilityService
5989
+ parameters:
5990
+ - $ref: "#/components/parameters/ServiceID"
5991
+ - $ref: "#/components/parameters/ObservabilityDataSourceIDQuery"
5992
+ - $ref: "#/components/parameters/ObservabilityClusterIDQuery"
5993
+ - $ref: "#/components/parameters/ObservabilityEnvironmentQuery"
5994
+ - $ref: "#/components/parameters/ObservabilityNamespaceQuery"
5995
+ - $ref: "#/components/parameters/ObservabilityTimeFromQuery"
5996
+ - $ref: "#/components/parameters/ObservabilityTimeToQuery"
5997
+ responses:
5998
+ "200":
5999
+ description: Service identity, instances and endpoints from the configured SkyWalking OAP provider.
6000
+ content:
6001
+ application/json:
6002
+ schema:
6003
+ $ref: "#/components/schemas/ObservabilityServiceEnvelope"
6004
+ "400":
6005
+ $ref: "#/components/responses/Error"
6006
+ "403":
6007
+ $ref: "#/components/responses/Error"
6008
+ "404":
6009
+ $ref: "#/components/responses/Error"
6010
+ "502":
6011
+ $ref: "#/components/responses/Error"
6012
+ /observability/services/{serviceID}/topology:
6013
+ get:
6014
+ tags: [Observability]
6015
+ operationId: getObservabilityServiceTopology
6016
+ parameters:
6017
+ - $ref: "#/components/parameters/ServiceID"
6018
+ - $ref: "#/components/parameters/ObservabilityDataSourceIDQuery"
6019
+ - $ref: "#/components/parameters/ObservabilityClusterIDQuery"
6020
+ - $ref: "#/components/parameters/ObservabilityEnvironmentQuery"
6021
+ - $ref: "#/components/parameters/ObservabilityNamespaceQuery"
6022
+ - $ref: "#/components/parameters/ObservabilityTimeFromQuery"
6023
+ - $ref: "#/components/parameters/ObservabilityTimeToQuery"
6024
+ responses:
6025
+ "200":
6026
+ description: Beta dependency graph for one service from the configured SkyWalking OAP provider.
6027
+ content:
6028
+ application/json:
6029
+ schema:
6030
+ $ref: "#/components/schemas/ObservabilityTopologyEnvelope"
6031
+ "400":
6032
+ $ref: "#/components/responses/Error"
6033
+ "403":
6034
+ $ref: "#/components/responses/Error"
6035
+ "404":
6036
+ $ref: "#/components/responses/Error"
6037
+ "502":
6038
+ $ref: "#/components/responses/Error"
5895
6039
  /observability/dashboards/imports:
5896
6040
  post:
5897
6041
  tags: [Observability]
@@ -10719,6 +10863,97 @@ paths:
10719
10863
  "400": { $ref: "#/components/responses/Error" }
10720
10864
  "401": { $ref: "#/components/responses/Error" }
10721
10865
  "403": { $ref: "#/components/responses/Error" }
10866
+ /menus:
10867
+ get:
10868
+ tags: [System]
10869
+ operationId: listMenus
10870
+ x-soha-implementation-status: implemented
10871
+ responses:
10872
+ "200":
10873
+ description: Complete menu tree for administration.
10874
+ content:
10875
+ application/json:
10876
+ schema: { $ref: "#/components/schemas/MenuListEnvelope" }
10877
+ "401": { $ref: "#/components/responses/Error" }
10878
+ "403": { $ref: "#/components/responses/Error" }
10879
+ post:
10880
+ tags: [System]
10881
+ operationId: createMenu
10882
+ x-soha-implementation-status: implemented
10883
+ requestBody:
10884
+ required: true
10885
+ content:
10886
+ application/json:
10887
+ schema: { $ref: "#/components/schemas/MenuInput" }
10888
+ responses:
10889
+ "201":
10890
+ description: Created menu.
10891
+ content:
10892
+ application/json:
10893
+ schema: { $ref: "#/components/schemas/MenuEnvelope" }
10894
+ "400": { $ref: "#/components/responses/Error" }
10895
+ "401": { $ref: "#/components/responses/Error" }
10896
+ "403": { $ref: "#/components/responses/Error" }
10897
+ /menus/visible:
10898
+ get:
10899
+ tags: [System]
10900
+ operationId: listVisibleMenus
10901
+ x-soha-implementation-status: implemented
10902
+ responses:
10903
+ "200":
10904
+ description: Menu tree visible to the authenticated principal.
10905
+ content:
10906
+ application/json:
10907
+ schema: { $ref: "#/components/schemas/MenuListEnvelope" }
10908
+ "401": { $ref: "#/components/responses/Error" }
10909
+ /menus/{menuID}:
10910
+ parameters:
10911
+ - $ref: "#/components/parameters/MenuID"
10912
+ get:
10913
+ tags: [System]
10914
+ operationId: getMenu
10915
+ x-soha-implementation-status: implemented
10916
+ responses:
10917
+ "200":
10918
+ description: Menu detail.
10919
+ content:
10920
+ application/json:
10921
+ schema: { $ref: "#/components/schemas/MenuEnvelope" }
10922
+ "401": { $ref: "#/components/responses/Error" }
10923
+ "403": { $ref: "#/components/responses/Error" }
10924
+ "404": { $ref: "#/components/responses/Error" }
10925
+ put:
10926
+ tags: [System]
10927
+ operationId: updateMenu
10928
+ x-soha-implementation-status: implemented
10929
+ requestBody:
10930
+ required: true
10931
+ content:
10932
+ application/json:
10933
+ schema: { $ref: "#/components/schemas/MenuInput" }
10934
+ responses:
10935
+ "200":
10936
+ description: Updated menu.
10937
+ content:
10938
+ application/json:
10939
+ schema: { $ref: "#/components/schemas/MenuEnvelope" }
10940
+ "400": { $ref: "#/components/responses/Error" }
10941
+ "401": { $ref: "#/components/responses/Error" }
10942
+ "403": { $ref: "#/components/responses/Error" }
10943
+ "404": { $ref: "#/components/responses/Error" }
10944
+ delete:
10945
+ tags: [System]
10946
+ operationId: deleteMenu
10947
+ x-soha-implementation-status: implemented
10948
+ responses:
10949
+ "200":
10950
+ description: Menu deleted.
10951
+ content:
10952
+ application/json:
10953
+ schema: { $ref: "#/components/schemas/MenuDeleteResult" }
10954
+ "401": { $ref: "#/components/responses/Error" }
10955
+ "403": { $ref: "#/components/responses/Error" }
10956
+ "404": { $ref: "#/components/responses/Error" }
10722
10957
  /access/permissions:
10723
10958
  get:
10724
10959
  tags: [Access]
@@ -10805,6 +11040,69 @@ paths:
10805
11040
  "401": { $ref: "#/components/responses/Error" }
10806
11041
  "403": { $ref: "#/components/responses/Error" }
10807
11042
  "404": { $ref: "#/components/responses/Error" }
11043
+ /access/scope-grants:
11044
+ get:
11045
+ tags: [Access]
11046
+ operationId: listScopeGrants
11047
+ x-soha-implementation-status: implemented
11048
+ responses:
11049
+ "200":
11050
+ description: Resource scope grants.
11051
+ content:
11052
+ application/json:
11053
+ schema: { $ref: "#/components/schemas/ScopeGrantListEnvelope" }
11054
+ "401": { $ref: "#/components/responses/Error" }
11055
+ "403": { $ref: "#/components/responses/Error" }
11056
+ post:
11057
+ tags: [Access]
11058
+ operationId: createScopeGrant
11059
+ x-soha-implementation-status: implemented
11060
+ requestBody:
11061
+ required: true
11062
+ content:
11063
+ application/json:
11064
+ schema: { $ref: "#/components/schemas/ScopeGrantInput" }
11065
+ responses:
11066
+ "201":
11067
+ description: Created resource scope grant.
11068
+ content:
11069
+ application/json:
11070
+ schema: { $ref: "#/components/schemas/ScopeGrantEnvelope" }
11071
+ "400": { $ref: "#/components/responses/Error" }
11072
+ "401": { $ref: "#/components/responses/Error" }
11073
+ "403": { $ref: "#/components/responses/Error" }
11074
+ /access/scope-grants/{scopeGrantID}:
11075
+ parameters:
11076
+ - $ref: "#/components/parameters/ScopeGrantID"
11077
+ put:
11078
+ tags: [Access]
11079
+ operationId: updateScopeGrant
11080
+ x-soha-implementation-status: implemented
11081
+ requestBody:
11082
+ required: true
11083
+ content:
11084
+ application/json:
11085
+ schema: { $ref: "#/components/schemas/ScopeGrantInput" }
11086
+ responses:
11087
+ "200":
11088
+ description: Updated resource scope grant.
11089
+ content:
11090
+ application/json:
11091
+ schema: { $ref: "#/components/schemas/ScopeGrantEnvelope" }
11092
+ "400": { $ref: "#/components/responses/Error" }
11093
+ "401": { $ref: "#/components/responses/Error" }
11094
+ "403": { $ref: "#/components/responses/Error" }
11095
+ "404": { $ref: "#/components/responses/Error" }
11096
+ delete:
11097
+ tags: [Access]
11098
+ operationId: deleteScopeGrant
11099
+ x-soha-implementation-status: implemented
11100
+ responses:
11101
+ "204":
11102
+ description: Resource scope grant deleted.
11103
+ "401": { $ref: "#/components/responses/Error" }
11104
+ "403": { $ref: "#/components/responses/Error" }
11105
+ "404": { $ref: "#/components/responses/Error" }
10808
11106
  /identity/capabilities:
10809
11107
  get:
10810
11108
  tags: [Identity]
@@ -10938,6 +11236,25 @@ paths:
10938
11236
  responses:
10939
11237
  "204": { description: Identity provider deleted. }
10940
11238
  "404": { $ref: "#/components/responses/IdentityError" }
11239
+ /identity/providers/{identityProviderID}/saml/certificate/rotate:
11240
+ parameters:
11241
+ - $ref: "#/components/parameters/IdentityProviderID"
11242
+ post:
11243
+ tags: [Identity]
11244
+ operationId: rotateIdentityProviderSAMLCertificate
11245
+ requestBody:
11246
+ required: true
11247
+ content:
11248
+ application/json:
11249
+ schema: { $ref: "#/components/schemas/SAMLCertificateRotateRequest" }
11250
+ responses:
11251
+ "200":
11252
+ description: Active and retiring public certificate summaries.
11253
+ content:
11254
+ application/json:
11255
+ schema: { $ref: "#/components/schemas/SAMLCertificateRotationEnvelope" }
11256
+ "400": { $ref: "#/components/responses/IdentityError" }
11257
+ "404": { $ref: "#/components/responses/IdentityError" }
10941
11258
  /identity/policies:
10942
11259
  get:
10943
11260
  tags: [Identity]
@@ -11062,15 +11379,17 @@ paths:
11062
11379
  get:
11063
11380
  tags: [Identity]
11064
11381
  operationId: listIdentityOIDCClients
11382
+ deprecated: true
11065
11383
  responses:
11066
11384
  "200":
11067
- description: Identity OIDC clients.
11385
+ description: Identity OIDC clients across providers.
11068
11386
  content:
11069
11387
  application/json:
11070
11388
  schema: { $ref: "#/components/schemas/OIDCClientListEnvelope" }
11071
11389
  post:
11072
11390
  tags: [Identity]
11073
11391
  operationId: createIdentityOIDCClient
11392
+ deprecated: true
11074
11393
  requestBody:
11075
11394
  required: true
11076
11395
  content:
@@ -11078,11 +11397,38 @@ paths:
11078
11397
  schema: { $ref: "#/components/schemas/OIDCClientInput" }
11079
11398
  responses:
11080
11399
  "201":
11081
- description: Created OIDC client.
11400
+ description: Created OIDC client without the one-time client secret.
11082
11401
  content:
11083
11402
  application/json:
11084
11403
  schema: { $ref: "#/components/schemas/OIDCClientEnvelope" }
11085
11404
  "400": { $ref: "#/components/responses/IdentityError" }
11405
+ /identity/providers/{identityProviderID}/oidc-clients:
11406
+ parameters:
11407
+ - $ref: "#/components/parameters/IdentityProviderID"
11408
+ get:
11409
+ tags: [Identity]
11410
+ operationId: listIdentityProviderOIDCClients
11411
+ responses:
11412
+ "200":
11413
+ description: Identity OIDC clients.
11414
+ content:
11415
+ application/json:
11416
+ schema: { $ref: "#/components/schemas/OIDCClientListEnvelope" }
11417
+ post:
11418
+ tags: [Identity]
11419
+ operationId: createIdentityProviderOIDCClient
11420
+ requestBody:
11421
+ required: true
11422
+ content:
11423
+ application/json:
11424
+ schema: { $ref: "#/components/schemas/OIDCClientInput" }
11425
+ responses:
11426
+ "201":
11427
+ description: Created OIDC client.
11428
+ content:
11429
+ application/json:
11430
+ schema: { $ref: "#/components/schemas/OIDCClientCreatedEnvelope" }
11431
+ "400": { $ref: "#/components/responses/IdentityError" }
11086
11432
  /identity/oidc-clients/{oidcClientID}:
11087
11433
  parameters:
11088
11434
  - $ref: "#/components/parameters/OIDCClientID"
@@ -11609,13 +11955,23 @@ components:
11609
11955
  name: x-api-key
11610
11956
  description: Anthropic-style Soha PAT/SAT credential header for native relay endpoints.
11611
11957
  parameters:
11958
+ MenuID:
11959
+ name: menuID
11960
+ in: path
11961
+ required: true
11962
+ schema: { type: string, minLength: 1, maxLength: 128 }
11612
11963
  AccessRoleID:
11613
11964
  name: accessRoleID
11614
11965
  in: path
11615
11966
  required: true
11616
11967
  schema: { type: string, minLength: 1, maxLength: 128 }
11617
- IdentityApplicationID:
11618
- name: identityApplicationID
11968
+ ScopeGrantID:
11969
+ name: scopeGrantID
11970
+ in: path
11971
+ required: true
11972
+ schema: { type: string, minLength: 1, maxLength: 128 }
11973
+ IdentityApplicationID:
11974
+ name: identityApplicationID
11619
11975
  in: path
11620
11976
  required: true
11621
11977
  schema: { type: string, minLength: 1, maxLength: 128 }
@@ -11918,6 +12274,60 @@ components:
11918
12274
  type: string
11919
12275
  minLength: 1
11920
12276
  maxLength: 128
12277
+ ObservabilityDataSourceIDQuery:
12278
+ name: dataSourceId
12279
+ in: query
12280
+ required: false
12281
+ schema:
12282
+ type: string
12283
+ minLength: 1
12284
+ maxLength: 200
12285
+ ObservabilityClusterIDQuery:
12286
+ name: clusterId
12287
+ in: query
12288
+ required: false
12289
+ schema:
12290
+ type: string
12291
+ minLength: 1
12292
+ maxLength: 128
12293
+ ObservabilityEnvironmentQuery:
12294
+ name: environment
12295
+ in: query
12296
+ required: false
12297
+ schema:
12298
+ type: string
12299
+ minLength: 1
12300
+ maxLength: 128
12301
+ ObservabilityNamespaceQuery:
12302
+ name: namespace
12303
+ in: query
12304
+ required: false
12305
+ schema:
12306
+ type: string
12307
+ minLength: 1
12308
+ maxLength: 253
12309
+ ObservabilityServiceQuery:
12310
+ name: service
12311
+ in: query
12312
+ required: false
12313
+ schema:
12314
+ type: string
12315
+ minLength: 1
12316
+ maxLength: 253
12317
+ ObservabilityTimeFromQuery:
12318
+ name: timeFrom
12319
+ in: query
12320
+ required: true
12321
+ schema:
12322
+ type: string
12323
+ format: date-time
12324
+ ObservabilityTimeToQuery:
12325
+ name: timeTo
12326
+ in: query
12327
+ required: true
12328
+ schema:
12329
+ type: string
12330
+ format: date-time
11921
12331
  DashboardID:
11922
12332
  name: dashboardID
11923
12333
  in: path
@@ -12584,22 +12994,92 @@ components:
12584
12994
  id: { type: string }
12585
12995
  providerId: { type: string }
12586
12996
  clientId: { type: string }
12587
- redirectUris: { type: array, items: { type: string, format: uri } }
12588
- grantTypes: { type: array, items: { type: string, enum: [authorization_code, refresh_token] } }
12997
+ clientType: { type: string, enum: [public, confidential] }
12998
+ redirectUris:
12999
+ type: array
13000
+ description: Strict-match absolute HTTP or HTTPS redirect URIs. HTTPS is recommended for production deployments.
13001
+ items: { type: string, format: uri }
13002
+ grantTypes:
13003
+ type: array
13004
+ deprecated: true
13005
+ description: Deprecated response alias retained for 0.1.x compatibility; use allowedGrantTypes.
13006
+ items: { type: string, enum: [authorization_code, refresh_token] }
13007
+ redirectUriRegexes:
13008
+ type: array
13009
+ maxItems: 100
13010
+ description: RE2 regular expressions matched against the complete absolute HTTP or HTTPS redirect URI. Evaluated in addition to redirectUris.
13011
+ items: { type: string, minLength: 1, maxLength: 2048 }
13012
+ postLogoutRedirectUris:
13013
+ type: array
13014
+ description: Absolute HTTP or HTTPS post-logout redirect URIs. HTTPS is recommended for production deployments.
13015
+ items: { type: string, format: uri }
13016
+ allowedScopes: { type: array, items: { type: string } }
13017
+ allowedGrantTypes: { type: array, items: { type: string, enum: [authorization_code, refresh_token] } }
13018
+ requirePkce: { type: boolean }
13019
+ accessTokenTtlSeconds: { type: integer, minimum: 60 }
13020
+ idTokenTtlSeconds: { type: integer, minimum: 60 }
13021
+ refreshTokenTtlSeconds: { type: integer, minimum: 0 }
12589
13022
  status: { $ref: "#/components/schemas/IdentityResourceStatus" }
12590
13023
  createdAt: { type: string, format: date-time }
12591
13024
  updatedAt: { type: string, format: date-time }
12592
13025
  additionalProperties: false
12593
13026
  OIDCClientInput:
13027
+ allOf:
13028
+ - type: object
13029
+ required: [clientId]
13030
+ properties:
13031
+ providerId: { type: string }
13032
+ clientId: { type: string }
13033
+ clientType: { type: string, enum: [public, confidential] }
13034
+ clientSecret: { type: string, minLength: 16, writeOnly: true }
13035
+ redirectUris:
13036
+ type: array
13037
+ description: Strict-match absolute HTTP or HTTPS redirect URIs. At least one redirectUris or redirectUriRegexes entry is required. HTTPS is recommended for production deployments.
13038
+ items: { type: string, format: uri }
13039
+ redirectUriRegexes:
13040
+ type: array
13041
+ maxItems: 100
13042
+ description: RE2 regular expressions matched against the complete absolute HTTP or HTTPS redirect URI. At least one redirectUris or redirectUriRegexes entry is required.
13043
+ items: { type: string, minLength: 1, maxLength: 2048 }
13044
+ postLogoutRedirectUris:
13045
+ type: array
13046
+ description: Absolute HTTP or HTTPS post-logout redirect URIs. HTTPS is recommended for production deployments.
13047
+ items: { type: string, format: uri }
13048
+ allowedScopes: { type: array, minItems: 1, items: { type: string } }
13049
+ grantTypes:
13050
+ type: array
13051
+ minItems: 1
13052
+ deprecated: true
13053
+ description: Deprecated request alias retained for 0.1.x compatibility; use allowedGrantTypes.
13054
+ items: { type: string, enum: [authorization_code, refresh_token] }
13055
+ allowedGrantTypes: { type: array, minItems: 1, items: { type: string, enum: [authorization_code, refresh_token] } }
13056
+ requirePkce: { type: boolean }
13057
+ accessTokenTtlSeconds: { type: integer, minimum: 0 }
13058
+ idTokenTtlSeconds: { type: integer, minimum: 0 }
13059
+ refreshTokenTtlSeconds: { type: integer, minimum: 0 }
13060
+ status: { $ref: "#/components/schemas/IdentityResourceStatus" }
13061
+ additionalProperties: false
13062
+ - anyOf:
13063
+ - type: object
13064
+ required: [redirectUris]
13065
+ properties:
13066
+ redirectUris: { type: array, minItems: 1, items: { type: string, format: uri } }
13067
+ - type: object
13068
+ required: [redirectUriRegexes]
13069
+ properties:
13070
+ redirectUriRegexes: { type: array, minItems: 1, items: { type: string, minLength: 1, maxLength: 2048 } }
13071
+ OIDCClientCreated:
12594
13072
  type: object
12595
- required: [providerId, clientId, redirectUris, grantTypes, status]
13073
+ required: [client]
12596
13074
  properties:
12597
- providerId: { type: string }
12598
- clientId: { type: string }
12599
- clientSecret: { type: string, minLength: 16, writeOnly: true }
12600
- redirectUris: { type: array, minItems: 1, items: { type: string, format: uri } }
12601
- grantTypes: { type: array, minItems: 1, items: { type: string, enum: [authorization_code, refresh_token] } }
12602
- status: { $ref: "#/components/schemas/IdentityResourceStatus" }
13075
+ client: { $ref: "#/components/schemas/OIDCClient" }
13076
+ clientSecret: { type: string, writeOnly: true }
13077
+ additionalProperties: false
13078
+ OIDCClientCreatedEnvelope:
13079
+ type: object
13080
+ required: [data]
13081
+ properties:
13082
+ data: { $ref: "#/components/schemas/OIDCClientCreated" }
12603
13083
  additionalProperties: false
12604
13084
  OIDCClientEnvelope:
12605
13085
  type: object
@@ -12618,7 +13098,11 @@ components:
12618
13098
  required: [entityId, acsUrls, nameIdFormat, wantAuthnRequestsSigned, wantAssertionsSigned, attributeMappings]
12619
13099
  properties:
12620
13100
  entityId: { type: string, minLength: 1 }
12621
- acsUrls: { type: array, minItems: 1, items: { type: string, format: uri } }
13101
+ acsUrls:
13102
+ type: array
13103
+ minItems: 1
13104
+ description: Absolute HTTP or HTTPS assertion consumer service URLs. HTTPS is recommended for production deployments.
13105
+ items: { type: string, format: uri }
12622
13106
  nameIdFormat: { $ref: "#/components/schemas/SAMLNameIDFormat" }
12623
13107
  spCertificates: { type: array, items: { $ref: "#/components/schemas/CertificateSummary" } }
12624
13108
  signingCertificates: { type: array, items: { $ref: "#/components/schemas/CertificateSummary" } }
@@ -12631,7 +13115,11 @@ components:
12631
13115
  required: [entityId, acsUrls, nameIdFormat, wantAuthnRequestsSigned, attributeMappings]
12632
13116
  properties:
12633
13117
  entityId: { type: string, minLength: 1 }
12634
- acsUrls: { type: array, minItems: 1, items: { type: string, format: uri } }
13118
+ acsUrls:
13119
+ type: array
13120
+ minItems: 1
13121
+ description: Absolute HTTP or HTTPS assertion consumer service URLs. HTTPS is recommended for production deployments.
13122
+ items: { type: string, format: uri }
12635
13123
  nameIdFormat: { $ref: "#/components/schemas/SAMLNameIDFormat" }
12636
13124
  spCertificatePem: { type: string, writeOnly: true }
12637
13125
  wantAuthnRequestsSigned: { type: boolean }
@@ -12646,8 +13134,20 @@ components:
12646
13134
  name: { type: string }
12647
13135
  type: { $ref: "#/components/schemas/IdentityProviderType" }
12648
13136
  enabled: { type: boolean }
12649
- config: { type: object, additionalProperties: true }
12650
- secretRefs: { type: object, additionalProperties: true }
13137
+ config:
13138
+ type: object
13139
+ description: Non-secret provider configuration.
13140
+ additionalProperties: true
13141
+ secretRefs:
13142
+ type: object
13143
+ readOnly: true
13144
+ deprecated: true
13145
+ description: Deprecated response field retained for 0.1.x SDK compatibility; current servers omit it.
13146
+ additionalProperties: true
13147
+ configuredSecretAliases:
13148
+ type: array
13149
+ readOnly: true
13150
+ items: { type: string }
12651
13151
  status: { $ref: "#/components/schemas/IdentityResourceStatus" }
12652
13152
  createdBy: { type: string }
12653
13153
  updatedBy: { type: string }
@@ -12656,14 +13156,18 @@ components:
12656
13156
  additionalProperties: false
12657
13157
  IdentityProviderInput:
12658
13158
  type: object
12659
- required: [applicationId, name, type, enabled, config, secretRefs, status]
13159
+ required: [applicationId, name, type, enabled, config, status]
12660
13160
  properties:
12661
13161
  applicationId: { type: string }
12662
13162
  name: { type: string, minLength: 1, maxLength: 200 }
12663
13163
  type: { $ref: "#/components/schemas/IdentityProviderType" }
12664
13164
  enabled: { type: boolean }
12665
13165
  config: { type: object, additionalProperties: true }
12666
- secretRefs: { type: object, additionalProperties: true }
13166
+ secretRefs:
13167
+ allOf:
13168
+ - $ref: "#/components/schemas/SecretReferenceMap"
13169
+ writeOnly: true
13170
+ description: Omit on update to preserve existing references; send an empty object to clear them.
12667
13171
  status: { $ref: "#/components/schemas/IdentityResourceStatus" }
12668
13172
  additionalProperties: false
12669
13173
  IdentityProviderEnvelope:
@@ -14047,6 +14551,65 @@ components:
14047
14551
  items:
14048
14552
  $ref: "#/components/schemas/AnyValue"
14049
14553
  additionalProperties: false
14554
+ Menu:
14555
+ type: object
14556
+ required: [id, path, labelZh, labelEn, iconKey, section, sortOrder, enabled]
14557
+ properties:
14558
+ id: { type: string, minLength: 1 }
14559
+ parentId: { type: string, minLength: 1 }
14560
+ path: { type: string, minLength: 1 }
14561
+ labelZh: { type: string, minLength: 1 }
14562
+ labelEn: { type: string, minLength: 1 }
14563
+ iconKey: { type: string, minLength: 1 }
14564
+ section: { type: string }
14565
+ sortOrder: { type: integer }
14566
+ enabled: { type: boolean }
14567
+ roleIds:
14568
+ type: array
14569
+ uniqueItems: true
14570
+ items: { type: string, minLength: 1 }
14571
+ children:
14572
+ type: array
14573
+ items: { $ref: "#/components/schemas/Menu" }
14574
+ additionalProperties: false
14575
+ MenuInput:
14576
+ type: object
14577
+ required: [path, labelZh, labelEn, iconKey]
14578
+ properties:
14579
+ id: { type: string, minLength: 1 }
14580
+ parentId: { type: string, minLength: 1, nullable: true }
14581
+ path: { type: string, minLength: 1 }
14582
+ labelZh: { type: string, minLength: 1 }
14583
+ labelEn: { type: string, minLength: 1 }
14584
+ iconKey: { type: string, minLength: 1 }
14585
+ section: { type: string }
14586
+ sortOrder: { type: integer }
14587
+ enabled: { type: boolean }
14588
+ roleIds:
14589
+ type: array
14590
+ uniqueItems: true
14591
+ items: { type: string, minLength: 1 }
14592
+ additionalProperties: false
14593
+ MenuEnvelope:
14594
+ type: object
14595
+ required: [data]
14596
+ properties:
14597
+ data: { $ref: "#/components/schemas/Menu" }
14598
+ additionalProperties: false
14599
+ MenuListEnvelope:
14600
+ type: object
14601
+ required: [items]
14602
+ properties:
14603
+ items:
14604
+ type: array
14605
+ items: { $ref: "#/components/schemas/Menu" }
14606
+ additionalProperties: false
14607
+ MenuDeleteResult:
14608
+ type: object
14609
+ required: [status]
14610
+ properties:
14611
+ status: { type: string, const: ok }
14612
+ additionalProperties: false
14050
14613
  PermissionRiskLevel:
14051
14614
  type: string
14052
14615
  enum: [read, mutate, execute, high]
@@ -14162,6 +14725,117 @@ components:
14162
14725
  properties:
14163
14726
  status: { type: string, const: ok }
14164
14727
  additionalProperties: false
14728
+ ScopeGrantSubjectType:
14729
+ type: string
14730
+ enum: [user, team]
14731
+ ScopeGrantType:
14732
+ type: string
14733
+ enum: [legacy, delivery, platform]
14734
+ ScopeGrantEffect:
14735
+ type: string
14736
+ enum: [allow, deny]
14737
+ ScopeGrant:
14738
+ type: object
14739
+ required: [id, subjectType, subjectId, businessLineId, scopeType, role, effect, enabled, createdAt, updatedAt]
14740
+ properties:
14741
+ id: { type: string, minLength: 1 }
14742
+ subjectType: { $ref: "#/components/schemas/ScopeGrantSubjectType" }
14743
+ subjectId: { type: string, minLength: 1 }
14744
+ businessLineId:
14745
+ type: string
14746
+ description: Required for legacy and delivery grants; empty for platform grants.
14747
+ environmentIds:
14748
+ type: array
14749
+ uniqueItems: true
14750
+ items: { type: string, minLength: 1 }
14751
+ applicationIds:
14752
+ type: array
14753
+ uniqueItems: true
14754
+ items: { type: string, minLength: 1 }
14755
+ scopeType: { $ref: "#/components/schemas/ScopeGrantType" }
14756
+ clusterIds:
14757
+ type: array
14758
+ uniqueItems: true
14759
+ items: { type: string, minLength: 1 }
14760
+ namespaces:
14761
+ type: array
14762
+ uniqueItems: true
14763
+ items: { type: string, minLength: 1 }
14764
+ namespaceSelector: { type: string }
14765
+ resourceGroups:
14766
+ type: array
14767
+ uniqueItems: true
14768
+ items: { type: string, minLength: 1 }
14769
+ resourceKinds:
14770
+ type: array
14771
+ uniqueItems: true
14772
+ items: { type: string, minLength: 1 }
14773
+ role: { type: string, minLength: 1 }
14774
+ effect: { $ref: "#/components/schemas/ScopeGrantEffect" }
14775
+ enabled: { type: boolean }
14776
+ createdAt: { type: string, format: date-time }
14777
+ updatedAt: { type: string, format: date-time }
14778
+ additionalProperties: false
14779
+ ScopeGrantInput:
14780
+ type: object
14781
+ required: [subjectType, subjectId, role, enabled]
14782
+ properties:
14783
+ id: { type: string, minLength: 1 }
14784
+ subjectType: { $ref: "#/components/schemas/ScopeGrantSubjectType" }
14785
+ subjectId: { type: string, minLength: 1 }
14786
+ businessLineId:
14787
+ type: string
14788
+ description: Required when scopeType is legacy or delivery.
14789
+ environmentIds:
14790
+ type: array
14791
+ uniqueItems: true
14792
+ items: { type: string, minLength: 1 }
14793
+ applicationIds:
14794
+ type: array
14795
+ uniqueItems: true
14796
+ items: { type: string, minLength: 1 }
14797
+ scopeType:
14798
+ allOf:
14799
+ - $ref: "#/components/schemas/ScopeGrantType"
14800
+ default: legacy
14801
+ clusterIds:
14802
+ type: array
14803
+ minItems: 1
14804
+ uniqueItems: true
14805
+ description: Required when scopeType is platform.
14806
+ items: { type: string, minLength: 1 }
14807
+ namespaces:
14808
+ type: array
14809
+ uniqueItems: true
14810
+ items: { type: string, minLength: 1 }
14811
+ namespaceSelector: { type: string }
14812
+ resourceGroups:
14813
+ type: array
14814
+ uniqueItems: true
14815
+ items: { type: string, minLength: 1 }
14816
+ resourceKinds:
14817
+ type: array
14818
+ uniqueItems: true
14819
+ items: { type: string, minLength: 1 }
14820
+ role: { type: string, minLength: 1 }
14821
+ effect:
14822
+ allOf:
14823
+ - $ref: "#/components/schemas/ScopeGrantEffect"
14824
+ default: allow
14825
+ enabled: { type: boolean }
14826
+ additionalProperties: false
14827
+ ScopeGrantEnvelope:
14828
+ type: object
14829
+ required: [data]
14830
+ properties:
14831
+ data: { $ref: "#/components/schemas/ScopeGrant" }
14832
+ additionalProperties: false
14833
+ ScopeGrantListEnvelope:
14834
+ type: object
14835
+ required: [items]
14836
+ properties:
14837
+ items: { type: array, items: { $ref: "#/components/schemas/ScopeGrant" } }
14838
+ additionalProperties: false
14165
14839
  AuthorizationDecisionStatus:
14166
14840
  type: string
14167
14841
  enum: [allow, deny, approval_required]
@@ -16578,6 +17252,7 @@ components:
16578
17252
  properties:
16579
17253
  appTitle: { type: string }
16580
17254
  sidebarTitle: { type: string }
17255
+ slogan: { type: string }
16581
17256
  loginLogoUrl: { type: string }
16582
17257
  expandedLogoUrl: { type: string }
16583
17258
  collapsedLogoUrl: { type: string }
@@ -16596,6 +17271,7 @@ components:
16596
17271
  properties:
16597
17272
  appTitle: { type: string }
16598
17273
  sidebarTitle: { type: string }
17274
+ slogan: { type: string }
16599
17275
  loginLogoUrl: { type: string }
16600
17276
  expandedLogoUrl: { type: string }
16601
17277
  collapsedLogoUrl: { type: string }
@@ -17338,6 +18014,8 @@ components:
17338
18014
  type: object
17339
18015
  required: [verification]
17340
18016
  properties:
18017
+ branding:
18018
+ $ref: "#/components/schemas/BrandingSettings"
17341
18019
  localPasswordLoginEnabled:
17342
18020
  type: boolean
17343
18021
  verification:
@@ -25210,6 +25888,33 @@ components:
25210
25888
  data:
25211
25889
  $ref: "#/components/schemas/AgentInstallation"
25212
25890
  additionalProperties: false
25891
+ DockerHostAgentInstallation:
25892
+ type: object
25893
+ required: [hostId, operationId, scriptUrl, command, expiresAt]
25894
+ properties:
25895
+ hostId:
25896
+ type: string
25897
+ minLength: 1
25898
+ operationId:
25899
+ type: string
25900
+ minLength: 1
25901
+ scriptUrl:
25902
+ type: string
25903
+ format: uri
25904
+ command:
25905
+ type: string
25906
+ minLength: 1
25907
+ expiresAt:
25908
+ type: string
25909
+ format: date-time
25910
+ additionalProperties: false
25911
+ DockerHostAgentInstallationEnvelope:
25912
+ type: object
25913
+ required: [data]
25914
+ properties:
25915
+ data:
25916
+ $ref: "#/components/schemas/DockerHostAgentInstallation"
25917
+ additionalProperties: false
25213
25918
  ObservabilityProviderSignal:
25214
25919
  type: string
25215
25920
  enum: [logs, metrics, traces, profiles]
@@ -25232,6 +25937,16 @@ components:
25232
25937
  - ObservabilityProviderStatusSupported
25233
25938
  - ObservabilityProviderStatusDegraded
25234
25939
  - ObservabilityProviderStatusUnsupported
25940
+ ObservabilityProviderRuntimeStatus:
25941
+ type: string
25942
+ enum: [unconfigured, unknown, healthy, degraded, failed, unsupported]
25943
+ x-enum-varnames:
25944
+ - ObservabilityProviderRuntimeStatusUnconfigured
25945
+ - ObservabilityProviderRuntimeStatusUnknown
25946
+ - ObservabilityProviderRuntimeStatusHealthy
25947
+ - ObservabilityProviderRuntimeStatusDegraded
25948
+ - ObservabilityProviderRuntimeStatusFailed
25949
+ - ObservabilityProviderRuntimeStatusUnsupported
25235
25950
  ObservabilityProviderDefinition:
25236
25951
  type: object
25237
25952
  required: [providerKey, displayName, protocolVersion, signals, capabilities, runtimeMode, builtIn, status]
@@ -25273,6 +25988,17 @@ components:
25273
25988
  statusReason:
25274
25989
  type: string
25275
25990
  maxLength: 500
25991
+ configured:
25992
+ type: boolean
25993
+ description: True when at least one enabled data source is configured for this provider.
25994
+ runtimeStatus:
25995
+ $ref: "#/components/schemas/ObservabilityProviderRuntimeStatus"
25996
+ runtimeStatusReason:
25997
+ type: string
25998
+ maxLength: 500
25999
+ lastValidatedAt:
26000
+ type: string
26001
+ format: date-time
25276
26002
  pluginId:
25277
26003
  type: string
25278
26004
  maxLength: 200
@@ -25294,14 +26020,23 @@ components:
25294
26020
  enum: [grafana]
25295
26021
  x-enum-varnames:
25296
26022
  - ObservabilityDashboardSourceGrafana
26023
+ ObservabilityDashboardSourceFormat:
26024
+ type: string
26025
+ enum: [classic, v1]
26026
+ x-enum-varnames:
26027
+ - ObservabilityDashboardSourceFormatClassic
26028
+ - ObservabilityDashboardSourceFormatV1
25297
26029
  ObservabilityDashboardPanelType:
25298
26030
  type: string
25299
- enum: [timeseries, stat, text, row]
26031
+ enum: [timeseries, table, stat, gauge, text, row, unsupported]
25300
26032
  x-enum-varnames:
25301
26033
  - ObservabilityDashboardPanelTypeTimeseries
26034
+ - ObservabilityDashboardPanelTypeTable
25302
26035
  - ObservabilityDashboardPanelTypeStat
26036
+ - ObservabilityDashboardPanelTypeGauge
25303
26037
  - ObservabilityDashboardPanelTypeText
25304
26038
  - ObservabilityDashboardPanelTypeRow
26039
+ - ObservabilityDashboardPanelTypeUnsupported
25305
26040
  ObservabilityDashboardPanelLayout:
25306
26041
  type: object
25307
26042
  required: [x, y, w, h]
@@ -25337,6 +26072,15 @@ components:
25337
26072
  legend:
25338
26073
  type: string
25339
26074
  maxLength: 256
26075
+ dataSourceType:
26076
+ type: string
26077
+ maxLength: 128
26078
+ dataSourceUid:
26079
+ type: string
26080
+ maxLength: 200
26081
+ dataSourceId:
26082
+ type: string
26083
+ maxLength: 200
25340
26084
  additionalProperties: false
25341
26085
  ObservabilityDashboardPanel:
25342
26086
  type: object
@@ -25364,28 +26108,85 @@ components:
25364
26108
  markdown:
25365
26109
  type: string
25366
26110
  maxLength: 32768
26111
+ sourcePanelType:
26112
+ type: string
26113
+ maxLength: 128
26114
+ unsupported:
26115
+ type: boolean
26116
+ rawJson:
26117
+ type: string
26118
+ maxLength: 2097152
26119
+ description: Original Grafana panel JSON retained for unsupported renderers and never executed directly.
25367
26120
  additionalProperties: false
25368
- ObservabilityDashboard:
26121
+ ObservabilityDashboardVariableType:
26122
+ type: string
26123
+ enum: [custom, constant]
26124
+ x-enum-varnames:
26125
+ - ObservabilityDashboardVariableTypeCustom
26126
+ - ObservabilityDashboardVariableTypeConstant
26127
+ ObservabilityDashboardVariable:
25369
26128
  type: object
25370
- required: [id, name, source, tags, panels, createdAt, updatedAt]
26129
+ required: [name, type, options]
25371
26130
  properties:
25372
- id:
25373
- type: string
25374
- minLength: 1
25375
- maxLength: 128
25376
26131
  name:
25377
26132
  type: string
25378
- minLength: 1
25379
- maxLength: 200
25380
- source:
25381
- $ref: "#/components/schemas/ObservabilityDashboardSource"
25382
- sourceSchemaVersion:
25383
- type: integer
25384
- minimum: 0
25385
- dataSourceId:
26133
+ pattern: "^[A-Za-z_][A-Za-z0-9_]*$"
26134
+ maxLength: 64
26135
+ label:
25386
26136
  type: string
25387
26137
  maxLength: 200
25388
- tags:
26138
+ type:
26139
+ $ref: "#/components/schemas/ObservabilityDashboardVariableType"
26140
+ current:
26141
+ type: string
26142
+ maxLength: 512
26143
+ options:
26144
+ type: array
26145
+ maxItems: 100
26146
+ uniqueItems: true
26147
+ items:
26148
+ type: string
26149
+ maxLength: 512
26150
+ additionalProperties: false
26151
+ ObservabilityDashboardDataSourceBinding:
26152
+ type: object
26153
+ required: [type, dataSourceId]
26154
+ properties:
26155
+ type:
26156
+ type: string
26157
+ minLength: 1
26158
+ maxLength: 128
26159
+ uid:
26160
+ type: string
26161
+ maxLength: 200
26162
+ dataSourceId:
26163
+ type: string
26164
+ minLength: 1
26165
+ maxLength: 200
26166
+ additionalProperties: false
26167
+ ObservabilityDashboard:
26168
+ type: object
26169
+ required: [id, name, source, tags, panels, createdAt, updatedAt]
26170
+ properties:
26171
+ id:
26172
+ type: string
26173
+ minLength: 1
26174
+ maxLength: 128
26175
+ name:
26176
+ type: string
26177
+ minLength: 1
26178
+ maxLength: 200
26179
+ source:
26180
+ $ref: "#/components/schemas/ObservabilityDashboardSource"
26181
+ sourceFormat:
26182
+ $ref: "#/components/schemas/ObservabilityDashboardSourceFormat"
26183
+ sourceSchemaVersion:
26184
+ type: integer
26185
+ minimum: 0
26186
+ dataSourceId:
26187
+ type: string
26188
+ maxLength: 200
26189
+ tags:
25389
26190
  type: array
25390
26191
  maxItems: 50
25391
26192
  uniqueItems: true
@@ -25398,6 +26199,25 @@ components:
25398
26199
  maxItems: 200
25399
26200
  items:
25400
26201
  $ref: "#/components/schemas/ObservabilityDashboardPanel"
26202
+ variables:
26203
+ type: array
26204
+ maxItems: 50
26205
+ items:
26206
+ $ref: "#/components/schemas/ObservabilityDashboardVariable"
26207
+ dataSourceBindings:
26208
+ type: array
26209
+ maxItems: 100
26210
+ items:
26211
+ $ref: "#/components/schemas/ObservabilityDashboardDataSourceBinding"
26212
+ importWarnings:
26213
+ type: array
26214
+ maxItems: 500
26215
+ items:
26216
+ $ref: "#/components/schemas/ObservabilityDashboardImportWarning"
26217
+ rawJson:
26218
+ type: string
26219
+ maxLength: 2097152
26220
+ description: Original bounded Grafana import document. It is retained for fidelity and never executed directly.
25401
26221
  createdAt:
25402
26222
  type: string
25403
26223
  format: date-time
@@ -25486,7 +26306,7 @@ components:
25486
26306
  $ref: "#/components/schemas/ObservabilityDashboardImportWarning"
25487
26307
  importedPanelCount:
25488
26308
  type: integer
25489
- minimum: 1
26309
+ minimum: 0
25490
26310
  skippedPanelCount:
25491
26311
  type: integer
25492
26312
  minimum: 0
@@ -25513,13 +26333,25 @@ components:
25513
26333
  minimum: 1
25514
26334
  maximum: 3600
25515
26335
  default: 60
26336
+ variables:
26337
+ type: object
26338
+ maxProperties: 50
26339
+ additionalProperties:
26340
+ type: string
26341
+ maxLength: 512
25516
26342
  additionalProperties: false
25517
26343
  ObservabilityQueryScope:
25518
26344
  type: object
25519
26345
  properties:
26346
+ workspaceId:
26347
+ type: string
26348
+ maxLength: 128
25520
26349
  clusterId:
25521
26350
  type: string
25522
26351
  maxLength: 128
26352
+ environment:
26353
+ type: string
26354
+ maxLength: 128
25523
26355
  namespace:
25524
26356
  type: string
25525
26357
  maxLength: 253
@@ -25530,6 +26362,187 @@ components:
25530
26362
  type: string
25531
26363
  maxLength: 253
25532
26364
  additionalProperties: false
26365
+ ObservabilitySignal:
26366
+ type: string
26367
+ enum: [metrics, traces, logs, events]
26368
+ x-enum-varnames:
26369
+ - ObservabilitySignalMetrics
26370
+ - ObservabilitySignalTraces
26371
+ - ObservabilitySignalLogs
26372
+ - ObservabilitySignalEvents
26373
+ ObservabilityTimeRange:
26374
+ type: object
26375
+ required: [from, to]
26376
+ properties:
26377
+ from:
26378
+ type: string
26379
+ format: date-time
26380
+ to:
26381
+ type: string
26382
+ format: date-time
26383
+ timezone:
26384
+ type: string
26385
+ maxLength: 64
26386
+ additionalProperties: false
26387
+ ObservabilityResourceIdentity:
26388
+ type: object
26389
+ required: [kind, name]
26390
+ properties:
26391
+ kind:
26392
+ type: string
26393
+ minLength: 1
26394
+ maxLength: 128
26395
+ name:
26396
+ type: string
26397
+ minLength: 1
26398
+ maxLength: 253
26399
+ uid:
26400
+ type: string
26401
+ maxLength: 253
26402
+ additionalProperties: false
26403
+ ObservabilityFilter:
26404
+ type: object
26405
+ properties:
26406
+ text:
26407
+ type: string
26408
+ maxLength: 2048
26409
+ labels:
26410
+ type: object
26411
+ maxProperties: 100
26412
+ additionalProperties:
26413
+ type: string
26414
+ maxLength: 1024
26415
+ traceId:
26416
+ type: string
26417
+ maxLength: 128
26418
+ spanId:
26419
+ type: string
26420
+ maxLength: 128
26421
+ additionalProperties: false
26422
+ ObservabilityContext:
26423
+ type: object
26424
+ required: [version, scope, timeRange]
26425
+ properties:
26426
+ version:
26427
+ type: string
26428
+ enum: [v1]
26429
+ scope:
26430
+ $ref: "#/components/schemas/ObservabilityQueryScope"
26431
+ resource:
26432
+ $ref: "#/components/schemas/ObservabilityResourceIdentity"
26433
+ timeRange:
26434
+ $ref: "#/components/schemas/ObservabilityTimeRange"
26435
+ filter:
26436
+ $ref: "#/components/schemas/ObservabilityFilter"
26437
+ scopeRestricted:
26438
+ type: boolean
26439
+ readOnly: true
26440
+ description: True when authorization narrowed the requested scope.
26441
+ additionalProperties: false
26442
+ ObservabilityQueryLanguage:
26443
+ type: string
26444
+ enum: [metric_key, promql, logql, elasticsearch, clickhouse_sql, trace_filter, event_filter]
26445
+ x-enum-varnames:
26446
+ - ObservabilityQueryLanguageMetricKey
26447
+ - ObservabilityQueryLanguagePromQL
26448
+ - ObservabilityQueryLanguageLogQL
26449
+ - ObservabilityQueryLanguageElasticsearch
26450
+ - ObservabilityQueryLanguageClickHouseSQL
26451
+ - ObservabilityQueryLanguageTraceFilter
26452
+ - ObservabilityQueryLanguageEventFilter
26453
+ ObservabilityQuerySnapshot:
26454
+ type: object
26455
+ required: [version, signal, context]
26456
+ properties:
26457
+ version:
26458
+ type: string
26459
+ enum: [v1]
26460
+ signal:
26461
+ $ref: "#/components/schemas/ObservabilitySignal"
26462
+ dataSourceId:
26463
+ type: string
26464
+ maxLength: 200
26465
+ backendType:
26466
+ type: string
26467
+ maxLength: 128
26468
+ context:
26469
+ $ref: "#/components/schemas/ObservabilityContext"
26470
+ queryLanguage:
26471
+ $ref: "#/components/schemas/ObservabilityQueryLanguage"
26472
+ query:
26473
+ type: string
26474
+ maxLength: 8192
26475
+ description: Provider-native query text. Soha does not translate arbitrary query languages.
26476
+ metricKey:
26477
+ type: string
26478
+ maxLength: 128
26479
+ traceId:
26480
+ type: string
26481
+ maxLength: 128
26482
+ spanId:
26483
+ type: string
26484
+ maxLength: 128
26485
+ createdAt:
26486
+ type: string
26487
+ format: date-time
26488
+ additionalProperties: false
26489
+ ObservabilityQueryState:
26490
+ type: string
26491
+ enum: [success, empty, partial, error, no_data, unsupported]
26492
+ x-enum-varnames:
26493
+ - ObservabilityQueryStateSuccess
26494
+ - ObservabilityQueryStateEmpty
26495
+ - ObservabilityQueryStatePartial
26496
+ - ObservabilityQueryStateError
26497
+ - ObservabilityQueryStateNoData
26498
+ - ObservabilityQueryStateUnsupported
26499
+ ObservabilityQueryError:
26500
+ type: object
26501
+ required: [code, message]
26502
+ properties:
26503
+ code:
26504
+ type: string
26505
+ pattern: "^[a-z][a-z0-9._-]*$"
26506
+ maxLength: 128
26507
+ message:
26508
+ type: string
26509
+ minLength: 1
26510
+ maxLength: 1000
26511
+ retryable:
26512
+ type: boolean
26513
+ sourceId:
26514
+ type: string
26515
+ maxLength: 200
26516
+ additionalProperties: false
26517
+ ObservabilityQueryResultMeta:
26518
+ type: object
26519
+ required: [state]
26520
+ properties:
26521
+ state:
26522
+ $ref: "#/components/schemas/ObservabilityQueryState"
26523
+ snapshot:
26524
+ $ref: "#/components/schemas/ObservabilityQuerySnapshot"
26525
+ observedAt:
26526
+ type: string
26527
+ format: date-time
26528
+ durationMs:
26529
+ type: integer
26530
+ format: int64
26531
+ minimum: 0
26532
+ scopeRestricted:
26533
+ type: boolean
26534
+ warnings:
26535
+ type: array
26536
+ maxItems: 100
26537
+ items:
26538
+ type: string
26539
+ maxLength: 1000
26540
+ errors:
26541
+ type: array
26542
+ maxItems: 100
26543
+ items:
26544
+ $ref: "#/components/schemas/ObservabilityQueryError"
26545
+ additionalProperties: false
25533
26546
  ObservabilityMetricKey:
25534
26547
  type: string
25535
26548
  enum: [cpu_usage, memory_usage, restart_rate, error_rate, latency_p95]
@@ -25604,6 +26617,8 @@ components:
25604
26617
  type: array
25605
26618
  items:
25606
26619
  $ref: "#/components/schemas/ObservabilityMetricSeries"
26620
+ meta:
26621
+ $ref: "#/components/schemas/ObservabilityQueryResultMeta"
25607
26622
  additionalProperties: false
25608
26623
  ObservabilityMetricQueryEnvelope:
25609
26624
  type: object
@@ -25689,6 +26704,8 @@ components:
25689
26704
  type: array
25690
26705
  items:
25691
26706
  $ref: "#/components/schemas/ObservabilityTraceSpan"
26707
+ meta:
26708
+ $ref: "#/components/schemas/ObservabilityQueryResultMeta"
25692
26709
  additionalProperties: false
25693
26710
  ObservabilityTraceQueryEnvelope:
25694
26711
  type: object
@@ -25697,6 +26714,244 @@ components:
25697
26714
  data:
25698
26715
  $ref: "#/components/schemas/ObservabilityTraceQueryResult"
25699
26716
  additionalProperties: false
26717
+ ObservabilityServiceStatus:
26718
+ type: string
26719
+ enum: [healthy, degraded, unknown, unsupported]
26720
+ x-enum-varnames:
26721
+ - ObservabilityServiceStatusHealthy
26722
+ - ObservabilityServiceStatusDegraded
26723
+ - ObservabilityServiceStatusUnknown
26724
+ - ObservabilityServiceStatusUnsupported
26725
+ ObservabilityServiceInstance:
26726
+ type: object
26727
+ required: [id, name, status]
26728
+ properties:
26729
+ id:
26730
+ type: string
26731
+ minLength: 1
26732
+ maxLength: 253
26733
+ name:
26734
+ type: string
26735
+ minLength: 1
26736
+ maxLength: 253
26737
+ status:
26738
+ $ref: "#/components/schemas/ObservabilityServiceStatus"
26739
+ lastSeenAt:
26740
+ type: string
26741
+ format: date-time
26742
+ additionalProperties: false
26743
+ ObservabilityServiceEndpoint:
26744
+ type: object
26745
+ required: [id, name, status]
26746
+ properties:
26747
+ id:
26748
+ type: string
26749
+ minLength: 1
26750
+ maxLength: 512
26751
+ name:
26752
+ type: string
26753
+ minLength: 1
26754
+ maxLength: 512
26755
+ method:
26756
+ type: string
26757
+ maxLength: 32
26758
+ status:
26759
+ $ref: "#/components/schemas/ObservabilityServiceStatus"
26760
+ requestRate:
26761
+ type: number
26762
+ format: double
26763
+ minimum: 0
26764
+ errorRate:
26765
+ type: number
26766
+ format: double
26767
+ minimum: 0
26768
+ latencyP95Ms:
26769
+ type: number
26770
+ format: double
26771
+ minimum: 0
26772
+ additionalProperties: false
26773
+ ObservabilityService:
26774
+ type: object
26775
+ required: [id, name, status, clusterIds, instances, endpoints]
26776
+ properties:
26777
+ id:
26778
+ type: string
26779
+ minLength: 1
26780
+ maxLength: 253
26781
+ name:
26782
+ type: string
26783
+ minLength: 1
26784
+ maxLength: 253
26785
+ displayName:
26786
+ type: string
26787
+ maxLength: 253
26788
+ environment:
26789
+ type: string
26790
+ maxLength: 128
26791
+ namespace:
26792
+ type: string
26793
+ maxLength: 253
26794
+ clusterIds:
26795
+ type: array
26796
+ maxItems: 100
26797
+ uniqueItems: true
26798
+ items:
26799
+ type: string
26800
+ minLength: 1
26801
+ maxLength: 128
26802
+ status:
26803
+ $ref: "#/components/schemas/ObservabilityServiceStatus"
26804
+ requestRate:
26805
+ type: number
26806
+ format: double
26807
+ minimum: 0
26808
+ errorRate:
26809
+ type: number
26810
+ format: double
26811
+ minimum: 0
26812
+ latencyP95Ms:
26813
+ type: number
26814
+ format: double
26815
+ minimum: 0
26816
+ lastSeenAt:
26817
+ type: string
26818
+ format: date-time
26819
+ instances:
26820
+ type: array
26821
+ maxItems: 1000
26822
+ items:
26823
+ $ref: "#/components/schemas/ObservabilityServiceInstance"
26824
+ endpoints:
26825
+ type: array
26826
+ maxItems: 1000
26827
+ items:
26828
+ $ref: "#/components/schemas/ObservabilityServiceEndpoint"
26829
+ additionalProperties: false
26830
+ ObservabilityServiceListEnvelope:
26831
+ type: object
26832
+ required: [items, meta]
26833
+ properties:
26834
+ items:
26835
+ type: array
26836
+ maxItems: 1000
26837
+ items:
26838
+ $ref: "#/components/schemas/ObservabilityService"
26839
+ meta:
26840
+ $ref: "#/components/schemas/ObservabilityQueryResultMeta"
26841
+ additionalProperties: false
26842
+ ObservabilityServiceEnvelope:
26843
+ type: object
26844
+ required: [data, meta]
26845
+ properties:
26846
+ data:
26847
+ $ref: "#/components/schemas/ObservabilityService"
26848
+ meta:
26849
+ $ref: "#/components/schemas/ObservabilityQueryResultMeta"
26850
+ additionalProperties: false
26851
+ ObservabilityTopologyNode:
26852
+ type: object
26853
+ required: [serviceId, name, status]
26854
+ properties:
26855
+ serviceId:
26856
+ type: string
26857
+ minLength: 1
26858
+ maxLength: 253
26859
+ name:
26860
+ type: string
26861
+ minLength: 1
26862
+ maxLength: 253
26863
+ status:
26864
+ $ref: "#/components/schemas/ObservabilityServiceStatus"
26865
+ additionalProperties: false
26866
+ ObservabilityTopologyEdge:
26867
+ type: object
26868
+ required: [sourceServiceId, targetServiceId, status]
26869
+ properties:
26870
+ sourceServiceId:
26871
+ type: string
26872
+ minLength: 1
26873
+ maxLength: 253
26874
+ targetServiceId:
26875
+ type: string
26876
+ minLength: 1
26877
+ maxLength: 253
26878
+ status:
26879
+ $ref: "#/components/schemas/ObservabilityServiceStatus"
26880
+ requestRate:
26881
+ type: number
26882
+ format: double
26883
+ minimum: 0
26884
+ errorRate:
26885
+ type: number
26886
+ format: double
26887
+ minimum: 0
26888
+ latencyP95Ms:
26889
+ type: number
26890
+ format: double
26891
+ minimum: 0
26892
+ additionalProperties: false
26893
+ ObservabilityTopology:
26894
+ type: object
26895
+ required: [nodes, edges, beta, meta]
26896
+ properties:
26897
+ nodes:
26898
+ type: array
26899
+ maxItems: 1000
26900
+ items:
26901
+ $ref: "#/components/schemas/ObservabilityTopologyNode"
26902
+ edges:
26903
+ type: array
26904
+ maxItems: 5000
26905
+ items:
26906
+ $ref: "#/components/schemas/ObservabilityTopologyEdge"
26907
+ beta:
26908
+ type: boolean
26909
+ meta:
26910
+ $ref: "#/components/schemas/ObservabilityQueryResultMeta"
26911
+ additionalProperties: false
26912
+ ObservabilityTopologyEnvelope:
26913
+ type: object
26914
+ required: [data]
26915
+ properties:
26916
+ data:
26917
+ $ref: "#/components/schemas/ObservabilityTopology"
26918
+ additionalProperties: false
26919
+ ObservabilityMetricDefinition:
26920
+ type: object
26921
+ required: [key, label, unit, signal, available]
26922
+ properties:
26923
+ key:
26924
+ type: string
26925
+ minLength: 1
26926
+ maxLength: 128
26927
+ label:
26928
+ type: string
26929
+ minLength: 1
26930
+ maxLength: 200
26931
+ description:
26932
+ type: string
26933
+ maxLength: 1000
26934
+ unit:
26935
+ type: string
26936
+ maxLength: 64
26937
+ semanticConvention:
26938
+ type: string
26939
+ maxLength: 256
26940
+ signal:
26941
+ $ref: "#/components/schemas/ObservabilitySignal"
26942
+ available:
26943
+ type: boolean
26944
+ additionalProperties: false
26945
+ ObservabilityMetricCatalogEnvelope:
26946
+ type: object
26947
+ required: [items]
26948
+ properties:
26949
+ items:
26950
+ type: array
26951
+ maxItems: 500
26952
+ items:
26953
+ $ref: "#/components/schemas/ObservabilityMetricDefinition"
26954
+ additionalProperties: false
25700
26955
  ObservabilityDataSourceBackendType:
25701
26956
  type: string
25702
26957
  enum: [loki, elasticsearch, clickhouse, provider]
@@ -26341,6 +27596,8 @@ components:
26341
27596
  $ref: "#/components/schemas/LogWarning"
26342
27597
  retentionHint:
26343
27598
  type: string
27599
+ meta:
27600
+ $ref: "#/components/schemas/ObservabilityQueryResultMeta"
26344
27601
  additionalProperties: false
26345
27602
  LogPageEnvelope:
26346
27603
  type: object