@opensoha/contracts 0.1.9 → 0.1.12

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 (60) 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/DockerHostAgentCredentialsEnvelope/invalid/missing-runtime-token.json +9 -0
  8. package/fixtures/openapi/DockerHostAgentCredentialsEnvelope/valid/credentials.json +10 -0
  9. package/fixtures/openapi/DockerHostAgentEnrollmentRequest/invalid/short-token.json +4 -0
  10. package/fixtures/openapi/DockerHostAgentEnrollmentRequest/valid/enrollment.json +4 -0
  11. package/fixtures/openapi/DockerHostAgentInstallation/invalid/missing-command.json +6 -0
  12. package/fixtures/openapi/DockerHostAgentInstallation/valid/installation.json +7 -0
  13. package/fixtures/openapi/IdentityProvider/invalid/missing-id.json +9 -0
  14. package/fixtures/openapi/IdentityProvider/valid/current.json +12 -0
  15. package/fixtures/openapi/IdentityProvider/valid/v0.1.9.json +14 -0
  16. package/fixtures/openapi/MenuEnvelope/invalid/missing-data.json +1 -0
  17. package/fixtures/openapi/MenuEnvelope/valid/menu.json +13 -0
  18. package/fixtures/openapi/MenuInput/invalid/missing-icon.json +5 -0
  19. package/fixtures/openapi/MenuInput/valid/top-level.json +12 -0
  20. package/fixtures/openapi/MenuListEnvelope/invalid/items-object.json +3 -0
  21. package/fixtures/openapi/MenuListEnvelope/valid/tree.json +27 -0
  22. package/fixtures/openapi/OIDCClient/invalid/missing-grant-types.json +9 -0
  23. package/fixtures/openapi/OIDCClient/valid/current.json +19 -0
  24. package/fixtures/openapi/OIDCClient/valid/v0.1.9.json +10 -0
  25. package/fixtures/openapi/OIDCClientInput/invalid/empty-rules.json +5 -0
  26. package/fixtures/openapi/OIDCClientInput/valid/regex.json +4 -0
  27. package/fixtures/openapi/OIDCClientInput/valid/strict.json +4 -0
  28. package/fixtures/openapi/OIDCClientInput/valid/v0.1.9.json +7 -0
  29. package/fixtures/openapi/ObservabilityContext/invalid/missing-time-range.json +6 -0
  30. package/fixtures/openapi/ObservabilityContext/valid/scoped.json +27 -0
  31. package/fixtures/openapi/ObservabilityDashboardImportResultEnvelope/valid/imported.json +28 -1
  32. package/fixtures/openapi/ObservabilityDashboardPanelQueryInput/invalid/missing-time-to.json +6 -0
  33. package/fixtures/openapi/ObservabilityDashboardPanelQueryInput/valid/variables.json +8 -0
  34. package/fixtures/openapi/ObservabilityMetricCatalogEnvelope/invalid/missing-availability.json +10 -0
  35. package/fixtures/openapi/ObservabilityMetricCatalogEnvelope/valid/catalog.json +13 -0
  36. package/fixtures/openapi/ObservabilityQueryResultMeta/invalid/missing-state.json +3 -0
  37. package/fixtures/openapi/ObservabilityQueryResultMeta/valid/partial.json +15 -0
  38. package/fixtures/openapi/ObservabilityQuerySnapshot/invalid/missing-context.json +5 -0
  39. package/fixtures/openapi/ObservabilityQuerySnapshot/valid/prometheus.json +22 -0
  40. package/fixtures/openapi/ObservabilityServiceEnvelope/invalid/missing-status.json +12 -0
  41. package/fixtures/openapi/ObservabilityServiceEnvelope/valid/service.json +29 -0
  42. package/fixtures/openapi/ObservabilityServiceListEnvelope/invalid/missing-meta.json +3 -0
  43. package/fixtures/openapi/ObservabilityServiceListEnvelope/valid/services.json +39 -0
  44. package/fixtures/openapi/ObservabilityTopologyEnvelope/invalid/missing-edge-status.json +10 -0
  45. package/fixtures/openapi/ObservabilityTopologyEnvelope/valid/topology.json +22 -0
  46. package/fixtures/openapi/ScopeGrantEnvelope/invalid/missing-id.json +13 -0
  47. package/fixtures/openapi/ScopeGrantEnvelope/valid/platform.json +15 -0
  48. package/fixtures/openapi/ScopeGrantInput/invalid/missing-subject.json +7 -0
  49. package/fixtures/openapi/ScopeGrantInput/valid/delivery.json +11 -0
  50. package/fixtures/openapi/ScopeGrantListEnvelope/invalid/unknown-scope.json +16 -0
  51. package/fixtures/openapi/ScopeGrantListEnvelope/valid/list.json +18 -0
  52. package/gen/go/sohaapi/client.go +10 -1
  53. package/gen/go/sohaapi/client_test.go +47 -0
  54. package/gen/go/sohaapi/types.go +987 -93
  55. package/gen/ts/sohaapi/index.ts +1263 -48
  56. package/go.mod +1 -1
  57. package/openapi/soha-api.json +2501 -50
  58. package/openapi/soha-api.yaml +1398 -57
  59. package/openapi/spec_generated.go +3 -3
  60. 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.12
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,84 @@ 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"
3298
+ /docker/agent-installations/{operationID}/enroll:
3299
+ post:
3300
+ tags: [Runner]
3301
+ operationId: exchangeDockerHostAgentEnrollment
3302
+ security: []
3303
+ parameters:
3304
+ - $ref: "#/components/parameters/OperationID"
3305
+ requestBody:
3306
+ required: true
3307
+ content:
3308
+ application/json:
3309
+ schema:
3310
+ $ref: "#/components/schemas/DockerHostAgentEnrollmentRequest"
3311
+ responses:
3312
+ "201":
3313
+ description: One-time host-bound Agent and control-plane credentials. The enrollment token is atomically consumed by a successful response.
3314
+ headers:
3315
+ Cache-Control:
3316
+ description: Prevents credential responses from being cached.
3317
+ schema: { type: string, const: no-store }
3318
+ content:
3319
+ application/json:
3320
+ schema:
3321
+ $ref: "#/components/schemas/DockerHostAgentCredentialsEnvelope"
3322
+ "400":
3323
+ $ref: "#/components/responses/Error"
3324
+ "404":
3325
+ $ref: "#/components/responses/Error"
3326
+ "409":
3327
+ $ref: "#/components/responses/Error"
3328
+ "410":
3329
+ $ref: "#/components/responses/Error"
3252
3330
  /docker/hosts/quick-create/plan:
3253
3331
  post:
3254
3332
  tags: [Docker]
@@ -5892,6 +5970,104 @@ paths:
5892
5970
  $ref: "#/components/schemas/ObservabilityMetricDataSourceListEnvelope"
5893
5971
  "403":
5894
5972
  $ref: "#/components/responses/Error"
