@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
@@ -786,6 +786,16 @@
786
786
  "type": "string"
787
787
  }
788
788
  },
789
+ "MenuID": {
790
+ "in": "path",
791
+ "name": "menuID",
792
+ "required": true,
793
+ "schema": {
794
+ "maxLength": 128,
795
+ "minLength": 1,
796
+ "type": "string"
797
+ }
798
+ },
789
799
  "MFAChallengeID": {
790
800
  "in": "path",
791
801
  "name": "mfaChallengeID",
@@ -826,6 +836,74 @@
826
836
  "type": "string"
827
837
  }
828
838
  },
839
+ "ObservabilityClusterIDQuery": {
840
+ "in": "query",
841
+ "name": "clusterId",
842
+ "required": false,
843
+ "schema": {
844
+ "maxLength": 128,
845
+ "minLength": 1,
846
+ "type": "string"
847
+ }
848
+ },
849
+ "ObservabilityDataSourceIDQuery": {
850
+ "in": "query",
851
+ "name": "dataSourceId",
852
+ "required": false,
853
+ "schema": {
854
+ "maxLength": 200,
855
+ "minLength": 1,
856
+ "type": "string"
857
+ }
858
+ },
859
+ "ObservabilityEnvironmentQuery": {
860
+ "in": "query",
861
+ "name": "environment",
862
+ "required": false,
863
+ "schema": {
864
+ "maxLength": 128,
865
+ "minLength": 1,
866
+ "type": "string"
867
+ }
868
+ },
869
+ "ObservabilityNamespaceQuery": {
870
+ "in": "query",
871
+ "name": "namespace",
872
+ "required": false,
873
+ "schema": {
874
+ "maxLength": 253,
875
+ "minLength": 1,
876
+ "type": "string"
877
+ }
878
+ },
879
+ "ObservabilityServiceQuery": {
880
+ "in": "query",
881
+ "name": "service",
882
+ "required": false,
883
+ "schema": {
884
+ "maxLength": 253,
885
+ "minLength": 1,
886
+ "type": "string"
887
+ }
888
+ },
889
+ "ObservabilityTimeFromQuery": {
890
+ "in": "query",
891
+ "name": "timeFrom",
892
+ "required": true,
893
+ "schema": {
894
+ "format": "date-time",
895
+ "type": "string"
896
+ }
897
+ },
898
+ "ObservabilityTimeToQuery": {
899
+ "in": "query",
900
+ "name": "timeTo",
901
+ "required": true,
902
+ "schema": {
903
+ "format": "date-time",
904
+ "type": "string"
905
+ }
906
+ },
829
907
  "OIDCClientID": {
830
908
  "in": "path",
831
909
  "name": "oidcClientID",
@@ -975,6 +1053,16 @@
975
1053
  "type": "string"
976
1054
  }
977
1055
  },
1056
+ "ScopeGrantID": {
1057
+ "in": "path",
1058
+ "name": "scopeGrantID",
1059
+ "required": true,
1060
+ "schema": {
1061
+ "maxLength": 128,
1062
+ "minLength": 1,
1063
+ "type": "string"
1064
+ }
1065
+ },
978
1066
  "SecretID": {
979
1067
  "in": "path",
980
1068
  "name": "secretID",
@@ -5945,6 +6033,9 @@
5945
6033
  },
5946
6034
  "sidebarTitle": {
5947
6035
  "type": "string"
6036
+ },
6037
+ "slogan": {
6038
+ "type": "string"
5948
6039
  }
5949
6040
  },
5950
6041
  "required": [
@@ -9972,6 +10063,51 @@
9972
10063
  ],
9973
10064
  "type": "object"
9974
10065
  },
10066
+ "DockerHostAgentInstallation": {
10067
+ "additionalProperties": false,
10068
+ "properties": {
10069
+ "command": {
10070
+ "minLength": 1,
10071
+ "type": "string"
10072
+ },
10073
+ "expiresAt": {
10074
+ "format": "date-time",
10075
+ "type": "string"
10076
+ },
10077
+ "hostId": {
10078
+ "minLength": 1,
10079
+ "type": "string"
10080
+ },
10081
+ "operationId": {
10082
+ "minLength": 1,
10083
+ "type": "string"
10084
+ },
10085
+ "scriptUrl": {
10086
+ "format": "uri",
10087
+ "type": "string"
10088
+ }
10089
+ },
10090
+ "required": [
10091
+ "hostId",
10092
+ "operationId",
10093
+ "scriptUrl",
10094
+ "command",
10095
+ "expiresAt"
10096
+ ],
10097
+ "type": "object"
10098
+ },
10099
+ "DockerHostAgentInstallationEnvelope": {
10100
+ "additionalProperties": false,
10101
+ "properties": {
10102
+ "data": {
10103
+ "$ref": "#/components/schemas/DockerHostAgentInstallation"
10104
+ }
10105
+ },
10106
+ "required": [
10107
+ "data"
10108
+ ],
10109
+ "type": "object"
10110
+ },
9975
10111
  "DockerOperation": {
9976
10112
  "additionalProperties": true,
9977
10113
  "properties": {
@@ -13440,8 +13576,16 @@
13440
13576
  },
13441
13577
  "config": {
13442
13578
  "additionalProperties": true,
13579
+ "description": "Non-secret provider configuration.",
13443
13580
  "type": "object"
13444
13581
  },
13582
+ "configuredSecretAliases": {
13583
+ "items": {
13584
+ "type": "string"
13585
+ },
13586
+ "readOnly": true,
13587
+ "type": "array"
13588
+ },
13445
13589
  "createdAt": {
13446
13590
  "format": "date-time",
13447
13591
  "type": "string"
@@ -13460,6 +13604,9 @@
13460
13604
  },
13461
13605
  "secretRefs": {
13462
13606
  "additionalProperties": true,
13607
+ "deprecated": true,
13608
+ "description": "Deprecated response field retained for 0.1.x SDK compatibility; current servers omit it.",
13609
+ "readOnly": true,
13463
13610
  "type": "object"
13464
13611
  },
13465
13612
  "status": {
@@ -13519,8 +13666,13 @@
13519
13666
  "type": "string"
13520
13667
  },
13521
13668
  "secretRefs": {
13522
- "additionalProperties": true,
13523
- "type": "object"
13669
+ "allOf": [
13670
+ {
13671
+ "$ref": "#/components/schemas/SecretReferenceMap"
13672
+ }
13673
+ ],
13674
+ "description": "Omit on update to preserve existing references; send an empty object to clear them.",
13675
+ "writeOnly": true
13524
13676
  },
13525
13677
  "status": {
13526
13678
  "$ref": "#/components/schemas/IdentityResourceStatus"
@@ -13535,7 +13687,6 @@
13535
13687
  "type",
13536
13688
  "enabled",
13537
13689
  "config",
13538
- "secretRefs",
13539
13690
  "status"
13540
13691
  ],
13541
13692
  "type": "object"
@@ -25471,6 +25622,9 @@
25471
25622
  "LoginOptions": {
25472
25623
  "additionalProperties": false,
25473
25624
  "properties": {
25625
+ "branding": {
25626
+ "$ref": "#/components/schemas/BrandingSettings"
25627
+ },
25474
25628
  "localPasswordLoginEnabled": {
25475
25629
  "type": "boolean"
25476
25630
  },
@@ -25736,6 +25890,9 @@
25736
25890
  },
25737
25891
  "type": "array"
25738
25892
  },
25893
+ "meta": {
25894
+ "$ref": "#/components/schemas/ObservabilityQueryResultMeta"
25895
+ },
25739
25896
  "nextCursor": {
25740
25897
  "type": "string"
25741
25898
  },
@@ -28357,6 +28514,163 @@
28357
28514
  ],
28358
28515
  "type": "object"
28359
28516
  },