5973
+ /observability/metrics/catalog:
5974
+ get:
5975
+ tags: [Observability]
5976
+ operationId: listObservabilityMetricCatalog
5977
+ parameters:
5978
+ - $ref: "#/components/parameters/ObservabilityDataSourceIDQuery"
5979
+ responses:
5980
+ "200":
5981
+ description: Semantic metric definitions supported by the configured metrics provider.
5982
+ content:
5983
+ application/json:
5984
+ schema:
5985
+ $ref: "#/components/schemas/ObservabilityMetricCatalogEnvelope"
5986
+ "403":
5987
+ $ref: "#/components/responses/Error"
5988
+ "404":
5989
+ $ref: "#/components/responses/Error"
5990
+ /observability/services:
5991
+ get:
5992
+ tags: [Observability]
5993
+ operationId: listObservabilityServices
5994
+ parameters:
5995
+ - $ref: "#/components/parameters/ObservabilityDataSourceIDQuery"
5996
+ - $ref: "#/components/parameters/ObservabilityClusterIDQuery"
5997
+ - $ref: "#/components/parameters/ObservabilityEnvironmentQuery"
5998
+ - $ref: "#/components/parameters/ObservabilityNamespaceQuery"
5999
+ - $ref: "#/components/parameters/ObservabilityServiceQuery"
6000
+ - $ref: "#/components/parameters/ObservabilityTimeFromQuery"
6001
+ - $ref: "#/components/parameters/ObservabilityTimeToQuery"
6002
+ responses:
6003
+ "200":
6004
+ description: OTel-identified services from the configured SkyWalking OAP provider.
6005
+ content:
6006
+ application/json:
6007
+ schema:
6008
+ $ref: "#/components/schemas/ObservabilityServiceListEnvelope"
6009
+ "400":
6010
+ $ref: "#/components/responses/Error"
6011
+ "403":
6012
+ $ref: "#/components/responses/Error"
6013
+ "404":
6014
+ $ref: "#/components/responses/Error"
6015
+ "502":
6016
+ $ref: "#/components/responses/Error"
6017
+ /observability/services/{serviceID}:
6018
+ get:
6019
+ tags: [Observability]
6020
+ operationId: getObservabilityService
6021
+ parameters:
6022
+ - $ref: "#/components/parameters/ServiceID"
6023
+ - $ref: "#/components/parameters/ObservabilityDataSourceIDQuery"
6024
+ - $ref: "#/components/parameters/ObservabilityClusterIDQuery"
6025
+ - $ref: "#/components/parameters/ObservabilityEnvironmentQuery"
6026
+ - $ref: "#/components/parameters/ObservabilityNamespaceQuery"
6027
+ - $ref: "#/components/parameters/ObservabilityTimeFromQuery"
6028
+ - $ref: "#/components/parameters/ObservabilityTimeToQuery"
6029
+ responses:
6030
+ "200":
6031
+ description: Service identity, instances and endpoints from the configured SkyWalking OAP provider.
6032
+ content:
6033
+ application/json:
6034
+ schema:
6035
+ $ref: "#/components/schemas/ObservabilityServiceEnvelope"
6036
+ "400":
6037
+ $ref: "#/components/responses/Error"
6038
+ "403":
6039
+ $ref: "#/components/responses/Error"
6040
+ "404":
6041
+ $ref: "#/components/responses/Error"
6042
+ "502":
6043
+ $ref: "#/components/responses/Error"
6044
+ /observability/services/{serviceID}/topology:
6045
+ get:
6046
+ tags: [Observability]
6047
+ operationId: getObservabilityServiceTopology
6048
+ parameters:
6049
+ - $ref: "#/components/parameters/ServiceID"
6050
+ - $ref: "#/components/parameters/ObservabilityDataSourceIDQuery"
6051
+ - $ref: "#/components/parameters/ObservabilityClusterIDQuery"
6052
+ - $ref: "#/components/parameters/ObservabilityEnvironmentQuery"
6053
+ - $ref: "#/components/parameters/ObservabilityNamespaceQuery"
6054
+ - $ref: "#/components/parameters/ObservabilityTimeFromQuery"
6055
+ - $ref: "#/components/parameters/ObservabilityTimeToQuery"
6056
+ responses:
6057
+ "200":
6058
+ description: Beta dependency graph for one service from the configured SkyWalking OAP provider.
6059
+ content:
6060
+ application/json:
6061
+ schema:
6062
+ $ref: "#/components/schemas/ObservabilityTopologyEnvelope"
6063
+ "400":
6064
+ $ref: "#/components/responses/Error"
6065
+ "403":
6066
+ $ref: "#/components/responses/Error"
6067
+ "404":
6068
+ $ref: "#/components/responses/Error"
6069
+ "502":
6070
+ $ref: "#/components/responses/Error"
5895
6071
  /observability/dashboards/imports:
5896
6072
  post:
5897
6073
  tags: [Observability]
@@ -10719,6 +10895,97 @@ paths:
10719
10895
  "400": { $ref: "#/components/responses/Error" }
10720
10896
  "401": { $ref: "#/components/responses/Error" }
10721
10897
  "403": { $ref: "#/components/responses/Error" }
10898
+ /menus:
10899
+ get:
10900
+ tags: [System]
10901
+ operationId: listMenus
10902
+ x-soha-implementation-status: implemented
10903
+ responses:
10904
+ "200":
10905
+ description: Complete menu tree for administration.
10906
+ content:
10907
+ application/json:
10908
+ schema: { $ref: "#/components/schemas/MenuListEnvelope" }
10909
+ "401": { $ref: "#/components/responses/Error" }
10910
+ "403": { $ref: "#/components/responses/Error" }
10911
+ post:
10912
+ tags: [System]
10913
+ operationId: createMenu
10914
+ x-soha-implementation-status: implemented
10915
+ requestBody:
10916
+ required: true
10917
+ content:
10918
+ application/json:
10919
+ schema: { $ref: "#/components/schemas/MenuInput" }
10920
+ responses:
10921
+ "201":
10922
+ description: Created menu.
10923
+ content:
10924
+ application/json:
10925
+ schema: { $ref: "#/components/schemas/MenuEnvelope" }
10926
+ "400": { $ref: "#/components/responses/Error" }
10927
+ "401": { $ref: "#/components/responses/Error" }
10928
+ "403": { $ref: "#/components/responses/Error" }
10929
+ /menus/visible:
10930
+ get:
10931
+ tags: [System]
10932
+ operationId: listVisibleMenus
10933
+ x-soha-implementation-status: implemented
10934
+ responses:
10935
+ "200":
10936
+ description: Menu tree visible to the authenticated principal.
10937
+ content:
10938
+ application/json:
10939
+ schema: { $ref: "#/components/schemas/MenuListEnvelope" }
10940
+ "401": { $ref: "#/components/responses/Error" }
10941
+ /menus/{menuID}:
10942
+ parameters:
10943
+ - $ref: "#/components/parameters/MenuID"
10944
+ get:
10945
+ tags: [System]
10946
+ operationId: getMenu
10947
+ x-soha-implementation-status: implemented
10948
+ responses:
10949
+ "200":
10950
+ description: Menu detail.
10951
+ content:
10952
+ application/json:
10953
+ schema: { $ref: "#/components/schemas/MenuEnvelope" }
10954
+ "401": { $ref: "#/components/responses/Error" }
10955
+ "403": { $ref: "#/components/responses/Error" }
10956
+ "404": { $ref: "#/components/responses/Error" }
10957
+ put:
10958
+ tags: [System]
10959
+ operationId: updateMenu
10960
+ x-soha-implementation-status: implemented
10961
+ requestBody:
10962
+ required: true
10963
+ content:
10964
+ application/json:
10965
+ schema: { $ref: "#/components/schemas/MenuInput" }
10966
+ responses:
10967
+ "200":
10968
+ description: Updated menu.
10969
+ content:
10970
+ application/json:
10971
+ schema: { $ref: "#/components/schemas/MenuEnvelope" }
10972
+ "400": { $ref: "#/components/responses/Error" }
10973
+ "401": { $ref: "#/components/responses/Error" }
10974
+ "403": { $ref: "#/components/responses/Error" }
10975
+ "404": { $ref: "#/components/responses/Error" }
10976
+ delete:
10977
+ tags: [System]
10978
+ operationId: deleteMenu
10979
+ x-soha-implementation-status: implemented
10980
+ responses:
10981
+ "200":
10982
+ description: Menu deleted.
10983
+ content:
10984
+ application/json:
10985
+ schema: { $ref: "#/components/schemas/MenuDeleteResult" }
10986
+ "401": { $ref: "#/components/responses/Error" }
10987
+ "403": { $ref: "#/components/responses/Error" }
10988
+ "404": { $ref: "#/components/responses/Error" }
10722
10989
  /access/permissions:
10723
10990
  get:
10724
10991
  tags: [Access]
@@ -10805,6 +11072,69 @@ paths:
10805
11072
  "401": { $ref: "#/components/responses/Error" }
10806
11073
  "403": { $ref: "#/components/responses/Error" }
10807
11074
  "404": { $ref: "#/components/responses/Error" }
11075
+ /access/scope-grants:
11076
+ get:
11077
+ tags: [Access]
11078
+ operationId: listScopeGrants
11079
+ x-soha-implementation-status: implemented
11080
+ responses:
11081
+ "200":
11082
+ description: Resource scope grants.
11083
+ content:
11084
+ application/json:
11085
+ schema: { $ref: "#/components/schemas/ScopeGrantListEnvelope" }
11086
+ "401": { $ref: "#/components/responses/Error" }
11087
+ "403": { $ref: "#/components/responses/Error" }
11088
+ post:
11089
+ tags: [Access]
11090
+ operationId: createScopeGrant
11091
+ x-soha-implementation-status: implemented
11092
+ requestBody:
11093
+ required: true
11094
+ content:
11095
+ application/json:
11096
+ schema: { $ref: "#/components/schemas/ScopeGrantInput" }
11097
+ responses:
11098
+ "201":
11099
+ description: Created resource scope grant.
11100
+ content:
11101
+ application/json:
11102
+ schema: { $ref: "#/components/schemas/ScopeGrantEnvelope" }
11103
+ "400": { $ref: "#/components/responses/Error" }
11104
+ "401": { $ref: "#/components/responses/Error" }
11105
+ "403": { $ref: "#/components/responses/Error" }
11106
+ /access/scope-grants/{scopeGrantID}:
11107
+ parameters:
11108
+ - $ref: "#/components/parameters/ScopeGrantID"
11109
+ put:
11110
+ tags: [Access]
11111
+ operationId: updateScopeGrant
11112
+ x-soha-implementation-status: implemented
11113
+ requestBody:
11114
+ required: true
11115
+ content:
11116
+ application/json:
11117
+ schema: { $ref: "#/components/schemas/ScopeGrantInput" }
11118
+ responses:
11119
+ "200":
11120
+ description: Updated resource scope grant.
11121
+ content:
11122
+ application/json:
11123
+ schema: { $ref: "#/components/schemas/ScopeGrantEnvelope" }
11124
+ "400": { $ref: "#/components/responses/Error" }
11125
+ "401": { $ref: "#/components/responses/Error" }
11126
+ "403": { $ref: "#/components/responses/Error" }
11127
+ "404": { $ref: "#/components/responses/Error" }
11128
+ delete:
11129
+ tags: [Access]
11130
+ operationId: deleteScopeGrant
11131
+ x-soha-implementation-status: implemented
11132
+ responses:
11133
+ "204":
11134
+ description: Resource scope grant deleted.
11135
+ "401": { $ref: "#/components/responses/Error" }
11136
+ "403": { $ref: "#/components/responses/Error" }
11137
+ "404": { $ref: "#/components/responses/Error" }
10808
11138
  /identity/capabilities:
10809
11139
  get:
10810
11140
  tags: [Identity]
@@ -10938,6 +11268,25 @@ paths:
10938
11268
  responses:
10939
11269
  "204": { description: Identity provider deleted. }
10940
11270
  "404": { $ref: "#/components/responses/IdentityError" }
11271
+ /identity/providers/{identityProviderID}/saml/certificate/rotate:
11272
+ parameters:
11273
+ - $ref: "#/components/parameters/IdentityProviderID"
11274
+ post:
11275
+ tags: [Identity]
11276
+ operationId: rotateIdentityProviderSAMLCertificate
11277
+ requestBody:
11278
+ required: true
11279
+ content:
11280
+ application/json:
11281
+ schema: { $ref: "#/components/schemas/SAMLCertificateRotateRequest" }
11282
+ responses:
11283
+ "200":
11284
+ description: Active and retiring public certificate summaries.
11285
+ content:
11286
+ application/json:
11287
+ schema: { $ref: "#/components/schemas/SAMLCertificateRotationEnvelope" }
11288
+ "400": { $ref: "#/components/responses/IdentityError" }
11289
+ "404": { $ref: "#/components/responses/IdentityError" }
10941
11290
  /identity/policies:
10942
11291
  get:
10943
11292
  tags: [Identity]
@@ -11062,15 +11411,17 @@ paths:
11062
11411
  get:
11063
11412
  tags: [Identity]
11064
11413
  operationId: listIdentityOIDCClients
11414
+ deprecated: true
11065
11415
  responses:
11066
11416
  "200":
11067
- description: Identity OIDC clients.
11417
+ description: Identity OIDC clients across providers.
11068
11418
  content:
11069
11419
  application/json:
11070
11420
  schema: { $ref: "#/components/schemas/OIDCClientListEnvelope" }
11071
11421
  post:
11072
11422
  tags: [Identity]
11073
11423
  operationId: createIdentityOIDCClient
11424
+ deprecated: true
11074
11425
  requestBody:
11075
11426
  required: true
11076
11427
  content:
@@ -11078,14 +11429,41 @@ paths:
11078
11429
  schema: { $ref: "#/components/schemas/OIDCClientInput" }
11079
11430
  responses:
11080
11431
  "201":
11081
- description: Created OIDC client.
11432
+ description: Created OIDC client without the one-time client secret.
11082
11433
  content:
11083
11434
  application/json:
11084
11435
  schema: { $ref: "#/components/schemas/OIDCClientEnvelope" }
11085
11436
  "400": { $ref: "#/components/responses/IdentityError" }
11086
- /identity/oidc-clients/{oidcClientID}:
11437
+ /identity/providers/{identityProviderID}/oidc-clients:
11087
11438
  parameters:
11088
- - $ref: "#/components/parameters/OIDCClientID"
11439
+ - $ref: "#/components/parameters/IdentityProviderID"
11440
+ get:
11441
+ tags: [Identity]
11442
+ operationId: listIdentityProviderOIDCClients
11443
+ responses:
11444
+ "200":
11445
+ description: Identity OIDC clients.
11446
+ content:
11447
+ application/json:
11448
+ schema: { $ref: "#/components/schemas/OIDCClientListEnvelope" }
11449
+ post:
11450
+ tags: [Identity]
11451
+ operationId: createIdentityProviderOIDCClient
11452
+ requestBody:
11453
+ required: true
11454
+ content:
11455
+ application/json:
11456
+ schema: { $ref: "#/components/schemas/OIDCClientInput" }
11457
+ responses:
11458
+ "201":
11459
+ description: Created OIDC client.
11460
+ content:
11461
+ application/json:
11462
+ schema: { $ref: "#/components/schemas/OIDCClientCreatedEnvelope" }
11463
+ "400": { $ref: "#/components/responses/IdentityError" }
11464
+ /identity/oidc-clients/{oidcClientID}:
11465
+ parameters:
11466
+ - $ref: "#/components/parameters/OIDCClientID"
11089
11467
  get:
11090
11468
  tags: [Identity]
11091
11469
  operationId: getIdentityOIDCClient
@@ -11598,7 +11976,7 @@ components:
11598
11976
  runtimeBearerAuth:
11599
11977
  type: http
11600
11978
  scheme: bearer
11601
- description: Runtime execution runner token.
11979
+ description: Runtime execution runner token, including host-bound Docker Agent credentials.
11602
11980
  agentBearerAuth:
11603
11981
  type: http
11604
11982
  scheme: bearer
@@ -11609,11 +11987,21 @@ components:
11609
11987
  name: x-api-key
11610
11988
  description: Anthropic-style Soha PAT/SAT credential header for native relay endpoints.
11611
11989
  parameters:
11990
+ MenuID:
11991
+ name: menuID
11992
+ in: path
11993
+ required: true
11994
+ schema: { type: string, minLength: 1, maxLength: 128 }
11612
11995
  AccessRoleID:
11613
11996
  name: accessRoleID
11614
11997
  in: path
11615
11998
  required: true
11616
11999
  schema: { type: string, minLength: 1, maxLength: 128 }
12000
+ ScopeGrantID:
12001
+ name: scopeGrantID
12002
+ in: path
12003
+ required: true
12004
+ schema: { type: string, minLength: 1, maxLength: 128 }
11617
12005
  IdentityApplicationID:
11618
12006
  name: identityApplicationID
11619
12007
  in: path
@@ -11918,6 +12306,60 @@ components:
11918
12306
  type: string
11919
12307
  minLength: 1
11920
12308
  maxLength: 128
12309
+ ObservabilityDataSourceIDQuery:
12310
+ name: dataSourceId
12311
+ in: query
12312
+ required: false
12313
+ schema:
12314
+ type: string
12315
+ minLength: 1
12316
+ maxLength: 200
12317
+ ObservabilityClusterIDQuery:
12318
+ name: clusterId
12319
+ in: query
12320
+ required: false
12321
+ schema:
12322
+ type: string
12323
+ minLength: 1
12324
+ maxLength: 128
12325
+ ObservabilityEnvironmentQuery:
12326
+ name: environment
12327
+ in: query
12328
+ required: false
12329
+ schema:
12330
+ type: string
12331
+ minLength: 1
12332
+ maxLength: 128
12333
+ ObservabilityNamespaceQuery:
12334
+ name: namespace
12335
+ in: query
12336
+ required: false
12337
+ schema:
12338
+ type: string
12339
+ minLength: 1
12340
+ maxLength: 253
12341
+ ObservabilityServiceQuery:
12342
+ name: service
12343
+ in: query
12344
+ required: false
12345
+ schema:
12346
+ type: string
12347
+ minLength: 1
12348
+ maxLength: 253
12349
+ ObservabilityTimeFromQuery:
12350
+ name: timeFrom
12351
+ in: query
12352
+ required: true
12353
+ schema:
12354
+ type: string
12355
+ format: date-time
12356
+ ObservabilityTimeToQuery:
12357
+ name: timeTo
12358
+ in: query
12359
+ required: true
12360
+ schema:
12361
+ type: string
12362
+ format: date-time
11921
12363
  DashboardID:
11922
12364
  name: dashboardID
11923
12365
  in: path
@@ -12584,22 +13026,92 @@ components:
12584
13026
  id: { type: string }
12585
13027
  providerId: { type: string }
12586
13028
  clientId: { type: string }
12587
- redirectUris: { type: array, items: { type: string, format: uri } }
12588
- grantTypes: { type: array, items: { type: string, enum: [authorization_code, refresh_token] } }
13029
+ clientType: { type: string, enum: [public, confidential] }
13030
+ redirectUris:
13031
+ type: array
13032
+ description: Strict-match absolute HTTP or HTTPS redirect URIs. HTTPS is recommended for production deployments.
13033
+ items: { type: string, format: uri }
13034
+ grantTypes:
13035
+ type: array
13036
+ deprecated: true
13037
+ description: Deprecated response alias retained for 0.1.x compatibility; use allowedGrantTypes.
13038
+ items: { type: string, enum: [authorization_code, refresh_token] }
13039
+ redirectUriRegexes:
13040
+ type: array
13041
+ maxItems: 100
13042
+ description: RE2 regular expressions matched against the complete absolute HTTP or HTTPS redirect URI. Evaluated in addition to redirectUris.
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, items: { type: string } }
13049
+ allowedGrantTypes: { type: array, items: { type: string, enum: [authorization_code, refresh_token] } }
13050
+ requirePkce: { type: boolean }
13051
+ accessTokenTtlSeconds: { type: integer, minimum: 60 }
13052
+ idTokenTtlSeconds: { type: integer, minimum: 60 }
13053
+ refreshTokenTtlSeconds: { type: integer, minimum: 0 }
12589
13054
  status: { $ref: "#/components/schemas/IdentityResourceStatus" }
12590
13055
  createdAt: { type: string, format: date-time }
12591
13056
  updatedAt: { type: string, format: date-time }