28517
+ "Menu": {
28518
+ "additionalProperties": false,
28519
+ "properties": {
28520
+ "children": {
28521
+ "items": {
28522
+ "$ref": "#/components/schemas/Menu"
28523
+ },
28524
+ "type": "array"
28525
+ },
28526
+ "enabled": {
28527
+ "type": "boolean"
28528
+ },
28529
+ "iconKey": {
28530
+ "minLength": 1,
28531
+ "type": "string"
28532
+ },
28533
+ "id": {
28534
+ "minLength": 1,
28535
+ "type": "string"
28536
+ },
28537
+ "labelEn": {
28538
+ "minLength": 1,
28539
+ "type": "string"
28540
+ },
28541
+ "labelZh": {
28542
+ "minLength": 1,
28543
+ "type": "string"
28544
+ },
28545
+ "parentId": {
28546
+ "minLength": 1,
28547
+ "type": "string"
28548
+ },
28549
+ "path": {
28550
+ "minLength": 1,
28551
+ "type": "string"
28552
+ },
28553
+ "roleIds": {
28554
+ "items": {
28555
+ "minLength": 1,
28556
+ "type": "string"
28557
+ },
28558
+ "type": "array",
28559
+ "uniqueItems": true
28560
+ },
28561
+ "section": {
28562
+ "type": "string"
28563
+ },
28564
+ "sortOrder": {
28565
+ "type": "integer"
28566
+ }
28567
+ },
28568
+ "required": [
28569
+ "id",
28570
+ "path",
28571
+ "labelZh",
28572
+ "labelEn",
28573
+ "iconKey",
28574
+ "section",
28575
+ "sortOrder",
28576
+ "enabled"
28577
+ ],
28578
+ "type": "object"
28579
+ },
28580
+ "MenuDeleteResult": {
28581
+ "additionalProperties": false,
28582
+ "properties": {
28583
+ "status": {
28584
+ "const": "ok",
28585
+ "type": "string"
28586
+ }
28587
+ },
28588
+ "required": [
28589
+ "status"
28590
+ ],
28591
+ "type": "object"
28592
+ },
28593
+ "MenuEnvelope": {
28594
+ "additionalProperties": false,
28595
+ "properties": {
28596
+ "data": {
28597
+ "$ref": "#/components/schemas/Menu"
28598
+ }
28599
+ },
28600
+ "required": [
28601
+ "data"
28602
+ ],
28603
+ "type": "object"
28604
+ },
28605
+ "MenuInput": {
28606
+ "additionalProperties": false,
28607
+ "properties": {
28608
+ "enabled": {
28609
+ "type": "boolean"
28610
+ },
28611
+ "iconKey": {
28612
+ "minLength": 1,
28613
+ "type": "string"
28614
+ },
28615
+ "id": {
28616
+ "minLength": 1,
28617
+ "type": "string"
28618
+ },
28619
+ "labelEn": {
28620
+ "minLength": 1,
28621
+ "type": "string"
28622
+ },
28623
+ "labelZh": {
28624
+ "minLength": 1,
28625
+ "type": "string"
28626
+ },
28627
+ "parentId": {
28628
+ "minLength": 1,
28629
+ "nullable": true,
28630
+ "type": "string"
28631
+ },
28632
+ "path": {
28633
+ "minLength": 1,
28634
+ "type": "string"
28635
+ },
28636
+ "roleIds": {
28637
+ "items": {
28638
+ "minLength": 1,
28639
+ "type": "string"
28640
+ },
28641
+ "type": "array",
28642
+ "uniqueItems": true
28643
+ },
28644
+ "section": {
28645
+ "type": "string"
28646
+ },
28647
+ "sortOrder": {
28648
+ "type": "integer"
28649
+ }
28650
+ },
28651
+ "required": [
28652
+ "path",
28653
+ "labelZh",
28654
+ "labelEn",
28655
+ "iconKey"
28656
+ ],
28657
+ "type": "object"
28658
+ },
28659
+ "MenuListEnvelope": {
28660
+ "additionalProperties": false,
28661
+ "properties": {
28662
+ "items": {
28663
+ "items": {
28664
+ "$ref": "#/components/schemas/Menu"
28665
+ },
28666
+ "type": "array"
28667
+ }
28668
+ },
28669
+ "required": [
28670
+ "items"
28671
+ ],
28672
+ "type": "object"
28673
+ },
28360
28674
  "MFAAdminResetRequest": {
28361
28675
  "additionalProperties": false,
28362
28676
  "properties": {
@@ -29009,6 +29323,40 @@
29009
29323
  "description": "Native provider-compatible JSON. Unknown fields are preserved and responses are not wrapped in an OpenSoha envelope.",
29010
29324
  "type": "object"
29011
29325
  },
29326
+ "ObservabilityContext": {
29327
+ "additionalProperties": false,
29328
+ "properties": {
29329
+ "filter": {
29330
+ "$ref": "#/components/schemas/ObservabilityFilter"
29331
+ },
29332
+ "resource": {
29333
+ "$ref": "#/components/schemas/ObservabilityResourceIdentity"
29334
+ },
29335
+ "scope": {
29336
+ "$ref": "#/components/schemas/ObservabilityQueryScope"
29337
+ },
29338
+ "scopeRestricted": {
29339
+ "description": "True when authorization narrowed the requested scope.",
29340
+ "readOnly": true,
29341
+ "type": "boolean"
29342
+ },
29343
+ "timeRange": {
29344
+ "$ref": "#/components/schemas/ObservabilityTimeRange"
29345
+ },
29346
+ "version": {
29347
+ "enum": [
29348
+ "v1"
29349
+ ],
29350
+ "type": "string"
29351
+ }
29352
+ },
29353
+ "required": [
29354
+ "version",
29355
+ "scope",
29356
+ "timeRange"
29357
+ ],
29358
+ "type": "object"
29359
+ },
29012
29360
  "ObservabilityDashboard": {
29013
29361
  "additionalProperties": false,
29014
29362
  "properties": {
@@ -29016,6 +29364,13 @@
29016
29364
  "format": "date-time",
29017
29365
  "type": "string"
29018
29366
  },
29367
+ "dataSourceBindings": {
29368
+ "items": {
29369
+ "$ref": "#/components/schemas/ObservabilityDashboardDataSourceBinding"
29370
+ },
29371
+ "maxItems": 100,
29372
+ "type": "array"
29373
+ },
29019
29374
  "dataSourceId": {
29020
29375
  "maxLength": 200,
29021
29376
  "type": "string"
@@ -29025,6 +29380,13 @@
29025
29380
  "minLength": 1,
29026
29381
  "type": "string"
29027
29382
  },
29383
+ "importWarnings": {
29384
+ "items": {
29385
+ "$ref": "#/components/schemas/ObservabilityDashboardImportWarning"
29386
+ },
29387
+ "maxItems": 500,
29388
+ "type": "array"
29389
+ },
29028
29390
  "name": {
29029
29391
  "maxLength": 200,
29030
29392
  "minLength": 1,
@@ -29037,9 +29399,17 @@
29037
29399
  "maxItems": 200,
29038
29400
  "type": "array"
29039
29401
  },
29402
+ "rawJson": {
29403
+ "description": "Original bounded Grafana import document. It is retained for fidelity and never executed directly.",
29404
+ "maxLength": 2097152,
29405
+ "type": "string"
29406
+ },
29040
29407
  "source": {
29041
29408
  "$ref": "#/components/schemas/ObservabilityDashboardSource"
29042
29409
  },
29410
+ "sourceFormat": {
29411
+ "$ref": "#/components/schemas/ObservabilityDashboardSourceFormat"
29412
+ },
29043
29413
  "sourceSchemaVersion": {
29044
29414
  "minimum": 0,
29045
29415
  "type": "integer"
@@ -29057,6 +29427,13 @@
29057
29427
  "updatedAt": {
29058
29428
  "format": "date-time",
29059
29429
  "type": "string"
29430
+ },
29431
+ "variables": {
29432
+ "items": {
29433
+ "$ref": "#/components/schemas/ObservabilityDashboardVariable"
29434
+ },
29435
+ "maxItems": 50,
29436
+ "type": "array"
29060
29437
  }
29061
29438
  },
29062
29439
  "required": [
@@ -29070,6 +29447,30 @@
29070
29447
  ],
29071
29448
  "type": "object"
29072
29449
  },
29450
+ "ObservabilityDashboardDataSourceBinding": {
29451
+ "additionalProperties": false,
29452
+ "properties": {
29453
+ "dataSourceId": {
29454
+ "maxLength": 200,
29455
+ "minLength": 1,
29456
+ "type": "string"
29457
+ },
29458
+ "type": {
29459
+ "maxLength": 128,
29460
+ "minLength": 1,
29461
+ "type": "string"
29462
+ },
29463
+ "uid": {
29464
+ "maxLength": 200,
29465
+ "type": "string"
29466
+ }
29467
+ },
29468
+ "required": [
29469
+ "type",
29470
+ "dataSourceId"
29471
+ ],
29472
+ "type": "object"
29473
+ },
29073
29474
  "ObservabilityDashboardEnvelope": {
29074
29475
  "additionalProperties": false,
29075
29476
  "properties": {
@@ -29089,7 +29490,7 @@
29089
29490
  "$ref": "#/components/schemas/ObservabilityDashboard"
29090
29491
  },
29091
29492
  "importedPanelCount": {
29092
- "minimum": 1,
29493
+ "minimum": 0,
29093
29494
  "type": "integer"
29094
29495
  },
29095
29496
  "skippedPanelCount": {
@@ -29186,6 +29587,15 @@
29186
29587
  "queryable": {
29187
29588
  "type": "boolean"
29188
29589
  },
29590
+ "rawJson": {
29591
+ "description": "Original Grafana panel JSON retained for unsupported renderers and never executed directly.",
29592
+ "maxLength": 2097152,
29593
+ "type": "string"
29594
+ },
29595
+ "sourcePanelType": {
29596
+ "maxLength": 128,
29597
+ "type": "string"
29598
+ },
29189
29599
  "targets": {
29190
29600
  "items": {
29191
29601
  "$ref": "#/components/schemas/ObservabilityDashboardTarget"
@@ -29200,6 +29610,9 @@
29200
29610
  },
29201
29611
  "type": {
29202
29612
  "$ref": "#/components/schemas/ObservabilityDashboardPanelType"
29613
+ },
29614
+ "unsupported": {
29615
+ "type": "boolean"
29203
29616
  }
29204
29617
  },
29205
29618
  "required": [
@@ -29259,6 +29672,14 @@
29259
29672
  "timeTo": {
29260
29673
  "format": "date-time",
29261
29674
  "type": "string"
29675
+ },
29676
+ "variables": {
29677
+ "additionalProperties": {
29678
+ "maxLength": 512,
29679
+ "type": "string"
29680
+ },
29681
+ "maxProperties": 50,
29682
+ "type": "object"
29262
29683
  }
29263
29684
  },
29264
29685
  "required": [
@@ -29270,16 +29691,22 @@
29270
29691
  "ObservabilityDashboardPanelType": {
29271
29692
  "enum": [
29272
29693
  "timeseries",
29694
+ "table",
29273
29695
  "stat",
29696
+ "gauge",
29274
29697
  "text",
29275
- "row"
29698
+ "row",
29699
+ "unsupported"
29276
29700
  ],
29277
29701
  "type": "string",
29278
29702
  "x-enum-varnames": [
29279
29703
  "ObservabilityDashboardPanelTypeTimeseries",
29704
+ "ObservabilityDashboardPanelTypeTable",
29280
29705
  "ObservabilityDashboardPanelTypeStat",
29706
+ "ObservabilityDashboardPanelTypeGauge",
29281
29707
  "ObservabilityDashboardPanelTypeText",
29282
- "ObservabilityDashboardPanelTypeRow"
29708
+ "ObservabilityDashboardPanelTypeRow",
29709
+ "ObservabilityDashboardPanelTypeUnsupported"
29283
29710
  ]
29284
29711
  },
29285
29712
  "ObservabilityDashboardSource": {
@@ -29291,9 +29718,32 @@
29291
29718
  "ObservabilityDashboardSourceGrafana"
29292
29719
  ]
29293
29720
  },
29721
+ "ObservabilityDashboardSourceFormat": {
29722
+ "enum": [
29723
+ "classic",
29724
+ "v1"
29725
+ ],
29726
+ "type": "string",
29727
+ "x-enum-varnames": [
29728
+ "ObservabilityDashboardSourceFormatClassic",
29729
+ "ObservabilityDashboardSourceFormatV1"
29730
+ ]
29731
+ },
29294
29732
  "ObservabilityDashboardTarget": {
29295
29733
  "additionalProperties": false,
29296
29734
  "properties": {
29735
+ "dataSourceId": {
29736
+ "maxLength": 200,
29737
+ "type": "string"
29738
+ },
29739
+ "dataSourceType": {
29740
+ "maxLength": 128,
29741
+ "type": "string"
29742
+ },
29743
+ "dataSourceUid": {
29744
+ "maxLength": 200,
29745
+ "type": "string"
29746
+ },
29297
29747
  "expression": {
29298
29748
  "maxLength": 8192,
29299
29749
  "minLength": 1,
@@ -29315,6 +29765,53 @@
29315
29765
  ],
29316
29766
  "type": "object"
29317
29767
  },
29768
+ "ObservabilityDashboardVariable": {
29769
+ "additionalProperties": false,
29770
+ "properties": {
29771
+ "current": {
29772
+ "maxLength": 512,
29773
+ "type": "string"
29774
+ },
29775
+ "label": {
29776
+ "maxLength": 200,
29777
+ "type": "string"
29778
+ },
29779
+ "name": {
29780
+ "maxLength": 64,
29781
+ "pattern": "^[A-Za-z_][A-Za-z0-9_]*$",
29782
+ "type": "string"
29783
+ },
29784
+ "options": {
29785
+ "items": {
29786
+ "maxLength": 512,
29787
+ "type": "string"
29788
+ },
29789
+ "maxItems": 100,
29790
+ "type": "array",
29791
+ "uniqueItems": true
29792
+ },
29793
+ "type": {
29794
+ "$ref": "#/components/schemas/ObservabilityDashboardVariableType"
29795
+ }
29796
+ },
29797
+ "required": [
29798
+ "name",
29799
+ "type",
29800
+ "options"
29801
+ ],
29802
+ "type": "object"
29803
+ },
29804
+ "ObservabilityDashboardVariableType": {
29805
+ "enum": [
29806
+ "custom",
29807
+ "constant"
29808
+ ],
29809
+ "type": "string",
29810
+ "x-enum-varnames": [
29811
+ "ObservabilityDashboardVariableTypeCustom",
29812
+ "ObservabilityDashboardVariableTypeConstant"
29813
+ ]
29814
+ },
29318
29815
  "ObservabilityDataSource": {
29319
29816
  "additionalProperties": false,
29320
29817
  "properties": {
@@ -29532,6 +30029,32 @@
29532
30029
  "ObservabilityDataSourceValidationStatusFailed"
29533
30030
  ]
29534
30031
  },
30032
+ "ObservabilityFilter": {
30033
+ "additionalProperties": false,
30034
+ "properties": {
30035
+ "labels": {
30036
+ "additionalProperties": {
30037
+ "maxLength": 1024,
30038
+ "type": "string"
30039
+ },
30040
+ "maxProperties": 100,
30041
+ "type": "object"
30042
+ },
30043
+ "spanId": {
30044
+ "maxLength": 128,
30045
+ "type": "string"
30046
+ },
30047
+ "text": {
30048
+ "maxLength": 2048,
30049
+ "type": "string"
30050
+ },
30051
+ "traceId": {
30052
+ "maxLength": 128,
30053
+ "type": "string"
30054
+ }
30055
+ },
30056
+ "type": "object"
30057
+ },
29535
30058
  "ObservabilityGrafanaDashboardImportInput": {
29536
30059
  "additionalProperties": false,
29537
30060
  "properties": {
@@ -29707,6 +30230,22 @@
29707
30230
  },
29708
30231
  "type": "object"
29709
30232
  },
30233
+ "ObservabilityMetricCatalogEnvelope": {
30234
+ "additionalProperties": false,
30235
+ "properties": {
30236
+ "items": {
30237
+ "items": {
30238
+ "$ref": "#/components/schemas/ObservabilityMetricDefinition"
30239
+ },
30240
+ "maxItems": 500,
30241
+ "type": "array"
30242
+ }
30243
+ },
30244
+ "required": [
30245
+ "items"
30246
+ ],
30247
+ "type": "object"
30248
+ },
29710
30249
  "ObservabilityMetricDataSource": {
29711
30250
  "additionalProperties": false,
29712
30251
  "properties": {
@@ -29742,6 +30281,47 @@
29742
30281
  ],
29743
30282
  "type": "object"
29744
30283
  },
30284
+ "ObservabilityMetricDefinition": {
30285
+ "additionalProperties": false,
30286
+ "properties": {
30287
+ "available": {
30288
+ "type": "boolean"
30289
+ },
30290
+ "description": {
30291
+ "maxLength": 1000,
30292
+ "type": "string"
30293
+ },
30294
+ "key": {
30295
+ "maxLength": 128,
30296
+ "minLength": 1,
30297
+ "type": "string"
30298
+ },
30299
+ "label": {
30300
+ "maxLength": 200,
30301
+ "minLength": 1,
30302
+ "type": "string"
30303
+ },
30304
+ "semanticConvention": {
30305
+ "maxLength": 256,
30306
+ "type": "string"
30307
+ },
30308
+ "signal": {
30309
+ "$ref": "#/components/schemas/ObservabilitySignal"
30310
+ },
30311
+ "unit": {
30312
+ "maxLength": 64,
30313
+ "type": "string"
30314
+ }
30315
+ },
30316
+ "required": [
30317
+ "key",
30318
+ "label",
30319
+ "unit",
30320
+ "signal",
30321
+ "available"
30322
+ ],
30323
+ "type": "object"
30324
+ },
29745
30325
  "ObservabilityMetricKey": {
29746
30326
  "enum": [
29747
30327
  "cpu_usage",
@@ -29836,6 +30416,9 @@
29836
30416
  "dataSourceId": {
29837
30417
  "type": "string"
29838
30418
  },
30419
+ "meta": {
30420
+ "$ref": "#/components/schemas/ObservabilityQueryResultMeta"
30421
+ },
29839
30422
  "series": {
29840
30423
  "items": {
29841
30424
  "$ref": "#/components/schemas/ObservabilityMetricSeries"
@@ -29900,6 +30483,10 @@
29900
30483
  "maxLength": 512,
29901
30484
  "type": "string"
29902
30485
  },
30486
+ "configured": {
30487
+ "description": "True when at least one enabled data source is configured for this provider.",
30488
+ "type": "boolean"
30489
+ },
29903
30490
  "description": {
29904
30491
  "maxLength": 1000,
29905
30492
  "type": "string"
@@ -29909,6 +30496,10 @@
29909
30496
  "minLength": 1,
29910
30497
  "type": "string"
29911
30498
  },
30499
+ "lastValidatedAt": {
30500
+ "format": "date-time",
30501
+ "type": "string"
30502
+ },
29912
30503
  "pluginId": {
29913
30504
  "maxLength": 200,
29914
30505
  "type": "string"
@@ -29926,6 +30517,13 @@
29926
30517
  "runtimeMode": {
29927
30518
  "$ref": "#/components/schemas/ObservabilityProviderRuntimeMode"
29928
30519
  },
30520
+ "runtimeStatus": {
30521
+ "$ref": "#/components/schemas/ObservabilityProviderRuntimeStatus"
30522
+ },
30523
+ "runtimeStatusReason": {
30524
+ "maxLength": 500,
30525
+ "type": "string"
30526
+ },
29929
30527
  "signals": {
29930
30528
  "items": {
29931
30529
  "$ref": "#/components/schemas/ObservabilityProviderSignal"
@@ -29982,6 +30580,25 @@
29982
30580
  "ObservabilityProviderRuntimeModeManagedContainer"
29983
30581
  ]
29984
30582
  },
30583
+ "ObservabilityProviderRuntimeStatus": {
30584
+ "enum": [
30585
+ "unconfigured",
30586
+ "unknown",
30587
+ "healthy",
30588
+ "degraded",
30589
+ "failed",
30590
+ "unsupported"
30591
+ ],
30592
+ "type": "string",
30593
+ "x-enum-varnames": [
30594
+ "ObservabilityProviderRuntimeStatusUnconfigured",
30595
+ "ObservabilityProviderRuntimeStatusUnknown",
30596
+ "ObservabilityProviderRuntimeStatusHealthy",
30597
+ "ObservabilityProviderRuntimeStatusDegraded",
30598
+ "ObservabilityProviderRuntimeStatusFailed",
30599
+ "ObservabilityProviderRuntimeStatusUnsupported"
30600
+ ]
30601
+ },
29985
30602
  "ObservabilityProviderSignal": {
29986
30603
  "enum": [
29987
30604
  "logs",
@@ -30010,6 +30627,96 @@
30010
30627
  "ObservabilityProviderStatusUnsupported"
30011
30628
  ]
30012
30629
  },
30630
+ "ObservabilityQueryError": {
30631
+ "additionalProperties": false,
30632
+ "properties": {
30633
+ "code": {
30634
+ "maxLength": 128,
30635
+ "pattern": "^[a-z][a-z0-9._-]*$",
30636
+ "type": "string"
30637
+ },
30638
+ "message": {
30639
+ "maxLength": 1000,
30640
+ "minLength": 1,
30641
+ "type": "string"
30642
+ },
30643
+ "retryable": {
30644
+ "type": "boolean"
30645
+ },
30646
+ "sourceId": {
30647
+ "maxLength": 200,
30648
+ "type": "string"
30649
+ }
30650
+ },
30651
+ "required": [
30652
+ "code",
30653
+ "message"
30654
+ ],
30655
+ "type": "object"
30656
+ },
30657
+ "ObservabilityQueryLanguage": {
30658
+ "enum": [
30659
+ "metric_key",
30660
+ "promql",
30661
+ "logql",
30662
+ "elasticsearch",
30663
+ "clickhouse_sql",
30664
+ "trace_filter",
30665
+ "event_filter"
30666
+ ],
30667
+ "type": "string",
30668
+ "x-enum-varnames": [
30669
+ "ObservabilityQueryLanguageMetricKey",
30670
+ "ObservabilityQueryLanguagePromQL",
30671
+ "ObservabilityQueryLanguageLogQL",
30672
+ "ObservabilityQueryLanguageElasticsearch",
30673
+ "ObservabilityQueryLanguageClickHouseSQL",
30674
+ "ObservabilityQueryLanguageTraceFilter",
30675
+ "ObservabilityQueryLanguageEventFilter"
30676
+ ]
30677
+ },
30678
+ "ObservabilityQueryResultMeta": {
30679
+ "additionalProperties": false,
30680
+ "properties": {
30681
+ "durationMs": {
30682
+ "format": "int64",
30683
+ "minimum": 0,
30684
+ "type": "integer"
30685
+ },
30686
+ "errors": {
30687
+ "items": {
30688
+ "$ref": "#/components/schemas/ObservabilityQueryError"
30689
+ },
30690
+ "maxItems": 100,
30691
+ "type": "array"
30692
+ },
30693
+ "observedAt": {
30694
+ "format": "date-time",
30695
+ "type": "string"
30696
+ },
30697
+ "scopeRestricted": {
30698
+ "type": "boolean"
30699
+ },
30700
+ "snapshot": {
30701
+ "$ref": "#/components/schemas/ObservabilityQuerySnapshot"
30702
+ },
30703
+ "state": {
30704
+ "$ref": "#/components/schemas/ObservabilityQueryState"
30705
+ },
30706
+ "warnings": {
30707
+ "items": {
30708
+ "maxLength": 1000,
30709
+ "type": "string"
30710
+ },
30711
+ "maxItems": 100,
30712
+ "type": "array"
30713
+ }
30714
+ },
30715
+ "required": [
30716
+ "state"
30717
+ ],
30718
+ "type": "object"
30719
+ },
30013
30720
  "ObservabilityQueryScope": {
30014
30721
  "additionalProperties": false,
30015
30722
  "properties": {
@@ -30017,6 +30724,10 @@
30017
30724
  "maxLength": 128,
30018
30725
  "type": "string"
30019
30726
  },
30727
+ "environment": {
30728
+ "maxLength": 128,
30729
+ "type": "string"
30730
+ },
30020
30731
  "namespace": {
30021
30732
  "maxLength": 253,
30022
30733
  "type": "string"
@@ -30028,10 +30739,460 @@
30028
30739
  "workload": {
30029
30740
  "maxLength": 253,
30030
30741
  "type": "string"
30742
+ },
30743
+ "workspaceId": {
30744
+ "maxLength": 128,
30745
+ "type": "string"
30031
30746
  }
30032
30747
  },
30033
30748
  "type": "object"
30034
30749
  },
30750
+ "ObservabilityQuerySnapshot": {
30751
+ "additionalProperties": false,
30752
+ "properties": {
30753
+ "backendType": {
30754
+ "maxLength": 128,
30755
+ "type": "string"
30756
+ },
30757
+ "context": {
30758
+ "$ref": "#/components/schemas/ObservabilityContext"
30759
+ },
30760
+ "createdAt": {
30761
+ "format": "date-time",
30762
+ "type": "string"
30763
+ },
30764
+ "dataSourceId": {
30765
+ "maxLength": 200,
30766
+ "type": "string"
30767
+ },
30768
+ "metricKey": {
30769
+ "maxLength": 128,
30770
+ "type": "string"
30771
+ },
30772
+ "query": {
30773
+ "description": "Provider-native query text. Soha does not translate arbitrary query languages.",
30774
+ "maxLength": 8192,
30775
+ "type": "string"
30776
+ },
30777
+ "queryLanguage": {
30778
+ "$ref": "#/components/schemas/ObservabilityQueryLanguage"
30779
+ },
30780
+ "signal": {
30781
+ "$ref": "#/components/schemas/ObservabilitySignal"
30782
+ },
30783
+ "spanId": {
30784
+ "maxLength": 128,
30785
+ "type": "string"
30786
+ },
30787
+ "traceId": {
30788
+ "maxLength": 128,
30789
+ "type": "string"
30790
+ },
30791
+ "version": {
30792
+ "enum": [
30793
+ "v1"
30794
+ ],
30795
+ "type": "string"
30796
+ }
30797
+ },
30798
+ "required": [
30799
+ "version",
30800
+ "signal",
30801
+ "context"
30802
+ ],
30803
+ "type": "object"
30804
+ },
30805
+ "ObservabilityQueryState": {
30806
+ "enum": [
30807
+ "success",
30808
+ "empty",
30809
+ "partial",
30810
+ "error",
30811
+ "no_data",
30812
+ "unsupported"
30813
+ ],
30814
+ "type": "string",
30815
+ "x-enum-varnames": [
30816
+ "ObservabilityQueryStateSuccess",
30817
+ "ObservabilityQueryStateEmpty",
30818
+ "ObservabilityQueryStatePartial",
30819
+ "ObservabilityQueryStateError",
30820
+ "ObservabilityQueryStateNoData",
30821
+ "ObservabilityQueryStateUnsupported"
30822
+ ]
30823
+ },
30824
+ "ObservabilityResourceIdentity": {
30825
+ "additionalProperties": false,
30826
+ "properties": {
30827
+ "kind": {
30828
+ "maxLength": 128,
30829
+ "minLength": 1,
30830
+ "type": "string"
30831
+ },
30832
+ "name": {
30833
+ "maxLength": 253,
30834
+ "minLength": 1,
30835
+ "type": "string"
30836
+ },
30837
+ "uid": {
30838
+ "maxLength": 253,
30839
+ "type": "string"
30840
+ }
30841
+ },
30842
+ "required": [
30843
+ "kind",
30844
+ "name"
30845
+ ],
30846
+ "type": "object"
30847
+ },
30848
+ "ObservabilityService": {
30849
+ "additionalProperties": false,
30850
+ "properties": {
30851
+ "clusterIds": {
30852
+ "items": {
30853
+ "maxLength": 128,
30854
+ "minLength": 1,
30855
+ "type": "string"
30856
+ },
30857
+ "maxItems": 100,
30858
+ "type": "array",
30859
+ "uniqueItems": true
30860
+ },
30861
+ "displayName": {
30862
+ "maxLength": 253,
30863
+ "type": "string"
30864
+ },
30865
+ "endpoints": {
30866
+ "items": {
30867
+ "$ref": "#/components/schemas/ObservabilityServiceEndpoint"
30868
+ },
30869
+ "maxItems": 1000,
30870
+ "type": "array"
30871
+ },
30872
+ "environment": {
30873
+ "maxLength": 128,
30874
+ "type": "string"
30875
+ },
30876
+ "errorRate": {
30877
+ "format": "double",
30878
+ "minimum": 0,
30879
+ "type": "number"
30880
+ },
30881
+ "id": {
30882
+ "maxLength": 253,
30883
+ "minLength": 1,
30884
+ "type": "string"
30885
+ },
30886
+ "instances": {
30887
+ "items": {
30888
+ "$ref": "#/components/schemas/ObservabilityServiceInstance"
30889
+ },
30890
+ "maxItems": 1000,
30891
+ "type": "array"
30892
+ },
30893
+ "lastSeenAt": {
30894
+ "format": "date-time",
30895
+ "type": "string"
30896
+ },
30897
+ "latencyP95Ms": {
30898
+ "format": "double",
30899
+ "minimum": 0,
30900
+ "type": "number"
30901
+ },
30902
+ "name": {
30903
+ "maxLength": 253,
30904
+ "minLength": 1,
30905
+ "type": "string"
30906
+ },
30907
+ "namespace": {
30908
+ "maxLength": 253,
30909
+ "type": "string"
30910
+ },
30911
+ "requestRate": {
30912
+ "format": "double",
30913
+ "minimum": 0,
30914
+ "type": "number"
30915
+ },
30916
+ "status": {
30917
+ "$ref": "#/components/schemas/ObservabilityServiceStatus"
30918
+ }
30919
+ },
30920
+ "required": [
30921
+ "id",
30922
+ "name",
30923
+ "status",
30924
+ "clusterIds",
30925
+ "instances",
30926
+ "endpoints"
30927
+ ],
30928
+ "type": "object"
30929
+ },
30930
+ "ObservabilityServiceEndpoint": {
30931
+ "additionalProperties": false,
30932
+ "properties": {
30933
+ "errorRate": {
30934
+ "format": "double",
30935
+ "minimum": 0,
30936
+ "type": "number"
30937
+ },
30938
+ "id": {
30939
+ "maxLength": 512,
30940
+ "minLength": 1,
30941
+ "type": "string"
30942
+ },
30943
+ "latencyP95Ms": {
30944
+ "format": "double",
30945
+ "minimum": 0,
30946
+ "type": "number"
30947
+ },
30948
+ "method": {
30949
+ "maxLength": 32,
30950
+ "type": "string"
30951
+ },
30952
+ "name": {
30953
+ "maxLength": 512,
30954
+ "minLength": 1,
30955
+ "type": "string"
30956
+ },
30957
+ "requestRate": {
30958
+ "format": "double",
30959
+ "minimum": 0,
30960
+ "type": "number"
30961
+ },
30962
+ "status": {
30963
+ "$ref": "#/components/schemas/ObservabilityServiceStatus"
30964
+ }
30965
+ },
30966
+ "required": [
30967
+ "id",
30968
+ "name",
30969
+ "status"
30970
+ ],
30971
+ "type": "object"
30972
+ },
30973
+ "ObservabilityServiceEnvelope": {
30974
+ "additionalProperties": false,
30975
+ "properties": {
30976
+ "data": {
30977
+ "$ref": "#/components/schemas/ObservabilityService"
30978
+ },
30979
+ "meta": {
30980
+ "$ref": "#/components/schemas/ObservabilityQueryResultMeta"
30981
+ }
30982
+ },
30983
+ "required": [
30984
+ "data",
30985
+ "meta"
30986
+ ],
30987
+ "type": "object"
30988
+ },
30989
+ "ObservabilityServiceInstance": {
30990
+ "additionalProperties": false,
30991
+ "properties": {
30992
+ "id": {
30993
+ "maxLength": 253,
30994
+ "minLength": 1,
30995
+ "type": "string"
30996
+ },
30997
+ "lastSeenAt": {
30998
+ "format": "date-time",
30999
+ "type": "string"
31000
+ },
31001
+ "name": {
31002
+ "maxLength": 253,
31003
+ "minLength": 1,
31004
+ "type": "string"
31005
+ },
31006
+ "status": {
31007
+ "$ref": "#/components/schemas/ObservabilityServiceStatus"
31008
+ }
31009
+ },
31010
+ "required": [
31011
+ "id",
31012
+ "name",
31013
+ "status"
31014
+ ],
31015
+ "type": "object"
31016
+ },
31017
+ "ObservabilityServiceListEnvelope": {
31018
+ "additionalProperties": false,
31019
+ "properties": {
31020
+ "items": {
31021
+ "items": {
31022
+ "$ref": "#/components/schemas/ObservabilityService"
31023
+ },
31024
+ "maxItems": 1000,
31025
+ "type": "array"
31026
+ },
31027
+ "meta": {
31028
+ "$ref": "#/components/schemas/ObservabilityQueryResultMeta"
31029
+ }
31030
+ },
31031
+ "required": [
31032
+ "items",
31033
+ "meta"
31034
+ ],
31035
+ "type": "object"
31036
+ },
31037
+ "ObservabilityServiceStatus": {
31038
+ "enum": [
31039
+ "healthy",
31040
+ "degraded",
31041
+ "unknown",
31042
+ "unsupported"
31043
+ ],
31044
+ "type": "string",
31045
+ "x-enum-varnames": [
31046
+ "ObservabilityServiceStatusHealthy",
31047
+ "ObservabilityServiceStatusDegraded",
31048
+ "ObservabilityServiceStatusUnknown",
31049
+ "ObservabilityServiceStatusUnsupported"
31050
+ ]
31051
+ },
31052
+ "ObservabilitySignal": {
31053
+ "enum": [
31054
+ "metrics",
31055
+ "traces",
31056
+ "logs",
31057
+ "events"
31058
+ ],
31059
+ "type": "string",
31060
+ "x-enum-varnames": [
31061
+ "ObservabilitySignalMetrics",
31062
+ "ObservabilitySignalTraces",
31063
+ "ObservabilitySignalLogs",
31064
+ "ObservabilitySignalEvents"
31065
+ ]
31066
+ },
31067
+ "ObservabilityTimeRange": {
31068
+ "additionalProperties": false,
31069
+ "properties": {
31070
+ "from": {
31071
+ "format": "date-time",
31072
+ "type": "string"
31073
+ },
31074
+ "timezone": {
31075
+ "maxLength": 64,
31076
+ "type": "string"
31077
+ },
31078
+ "to": {
31079
+ "format": "date-time",
31080
+ "type": "string"
31081
+ }
31082
+ },
31083
+ "required": [
31084
+ "from",
31085
+ "to"
31086
+ ],
31087
+ "type": "object"
31088
+ },
31089
+ "ObservabilityTopology": {
31090
+ "additionalProperties": false,
31091
+ "properties": {
31092
+ "beta": {
31093
+ "type": "boolean"
31094
+ },
31095
+ "edges": {
31096
+ "items": {
31097
+ "$ref": "#/components/schemas/ObservabilityTopologyEdge"
31098
+ },
31099
+ "maxItems": 5000,
31100
+ "type": "array"
31101
+ },
31102
+ "meta": {
31103
+ "$ref": "#/components/schemas/ObservabilityQueryResultMeta"
31104
+ },
31105
+ "nodes": {
31106
+ "items": {
31107
+ "$ref": "#/components/schemas/ObservabilityTopologyNode"
31108
+ },
31109
+ "maxItems": 1000,
31110
+ "type": "array"
31111
+ }
31112
+ },
31113
+ "required": [
31114
+ "nodes",
31115
+ "edges",
31116
+ "beta",
31117
+ "meta"
31118
+ ],
31119
+ "type": "object"
31120
+ },
31121
+ "ObservabilityTopologyEdge": {
31122
+ "additionalProperties": false,
31123
+ "properties": {
31124
+ "errorRate": {
31125
+ "format": "double",
31126
+ "minimum": 0,
31127
+ "type": "number"
31128
+ },
31129
+ "latencyP95Ms": {
31130
+ "format": "double",
31131
+ "minimum": 0,
31132
+ "type": "number"
31133
+ },
31134
+ "requestRate": {
31135
+ "format": "double",
31136
+ "minimum": 0,
31137
+ "type": "number"
31138
+ },
31139
+ "sourceServiceId": {
31140
+ "maxLength": 253,
31141
+ "minLength": 1,
31142
+ "type": "string"
31143
+ },
31144
+ "status": {
31145
+ "$ref": "#/components/schemas/ObservabilityServiceStatus"
31146
+ },
31147
+ "targetServiceId": {
31148
+ "maxLength": 253,
31149
+ "minLength": 1,
31150
+ "type": "string"
31151
+ }
31152
+ },
31153
+ "required": [
31154
+ "sourceServiceId",
31155
+ "targetServiceId",
31156
+ "status"
31157
+ ],
31158
+ "type": "object"
31159
+ },
31160
+ "ObservabilityTopologyEnvelope": {
31161
+ "additionalProperties": false,
31162
+ "properties": {
31163
+ "data": {
31164
+ "$ref": "#/components/schemas/ObservabilityTopology"
31165
+ }
31166
+ },
31167
+ "required": [
31168
+ "data"
31169
+ ],
31170
+ "type": "object"
31171
+ },
31172
+ "ObservabilityTopologyNode": {
31173
+ "additionalProperties": false,
31174
+ "properties": {
31175
+ "name": {
31176
+ "maxLength": 253,
31177
+ "minLength": 1,
31178
+ "type": "string"
31179
+ },
31180
+ "serviceId": {
31181
+ "maxLength": 253,
31182
+ "minLength": 1,
31183
+ "type": "string"
31184
+ },
31185
+ "status": {
31186
+ "$ref": "#/components/schemas/ObservabilityServiceStatus"
31187
+ }
31188
+ },
31189
+ "required": [
31190
+ "serviceId",
31191
+ "name",
31192
+ "status"
31193
+ ],
31194
+ "type": "object"
31195
+ },
30035
31196
  "ObservabilityTraceQueryEnvelope": {
30036
31197
  "additionalProperties": false,
30037
31198
  "properties": {
@@ -30098,6 +31259,9 @@
30098
31259
  "dataSourceId": {
30099
31260
  "type": "string"
30100
31261
  },
31262
+ "meta": {
31263
+ "$ref": "#/components/schemas/ObservabilityQueryResultMeta"
31264
+ },
30101
31265
  "services": {
30102
31266
  "items": {
30103
31267
  "type": "string"
@@ -30176,14 +31340,43 @@
30176
31340
  "OIDCClient": {
30177
31341
  "additionalProperties": false,
30178
31342
  "properties": {
31343
+ "accessTokenTtlSeconds": {
31344
+ "minimum": 60,
31345
+ "type": "integer"
31346
+ },
31347
+ "allowedGrantTypes": {
31348
+ "items": {
31349
+ "enum": [
31350
+ "authorization_code",
31351
+ "refresh_token"
31352
+ ],
31353
+ "type": "string"
31354
+ },
31355
+ "type": "array"
31356
+ },
31357
+ "allowedScopes": {
31358
+ "items": {
31359
+ "type": "string"
31360
+ },
31361
+ "type": "array"
31362
+ },
30179
31363
  "clientId": {
30180
31364
  "type": "string"
30181
31365
  },
31366
+ "clientType": {
31367
+ "enum": [
31368
+ "public",
31369
+ "confidential"
31370
+ ],
31371
+ "type": "string"
31372
+ },
30182
31373
  "createdAt": {
30183
31374
  "format": "date-time",
30184
31375
  "type": "string"
30185
31376
  },
30186
31377
  "grantTypes": {
31378
+ "deprecated": true,
31379
+ "description": "Deprecated response alias retained for 0.1.x compatibility; use allowedGrantTypes.",
30187
31380
  "items": {
30188
31381
  "enum": [
30189
31382
  "authorization_code",
@@ -30196,16 +31389,46 @@
30196
31389
  "id": {
30197
31390
  "type": "string"
30198
31391
  },
31392
+ "idTokenTtlSeconds": {
31393
+ "minimum": 60,
31394
+ "type": "integer"
31395
+ },
31396
+ "postLogoutRedirectUris": {
31397
+ "description": "Absolute HTTP or HTTPS post-logout redirect URIs. HTTPS is recommended for production deployments.",
31398
+ "items": {
31399
+ "format": "uri",
31400
+ "type": "string"
31401
+ },
31402
+ "type": "array"
31403
+ },
30199
31404
  "providerId": {
30200
31405
  "type": "string"
30201
31406
  },
31407
+ "redirectUriRegexes": {
31408
+ "description": "RE2 regular expressions matched against the complete absolute HTTP or HTTPS redirect URI. Evaluated in addition to redirectUris.",
31409
+ "items": {
31410
+ "maxLength": 2048,
31411
+ "minLength": 1,
31412
+ "type": "string"
31413
+ },
31414
+ "maxItems": 100,
31415
+ "type": "array"
31416
+ },
30202
31417
  "redirectUris": {
31418
+ "description": "Strict-match absolute HTTP or HTTPS redirect URIs. HTTPS is recommended for production deployments.",
30203
31419
  "items": {
30204
31420
  "format": "uri",
30205
31421
  "type": "string"
30206
31422
  },
30207
31423
  "type": "array"
30208
31424
  },
31425
+ "refreshTokenTtlSeconds": {
31426
+ "minimum": 0,
31427
+ "type": "integer"
31428
+ },
31429
+ "requirePkce": {
31430
+ "type": "boolean"
31431
+ },
30209
31432
  "status": {
30210
31433
  "$ref": "#/components/schemas/IdentityResourceStatus"
30211
31434
  },
@@ -30226,11 +31449,27 @@
30226
31449
  ],
30227
31450
  "type": "object"
30228
31451
  },
30229
- "OIDCClientEnvelope": {
31452
+ "OIDCClientCreated": {
30230
31453
  "additionalProperties": false,
30231
31454
  "properties": {
30232
- "data": {
31455
+ "client": {
30233
31456
  "$ref": "#/components/schemas/OIDCClient"
31457
+ },
31458
+ "clientSecret": {
31459
+ "type": "string",
31460
+ "writeOnly": true
31461
+ }
31462
+ },
31463
+ "required": [
31464
+ "client"
31465
+ ],
31466
+ "type": "object"
31467
+ },
31468
+ "OIDCClientCreatedEnvelope": {
31469
+ "additionalProperties": false,
31470
+ "properties": {
31471
+ "data": {
31472
+ "$ref": "#/components/schemas/OIDCClientCreated"
30234
31473
  }
30235
31474
  },
30236
31475
  "required": [
@@ -30238,52 +31477,161 @@
30238
31477
  ],
30239
31478
  "type": "object"
30240
31479
  },
30241
- "OIDCClientInput": {
31480
+ "OIDCClientEnvelope": {
30242
31481
  "additionalProperties": false,
30243
31482
  "properties": {
30244
- "clientId": {
30245
- "type": "string"
30246
- },
30247
- "clientSecret": {
30248
- "minLength": 16,
30249
- "type": "string",
30250
- "writeOnly": true
30251
- },
30252
- "grantTypes": {
30253
- "items": {
30254
- "enum": [
30255
- "authorization_code",
30256
- "refresh_token"
30257
- ],
30258
- "type": "string"
30259
- },
30260
- "minItems": 1,
30261
- "type": "array"
30262
- },
30263
- "providerId": {
30264
- "type": "string"
30265
- },
30266
- "redirectUris": {
30267
- "items": {
30268
- "format": "uri",
30269
- "type": "string"
30270
- },
30271
- "minItems": 1,
30272
- "type": "array"
30273
- },
30274
- "status": {
30275
- "$ref": "#/components/schemas/IdentityResourceStatus"
31483
+ "data": {
31484
+ "$ref": "#/components/schemas/OIDCClient"
30276
31485
  }
30277
31486
  },
30278
31487
  "required": [
30279
- "providerId",
30280
- "clientId",
30281
- "redirectUris",
30282
- "grantTypes",
30283
- "status"
31488
+ "data"
30284
31489
  ],
30285
31490
  "type": "object"
30286
31491
  },
31492
+ "OIDCClientInput": {
31493
+ "allOf": [
31494
+ {
31495
+ "additionalProperties": false,
31496
+ "properties": {
31497
+ "accessTokenTtlSeconds": {
31498
+ "minimum": 0,
31499
+ "type": "integer"
31500
+ },
31501
+ "allowedGrantTypes": {
31502
+ "items": {
31503
+ "enum": [
31504
+ "authorization_code",
31505
+ "refresh_token"
31506
+ ],
31507
+ "type": "string"
31508
+ },
31509
+ "minItems": 1,
31510
+ "type": "array"
31511
+ },
31512
+ "allowedScopes": {
31513
+ "items": {
31514
+ "type": "string"
31515
+ },
31516
+ "minItems": 1,
31517
+ "type": "array"
31518
+ },
31519
+ "clientId": {
31520
+ "type": "string"
31521
+ },
31522
+ "clientSecret": {
31523
+ "minLength": 16,
31524
+ "type": "string",
31525
+ "writeOnly": true
31526
+ },
31527
+ "clientType": {
31528
+ "enum": [
31529
+ "public",
31530
+ "confidential"
31531
+ ],
31532
+ "type": "string"
31533
+ },
31534
+ "grantTypes": {
31535
+ "deprecated": true,
31536
+ "description": "Deprecated request alias retained for 0.1.x compatibility; use allowedGrantTypes.",
31537
+ "items": {
31538
+ "enum": [
31539
+ "authorization_code",
31540
+ "refresh_token"
31541
+ ],
31542
+ "type": "string"
31543
+ },
31544
+ "minItems": 1,
31545
+ "type": "array"
31546
+ },
31547
+ "idTokenTtlSeconds": {
31548
+ "minimum": 0,
31549
+ "type": "integer"
31550
+ },
31551
+ "postLogoutRedirectUris": {
31552
+ "description": "Absolute HTTP or HTTPS post-logout redirect URIs. HTTPS is recommended for production deployments.",
31553
+ "items": {
31554
+ "format": "uri",
31555
+ "type": "string"
31556
+ },
31557
+ "type": "array"
31558
+ },
31559
+ "providerId": {
31560
+ "type": "string"
31561
+ },
31562
+ "redirectUriRegexes": {
31563
+ "description": "RE2 regular expressions matched against the complete absolute HTTP or HTTPS redirect URI. At least one redirectUris or redirectUriRegexes entry is required.",
31564
+ "items": {
31565
+ "maxLength": 2048,
31566
+ "minLength": 1,
31567
+ "type": "string"
31568
+ },
31569
+ "maxItems": 100,
31570
+ "type": "array"
31571
+ },
31572
+ "redirectUris": {
31573
+ "description": "Strict-match absolute HTTP or HTTPS redirect URIs. At least one redirectUris or redirectUriRegexes entry is required. HTTPS is recommended for production deployments.",
31574
+ "items": {
31575
+ "format": "uri",
31576
+ "type": "string"
31577
+ },
31578
+ "type": "array"
31579
+ },
31580
+ "refreshTokenTtlSeconds": {
31581
+ "minimum": 0,
31582
+ "type": "integer"
31583
+ },
31584
+ "requirePkce": {
31585
+ "type": "boolean"
31586
+ },
31587
+ "status": {
31588
+ "$ref": "#/components/schemas/IdentityResourceStatus"
31589
+ }
31590
+ },
31591
+ "required": [
31592
+ "clientId"
31593
+ ],
31594
+ "type": "object"
31595
+ },
31596
+ {
31597
+ "anyOf": [
31598
+ {
31599
+ "properties": {
31600
+ "redirectUris": {
31601
+ "items": {
31602
+ "format": "uri",
31603
+ "type": "string"
31604
+ },
31605
+ "minItems": 1,
31606
+ "type": "array"
31607
+ }
31608
+ },
31609
+ "required": [
31610
+ "redirectUris"
31611
+ ],
31612
+ "type": "object"
31613
+ },
31614
+ {
31615
+ "properties": {
31616
+ "redirectUriRegexes": {
31617
+ "items": {
31618
+ "maxLength": 2048,
31619
+ "minLength": 1,
31620
+ "type": "string"
31621
+ },
31622
+ "minItems": 1,
31623
+ "type": "array"
31624
+ }
31625
+ },
31626
+ "required": [
31627
+ "redirectUriRegexes"
31628
+ ],
31629
+ "type": "object"
31630
+ }
31631
+ ]
31632
+ }
31633
+ ]
31634
+ },
30287
31635
  "OIDCClientListEnvelope": {
30288
31636
  "additionalProperties": false,
30289
31637
  "properties": {
@@ -34794,6 +36142,7 @@
34794
36142
  "additionalProperties": false,
34795
36143
  "properties": {
34796
36144
  "acsUrls": {
36145
+ "description": "Absolute HTTP or HTTPS assertion consumer service URLs. HTTPS is recommended for production deployments.",
34797
36146
  "items": {
34798
36147
  "format": "uri",
34799
36148
  "type": "string"
@@ -34847,6 +36196,7 @@
34847
36196
  "additionalProperties": false,
34848
36197
  "properties": {
34849
36198
  "acsUrls": {
36199
+ "description": "Absolute HTTP or HTTPS assertion consumer service URLs. HTTPS is recommended for production deployments.",
34850
36200
  "items": {
34851
36201
  "format": "uri",
34852
36202
  "type": "string"
@@ -34884,6 +36234,263 @@
34884
36234
  ],
34885
36235
  "type": "object"
34886
36236
  },
36237
+ "ScopeGrant": {
36238
+ "additionalProperties": false,
36239
+ "properties": {
36240
+ "applicationIds": {
36241
+ "items": {
36242
+ "minLength": 1,
36243
+ "type": "string"
36244
+ },
36245
+ "type": "array",
36246
+ "uniqueItems": true
36247
+ },
36248
+ "businessLineId": {
36249
+ "description": "Required for legacy and delivery grants; empty for platform grants.",
36250
+ "type": "string"
36251
+ },
36252
+ "clusterIds": {
36253
+ "items": {
36254
+ "minLength": 1,
36255
+ "type": "string"
36256
+ },
36257
+ "type": "array",
36258
+ "uniqueItems": true
36259
+ },
36260
+ "createdAt": {
36261
+ "format": "date-time",
36262
+ "type": "string"
36263
+ },
36264
+ "effect": {
36265
+ "$ref": "#/components/schemas/ScopeGrantEffect"
36266
+ },
36267
+ "enabled": {
36268
+ "type": "boolean"
36269
+ },
36270
+ "environmentIds": {
36271
+ "items": {
36272
+ "minLength": 1,
36273
+ "type": "string"
36274
+ },
36275
+ "type": "array",
36276
+ "uniqueItems": true
36277
+ },
36278
+ "id": {
36279
+ "minLength": 1,
36280
+ "type": "string"
36281
+ },
36282
+ "namespaces": {
36283
+ "items": {
36284
+ "minLength": 1,
36285
+ "type": "string"
36286
+ },
36287
+ "type": "array",
36288
+ "uniqueItems": true
36289
+ },
36290
+ "namespaceSelector": {
36291
+ "type": "string"
36292
+ },
36293
+ "resourceGroups": {
36294
+ "items": {
36295
+ "minLength": 1,
36296
+ "type": "string"
36297
+ },
36298
+ "type": "array",
36299
+ "uniqueItems": true
36300
+ },
36301
+ "resourceKinds": {
36302
+ "items": {
36303
+ "minLength": 1,
36304
+ "type": "string"
36305
+ },
36306
+ "type": "array",
36307
+ "uniqueItems": true
36308
+ },
36309
+ "role": {
36310
+ "minLength": 1,
36311
+ "type": "string"
36312
+ },
36313
+ "scopeType": {
36314
+ "$ref": "#/components/schemas/ScopeGrantType"
36315
+ },
36316
+ "subjectId": {
36317
+ "minLength": 1,
36318
+ "type": "string"
36319
+ },
36320
+ "subjectType": {
36321
+ "$ref": "#/components/schemas/ScopeGrantSubjectType"
36322
+ },
36323
+ "updatedAt": {
36324
+ "format": "date-time",
36325
+ "type": "string"
36326
+ }
36327
+ },
36328
+ "required": [
36329
+ "id",
36330
+ "subjectType",
36331
+ "subjectId",
36332
+ "businessLineId",
36333
+ "scopeType",
36334
+ "role",
36335
+ "effect",
36336
+ "enabled",
36337
+ "createdAt",
36338
+ "updatedAt"
36339
+ ],
36340
+ "type": "object"
36341
+ },
36342
+ "ScopeGrantEffect": {
36343
+ "enum": [
36344
+ "allow",
36345
+ "deny"
36346
+ ],
36347
+ "type": "string"
36348
+ },
36349
+ "ScopeGrantEnvelope": {
36350
+ "additionalProperties": false,
36351
+ "properties": {
36352
+ "data": {
36353
+ "$ref": "#/components/schemas/ScopeGrant"
36354
+ }
36355
+ },
36356
+ "required": [
36357
+ "data"
36358
+ ],
36359
+ "type": "object"
36360
+ },
36361
+ "ScopeGrantInput": {
36362
+ "additionalProperties": false,
36363
+ "properties": {
36364
+ "applicationIds": {
36365
+ "items": {
36366
+ "minLength": 1,
36367
+ "type": "string"
36368
+ },
36369
+ "type": "array",
36370
+ "uniqueItems": true
36371
+ },
36372
+ "businessLineId": {
36373
+ "description": "Required when scopeType is legacy or delivery.",
36374
+ "type": "string"
36375
+ },
36376
+ "clusterIds": {
36377
+ "description": "Required when scopeType is platform.",
36378
+ "items": {
36379
+ "minLength": 1,
36380
+ "type": "string"
36381
+ },
36382
+ "minItems": 1,
36383
+ "type": "array",
36384
+ "uniqueItems": true
36385
+ },
36386
+ "effect": {
36387
+ "allOf": [
36388
+ {
36389
+ "$ref": "#/components/schemas/ScopeGrantEffect"
36390
+ }
36391
+ ],
36392
+ "default": "allow"
36393
+ },
36394
+ "enabled": {
36395
+ "type": "boolean"
36396
+ },
36397
+ "environmentIds": {
36398
+ "items": {
36399
+ "minLength": 1,
36400
+ "type": "string"
36401
+ },
36402
+ "type": "array",
36403
+ "uniqueItems": true
36404
+ },
36405
+ "id": {
36406
+ "minLength": 1,
36407
+ "type": "string"
36408
+ },
36409
+ "namespaces": {
36410
+ "items": {
36411
+ "minLength": 1,
36412
+ "type": "string"
36413
+ },
36414
+ "type": "array",
36415
+ "uniqueItems": true
36416
+ },
36417
+ "namespaceSelector": {
36418
+ "type": "string"
36419
+ },
36420
+ "resourceGroups": {
36421
+ "items": {
36422
+ "minLength": 1,
36423
+ "type": "string"
36424
+ },
36425
+ "type": "array",
36426
+ "uniqueItems": true
36427
+ },
36428
+ "resourceKinds": {
36429
+ "items": {
36430
+ "minLength": 1,
36431
+ "type": "string"
36432
+ },
36433
+ "type": "array",
36434
+ "uniqueItems": true
36435
+ },
36436
+ "role": {
36437
+ "minLength": 1,
36438
+ "type": "string"
36439
+ },
36440
+ "scopeType": {
36441
+ "allOf": [
36442
+ {
36443
+ "$ref": "#/components/schemas/ScopeGrantType"
36444
+ }
36445
+ ],
36446
+ "default": "legacy"
36447
+ },
36448
+ "subjectId": {
36449
+ "minLength": 1,
36450
+ "type": "string"
36451
+ },
36452
+ "subjectType": {
36453
+ "$ref": "#/components/schemas/ScopeGrantSubjectType"
36454
+ }
36455
+ },
36456
+ "required": [
36457
+ "subjectType",
36458
+ "subjectId",
36459
+ "role",
36460
+ "enabled"
36461
+ ],
36462
+ "type": "object"
36463
+ },
36464
+ "ScopeGrantListEnvelope": {
36465
+ "additionalProperties": false,
36466
+ "properties": {
36467
+ "items": {
36468
+ "items": {
36469
+ "$ref": "#/components/schemas/ScopeGrant"
36470
+ },
36471
+ "type": "array"
36472
+ }
36473
+ },
36474
+ "required": [
36475
+ "items"
36476
+ ],
36477
+ "type": "object"
36478
+ },
36479
+ "ScopeGrantSubjectType": {
36480
+ "enum": [
36481
+ "user",
36482
+ "team"
36483
+ ],
36484
+ "type": "string"
36485
+ },
36486
+ "ScopeGrantType": {
36487
+ "enum": [
36488
+ "legacy",
36489
+ "delivery",
36490
+ "platform"
36491
+ ],
36492
+ "type": "string"
36493
+ },
34887
36494
  "SecretBinding": {
34888
36495
  "additionalProperties": false,
34889
36496
  "properties": {
@@ -36792,6 +38399,9 @@
36792
38399
  },
36793
38400
  "sidebarTitle": {
36794
38401
  "type": "string"
38402
+ },
38403
+ "slogan": {
38404
+ "type": "string"
36795
38405
  }
36796
38406
  },
36797
38407
  "required": [
@@ -39478,7 +41088,7 @@
39478
41088
  "info": {
39479
41089
  "description": "Public OpenSoha core API contract. This first contract focuses on stable cross-repository boundaries: auth, health, runner-facing control-plane callbacks, AI Gateway, and MCP capability discovery.\n",
39480
41090
  "title": "Soha API",
39481
- "version": "0.1.9"
41091
+ "version": "0.1.11"
39482
41092
  },
39483
41093
  "openapi": "3.1.0",
39484
41094
  "paths": {
@@ -39802,6 +41412,140 @@
39802
41412
  ]
39803
41413
  }
39804
41414
  },
41415
+ "/access/scope-grants": {
41416
+ "get": {
41417
+ "operationId": "listScopeGrants",
41418
+ "responses": {
41419
+ "200": {
41420
+ "content": {
41421
+ "application/json": {
41422
+ "schema": {
41423
+ "$ref": "#/components/schemas/ScopeGrantListEnvelope"
41424
+ }
41425
+ }
41426
+ },
41427
+ "description": "Resource scope grants."
41428
+ },
41429
+ "401": {
41430
+ "$ref": "#/components/responses/Error"
41431
+ },
41432
+ "403": {
41433
+ "$ref": "#/components/responses/Error"
41434
+ }
41435
+ },
41436
+ "tags": [
41437
+ "Access"
41438
+ ],
41439
+ "x-soha-implementation-status": "implemented"
41440
+ },
41441
+ "post": {
41442
+ "operationId": "createScopeGrant",
41443
+ "requestBody": {
41444
+ "content": {
41445
+ "application/json": {
41446
+ "schema": {
41447
+ "$ref": "#/components/schemas/ScopeGrantInput"
41448
+ }
41449
+ }
41450
+ },
41451
+ "required": true
41452
+ },
41453
+ "responses": {
41454
+ "201": {
41455
+ "content": {
41456
+ "application/json": {
41457
+ "schema": {
41458
+ "$ref": "#/components/schemas/ScopeGrantEnvelope"
41459
+ }
41460
+ }
41461
+ },
41462
+ "description": "Created resource scope grant."
41463
+ },
41464
+ "400": {
41465
+ "$ref": "#/components/responses/Error"
41466
+ },
41467
+ "401": {
41468
+ "$ref": "#/components/responses/Error"
41469
+ },
41470
+ "403": {
41471
+ "$ref": "#/components/responses/Error"
41472
+ }
41473
+ },
41474
+ "tags": [
41475
+ "Access"
41476
+ ],
41477
+ "x-soha-implementation-status": "implemented"
41478
+ }
41479
+ },
41480
+ "/access/scope-grants/{scopeGrantID}": {
41481
+ "delete": {
41482
+ "operationId": "deleteScopeGrant",
41483
+ "responses": {
41484
+ "204": {
41485
+ "description": "Resource scope grant deleted."
41486
+ },
41487
+ "401": {
41488
+ "$ref": "#/components/responses/Error"
41489
+ },
41490
+ "403": {
41491
+ "$ref": "#/components/responses/Error"
41492
+ },
41493
+ "404": {
41494
+ "$ref": "#/components/responses/Error"
41495
+ }
41496
+ },
41497
+ "tags": [
41498
+ "Access"
41499
+ ],
41500
+ "x-soha-implementation-status": "implemented"
41501
+ },
41502
+ "parameters": [
41503
+ {
41504
+ "$ref": "#/components/parameters/ScopeGrantID"
41505
+ }
41506
+ ],
41507
+ "put": {
41508
+ "operationId": "updateScopeGrant",
41509
+ "requestBody": {
41510
+ "content": {
41511
+ "application/json": {
41512
+ "schema": {
41513
+ "$ref": "#/components/schemas/ScopeGrantInput"
41514
+ }
41515
+ }
41516
+ },
41517
+ "required": true
41518
+ },
41519
+ "responses": {
41520
+ "200": {
41521
+ "content": {
41522
+ "application/json": {
41523
+ "schema": {
41524
+ "$ref": "#/components/schemas/ScopeGrantEnvelope"
41525
+ }
41526
+ }
41527
+ },
41528
+ "description": "Updated resource scope grant."
41529
+ },
41530
+ "400": {
41531
+ "$ref": "#/components/responses/Error"
41532
+ },
41533
+ "401": {
41534
+ "$ref": "#/components/responses/Error"
41535
+ },
41536
+ "403": {
41537
+ "$ref": "#/components/responses/Error"
41538
+ },
41539
+ "404": {
41540
+ "$ref": "#/components/responses/Error"
41541
+ }
41542
+ },
41543
+ "tags": [
41544
+ "Access"
41545
+ ],
41546
+ "x-soha-implementation-status": "implemented"
41547
+ }
41548
+ },
39805
41549
  "/agent-sessions/connect": {
39806
41550
  "get": {
39807
41551
  "description": "Upgrades to the soha-agent-tunnel.v1 WebSocket subprotocol. The Agent initiates this connection and carries multiplexed HTTP and stream traffic over the resulting session.\n",
@@ -55289,6 +57033,45 @@
55289
57033
  ]
55290
57034
  }
55291
57035
  },
57036
+ "/docker/agent-installations/{installTicket}/install.sh": {
57037
+ "get": {
57038
+ "operationId": "downloadDockerHostAgentInstaller",
57039
+ "parameters": [
57040
+ {
57041
+ "in": "path",
57042
+ "name": "installTicket",
57043
+ "required": true,
57044
+ "schema": {
57045
+ "minLength": 1,
57046
+ "type": "string"
57047
+ }
57048
+ }
57049
+ ],
57050
+ "responses": {
57051
+ "200": {
57052
+ "content": {
57053
+ "text/x-shellscript": {
57054
+ "schema": {
57055
+ "type": "string"
57056
+ }
57057
+ }
57058
+ },
57059
+ "description": "Short-lived Linux shell installer for the selected Docker host Agent."
57060
+ },
57061
+ "404": {
57062
+ "$ref": "#/components/responses/Error"
57063
+ },
57064
+ "410": {
57065
+ "$ref": "#/components/responses/Error"
57066
+ }
57067
+ },
57068
+ "security": [],
57069
+ "tags": [
57070
+ "Docker"
57071
+ ],
57072
+ "x-soha-implementation-status": "implemented"
57073
+ }
57074
+ },
55292
57075
  "/docker/containers/start": {
55293
57076
  "post": {
55294
57077
  "operationId": "startDockerContainer",
@@ -55324,6 +57107,50 @@
55324
57107
  ]
55325
57108
  }
55326
57109
  },
57110
+ "/docker/hosts/{dockerHostID}/agent-installation": {
57111
+ "post": {
57112
+ "operationId": "createDockerHostAgentInstallation",
57113
+ "parameters": [
57114
+ {
57115
+ "in": "path",
57116
+ "name": "dockerHostID",
57117
+ "required": true,
57118
+ "schema": {
57119
+ "minLength": 1,
57120
+ "type": "string"
57121
+ }
57122
+ }
57123
+ ],
57124
+ "responses": {
57125
+ "200": {
57126
+ "content": {
57127
+ "application/json": {
57128
+ "schema": {
57129
+ "$ref": "#/components/schemas/DockerHostAgentInstallationEnvelope"
57130
+ }
57131
+ }
57132
+ },
57133
+ "description": "Short-lived shell installer URL and command for connecting an existing Linux Docker host."
57134
+ },
57135
+ "400": {
57136
+ "$ref": "#/components/responses/Error"
57137
+ },
57138
+ "403": {
57139
+ "$ref": "#/components/responses/Error"
57140
+ },
57141
+ "404": {
57142
+ "$ref": "#/components/responses/Error"
57143
+ },
57144
+ "409": {
57145
+ "$ref": "#/components/responses/Error"
57146
+ }
57147
+ },
57148
+ "tags": [
57149
+ "Docker"
57150
+ ],
57151
+ "x-soha-implementation-status": "implemented"
57152
+ }
57153
+ },
55327
57154
  "/docker/hosts/quick-create": {
55328
57155
  "post": {
55329
57156
  "operationId": "quickCreateDockerHost",
@@ -56156,6 +57983,7 @@
56156
57983
  },
56157
57984
  "/identity/oidc-clients": {
56158
57985
  "get": {
57986
+ "deprecated": true,
56159
57987
  "operationId": "listIdentityOIDCClients",
56160
57988
  "responses": {
56161
57989
  "200": {
@@ -56166,7 +57994,7 @@
56166
57994
  }
56167
57995
  }
56168
57996
  },
56169
- "description": "Identity OIDC clients."
57997
+ "description": "Identity OIDC clients across providers."
56170
57998
  }
56171
57999
  },
56172
58000
  "tags": [
@@ -56174,6 +58002,7 @@
56174
58002
  ]
56175
58003
  },
56176
58004
  "post": {
58005
+ "deprecated": true,
56177
58006
  "operationId": "createIdentityOIDCClient",
56178
58007
  "requestBody": {
56179
58008
  "content": {
@@ -56194,7 +58023,7 @@
56194
58023
  }
56195
58024
  }
56196
58025
  },
56197
- "description": "Created OIDC client."
58026
+ "description": "Created OIDC client without the one-time client secret."
56198
58027
  },
56199
58028
  "400": {
56200
58029
  "$ref": "#/components/responses/IdentityError"
@@ -56835,6 +58664,103 @@
56835
58664
  ]
56836
58665
  }
56837
58666
  },
58667
+ "/identity/providers/{identityProviderID}/oidc-clients": {
58668
+ "get": {
58669
+ "operationId": "listIdentityProviderOIDCClients",
58670
+ "responses": {
58671
+ "200": {
58672
+ "content": {
58673
+ "application/json": {
58674
+ "schema": {
58675
+ "$ref": "#/components/schemas/OIDCClientListEnvelope"
58676
+ }
58677
+ }
58678
+ },
58679
+ "description": "Identity OIDC clients."
58680
+ }
58681
+ },
58682
+ "tags": [
58683
+ "Identity"
58684
+ ]
58685
+ },
58686
+ "parameters": [
58687
+ {
58688
+ "$ref": "#/components/parameters/IdentityProviderID"
58689
+ }
58690
+ ],
58691
+ "post": {
58692
+ "operationId": "createIdentityProviderOIDCClient",
58693
+ "requestBody": {
58694
+ "content": {
58695
+ "application/json": {
58696
+ "schema": {
58697
+ "$ref": "#/components/schemas/OIDCClientInput"
58698
+ }
58699
+ }
58700
+ },
58701
+ "required": true
58702
+ },
58703
+ "responses": {
58704
+ "201": {
58705
+ "content": {
58706
+ "application/json": {
58707
+ "schema": {
58708
+ "$ref": "#/components/schemas/OIDCClientCreatedEnvelope"
58709
+ }
58710
+ }
58711
+ },
58712
+ "description": "Created OIDC client."
58713
+ },
58714
+ "400": {
58715
+ "$ref": "#/components/responses/IdentityError"
58716
+ }
58717
+ },
58718
+ "tags": [
58719
+ "Identity"
58720
+ ]
58721
+ }
58722
+ },
58723
+ "/identity/providers/{identityProviderID}/saml/certificate/rotate": {
58724
+ "parameters": [
58725
+ {
58726
+ "$ref": "#/components/parameters/IdentityProviderID"
58727
+ }
58728
+ ],
58729
+ "post": {
58730
+ "operationId": "rotateIdentityProviderSAMLCertificate",
58731
+ "requestBody": {
58732
+ "content": {
58733
+ "application/json": {
58734
+ "schema": {
58735
+ "$ref": "#/components/schemas/SAMLCertificateRotateRequest"
58736
+ }
58737
+ }
58738
+ },
58739
+ "required": true
58740
+ },
58741
+ "responses": {
58742
+ "200": {
58743
+ "content": {
58744
+ "application/json": {
58745
+ "schema": {
58746
+ "$ref": "#/components/schemas/SAMLCertificateRotationEnvelope"
58747
+ }
58748
+ }
58749
+ },
58750
+ "description": "Active and retiring public certificate summaries."
58751
+ },
58752
+ "400": {
58753
+ "$ref": "#/components/responses/IdentityError"
58754
+ },
58755
+ "404": {
58756
+ "$ref": "#/components/responses/IdentityError"
58757
+ }
58758
+ },
58759
+ "tags": [
58760
+ "Identity"
58761
+ ]
58762
+ }
58763
+ },
56838
58764
  "/identity/saml/certificates/{certificateID}/rotate": {
56839
58765
  "post": {
56840
58766
  "operationId": "rotateSAMLCertificate",
@@ -57492,6 +59418,199 @@
57492
59418
  ]
57493
59419
  }
57494
59420
  },
59421
+ "/menus": {
59422
+ "get": {
59423
+ "operationId": "listMenus",
59424
+ "responses": {
59425
+ "200": {
59426
+ "content": {
59427
+ "application/json": {
59428
+ "schema": {
59429
+ "$ref": "#/components/schemas/MenuListEnvelope"
59430
+ }
59431
+ }
59432
+ },
59433
+ "description": "Complete menu tree for administration."
59434
+ },
59435
+ "401": {
59436
+ "$ref": "#/components/responses/Error"
59437
+ },
59438
+ "403": {
59439
+ "$ref": "#/components/responses/Error"
59440
+ }
59441
+ },
59442
+ "tags": [
59443
+ "System"
59444
+ ],
59445
+ "x-soha-implementation-status": "implemented"
59446
+ },
59447
+ "post": {
59448
+ "operationId": "createMenu",
59449
+ "requestBody": {
59450
+ "content": {
59451
+ "application/json": {
59452
+ "schema": {
59453
+ "$ref": "#/components/schemas/MenuInput"
59454
+ }
59455
+ }
59456
+ },
59457
+ "required": true
59458
+ },
59459
+ "responses": {
59460
+ "201": {
59461
+ "content": {
59462
+ "application/json": {
59463
+ "schema": {
59464
+ "$ref": "#/components/schemas/MenuEnvelope"
59465
+ }
59466
+ }
59467
+ },
59468
+ "description": "Created menu."
59469
+ },
59470
+ "400": {
59471
+ "$ref": "#/components/responses/Error"
59472
+ },
59473
+ "401": {
59474
+ "$ref": "#/components/responses/Error"
59475
+ },
59476
+ "403": {
59477
+ "$ref": "#/components/responses/Error"
59478
+ }
59479
+ },
59480
+ "tags": [
59481
+ "System"
59482
+ ],
59483
+ "x-soha-implementation-status": "implemented"
59484
+ }
59485
+ },
59486
+ "/menus/{menuID}": {
59487
+ "delete": {
59488
+ "operationId": "deleteMenu",
59489
+ "responses": {
59490
+ "200": {
59491
+ "content": {
59492
+ "application/json": {
59493
+ "schema": {
59494
+ "$ref": "#/components/schemas/MenuDeleteResult"
59495
+ }
59496
+ }
59497
+ },
59498
+ "description": "Menu deleted."
59499
+ },
59500
+ "401": {
59501
+ "$ref": "#/components/responses/Error"
59502
+ },
59503
+ "403": {
59504
+ "$ref": "#/components/responses/Error"
59505
+ },
59506
+ "404": {
59507
+ "$ref": "#/components/responses/Error"
59508
+ }
59509
+ },
59510
+ "tags": [
59511
+ "System"
59512
+ ],
59513
+ "x-soha-implementation-status": "implemented"
59514
+ },
59515
+ "get": {
59516
+ "operationId": "getMenu",
59517
+ "responses": {
59518
+ "200": {
59519
+ "content": {
59520
+ "application/json": {
59521
+ "schema": {
59522
+ "$ref": "#/components/schemas/MenuEnvelope"
59523
+ }
59524
+ }
59525
+ },
59526
+ "description": "Menu detail."
59527
+ },
59528
+ "401": {
59529
+ "$ref": "#/components/responses/Error"
59530
+ },
59531
+ "403": {
59532
+ "$ref": "#/components/responses/Error"
59533
+ },
59534
+ "404": {
59535
+ "$ref": "#/components/responses/Error"
59536
+ }
59537
+ },
59538
+ "tags": [
59539
+ "System"
59540
+ ],
59541
+ "x-soha-implementation-status": "implemented"
59542
+ },
59543
+ "parameters": [
59544
+ {
59545
+ "$ref": "#/components/parameters/MenuID"
59546
+ }
59547
+ ],
59548
+ "put": {
59549
+ "operationId": "updateMenu",
59550
+ "requestBody": {
59551
+ "content": {
59552
+ "application/json": {
59553
+ "schema": {
59554
+ "$ref": "#/components/schemas/MenuInput"
59555
+ }
59556
+ }
59557
+ },
59558
+ "required": true
59559
+ },
59560
+ "responses": {
59561
+ "200": {
59562
+ "content": {
59563
+ "application/json": {
59564
+ "schema": {
59565
+ "$ref": "#/components/schemas/MenuEnvelope"
59566
+ }
59567
+ }
59568
+ },
59569
+ "description": "Updated menu."
59570
+ },
59571
+ "400": {
59572
+ "$ref": "#/components/responses/Error"
59573
+ },
59574
+ "401": {
59575
+ "$ref": "#/components/responses/Error"
59576
+ },
59577
+ "403": {
59578
+ "$ref": "#/components/responses/Error"
59579
+ },
59580
+ "404": {
59581
+ "$ref": "#/components/responses/Error"
59582
+ }
59583
+ },
59584
+ "tags": [
59585
+ "System"
59586
+ ],
59587
+ "x-soha-implementation-status": "implemented"
59588
+ }
59589
+ },
59590
+ "/menus/visible": {
59591
+ "get": {
59592
+ "operationId": "listVisibleMenus",
59593
+ "responses": {
59594
+ "200": {
59595
+ "content": {
59596
+ "application/json": {
59597
+ "schema": {
59598
+ "$ref": "#/components/schemas/MenuListEnvelope"
59599
+ }
59600
+ }
59601
+ },
59602
+ "description": "Menu tree visible to the authenticated principal."
59603
+ },
59604
+ "401": {
59605
+ "$ref": "#/components/responses/Error"
59606
+ }
59607
+ },
59608
+ "tags": [
59609
+ "System"
59610
+ ],
59611
+ "x-soha-implementation-status": "implemented"
59612
+ }
59613
+ },
57495
59614
  "/observability/dashboards": {
57496
59615
  "get": {
57497
59616
  "operationId": "listObservabilityDashboards",
@@ -57799,6 +59918,37 @@
57799
59918
  ]
57800
59919
  }
57801
59920
  },
59921
+ "/observability/metrics/catalog": {
59922
+ "get": {
59923
+ "operationId": "listObservabilityMetricCatalog",
59924
+ "parameters": [
59925
+ {
59926
+ "$ref": "#/components/parameters/ObservabilityDataSourceIDQuery"
59927
+ }
59928
+ ],
59929
+ "responses": {
59930
+ "200": {
59931
+ "content": {
59932
+ "application/json": {
59933
+ "schema": {
59934
+ "$ref": "#/components/schemas/ObservabilityMetricCatalogEnvelope"
59935
+ }
59936
+ }
59937
+ },
59938
+ "description": "Semantic metric definitions supported by the configured metrics provider."
59939
+ },
59940
+ "403": {
59941
+ "$ref": "#/components/responses/Error"
59942
+ },
59943
+ "404": {
59944
+ "$ref": "#/components/responses/Error"
59945
+ }
59946
+ },
59947
+ "tags": [
59948
+ "Observability"
59949
+ ]
59950
+ }
59951
+ },
57802
59952
  "/observability/metrics/data-sources": {
57803
59953
  "get": {
57804
59954
  "operationId": "listObservabilityMetricDataSources",
@@ -57887,6 +60037,171 @@
57887
60037
  ]
57888
60038
  }
57889
60039
  },
60040
+ "/observability/services": {
60041
+ "get": {
60042
+ "operationId": "listObservabilityServices",
60043
+ "parameters": [
60044
+ {
60045
+ "$ref": "#/components/parameters/ObservabilityDataSourceIDQuery"
60046
+ },
60047
+ {
60048
+ "$ref": "#/components/parameters/ObservabilityClusterIDQuery"
60049
+ },
60050
+ {
60051
+ "$ref": "#/components/parameters/ObservabilityEnvironmentQuery"
60052
+ },
60053
+ {
60054
+ "$ref": "#/components/parameters/ObservabilityNamespaceQuery"
60055
+ },
60056
+ {
60057
+ "$ref": "#/components/parameters/ObservabilityServiceQuery"
60058
+ },
60059
+ {
60060
+ "$ref": "#/components/parameters/ObservabilityTimeFromQuery"
60061
+ },
60062
+ {
60063
+ "$ref": "#/components/parameters/ObservabilityTimeToQuery"
60064
+ }
60065
+ ],
60066
+ "responses": {
60067
+ "200": {
60068
+ "content": {
60069
+ "application/json": {
60070
+ "schema": {
60071
+ "$ref": "#/components/schemas/ObservabilityServiceListEnvelope"
60072
+ }
60073
+ }
60074
+ },
60075
+ "description": "OTel-identified services from the configured SkyWalking OAP provider."
60076
+ },
60077
+ "400": {
60078
+ "$ref": "#/components/responses/Error"
60079
+ },
60080
+ "403": {
60081
+ "$ref": "#/components/responses/Error"
60082
+ },
60083
+ "404": {
60084
+ "$ref": "#/components/responses/Error"
60085
+ },
60086
+ "502": {
60087
+ "$ref": "#/components/responses/Error"
60088
+ }
60089
+ },
60090
+ "tags": [
60091
+ "Observability"
60092
+ ]
60093
+ }
60094
+ },
60095
+ "/observability/services/{serviceID}": {
60096
+ "get": {
60097
+ "operationId": "getObservabilityService",
60098
+ "parameters": [
60099
+ {
60100
+ "$ref": "#/components/parameters/ServiceID"
60101
+ },
60102
+ {
60103
+ "$ref": "#/components/parameters/ObservabilityDataSourceIDQuery"
60104
+ },
60105
+ {
60106
+ "$ref": "#/components/parameters/ObservabilityClusterIDQuery"
60107
+ },
60108
+ {
60109
+ "$ref": "#/components/parameters/ObservabilityEnvironmentQuery"
60110
+ },
60111
+ {
60112
+ "$ref": "#/components/parameters/ObservabilityNamespaceQuery"
60113
+ },
60114
+ {
60115
+ "$ref": "#/components/parameters/ObservabilityTimeFromQuery"
60116
+ },
60117
+ {
60118
+ "$ref": "#/components/parameters/ObservabilityTimeToQuery"
60119
+ }
60120
+ ],
60121
+ "responses": {
60122
+ "200": {
60123
+ "content": {
60124
+ "application/json": {
60125
+ "schema": {
60126
+ "$ref": "#/components/schemas/ObservabilityServiceEnvelope"
60127
+ }
60128
+ }
60129
+ },
60130
+ "description": "Service identity, instances and endpoints from the configured SkyWalking OAP provider."
60131
+ },
60132
+ "400": {
60133
+ "$ref": "#/components/responses/Error"
60134
+ },
60135
+ "403": {
60136
+ "$ref": "#/components/responses/Error"
60137
+ },
60138
+ "404": {
60139
+ "$ref": "#/components/responses/Error"
60140
+ },
60141
+ "502": {
60142
+ "$ref": "#/components/responses/Error"
60143
+ }
60144
+ },
60145
+ "tags": [
60146
+ "Observability"
60147
+ ]
60148
+ }
60149
+ },
60150
+ "/observability/services/{serviceID}/topology": {
60151
+ "get": {
60152
+ "operationId": "getObservabilityServiceTopology",
60153
+ "parameters": [
60154
+ {
60155
+ "$ref": "#/components/parameters/ServiceID"
60156
+ },
60157
+ {
60158
+ "$ref": "#/components/parameters/ObservabilityDataSourceIDQuery"
60159
+ },
60160
+ {
60161
+ "$ref": "#/components/parameters/ObservabilityClusterIDQuery"
60162
+ },
60163
+ {
60164
+ "$ref": "#/components/parameters/ObservabilityEnvironmentQuery"
60165
+ },
60166
+ {
60167
+ "$ref": "#/components/parameters/ObservabilityNamespaceQuery"
60168
+ },
60169
+ {
60170
+ "$ref": "#/components/parameters/ObservabilityTimeFromQuery"
60171
+ },
60172
+ {
60173
+ "$ref": "#/components/parameters/ObservabilityTimeToQuery"
60174
+ }
60175
+ ],
60176
+ "responses": {
60177
+ "200": {
60178
+ "content": {
60179
+ "application/json": {
60180
+ "schema": {
60181
+ "$ref": "#/components/schemas/ObservabilityTopologyEnvelope"
60182
+ }
60183
+ }
60184
+ },
60185
+ "description": "Beta dependency graph for one service from the configured SkyWalking OAP provider."
60186
+ },
60187
+ "400": {
60188
+ "$ref": "#/components/responses/Error"
60189
+ },
60190
+ "403": {
60191
+ "$ref": "#/components/responses/Error"
60192
+ },
60193
+ "404": {
60194
+ "$ref": "#/components/responses/Error"
60195
+ },
60196
+ "502": {
60197
+ "$ref": "#/components/responses/Error"
60198
+ }
60199
+ },
60200
+ "tags": [
60201
+ "Observability"
60202
+ ]
60203
+ }
60204
+ },
57890
60205
  "/observability/traces/query": {
57891
60206
  "post": {
57892
60207
  "operationId": "queryObservabilityTraces",