12592
13057
  additionalProperties: false
12593
13058
  OIDCClientInput:
13059
+ allOf:
13060
+ - type: object
13061
+ required: [clientId]
13062
+ properties:
13063
+ providerId: { type: string }
13064
+ clientId: { type: string }
13065
+ clientType: { type: string, enum: [public, confidential] }
13066
+ clientSecret: { type: string, minLength: 16, writeOnly: true }
13067
+ redirectUris:
13068
+ type: array
13069
+ description: Strict-match absolute HTTP or HTTPS redirect URIs. At least one redirectUris or redirectUriRegexes entry is required. HTTPS is recommended for production deployments.
13070
+ items: { type: string, format: uri }
13071
+ redirectUriRegexes:
13072
+ type: array
13073
+ maxItems: 100
13074
+ description: RE2 regular expressions matched against the complete absolute HTTP or HTTPS redirect URI. At least one redirectUris or redirectUriRegexes entry is required.
13075
+ items: { type: string, minLength: 1, maxLength: 2048 }
13076
+ postLogoutRedirectUris:
13077
+ type: array
13078
+ description: Absolute HTTP or HTTPS post-logout redirect URIs. HTTPS is recommended for production deployments.
13079
+ items: { type: string, format: uri }
13080
+ allowedScopes: { type: array, minItems: 1, items: { type: string } }
13081
+ grantTypes:
13082
+ type: array
13083
+ minItems: 1
13084
+ deprecated: true
13085
+ description: Deprecated request alias retained for 0.1.x compatibility; use allowedGrantTypes.
13086
+ items: { type: string, enum: [authorization_code, refresh_token] }
13087
+ allowedGrantTypes: { type: array, minItems: 1, items: { type: string, enum: [authorization_code, refresh_token] } }
13088
+ requirePkce: { type: boolean }
13089
+ accessTokenTtlSeconds: { type: integer, minimum: 0 }
13090
+ idTokenTtlSeconds: { type: integer, minimum: 0 }
13091
+ refreshTokenTtlSeconds: { type: integer, minimum: 0 }
13092
+ status: { $ref: "#/components/schemas/IdentityResourceStatus" }
13093
+ additionalProperties: false
13094
+ - anyOf:
13095
+ - type: object
13096
+ required: [redirectUris]
13097
+ properties:
13098
+ redirectUris: { type: array, minItems: 1, items: { type: string, format: uri } }
13099
+ - type: object
13100
+ required: [redirectUriRegexes]
13101
+ properties:
13102
+ redirectUriRegexes: { type: array, minItems: 1, items: { type: string, minLength: 1, maxLength: 2048 } }
13103
+ OIDCClientCreated:
12594
13104
  type: object
12595
- required: [providerId, clientId, redirectUris, grantTypes, status]
13105
+ required: [client]
12596
13106
  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" }
13107
+ client: { $ref: "#/components/schemas/OIDCClient" }
13108
+ clientSecret: { type: string, writeOnly: true }
13109
+ additionalProperties: false
13110
+ OIDCClientCreatedEnvelope:
13111
+ type: object
13112
+ required: [data]
13113
+ properties:
13114
+ data: { $ref: "#/components/schemas/OIDCClientCreated" }
12603
13115
  additionalProperties: false
12604
13116
  OIDCClientEnvelope:
12605
13117
  type: object
@@ -12618,7 +13130,11 @@ components:
12618
13130
  required: [entityId, acsUrls, nameIdFormat, wantAuthnRequestsSigned, wantAssertionsSigned, attributeMappings]
12619
13131
  properties:
12620
13132
  entityId: { type: string, minLength: 1 }
12621
- acsUrls: { type: array, minItems: 1, items: { type: string, format: uri } }
13133
+ acsUrls:
13134
+ type: array
13135
+ minItems: 1
13136
+ description: Absolute HTTP or HTTPS assertion consumer service URLs. HTTPS is recommended for production deployments.
13137
+ items: { type: string, format: uri }
12622
13138
  nameIdFormat: { $ref: "#/components/schemas/SAMLNameIDFormat" }
12623
13139
  spCertificates: { type: array, items: { $ref: "#/components/schemas/CertificateSummary" } }
12624
13140
  signingCertificates: { type: array, items: { $ref: "#/components/schemas/CertificateSummary" } }
@@ -12631,7 +13147,11 @@ components:
12631
13147
  required: [entityId, acsUrls, nameIdFormat, wantAuthnRequestsSigned, attributeMappings]
12632
13148
  properties:
12633
13149
  entityId: { type: string, minLength: 1 }
12634
- acsUrls: { type: array, minItems: 1, items: { type: string, format: uri } }
13150
+ acsUrls:
13151
+ type: array
13152
+ minItems: 1
13153
+ description: Absolute HTTP or HTTPS assertion consumer service URLs. HTTPS is recommended for production deployments.
13154
+ items: { type: string, format: uri }
12635
13155
  nameIdFormat: { $ref: "#/components/schemas/SAMLNameIDFormat" }
12636
13156
  spCertificatePem: { type: string, writeOnly: true }
12637
13157
  wantAuthnRequestsSigned: { type: boolean }
@@ -12646,8 +13166,20 @@ components:
12646
13166
  name: { type: string }
12647
13167
  type: { $ref: "#/components/schemas/IdentityProviderType" }
12648
13168
  enabled: { type: boolean }
12649
- config: { type: object, additionalProperties: true }
12650
- secretRefs: { type: object, additionalProperties: true }
13169
+ config:
13170
+ type: object
13171
+ description: Non-secret provider configuration.
13172
+ additionalProperties: true
13173
+ secretRefs:
13174
+ type: object
13175
+ readOnly: true
13176
+ deprecated: true
13177
+ description: Deprecated response field retained for 0.1.x SDK compatibility; current servers omit it.
13178
+ additionalProperties: true
13179
+ configuredSecretAliases:
13180
+ type: array
13181
+ readOnly: true
13182
+ items: { type: string }
12651
13183
  status: { $ref: "#/components/schemas/IdentityResourceStatus" }
12652
13184
  createdBy: { type: string }
12653
13185
  updatedBy: { type: string }
@@ -12656,14 +13188,18 @@ components:
12656
13188
  additionalProperties: false
12657
13189
  IdentityProviderInput:
12658
13190
  type: object
12659
- required: [applicationId, name, type, enabled, config, secretRefs, status]
13191
+ required: [applicationId, name, type, enabled, config, status]
12660
13192
  properties:
12661
13193
  applicationId: { type: string }
12662
13194
  name: { type: string, minLength: 1, maxLength: 200 }
12663
13195
  type: { $ref: "#/components/schemas/IdentityProviderType" }
12664
13196
  enabled: { type: boolean }
12665
13197
  config: { type: object, additionalProperties: true }
12666
- secretRefs: { type: object, additionalProperties: true }
13198
+ secretRefs:
13199
+ allOf:
13200
+ - $ref: "#/components/schemas/SecretReferenceMap"
13201
+ writeOnly: true
13202
+ description: Omit on update to preserve existing references; send an empty object to clear them.
12667
13203
  status: { $ref: "#/components/schemas/IdentityResourceStatus" }
12668
13204
  additionalProperties: false
12669
13205
  IdentityProviderEnvelope:
@@ -14047,6 +14583,65 @@ components:
14047
14583
  items:
14048
14584
  $ref: "#/components/schemas/AnyValue"
14049
14585
  additionalProperties: false
14586
+ Menu:
14587
+ type: object
14588
+ required: [id, path, labelZh, labelEn, iconKey, section, sortOrder, enabled]
14589
+ properties:
14590
+ id: { type: string, minLength: 1 }
14591
+ parentId: { type: string, minLength: 1 }
14592
+ path: { type: string, minLength: 1 }
14593
+ labelZh: { type: string, minLength: 1 }
14594
+ labelEn: { type: string, minLength: 1 }
14595
+ iconKey: { type: string, minLength: 1 }
14596
+ section: { type: string }
14597
+ sortOrder: { type: integer }
14598
+ enabled: { type: boolean }
14599
+ roleIds:
14600
+ type: array
14601
+ uniqueItems: true
14602
+ items: { type: string, minLength: 1 }
14603
+ children:
14604
+ type: array
14605
+ items: { $ref: "#/components/schemas/Menu" }
14606
+ additionalProperties: false
14607
+ MenuInput:
14608
+ type: object
14609
+ required: [path, labelZh, labelEn, iconKey]
14610
+ properties:
14611
+ id: { type: string, minLength: 1 }
14612
+ parentId: { type: string, minLength: 1, nullable: true }
14613
+ path: { type: string, minLength: 1 }
14614
+ labelZh: { type: string, minLength: 1 }
14615
+ labelEn: { type: string, minLength: 1 }
14616
+ iconKey: { type: string, minLength: 1 }
14617
+ section: { type: string }
14618
+ sortOrder: { type: integer }
14619
+ enabled: { type: boolean }
14620
+ roleIds:
14621
+ type: array
14622
+ uniqueItems: true
14623
+ items: { type: string, minLength: 1 }
14624
+ additionalProperties: false
14625
+ MenuEnvelope:
14626
+ type: object
14627
+ required: [data]
14628
+ properties:
14629
+ data: { $ref: "#/components/schemas/Menu" }
14630
+ additionalProperties: false
14631
+ MenuListEnvelope:
14632
+ type: object
14633
+ required: [items]
14634
+ properties:
14635
+ items:
14636
+ type: array
14637
+ items: { $ref: "#/components/schemas/Menu" }
14638
+ additionalProperties: false
14639
+ MenuDeleteResult:
14640
+ type: object
14641
+ required: [status]
14642
+ properties:
14643
+ status: { type: string, const: ok }
14644
+ additionalProperties: false
14050
14645
  PermissionRiskLevel:
14051
14646
  type: string
14052
14647
  enum: [read, mutate, execute, high]
@@ -14162,6 +14757,117 @@ components:
14162
14757
  properties:
14163
14758
  status: { type: string, const: ok }
14164
14759
  additionalProperties: false
14760
+ ScopeGrantSubjectType:
14761
+ type: string
14762
+ enum: [user, team]
14763
+ ScopeGrantType:
14764
+ type: string
14765
+ enum: [legacy, delivery, platform]
14766
+ ScopeGrantEffect:
14767
+ type: string
14768
+ enum: [allow, deny]
14769
+ ScopeGrant:
14770
+ type: object
14771
+ required: [id, subjectType, subjectId, businessLineId, scopeType, role, effect, enabled, createdAt, updatedAt]
14772
+ properties:
14773
+ id: { type: string, minLength: 1 }
14774
+ subjectType: { $ref: "#/components/schemas/ScopeGrantSubjectType" }
14775
+ subjectId: { type: string, minLength: 1 }
14776
+ businessLineId:
14777
+ type: string
14778
+ description: Required for legacy and delivery grants; empty for platform grants.
14779
+ environmentIds:
14780
+ type: array
14781
+ uniqueItems: true
14782
+ items: { type: string, minLength: 1 }
14783
+ applicationIds:
14784
+ type: array
14785
+ uniqueItems: true
14786
+ items: { type: string, minLength: 1 }
14787
+ scopeType: { $ref: "#/components/schemas/ScopeGrantType" }
14788
+ clusterIds:
14789
+ type: array
14790
+ uniqueItems: true
14791
+ items: { type: string, minLength: 1 }
14792
+ namespaces:
14793
+ type: array
14794
+ uniqueItems: true
14795
+ items: { type: string, minLength: 1 }
14796
+ namespaceSelector: { type: string }
14797
+ resourceGroups:
14798
+ type: array
14799
+ uniqueItems: true
14800
+ items: { type: string, minLength: 1 }
14801
+ resourceKinds:
14802
+ type: array
14803
+ uniqueItems: true
14804
+ items: { type: string, minLength: 1 }
14805
+ role: { type: string, minLength: 1 }
14806
+ effect: { $ref: "#/components/schemas/ScopeGrantEffect" }
14807
+ enabled: { type: boolean }
14808
+ createdAt: { type: string, format: date-time }
14809
+ updatedAt: { type: string, format: date-time }
14810
+ additionalProperties: false
14811
+ ScopeGrantInput:
14812
+ type: object
14813
+ required: [subjectType, subjectId, role, enabled]
14814
+ properties:
14815
+ id: { type: string, minLength: 1 }
14816
+ subjectType: { $ref: "#/components/schemas/ScopeGrantSubjectType" }
14817
+ subjectId: { type: string, minLength: 1 }
14818
+ businessLineId:
14819
+ type: string
14820
+ description: Required when scopeType is legacy or delivery.
14821
+ environmentIds:
14822
+ type: array
14823
+ uniqueItems: true
14824
+ items: { type: string, minLength: 1 }
14825
+ applicationIds:
14826
+ type: array
14827
+ uniqueItems: true
14828
+ items: { type: string, minLength: 1 }
14829
+ scopeType:
14830
+ allOf:
14831
+ - $ref: "#/components/schemas/ScopeGrantType"
14832
+ default: legacy
14833
+ clusterIds:
14834
+ type: array
14835
+ minItems: 1
14836
+ uniqueItems: true
14837
+ description: Required when scopeType is platform.
14838
+ items: { type: string, minLength: 1 }
14839
+ namespaces:
14840
+ type: array
14841
+ uniqueItems: true
14842
+ items: { type: string, minLength: 1 }
14843
+ namespaceSelector: { type: string }
14844
+ resourceGroups:
14845
+ type: array
14846
+ uniqueItems: true
14847
+ items: { type: string, minLength: 1 }
14848
+ resourceKinds:
14849
+ type: array
14850
+ uniqueItems: true
14851
+ items: { type: string, minLength: 1 }
14852
+ role: { type: string, minLength: 1 }
14853
+ effect:
14854
+ allOf:
14855
+ - $ref: "#/components/schemas/ScopeGrantEffect"
14856
+ default: allow
14857
+ enabled: { type: boolean }
14858
+ additionalProperties: false
14859
+ ScopeGrantEnvelope:
14860
+ type: object
14861
+ required: [data]
14862
+ properties:
14863
+ data: { $ref: "#/components/schemas/ScopeGrant" }
14864
+ additionalProperties: false
14865
+ ScopeGrantListEnvelope:
14866
+ type: object
14867
+ required: [items]
14868
+ properties:
14869
+ items: { type: array, items: { $ref: "#/components/schemas/ScopeGrant" } }
14870
+ additionalProperties: false
14165
14871
  AuthorizationDecisionStatus:
14166
14872
  type: string
14167
14873
  enum: [allow, deny, approval_required]
@@ -16578,6 +17284,7 @@ components:
16578
17284
  properties:
16579
17285
  appTitle: { type: string }
16580
17286
  sidebarTitle: { type: string }
17287
+ slogan: { type: string }
16581
17288
  loginLogoUrl: { type: string }
16582
17289
  expandedLogoUrl: { type: string }
16583
17290
  collapsedLogoUrl: { type: string }
@@ -16596,6 +17303,7 @@ components:
16596
17303
  properties:
16597
17304
  appTitle: { type: string }
16598
17305
  sidebarTitle: { type: string }
17306
+ slogan: { type: string }
16599
17307
  loginLogoUrl: { type: string }
16600
17308
  expandedLogoUrl: { type: string }
16601
17309
  collapsedLogoUrl: { type: string }
@@ -17338,6 +18046,8 @@ components:
17338
18046
  type: object
17339
18047
  required: [verification]
17340
18048
  properties:
18049
+ branding:
18050
+ $ref: "#/components/schemas/BrandingSettings"
17341
18051
  localPasswordLoginEnabled:
17342
18052
  type: boolean
17343
18053
  verification:
@@ -25210,47 +25920,136 @@ components:
25210
25920
  data:
25211
25921
  $ref: "#/components/schemas/AgentInstallation"
25212
25922
  additionalProperties: false
25213
- ObservabilityProviderSignal:
25214
- type: string
25215
- enum: [logs, metrics, traces, profiles]
25216
- x-enum-varnames:
25217
- - ObservabilityProviderSignalLogs
25218
- - ObservabilityProviderSignalMetrics
25219
- - ObservabilityProviderSignalTraces
25220
- - ObservabilityProviderSignalProfiles
25221
- ObservabilityProviderRuntimeMode:
25222
- type: string
25223
- enum: [builtin, external-http, managed-container]
25224
- x-enum-varnames:
25225
- - ObservabilityProviderRuntimeModeBuiltin
25226
- - ObservabilityProviderRuntimeModeExternalHTTP
25227
- - ObservabilityProviderRuntimeModeManagedContainer
25228
- ObservabilityProviderStatus:
25229
- type: string
25230
- enum: [supported, degraded, unsupported]
25231
- x-enum-varnames:
25232
- - ObservabilityProviderStatusSupported
25233
- - ObservabilityProviderStatusDegraded
25234
- - ObservabilityProviderStatusUnsupported
25235
- ObservabilityProviderDefinition:
25923
+ DockerHostAgentInstallation:
25236
25924
  type: object
25237
- required: [providerKey, displayName, protocolVersion, signals, capabilities, runtimeMode, builtIn, status]
25925
+ required: [hostId, operationId, scriptUrl, command, expiresAt]
25238
25926
  properties:
25239
- providerKey:
25927
+ hostId:
25240
25928
  type: string
25241
- pattern: "^[a-z][a-z0-9._-]*$"
25242
- maxLength: 128
25243
- description: Required when backendType is provider.
25244
- displayName:
25929
+ minLength: 1
25930
+ operationId:
25245
25931
  type: string
25246
25932
  minLength: 1
25247
- maxLength: 200
25248
- description:
25933
+ scriptUrl:
25249
25934
  type: string
25250
- maxLength: 1000
25251
- protocolVersion:
25935
+ format: uri
25936
+ command:
25252
25937
  type: string
25253
- pattern: "^v[1-9][0-9]*$"
25938
+ minLength: 1
25939
+ expiresAt:
25940
+ type: string
25941
+ format: date-time
25942
+ additionalProperties: false
25943
+ DockerHostAgentInstallationEnvelope:
25944
+ type: object
25945
+ required: [data]
25946
+ properties:
25947
+ data:
25948
+ $ref: "#/components/schemas/DockerHostAgentInstallation"
25949
+ additionalProperties: false
25950
+ DockerHostAgentEnrollmentRequest:
25951
+ type: object
25952
+ required: [agentId, enrollmentToken]
25953
+ properties:
25954
+ agentId:
25955
+ type: string
25956
+ minLength: 1
25957
+ maxLength: 200
25958
+ enrollmentToken:
25959
+ type: string
25960
+ minLength: 32
25961
+ maxLength: 512
25962
+ format: password
25963
+ description: Short-lived one-time secret delivered only inside the installer.
25964
+ additionalProperties: false
25965
+ DockerHostAgentCredentials:
25966
+ type: object
25967
+ required: [hostId, operationId, agentId, agentBearerToken, runtimeBearerToken, issuedAt]
25968
+ properties:
25969
+ hostId:
25970
+ type: string
25971
+ minLength: 1
25972
+ operationId:
25973
+ type: string
25974
+ minLength: 1
25975
+ agentId:
25976
+ type: string
25977
+ minLength: 1
25978
+ maxLength: 200
25979
+ agentBearerToken:
25980
+ type: string
25981
+ minLength: 32
25982
+ maxLength: 512
25983
+ format: password
25984
+ description: Credential for the Agent's local HTTP API, returned only by the successful enrollment response.
25985
+ runtimeBearerToken:
25986
+ type: string
25987
+ minLength: 32
25988
+ maxLength: 512
25989
+ format: password
25990
+ description: Revocable credential restricted to Docker operations for this host.
25991
+ issuedAt:
25992
+ type: string
25993
+ format: date-time
25994
+ additionalProperties: false
25995
+ DockerHostAgentCredentialsEnvelope:
25996
+ type: object
25997
+ required: [data]
25998
+ properties:
25999
+ data:
26000
+ $ref: "#/components/schemas/DockerHostAgentCredentials"
26001
+ additionalProperties: false
26002
+ ObservabilityProviderSignal:
26003
+ type: string
26004
+ enum: [logs, metrics, traces, profiles]
26005
+ x-enum-varnames:
26006
+ - ObservabilityProviderSignalLogs
26007
+ - ObservabilityProviderSignalMetrics
26008
+ - ObservabilityProviderSignalTraces
26009
+ - ObservabilityProviderSignalProfiles
26010
+ ObservabilityProviderRuntimeMode:
26011
+ type: string
26012
+ enum: [builtin, external-http, managed-container]
26013
+ x-enum-varnames:
26014
+ - ObservabilityProviderRuntimeModeBuiltin
26015
+ - ObservabilityProviderRuntimeModeExternalHTTP
26016
+ - ObservabilityProviderRuntimeModeManagedContainer
26017
+ ObservabilityProviderStatus:
26018
+ type: string
26019
+ enum: [supported, degraded, unsupported]
26020
+ x-enum-varnames:
26021
+ - ObservabilityProviderStatusSupported
26022
+ - ObservabilityProviderStatusDegraded
26023
+ - ObservabilityProviderStatusUnsupported
26024
+ ObservabilityProviderRuntimeStatus:
26025
+ type: string
26026
+ enum: [unconfigured, unknown, healthy, degraded, failed, unsupported]
26027
+ x-enum-varnames:
26028
+ - ObservabilityProviderRuntimeStatusUnconfigured
26029
+ - ObservabilityProviderRuntimeStatusUnknown
26030
+ - ObservabilityProviderRuntimeStatusHealthy
26031
+ - ObservabilityProviderRuntimeStatusDegraded
26032
+ - ObservabilityProviderRuntimeStatusFailed
26033
+ - ObservabilityProviderRuntimeStatusUnsupported
26034
+ ObservabilityProviderDefinition:
26035
+ type: object
26036
+ required: [providerKey, displayName, protocolVersion, signals, capabilities, runtimeMode, builtIn, status]
26037
+ properties:
26038
+ providerKey:
26039
+ type: string
26040
+ pattern: "^[a-z][a-z0-9._-]*$"
26041
+ maxLength: 128
26042
+ description: Required when backendType is provider.
26043
+ displayName:
26044
+ type: string
26045
+ minLength: 1
26046
+ maxLength: 200
26047
+ description:
26048
+ type: string
26049
+ maxLength: 1000
26050
+ protocolVersion:
26051
+ type: string
26052
+ pattern: "^v[1-9][0-9]*$"
25254
26053
  signals:
25255
26054
  type: array
25256
26055
  minItems: 1
@@ -25273,6 +26072,17 @@ components:
25273
26072
  statusReason:
25274
26073
  type: string
25275
26074
  maxLength: 500
26075
+ configured:
26076
+ type: boolean
26077
+ description: True when at least one enabled data source is configured for this provider.
26078
+ runtimeStatus:
26079
+ $ref: "#/components/schemas/ObservabilityProviderRuntimeStatus"
26080
+ runtimeStatusReason:
26081
+ type: string
26082
+ maxLength: 500
26083
+ lastValidatedAt:
26084
+ type: string
26085
+ format: date-time
25276
26086
  pluginId:
25277
26087
  type: string
25278
26088
  maxLength: 200
@@ -25294,14 +26104,23 @@ components:
25294
26104
  enum: [grafana]
25295
26105
  x-enum-varnames:
25296
26106
  - ObservabilityDashboardSourceGrafana
26107
+ ObservabilityDashboardSourceFormat:
26108
+ type: string
26109
+ enum: [classic, v1]
26110
+ x-enum-varnames:
26111
+ - ObservabilityDashboardSourceFormatClassic
26112
+ - ObservabilityDashboardSourceFormatV1
25297
26113
  ObservabilityDashboardPanelType:
25298
26114
  type: string
25299
- enum: [timeseries, stat, text, row]
26115
+ enum: [timeseries, table, stat, gauge, text, row, unsupported]
25300
26116
  x-enum-varnames:
25301
26117
  - ObservabilityDashboardPanelTypeTimeseries
26118
+ - ObservabilityDashboardPanelTypeTable
25302
26119
  - ObservabilityDashboardPanelTypeStat
26120
+ - ObservabilityDashboardPanelTypeGauge
25303
26121
  - ObservabilityDashboardPanelTypeText
25304
26122
  - ObservabilityDashboardPanelTypeRow
26123
+ - ObservabilityDashboardPanelTypeUnsupported
25305
26124
  ObservabilityDashboardPanelLayout:
25306
26125
  type: object
25307
26126
  required: [x, y, w, h]
@@ -25337,6 +26156,15 @@ components:
25337
26156
  legend:
25338
26157
  type: string
25339
26158
  maxLength: 256
26159
+ dataSourceType:
26160
+ type: string
26161
+ maxLength: 128
26162
+ dataSourceUid:
26163
+ type: string
26164
+ maxLength: 200
26165
+ dataSourceId:
26166
+ type: string
26167
+ maxLength: 200
25340
26168
  additionalProperties: false
25341
26169
  ObservabilityDashboardPanel:
25342
26170
  type: object
@@ -25364,6 +26192,61 @@ components:
25364
26192
  markdown:
25365
26193
  type: string
25366
26194
  maxLength: 32768
26195
+ sourcePanelType:
26196
+ type: string
26197
+ maxLength: 128
26198
+ unsupported:
26199
+ type: boolean
26200
+ rawJson:
26201
+ type: string
26202
+ maxLength: 2097152
26203
+ description: Original Grafana panel JSON retained for unsupported renderers and never executed directly.
26204
+ additionalProperties: false
26205
+ ObservabilityDashboardVariableType:
26206
+ type: string
26207
+ enum: [custom, constant]
26208
+ x-enum-varnames:
26209
+ - ObservabilityDashboardVariableTypeCustom
26210
+ - ObservabilityDashboardVariableTypeConstant
26211
+ ObservabilityDashboardVariable:
26212
+ type: object
26213
+ required: [name, type, options]
26214
+ properties:
26215
+ name:
26216
+ type: string
26217
+ pattern: "^[A-Za-z_][A-Za-z0-9_]*$"
26218
+ maxLength: 64
26219
+ label:
26220
+ type: string
26221
+ maxLength: 200
26222
+ type:
26223
+ $ref: "#/components/schemas/ObservabilityDashboardVariableType"
26224
+ current:
26225
+ type: string
26226
+ maxLength: 512
26227
+ options:
26228
+ type: array
26229
+ maxItems: 100
26230
+ uniqueItems: true
26231
+ items:
26232
+ type: string
26233
+ maxLength: 512
26234
+ additionalProperties: false
26235
+ ObservabilityDashboardDataSourceBinding:
26236
+ type: object
26237
+ required: [type, dataSourceId]
26238
+ properties:
26239
+ type:
26240
+ type: string
26241
+ minLength: 1
26242
+ maxLength: 128
26243
+ uid:
26244
+ type: string
26245
+ maxLength: 200
26246
+ dataSourceId:
26247
+ type: string
26248
+ minLength: 1
26249
+ maxLength: 200
25367
26250
  additionalProperties: false
25368
26251
  ObservabilityDashboard:
25369
26252
  type: object
@@ -25379,6 +26262,8 @@ components:
25379
26262
  maxLength: 200
25380
26263
  source:
25381
26264
  $ref: "#/components/schemas/ObservabilityDashboardSource"
26265
+ sourceFormat:
26266
+ $ref: "#/components/schemas/ObservabilityDashboardSourceFormat"
25382
26267
  sourceSchemaVersion:
25383
26268
  type: integer
25384
26269
  minimum: 0
@@ -25398,6 +26283,25 @@ components:
25398
26283
  maxItems: 200
25399
26284
  items:
25400
26285
  $ref: "#/components/schemas/ObservabilityDashboardPanel"
26286
+ variables:
26287
+ type: array
26288
+ maxItems: 50
26289
+ items:
26290
+ $ref: "#/components/schemas/ObservabilityDashboardVariable"
26291
+ dataSourceBindings:
26292
+ type: array
26293
+ maxItems: 100
26294
+ items:
26295
+ $ref: "#/components/schemas/ObservabilityDashboardDataSourceBinding"
26296
+ importWarnings:
26297
+ type: array
26298
+ maxItems: 500
26299
+ items:
26300
+ $ref: "#/components/schemas/ObservabilityDashboardImportWarning"
26301
+ rawJson:
26302
+ type: string
26303
+ maxLength: 2097152
26304
+ description: Original bounded Grafana import document. It is retained for fidelity and never executed directly.
25401
26305
  createdAt:
25402
26306
  type: string
25403
26307
  format: date-time
@@ -25486,7 +26390,7 @@ components:
25486
26390
  $ref: "#/components/schemas/ObservabilityDashboardImportWarning"
25487
26391
  importedPanelCount:
25488
26392
  type: integer
25489
- minimum: 1
26393
+ minimum: 0
25490
26394
  skippedPanelCount:
25491
26395
  type: integer
25492
26396
  minimum: 0
@@ -25513,13 +26417,25 @@ components:
25513
26417
  minimum: 1
25514
26418
  maximum: 3600
25515
26419
  default: 60
26420
+ variables:
26421
+ type: object
26422
+ maxProperties: 50
26423
+ additionalProperties:
26424
+ type: string
26425
+ maxLength: 512
25516
26426
  additionalProperties: false
25517
26427
  ObservabilityQueryScope:
25518
26428
  type: object
25519
26429
  properties:
26430
+ workspaceId:
26431
+ type: string
26432
+ maxLength: 128
25520
26433
  clusterId:
25521
26434
  type: string
25522
26435
  maxLength: 128
26436
+ environment:
26437
+ type: string
26438
+ maxLength: 128
25523
26439
  namespace:
25524
26440
  type: string
25525
26441
  maxLength: 253
@@ -25530,6 +26446,187 @@ components:
25530
26446
  type: string
25531
26447
  maxLength: 253
25532
26448
  additionalProperties: false
26449
+ ObservabilitySignal:
26450
+ type: string
26451
+ enum: [metrics, traces, logs, events]
26452
+ x-enum-varnames:
26453
+ - ObservabilitySignalMetrics
26454
+ - ObservabilitySignalTraces
26455
+ - ObservabilitySignalLogs
26456
+ - ObservabilitySignalEvents
26457
+ ObservabilityTimeRange:
26458
+ type: object
26459
+ required: [from, to]
26460
+ properties:
26461
+ from:
26462
+ type: string
26463
+ format: date-time
26464
+ to:
26465
+ type: string
26466
+ format: date-time
26467
+ timezone:
26468
+ type: string
26469
+ maxLength: 64
26470
+ additionalProperties: false
26471
+ ObservabilityResourceIdentity:
26472
+ type: object
26473
+ required: [kind, name]
26474
+ properties:
26475
+ kind:
26476
+ type: string
26477
+ minLength: 1
26478
+ maxLength: 128
26479
+ name:
26480
+ type: string
26481
+ minLength: 1
26482
+ maxLength: 253
26483
+ uid:
26484
+ type: string
26485
+ maxLength: 253
26486
+ additionalProperties: false
26487
+ ObservabilityFilter:
26488
+ type: object
26489
+ properties:
26490
+ text:
26491
+ type: string
26492
+ maxLength: 2048
26493
+ labels:
26494
+ type: object
26495
+ maxProperties: 100
26496
+ additionalProperties:
26497
+ type: string
26498
+ maxLength: 1024
26499
+ traceId:
26500
+ type: string
26501
+ maxLength: 128
26502
+ spanId:
26503
+ type: string
26504
+ maxLength: 128
26505
+ additionalProperties: false
26506
+ ObservabilityContext:
26507
+ type: object
26508
+ required: [version, scope, timeRange]
26509
+ properties:
26510
+ version:
26511
+ type: string
26512
+ enum: [v1]
26513
+ scope:
26514
+ $ref: "#/components/schemas/ObservabilityQueryScope"
26515
+ resource:
26516
+ $ref: "#/components/schemas/ObservabilityResourceIdentity"
26517
+ timeRange:
26518
+ $ref: "#/components/schemas/ObservabilityTimeRange"
26519
+ filter:
26520
+ $ref: "#/components/schemas/ObservabilityFilter"
26521
+ scopeRestricted:
26522
+ type: boolean
26523
+ readOnly: true
26524
+ description: True when authorization narrowed the requested scope.
26525
+ additionalProperties: false
26526
+ ObservabilityQueryLanguage:
26527
+ type: string
26528
+ enum: [metric_key, promql, logql, elasticsearch, clickhouse_sql, trace_filter, event_filter]
26529
+ x-enum-varnames:
26530
+ - ObservabilityQueryLanguageMetricKey
26531
+ - ObservabilityQueryLanguagePromQL
26532
+ - ObservabilityQueryLanguageLogQL
26533
+ - ObservabilityQueryLanguageElasticsearch
26534
+ - ObservabilityQueryLanguageClickHouseSQL
26535
+ - ObservabilityQueryLanguageTraceFilter
26536
+ - ObservabilityQueryLanguageEventFilter
26537
+ ObservabilityQuerySnapshot:
26538
+ type: object
26539
+ required: [version, signal, context]
26540
+ properties:
26541
+ version:
26542
+ type: string
26543
+ enum: [v1]
26544
+ signal:
26545
+ $ref: "#/components/schemas/ObservabilitySignal"
26546
+ dataSourceId:
26547
+ type: string
26548
+ maxLength: 200
26549
+ backendType:
26550
+ type: string
26551
+ maxLength: 128
26552
+ context:
26553
+ $ref: "#/components/schemas/ObservabilityContext"
26554
+ queryLanguage:
26555
+ $ref: "#/components/schemas/ObservabilityQueryLanguage"
26556
+ query:
26557
+ type: string
26558
+ maxLength: 8192
26559
+ description: Provider-native query text. Soha does not translate arbitrary query languages.
26560
+ metricKey:
26561
+ type: string
26562
+ maxLength: 128
26563
+ traceId:
26564
+ type: string
26565
+ maxLength: 128
26566
+ spanId:
26567
+ type: string
26568
+ maxLength: 128
26569
+ createdAt:
26570
+ type: string
26571
+ format: date-time
26572
+ additionalProperties: false
26573
+ ObservabilityQueryState:
26574
+ type: string
26575
+ enum: [success, empty, partial, error, no_data, unsupported]
26576
+ x-enum-varnames:
26577
+ - ObservabilityQueryStateSuccess
26578
+ - ObservabilityQueryStateEmpty
26579
+ - ObservabilityQueryStatePartial
26580
+ - ObservabilityQueryStateError
26581
+ - ObservabilityQueryStateNoData
26582
+ - ObservabilityQueryStateUnsupported
26583
+ ObservabilityQueryError:
26584
+ type: object
26585
+ required: [code, message]
26586
+ properties:
26587
+ code:
26588
+ type: string
26589
+ pattern: "^[a-z][a-z0-9._-]*$"
26590
+ maxLength: 128
26591
+ message:
26592
+ type: string
26593
+ minLength: 1
26594
+ maxLength: 1000
26595
+ retryable:
26596
+ type: boolean
26597
+ sourceId:
26598
+ type: string
26599
+ maxLength: 200
26600
+ additionalProperties: false
26601
+ ObservabilityQueryResultMeta:
26602
+ type: object
26603
+ required: [state]
26604
+ properties:
26605
+ state:
26606
+ $ref: "#/components/schemas/ObservabilityQueryState"
26607
+ snapshot:
26608
+ $ref: "#/components/schemas/ObservabilityQuerySnapshot"
26609
+ observedAt:
26610
+ type: string
26611
+ format: date-time
26612
+ durationMs:
26613
+ type: integer
26614
+ format: int64
26615
+ minimum: 0
26616
+ scopeRestricted:
26617
+ type: boolean
26618
+ warnings:
26619
+ type: array
26620
+ maxItems: 100
26621
+ items:
26622
+ type: string
26623
+ maxLength: 1000
26624
+ errors:
26625
+ type: array
26626
+ maxItems: 100
26627
+ items:
26628
+ $ref: "#/components/schemas/ObservabilityQueryError"
26629
+ additionalProperties: false
25533
26630
  ObservabilityMetricKey:
25534
26631
  type: string
25535
26632
  enum: [cpu_usage, memory_usage, restart_rate, error_rate, latency_p95]
@@ -25604,6 +26701,8 @@ components:
25604
26701
  type: array
25605
26702
  items:
25606
26703
  $ref: "#/components/schemas/ObservabilityMetricSeries"
26704
+ meta:
26705
+ $ref: "#/components/schemas/ObservabilityQueryResultMeta"
25607
26706
  additionalProperties: false
25608
26707
  ObservabilityMetricQueryEnvelope:
25609
26708
  type: object
@@ -25689,6 +26788,8 @@ components:
25689
26788
  type: array
25690
26789
  items:
25691
26790
  $ref: "#/components/schemas/ObservabilityTraceSpan"
26791
+ meta:
26792
+ $ref: "#/components/schemas/ObservabilityQueryResultMeta"
25692
26793
  additionalProperties: false
25693
26794
  ObservabilityTraceQueryEnvelope:
25694
26795
  type: object
@@ -25697,6 +26798,244 @@ components:
25697
26798
  data:
25698
26799
  $ref: "#/components/schemas/ObservabilityTraceQueryResult"
25699
26800
  additionalProperties: false
26801
+ ObservabilityServiceStatus:
26802
+ type: string
26803
+ enum: [healthy, degraded, unknown, unsupported]
26804
+ x-enum-varnames:
26805
+ - ObservabilityServiceStatusHealthy
26806
+ - ObservabilityServiceStatusDegraded
26807
+ - ObservabilityServiceStatusUnknown
26808
+ - ObservabilityServiceStatusUnsupported
26809
+ ObservabilityServiceInstance:
26810
+ type: object
26811
+ required: [id, name, status]
26812
+ properties:
26813
+ id:
26814
+ type: string
26815
+ minLength: 1
26816
+ maxLength: 253
26817
+ name:
26818
+ type: string
26819
+ minLength: 1
26820
+ maxLength: 253
26821
+ status:
26822
+ $ref: "#/components/schemas/ObservabilityServiceStatus"
26823
+ lastSeenAt:
26824
+ type: string
26825
+ format: date-time
26826
+ additionalProperties: false
26827
+ ObservabilityServiceEndpoint:
26828
+ type: object
26829
+ required: [id, name, status]
26830
+ properties:
26831
+ id:
26832
+ type: string
26833
+ minLength: 1
26834
+ maxLength: 512
26835
+ name:
26836
+ type: string
26837
+ minLength: 1
26838
+ maxLength: 512
26839
+ method:
26840
+ type: string
26841
+ maxLength: 32
26842
+ status:
26843
+ $ref: "#/components/schemas/ObservabilityServiceStatus"
26844
+ requestRate:
26845
+ type: number
26846
+ format: double
26847
+ minimum: 0
26848
+ errorRate:
26849
+ type: number
26850
+ format: double
26851
+ minimum: 0
26852
+ latencyP95Ms:
26853
+ type: number
26854
+ format: double
26855
+ minimum: 0
26856
+ additionalProperties: false
26857
+ ObservabilityService:
26858
+ type: object
26859
+ required: [id, name, status, clusterIds, instances, endpoints]
26860
+ properties:
26861
+ id:
26862
+ type: string
26863
+ minLength: 1
26864
+ maxLength: 253
26865
+ name:
26866
+ type: string
26867
+ minLength: 1
26868
+ maxLength: 253
26869
+ displayName:
26870
+ type: string
26871
+ maxLength: 253
26872
+ environment:
26873
+ type: string
26874
+ maxLength: 128
26875
+ namespace:
26876
+ type: string
26877
+ maxLength: 253
26878
+ clusterIds:
26879
+ type: array
26880
+ maxItems: 100
26881
+ uniqueItems: true
26882
+ items:
26883
+ type: string
26884
+ minLength: 1
26885
+ maxLength: 128
26886
+ status:
26887
+ $ref: "#/components/schemas/ObservabilityServiceStatus"
26888
+ requestRate:
26889
+ type: number
26890
+ format: double
26891
+ minimum: 0
26892
+ errorRate:
26893
+ type: number
26894
+ format: double
26895
+ minimum: 0
26896
+ latencyP95Ms:
26897
+ type: number
26898
+ format: double
26899
+ minimum: 0
26900
+ lastSeenAt:
26901
+ type: string
26902
+ format: date-time
26903
+ instances:
26904
+ type: array
26905
+ maxItems: 1000
26906
+ items:
26907
+ $ref: "#/components/schemas/ObservabilityServiceInstance"
26908
+ endpoints:
26909
+ type: array
26910
+ maxItems: 1000
26911
+ items:
26912
+ $ref: "#/components/schemas/ObservabilityServiceEndpoint"
26913
+ additionalProperties: false
26914
+ ObservabilityServiceListEnvelope:
26915
+ type: object
26916
+ required: [items, meta]
26917
+ properties:
26918
+ items:
26919
+ type: array
26920
+ maxItems: 1000
26921
+ items:
26922
+ $ref: "#/components/schemas/ObservabilityService"
26923
+ meta:
26924
+ $ref: "#/components/schemas/ObservabilityQueryResultMeta"
26925
+ additionalProperties: false
26926
+ ObservabilityServiceEnvelope:
26927
+ type: object
26928
+ required: [data, meta]
26929
+ properties:
26930
+ data:
26931
+ $ref: "#/components/schemas/ObservabilityService"
26932
+ meta:
26933
+ $ref: "#/components/schemas/ObservabilityQueryResultMeta"
26934
+ additionalProperties: false
26935
+ ObservabilityTopologyNode:
26936
+ type: object
26937
+ required: [serviceId, name, status]
26938
+ properties:
26939
+ serviceId:
26940
+ type: string
26941
+ minLength: 1
26942
+ maxLength: 253
26943
+ name:
26944
+ type: string
26945
+ minLength: 1
26946
+ maxLength: 253
26947
+ status:
26948
+ $ref: "#/components/schemas/ObservabilityServiceStatus"
26949
+ additionalProperties: false
26950
+ ObservabilityTopologyEdge:
26951
+ type: object
26952
+ required: [sourceServiceId, targetServiceId, status]
26953
+ properties:
26954
+ sourceServiceId:
26955
+ type: string
26956
+ minLength: 1
26957
+ maxLength: 253
26958
+ targetServiceId:
26959
+ type: string
26960
+ minLength: 1
26961
+ maxLength: 253
26962
+ status:
26963
+ $ref: "#/components/schemas/ObservabilityServiceStatus"
26964
+ requestRate:
26965
+ type: number
26966
+ format: double
26967
+ minimum: 0
26968
+ errorRate:
26969
+ type: number
26970
+ format: double
26971
+ minimum: 0
26972
+ latencyP95Ms:
26973
+ type: number
26974
+ format: double
26975
+ minimum: 0
26976
+ additionalProperties: false
26977
+ ObservabilityTopology:
26978
+ type: object
26979
+ required: [nodes, edges, beta, meta]
26980
+ properties:
26981
+ nodes:
26982
+ type: array
26983
+ maxItems: 1000
26984
+ items:
26985
+ $ref: "#/components/schemas/ObservabilityTopologyNode"
26986
+ edges:
26987
+ type: array
26988
+ maxItems: 5000
26989
+ items:
26990
+ $ref: "#/components/schemas/ObservabilityTopologyEdge"
26991
+ beta:
26992
+ type: boolean
26993
+ meta:
26994
+ $ref: "#/components/schemas/ObservabilityQueryResultMeta"
26995
+ additionalProperties: false
26996
+ ObservabilityTopologyEnvelope:
26997
+ type: object
26998
+ required: [data]
26999
+ properties:
27000
+ data:
27001
+ $ref: "#/components/schemas/ObservabilityTopology"
27002
+ additionalProperties: false
27003
+ ObservabilityMetricDefinition:
27004
+ type: object
27005
+ required: [key, label, unit, signal, available]
27006
+ properties:
27007
+ key:
27008
+ type: string
27009
+ minLength: 1
27010
+ maxLength: 128
27011
+ label:
27012
+ type: string
27013
+ minLength: 1
27014
+ maxLength: 200
27015
+ description:
27016
+ type: string
27017
+ maxLength: 1000
27018
+ unit:
27019
+ type: string
27020
+ maxLength: 64
27021
+ semanticConvention:
27022
+ type: string
27023
+ maxLength: 256
27024
+ signal:
27025
+ $ref: "#/components/schemas/ObservabilitySignal"
27026
+ available:
27027
+ type: boolean
27028
+ additionalProperties: false
27029
+ ObservabilityMetricCatalogEnvelope:
27030
+ type: object
27031
+ required: [items]
27032
+ properties:
27033
+ items:
27034
+ type: array
27035
+ maxItems: 500
27036
+ items:
27037
+ $ref: "#/components/schemas/ObservabilityMetricDefinition"
27038
+ additionalProperties: false
25700
27039
  ObservabilityDataSourceBackendType:
25701
27040
  type: string
25702
27041
  enum: [loki, elasticsearch, clickhouse, provider]
@@ -26341,6 +27680,8 @@ components:
26341
27680
  $ref: "#/components/schemas/LogWarning"
26342
27681
  retentionHint:
26343
27682
  type: string
27683
+ meta:
27684
+ $ref: "#/components/schemas/ObservabilityQueryResultMeta"
26344
27685
  additionalProperties: false
26345
27686
  LogPageEnvelope:
26346
27687
  type: object