@opensoha/contracts 0.1.6 → 0.1.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (83) hide show
  1. package/auth/catalog_generated.go +3 -3
  2. package/auth/permission-catalog.json +108 -2
  3. package/capabilities/cluster-capability-matrix.schema.json +30 -1
  4. package/compat/json-schema-ecosystem-0.1.0.json +1 -1
  5. package/compat/openapi-loose-boundaries-0.1.0.json +1 -1
  6. package/examples/gateway-manifest/minimal.json +6 -6
  7. package/examples/openapi/agent-run-tool-call-request.json +1 -1
  8. package/examples/openapi/agent-tool-call-result-envelope.json +1 -1
  9. package/examples/openapi/gateway-manifest-envelope.json +4 -4
  10. package/examples/openapi/tool-invocation-request.json +1 -1
  11. package/examples/openapi/tool-invocation-result-envelope.json +1 -1
  12. package/examples/plugin-manifest/skill-pack.json +2 -2
  13. package/examples/skill-manifest/k8s-sre.json +2 -2
  14. package/examples/token-claims/service-account.json +1 -1
  15. package/fixtures/json-schema/cluster-capability-matrix/valid/runtime-parity.json +3 -0
  16. package/fixtures/json-schema/companion-pack/invalid/traversal.json +19 -0
  17. package/fixtures/json-schema/companion-pack/valid/svg.json +47 -0
  18. package/fixtures/json-schema/companion-provenance/invalid/missing-source.json +8 -0
  19. package/fixtures/json-schema/companion-provenance/valid/minimal.json +10 -0
  20. package/fixtures/json-schema/gateway-manifest/valid/minimal.json +4 -4
  21. package/fixtures/json-schema/marketplace-catalog/valid/companion-pack.json +39 -0
  22. package/fixtures/json-schema/plugin-manifest/invalid/companion-pack-without-assets.json +17 -0
  23. package/fixtures/json-schema/plugin-manifest/valid/companion-pack.json +28 -0
  24. package/fixtures/json-schema/skill-manifest/valid/minimal.json +2 -2
  25. package/fixtures/json-schema/token-claims/valid/service-account.json +1 -1
  26. package/fixtures/openapi/AIGatewayManifestEnvelope/valid/minimal.json +1 -1
  27. package/fixtures/openapi/AgentInstallationEnvelope/invalid/missing-command.json +7 -0
  28. package/fixtures/openapi/AgentInstallationEnvelope/valid/minimal.json +8 -0
  29. package/fixtures/openapi/ApplicationInput/invalid/missing-key.json +4 -0
  30. package/fixtures/openapi/ApplicationInput/valid/minimal.json +5 -0
  31. package/fixtures/openapi/CompanionInteractionReceiptEnvelope/invalid/missing-profile.json +9 -0
  32. package/fixtures/openapi/CompanionInteractionReceiptEnvelope/valid/applied.json +22 -0
  33. package/fixtures/openapi/CompanionInteractionRequest/invalid/client-reward.json +5 -0
  34. package/fixtures/openapi/CompanionInteractionRequest/valid/pet.json +5 -0
  35. package/fixtures/openapi/CompanionPackManifest/invalid/external-entry.json +11 -0
  36. package/fixtures/openapi/CompanionPackManifest/valid/svg.json +20 -0
  37. package/fixtures/openapi/CompanionProfileEnvelope/invalid/level-zero.json +15 -0
  38. package/fixtures/openapi/CompanionProfileEnvelope/valid/default.json +15 -0
  39. package/fixtures/openapi/HelmReleaseImportRequest/invalid/empty-releases.json +10 -0
  40. package/fixtures/openapi/HelmReleaseImportRequest/valid/managed.json +14 -0
  41. package/fixtures/openapi/HelmReleaseImportResultEnvelope/invalid/missing-mode.json +20 -0
  42. package/fixtures/openapi/HelmReleaseImportResultEnvelope/valid/created.json +35 -0
  43. package/fixtures/openapi/KubernetesImportCandidateListEnvelope/invalid/unknown-kind.json +14 -0
  44. package/fixtures/openapi/KubernetesImportCandidateListEnvelope/valid/grouped.json +31 -0
  45. package/fixtures/openapi/KubernetesServiceImportRequest/invalid/unsupported-mode.json +15 -0
  46. package/fixtures/openapi/KubernetesServiceImportRequest/valid/managed.json +15 -0
  47. package/fixtures/openapi/KubernetesServiceImportRequest/valid/observe-only.json +15 -0
  48. package/fixtures/openapi/KubernetesServiceImportResultEnvelope/invalid/missing-mode.json +20 -0
  49. package/fixtures/openapi/KubernetesServiceImportResultEnvelope/valid/created.json +37 -0
  50. package/fixtures/openapi/MCPCapabilityListEnvelope/invalid/missing-scopes.json +1 -1
  51. package/fixtures/openapi/MCPCapabilityListEnvelope/valid/minimal.json +1 -1
  52. package/fixtures/openapi/ObservabilityDashboardImportResultEnvelope/invalid/missing-dashboard.json +7 -0
  53. package/fixtures/openapi/ObservabilityDashboardImportResultEnvelope/valid/imported.json +36 -0
  54. package/fixtures/openapi/ObservabilityGrafanaDashboardImportInput/invalid/missing-data-source.json +3 -0
  55. package/fixtures/openapi/ObservabilityGrafanaDashboardImportInput/invalid/missing-json.json +3 -0
  56. package/fixtures/openapi/ObservabilityGrafanaDashboardImportInput/valid/classic.json +4 -0
  57. package/fixtures/openapi/ObservabilityMetricDataSourceListEnvelope/invalid/missing-name.json +7 -0
  58. package/fixtures/openapi/ObservabilityMetricDataSourceListEnvelope/valid/list.json +8 -0
  59. package/fixtures/openapi/PersonalAccessTokenInput/invalid/extra-field.json +1 -1
  60. package/fixtures/openapi/PersonalAccessTokenInput/valid/create.json +1 -1
  61. package/fixtures/openapi/PluginProvenanceStatement/invalid/algorithm.json +10 -0
  62. package/fixtures/openapi/PluginProvenanceStatement/valid/minimal.json +10 -0
  63. package/fixtures/openapi/RegistryConnectionInput/invalid/missing-type.json +4 -0
  64. package/fixtures/openapi/RegistryConnectionInput/valid/harbor.json +9 -0
  65. package/fixtures/openapi/RegistryConnectionListEnvelope/invalid/exposed-secret.json +18 -0
  66. package/fixtures/openapi/RegistryConnectionListEnvelope/valid/configured.json +19 -0
  67. package/fixtures/openapi/SoftwarePackage/invalid/unsafe-software-package.json +15 -0
  68. package/fixtures/openapi/SoftwarePackage/valid/software-package.json +17 -0
  69. package/fixtures/openapi/SoftwarePackageURLImportRequest/invalid/software-package-url-import-request.json +9 -0
  70. package/fixtures/openapi/SoftwarePackageURLImportRequest/valid/software-package-url-import-request.json +12 -0
  71. package/fixtures/openapi/SoftwareStorage/invalid/software-storage.json +6 -0
  72. package/fixtures/openapi/SoftwareStorage/valid/software-storage.json +22 -0
  73. package/gen/go/sohaapi/client.go +1 -1
  74. package/gen/go/sohaapi/types.go +1251 -21
  75. package/gen/ts/sohaapi/index.ts +1855 -129
  76. package/openapi/soha-api.json +3280 -4
  77. package/openapi/soha-api.yaml +1876 -71
  78. package/openapi/spec_generated.go +3 -3
  79. package/package.json +3 -1
  80. package/plugins/companion-pack.schema.json +118 -0
  81. package/plugins/companion-provenance.schema.json +19 -0
  82. package/plugins/marketplace-catalog.schema.json +20 -0
  83. package/plugins/plugin-manifest.schema.json +19 -1
@@ -67,6 +67,16 @@
67
67
  "type": "string"
68
68
  }
69
69
  },
70
+ "AgentInstallTicket": {
71
+ "in": "path",
72
+ "name": "installTicket",
73
+ "required": true,
74
+ "schema": {
75
+ "maxLength": 1024,
76
+ "minLength": 16,
77
+ "type": "string"
78
+ }
79
+ },
70
80
  "AgentProviderRolloutAction": {
71
81
  "in": "path",
72
82
  "name": "rolloutAction",
@@ -177,6 +187,15 @@
177
187
  "type": "string"
178
188
  }
179
189
  },
190
+ "ClusterIDQuery": {
191
+ "in": "query",
192
+ "name": "clusterId",
193
+ "required": true,
194
+ "schema": {
195
+ "minLength": 1,
196
+ "type": "string"
197
+ }
198
+ },
180
199
  "ComputeActionID": {
181
200
  "in": "path",
182
201
  "name": "action",
@@ -273,6 +292,26 @@
273
292
  "type": "string"
274
293
  }
275
294
  },
295
+ "DashboardID": {
296
+ "in": "path",
297
+ "name": "dashboardID",
298
+ "required": true,
299
+ "schema": {
300
+ "maxLength": 128,
301
+ "minLength": 1,
302
+ "type": "string"
303
+ }
304
+ },
305
+ "DashboardPanelID": {
306
+ "in": "path",
307
+ "name": "panelID",
308
+ "required": true,
309
+ "schema": {
310
+ "maxLength": 128,
311
+ "minLength": 1,
312
+ "type": "string"
313
+ }
314
+ },
276
315
  "DataSourceID": {
277
316
  "in": "path",
278
317
  "name": "dataSourceID",
@@ -598,6 +637,18 @@
598
637
  "type": "string"
599
638
  }
600
639
  },
640
+ "PluginAssetPath": {
641
+ "description": "Slash-separated relative path declared by the active companion pack.",
642
+ "in": "path",
643
+ "name": "assetPath",
644
+ "required": true,
645
+ "schema": {
646
+ "maxLength": 512,
647
+ "minLength": 1,
648
+ "pattern": "^(?!/)(?!.*(?:^|/)\\.\\.(?:/|$))(?!.*\\\\)[A-Za-z0-9._/-]+$",
649
+ "type": "string"
650
+ }
651
+ },
601
652
  "PluginID": {
602
653
  "in": "path",
603
654
  "name": "pluginID",
@@ -614,6 +665,15 @@
614
665
  "type": "string"
615
666
  }
616
667
  },
668
+ "RegistryConnectionID": {
669
+ "in": "path",
670
+ "name": "connectionID",
671
+ "required": true,
672
+ "schema": {
673
+ "minLength": 1,
674
+ "type": "string"
675
+ }
676
+ },
617
677
  "RelayState": {
618
678
  "in": "query",
619
679
  "name": "RelayState",
@@ -743,6 +803,16 @@
743
803
  "type": "string"
744
804
  }
745
805
  },
806
+ "SoftwarePackageID": {
807
+ "in": "path",
808
+ "name": "packageID",
809
+ "required": true,
810
+ "schema": {
811
+ "maxLength": 128,
812
+ "minLength": 1,
813
+ "type": "string"
814
+ }
815
+ },
746
816
  "SohaCacheModeHeader": {
747
817
  "description": "Optional relay cache behavior hint.",
748
818
  "in": "header",
@@ -1010,6 +1080,46 @@
1010
1080
  ],
1011
1081
  "type": "object"
1012
1082
  },
1083
+ "AgentInstallation": {
1084
+ "additionalProperties": false,
1085
+ "properties": {
1086
+ "clusterId": {
1087
+ "minLength": 1,
1088
+ "type": "string"
1089
+ },
1090
+ "command": {
1091
+ "minLength": 1,
1092
+ "type": "string"
1093
+ },
1094
+ "expiresAt": {
1095
+ "format": "date-time",
1096
+ "type": "string"
1097
+ },
1098
+ "manifestUrl": {
1099
+ "format": "uri",
1100
+ "type": "string"
1101
+ }
1102
+ },
1103
+ "required": [
1104
+ "clusterId",
1105
+ "manifestUrl",
1106
+ "command",
1107
+ "expiresAt"
1108
+ ],
1109
+ "type": "object"
1110
+ },
1111
+ "AgentInstallationEnvelope": {
1112
+ "additionalProperties": false,
1113
+ "properties": {
1114
+ "data": {
1115
+ "$ref": "#/components/schemas/AgentInstallation"
1116
+ }
1117
+ },
1118
+ "required": [
1119
+ "data"
1120
+ ],
1121
+ "type": "object"
1122
+ },
1013
1123
  "AgentProviderCatalog": {
1014
1124
  "additionalProperties": false,
1015
1125
  "properties": {
@@ -3941,6 +4051,11 @@
3941
4051
  "targetId": {
3942
4052
  "type": "string"
3943
4053
  },
4054
+ "valuesContent": {
4055
+ "description": "Complete Helm values YAML used when the selected target is a managed Helm release.",
4056
+ "maxLength": 1048576,
4057
+ "type": "string"
4058
+ },
3944
4059
  "variables": {
3945
4060
  "additionalProperties": true,
3946
4061
  "type": "object"
@@ -4329,8 +4444,6 @@
4329
4444
  "required": [
4330
4445
  "name",
4331
4446
  "key",
4332
- "group",
4333
- "language",
4334
4447
  "enabled"
4335
4448
  ],
4336
4449
  "type": "object"
@@ -6228,6 +6341,481 @@
6228
6341
  ],
6229
6342
  "type": "object"
6230
6343
  },
6344
+ "CompanionActivationRequest": {
6345
+ "additionalProperties": false,
6346
+ "properties": {
6347
+ "version": {
6348
+ "minLength": 1,
6349
+ "type": "string"
6350
+ }
6351
+ },
6352
+ "type": "object"
6353
+ },
6354
+ "CompanionAnimationBindings": {
6355
+ "additionalProperties": false,
6356
+ "properties": {
6357
+ "dragging": {
6358
+ "minLength": 1,
6359
+ "type": "string"
6360
+ },
6361
+ "error": {
6362
+ "minLength": 1,
6363
+ "type": "string"
6364
+ },
6365
+ "hover": {
6366
+ "minLength": 1,
6367
+ "type": "string"
6368
+ },
6369
+ "idle": {
6370
+ "minLength": 1,
6371
+ "type": "string"
6372
+ },
6373
+ "listening": {
6374
+ "minLength": 1,
6375
+ "type": "string"
6376
+ },
6377
+ "speaking": {
6378
+ "minLength": 1,
6379
+ "type": "string"
6380
+ },
6381
+ "tap": {
6382
+ "minLength": 1,
6383
+ "type": "string"
6384
+ },
6385
+ "thinking": {
6386
+ "minLength": 1,
6387
+ "type": "string"
6388
+ }
6389
+ },
6390
+ "type": "object"
6391
+ },
6392
+ "CompanionAsset": {
6393
+ "additionalProperties": false,
6394
+ "properties": {
6395
+ "contentType": {
6396
+ "enum": [
6397
+ "application/json",
6398
+ "application/octet-stream",
6399
+ "image/png",
6400
+ "image/jpeg",
6401
+ "image/webp",
6402
+ "image/svg+xml",
6403
+ "audio/mpeg",
6404
+ "audio/ogg"
6405
+ ],
6406
+ "type": "string"
6407
+ },
6408
+ "kind": {
6409
+ "enum": [
6410
+ "entry",
6411
+ "model",
6412
+ "texture",
6413
+ "motion",
6414
+ "expression",
6415
+ "physics",
6416
+ "pose",
6417
+ "thumbnail",
6418
+ "audio"
6419
+ ],
6420
+ "type": "string"
6421
+ },
6422
+ "path": {
6423
+ "maxLength": 512,
6424
+ "minLength": 1,
6425
+ "pattern": "^(?!/)(?!.*(?:^|/)\\.\\.(?:/|$))(?!.*\\\\)[A-Za-z0-9._/-]+$",
6426
+ "type": "string"
6427
+ },
6428
+ "sha256": {
6429
+ "pattern": "^sha256:[a-f0-9]{64}$",
6430
+ "type": "string"
6431
+ },
6432
+ "sizeBytes": {
6433
+ "format": "int64",
6434
+ "maximum": 67108864,
6435
+ "minimum": 1,
6436
+ "type": "integer"
6437
+ }
6438
+ },
6439
+ "required": [
6440
+ "path",
6441
+ "kind",
6442
+ "contentType",
6443
+ "sizeBytes",
6444
+ "sha256"
6445
+ ],
6446
+ "type": "object"
6447
+ },
6448
+ "CompanionInteractionDefinition": {
6449
+ "additionalProperties": false,
6450
+ "properties": {
6451
+ "action": {
6452
+ "enum": [
6453
+ "tap",
6454
+ "pet",
6455
+ "feed",
6456
+ "play",
6457
+ "greet"
6458
+ ],
6459
+ "type": "string"
6460
+ },
6461
+ "animation": {
6462
+ "minLength": 1,
6463
+ "type": "string"
6464
+ },
6465
+ "cooldownSeconds": {
6466
+ "maximum": 86400,
6467
+ "minimum": 0,
6468
+ "type": "integer"
6469
+ },
6470
+ "id": {
6471
+ "pattern": "^[a-z][a-z0-9._-]*$",
6472
+ "type": "string"
6473
+ },
6474
+ "label": {
6475
+ "maxLength": 64,
6476
+ "minLength": 1,
6477
+ "type": "string"
6478
+ },
6479
+ "rewardAffinity": {
6480
+ "maximum": 100,
6481
+ "minimum": 0,
6482
+ "type": "integer"
6483
+ },
6484
+ "rewardXp": {
6485
+ "maximum": 1000,
6486
+ "minimum": 0,
6487
+ "type": "integer"
6488
+ }
6489
+ },
6490
+ "required": [
6491
+ "id",
6492
+ "action"
6493
+ ],
6494
+ "type": "object"
6495
+ },
6496
+ "CompanionInteractionReceipt": {
6497
+ "additionalProperties": false,
6498
+ "properties": {
6499
+ "affinityAwarded": {
6500
+ "minimum": 0,
6501
+ "type": "integer"
6502
+ },
6503
+ "applied": {
6504
+ "type": "boolean"
6505
+ },
6506
+ "idempotencyKey": {
6507
+ "type": "string"
6508
+ },
6509
+ "profile": {
6510
+ "$ref": "#/components/schemas/CompanionProfile"
6511
+ },
6512
+ "unlockedIds": {
6513
+ "items": {
6514
+ "type": "string"
6515
+ },
6516
+ "type": "array",
6517
+ "uniqueItems": true
6518
+ },
6519
+ "xpAwarded": {
6520
+ "minimum": 0,
6521
+ "type": "integer"
6522
+ }
6523
+ },
6524
+ "required": [
6525
+ "idempotencyKey",
6526
+ "applied",
6527
+ "xpAwarded",
6528
+ "affinityAwarded",
6529
+ "unlockedIds",
6530
+ "profile"
6531
+ ],
6532
+ "type": "object"
6533
+ },
6534
+ "CompanionInteractionReceiptEnvelope": {
6535
+ "additionalProperties": false,
6536
+ "properties": {
6537
+ "data": {
6538
+ "$ref": "#/components/schemas/CompanionInteractionReceipt"
6539
+ }
6540
+ },
6541
+ "required": [
6542
+ "data"
6543
+ ],
6544
+ "type": "object"
6545
+ },
6546
+ "CompanionInteractionRequest": {
6547
+ "additionalProperties": false,
6548
+ "properties": {
6549
+ "clientRevision": {
6550
+ "format": "int64",
6551
+ "minimum": 1,
6552
+ "type": "integer"
6553
+ },
6554
+ "interactionId": {
6555
+ "pattern": "^[a-z][a-z0-9._-]*$",
6556
+ "type": "string"
6557
+ },
6558
+ "messageId": {
6559
+ "type": "string"
6560
+ },
6561
+ "pluginId": {
6562
+ "type": "string"
6563
+ },
6564
+ "sessionId": {
6565
+ "type": "string"
6566
+ }
6567
+ },
6568
+ "required": [
6569
+ "pluginId",
6570
+ "interactionId"
6571
+ ],
6572
+ "type": "object"
6573
+ },
6574
+ "CompanionPackLicense": {
6575
+ "additionalProperties": false,
6576
+ "properties": {
6577
+ "attribution": {
6578
+ "maxLength": 2048,
6579
+ "type": "string"
6580
+ },
6581
+ "commercialUseAllowed": {
6582
+ "type": "boolean"
6583
+ },
6584
+ "name": {
6585
+ "minLength": 1,
6586
+ "type": "string"
6587
+ },
6588
+ "redistributionAllowed": {
6589
+ "enum": [
6590
+ true
6591
+ ],
6592
+ "type": "boolean"
6593
+ },
6594
+ "sourceUrl": {
6595
+ "format": "uri",
6596
+ "type": "string"
6597
+ },
6598
+ "spdxId": {
6599
+ "minLength": 1,
6600
+ "type": "string"
6601
+ },
6602
+ "url": {
6603
+ "format": "uri",
6604
+ "type": "string"
6605
+ }
6606
+ },
6607
+ "required": [
6608
+ "name",
6609
+ "url",
6610
+ "redistributionAllowed",
6611
+ "commercialUseAllowed"
6612
+ ],
6613
+ "type": "object"
6614
+ },
6615
+ "CompanionPackManifest": {
6616
+ "additionalProperties": false,
6617
+ "properties": {
6618
+ "animations": {
6619
+ "$ref": "#/components/schemas/CompanionAnimationBindings"
6620
+ },
6621
+ "assets": {
6622
+ "items": {
6623
+ "$ref": "#/components/schemas/CompanionAsset"
6624
+ },
6625
+ "maxItems": 512,
6626
+ "minItems": 1,
6627
+ "type": "array"
6628
+ },
6629
+ "entryAsset": {
6630
+ "maxLength": 512,
6631
+ "minLength": 1,
6632
+ "pattern": "^(?!/)(?!.*(?:^|/)\\.\\.(?:/|$))(?!.*\\\\)[A-Za-z0-9._/-]+$",
6633
+ "type": "string"
6634
+ },
6635
+ "interactions": {
6636
+ "items": {
6637
+ "$ref": "#/components/schemas/CompanionInteractionDefinition"
6638
+ },
6639
+ "maxItems": 64,
6640
+ "type": "array"
6641
+ },
6642
+ "license": {
6643
+ "$ref": "#/components/schemas/CompanionPackLicense"
6644
+ },
6645
+ "modelFormatVersion": {
6646
+ "minLength": 1,
6647
+ "type": "string"
6648
+ },
6649
+ "renderer": {
6650
+ "enum": [
6651
+ "svg",
6652
+ "sprite",
6653
+ "live2d-cubism"
6654
+ ],
6655
+ "type": "string"
6656
+ },
6657
+ "thumbnailAsset": {
6658
+ "maxLength": 512,
6659
+ "minLength": 1,
6660
+ "pattern": "^(?!/)(?!.*(?:^|/)\\.\\.(?:/|$))(?!.*\\\\)[A-Za-z0-9._/-]+$",
6661
+ "type": "string"
6662
+ },
6663
+ "unlocks": {
6664
+ "items": {
6665
+ "$ref": "#/components/schemas/CompanionUnlockDefinition"
6666
+ },
6667
+ "maxItems": 128,
6668
+ "type": "array"
6669
+ }
6670
+ },
6671
+ "required": [
6672
+ "renderer",
6673
+ "entryAsset",
6674
+ "assets",
6675
+ "license"
6676
+ ],
6677
+ "type": "object"
6678
+ },
6679
+ "CompanionProfile": {
6680
+ "additionalProperties": false,
6681
+ "properties": {
6682
+ "activePluginId": {
6683
+ "type": "string"
6684
+ },
6685
+ "activeVersion": {
6686
+ "type": "string"
6687
+ },
6688
+ "affinity": {
6689
+ "minimum": 0,
6690
+ "type": "integer"
6691
+ },
6692
+ "createdAt": {
6693
+ "format": "date-time",
6694
+ "type": "string"
6695
+ },
6696
+ "id": {
6697
+ "type": "string"
6698
+ },
6699
+ "lastInteractionAt": {
6700
+ "format": "date-time",
6701
+ "type": "string"
6702
+ },
6703
+ "level": {
6704
+ "maximum": 100,
6705
+ "minimum": 1,
6706
+ "type": "integer"
6707
+ },
6708
+ "ownerId": {
6709
+ "type": "string"
6710
+ },
6711
+ "revision": {
6712
+ "format": "int64",
6713
+ "minimum": 1,
6714
+ "type": "integer"
6715
+ },
6716
+ "unlockedIds": {
6717
+ "items": {
6718
+ "type": "string"
6719
+ },
6720
+ "type": "array",
6721
+ "uniqueItems": true
6722
+ },
6723
+ "updatedAt": {
6724
+ "format": "date-time",
6725
+ "type": "string"
6726
+ },
6727
+ "xp": {
6728
+ "minimum": 0,
6729
+ "type": "integer"
6730
+ }
6731
+ },
6732
+ "required": [
6733
+ "id",
6734
+ "ownerId",
6735
+ "activePluginId",
6736
+ "activeVersion",
6737
+ "level",
6738
+ "xp",
6739
+ "affinity",
6740
+ "unlockedIds",
6741
+ "revision",
6742
+ "createdAt",
6743
+ "updatedAt"
6744
+ ],
6745
+ "type": "object"
6746
+ },
6747
+ "CompanionProfileEnvelope": {
6748
+ "additionalProperties": false,
6749
+ "properties": {
6750
+ "data": {
6751
+ "$ref": "#/components/schemas/CompanionProfile"
6752
+ }
6753
+ },
6754
+ "required": [
6755
+ "data"
6756
+ ],
6757
+ "type": "object"
6758
+ },
6759
+ "CompanionProfileResetRequest": {
6760
+ "additionalProperties": false,
6761
+ "properties": {
6762
+ "pluginId": {
6763
+ "type": "string"
6764
+ }
6765
+ },
6766
+ "type": "object"
6767
+ },
6768
+ "CompanionRollbackRequest": {
6769
+ "additionalProperties": false,
6770
+ "properties": {
6771
+ "reason": {
6772
+ "maxLength": 512,
6773
+ "type": "string"
6774
+ },
6775
+ "version": {
6776
+ "minLength": 1,
6777
+ "type": "string"
6778
+ }
6779
+ },
6780
+ "required": [
6781
+ "version"
6782
+ ],
6783
+ "type": "object"
6784
+ },
6785
+ "CompanionUnlockDefinition": {
6786
+ "additionalProperties": false,
6787
+ "properties": {
6788
+ "id": {
6789
+ "pattern": "^[a-z][a-z0-9._-]*$",
6790
+ "type": "string"
6791
+ },
6792
+ "kind": {
6793
+ "enum": [
6794
+ "interaction",
6795
+ "animation",
6796
+ "expression",
6797
+ "asset"
6798
+ ],
6799
+ "type": "string"
6800
+ },
6801
+ "level": {
6802
+ "maximum": 100,
6803
+ "minimum": 1,
6804
+ "type": "integer"
6805
+ },
6806
+ "ref": {
6807
+ "minLength": 1,
6808
+ "type": "string"
6809
+ }
6810
+ },
6811
+ "required": [
6812
+ "id",
6813
+ "kind",
6814
+ "level",
6815
+ "ref"
6816
+ ],
6817
+ "type": "object"
6818
+ },
6231
6819
  "ComputeAccessMode": {
6232
6820
  "enum": [
6233
6821
  "direct",
@@ -11502,6 +12090,181 @@
11502
12090
  ],
11503
12091
  "type": "object"
11504
12092
  },
12093
+ "HelmImportedService": {
12094
+ "additionalProperties": false,
12095
+ "properties": {
12096
+ "created": {
12097
+ "type": "boolean"
12098
+ },
12099
+ "id": {
12100
+ "type": "string"
12101
+ },
12102
+ "key": {
12103
+ "type": "string"
12104
+ },
12105
+ "name": {
12106
+ "type": "string"
12107
+ },
12108
+ "releaseName": {
12109
+ "type": "string"
12110
+ }
12111
+ },
12112
+ "required": [
12113
+ "id",
12114
+ "key",
12115
+ "name",
12116
+ "releaseName",
12117
+ "created"
12118
+ ],
12119
+ "type": "object"
12120
+ },
12121
+ "HelmImportedTarget": {
12122
+ "additionalProperties": false,
12123
+ "properties": {
12124
+ "created": {
12125
+ "type": "boolean"
12126
+ },
12127
+ "id": {
12128
+ "type": "string"
12129
+ },
12130
+ "releaseName": {
12131
+ "type": "string"
12132
+ }
12133
+ },
12134
+ "required": [
12135
+ "id",
12136
+ "releaseName",
12137
+ "created"
12138
+ ],
12139
+ "type": "object"
12140
+ },
12141
+ "HelmReleaseImportInput": {
12142
+ "additionalProperties": false,
12143
+ "properties": {
12144
+ "releaseName": {
12145
+ "minLength": 1,
12146
+ "type": "string"
12147
+ }
12148
+ },
12149
+ "required": [
12150
+ "releaseName"
12151
+ ],
12152
+ "type": "object"
12153
+ },
12154
+ "HelmReleaseImportRequest": {
12155
+ "additionalProperties": false,
12156
+ "properties": {
12157
+ "applicationKey": {
12158
+ "minLength": 1,
12159
+ "type": "string"
12160
+ },
12161
+ "applicationName": {
12162
+ "minLength": 1,
12163
+ "type": "string"
12164
+ },
12165
+ "clusterId": {
12166
+ "minLength": 1,
12167
+ "type": "string"
12168
+ },
12169
+ "environmentKey": {
12170
+ "minLength": 1,
12171
+ "type": "string"
12172
+ },
12173
+ "environmentName": {
12174
+ "minLength": 1,
12175
+ "type": "string"
12176
+ },
12177
+ "namespace": {
12178
+ "minLength": 1,
12179
+ "type": "string"
12180
+ },
12181
+ "ownershipMode": {
12182
+ "enum": [
12183
+ "observe_only",
12184
+ "managed"
12185
+ ],
12186
+ "type": "string"
12187
+ },
12188
+ "releases": {
12189
+ "items": {
12190
+ "$ref": "#/components/schemas/HelmReleaseImportInput"
12191
+ },
12192
+ "maxItems": 100,
12193
+ "minItems": 1,
12194
+ "type": "array",
12195
+ "uniqueItems": true
12196
+ }
12197
+ },
12198
+ "required": [
12199
+ "clusterId",
12200
+ "namespace",
12201
+ "applicationKey",
12202
+ "applicationName",
12203
+ "environmentKey",
12204
+ "environmentName",
12205
+ "ownershipMode",
12206
+ "releases"
12207
+ ],
12208
+ "type": "object"
12209
+ },
12210
+ "HelmReleaseImportResult": {
12211
+ "additionalProperties": false,
12212
+ "properties": {
12213
+ "application": {
12214
+ "$ref": "#/components/schemas/KubernetesImportEntityRef"
12215
+ },
12216
+ "applicationEnvironmentCreated": {
12217
+ "type": "boolean"
12218
+ },
12219
+ "applicationEnvironmentId": {
12220
+ "type": "string"
12221
+ },
12222
+ "environment": {
12223
+ "$ref": "#/components/schemas/KubernetesImportEntityRef"
12224
+ },
12225
+ "ownershipMode": {
12226
+ "enum": [
12227
+ "observe_only",
12228
+ "managed"
12229
+ ],
12230
+ "type": "string"
12231
+ },
12232
+ "services": {
12233
+ "items": {
12234
+ "$ref": "#/components/schemas/HelmImportedService"
12235
+ },
12236
+ "type": "array"
12237
+ },
12238
+ "targets": {
12239
+ "items": {
12240
+ "$ref": "#/components/schemas/HelmImportedTarget"
12241
+ },
12242
+ "type": "array"
12243
+ }
12244
+ },
12245
+ "required": [
12246
+ "application",
12247
+ "environment",
12248
+ "applicationEnvironmentId",
12249
+ "applicationEnvironmentCreated",
12250
+ "ownershipMode",
12251
+ "services",
12252
+ "targets"
12253
+ ],
12254
+ "type": "object"
12255
+ },
12256
+ "HelmReleaseImportResultEnvelope": {
12257
+ "additionalProperties": false,
12258
+ "properties": {
12259
+ "data": {
12260
+ "$ref": "#/components/schemas/HelmReleaseImportResult"
12261
+ }
12262
+ },
12263
+ "required": [
12264
+ "data"
12265
+ ],
12266
+ "type": "object"
12267
+ },
11505
12268
  "IdentityApplication": {
11506
12269
  "additionalProperties": false,
11507
12270
  "properties": {
@@ -12527,6 +13290,15 @@
12527
13290
  "InstalledPlugin": {
12528
13291
  "additionalProperties": false,
12529
13292
  "properties": {
13293
+ "activeVersion": {
13294
+ "type": "string"
13295
+ },
13296
+ "artifacts": {
13297
+ "items": {
13298
+ "$ref": "#/components/schemas/PluginArtifactRecord"
13299
+ },
13300
+ "type": "array"
13301
+ },
12530
13302
  "checksumStatus": {
12531
13303
  "type": "string"
12532
13304
  },
@@ -14072,6 +14844,199 @@
14072
14844
  ],
14073
14845
  "type": "object"
14074
14846
  },
14847
+ "KubernetesImportCandidate": {
14848
+ "additionalProperties": false,
14849
+ "properties": {
14850
+ "clusterId": {
14851
+ "minLength": 1,
14852
+ "type": "string"
14853
+ },
14854
+ "containers": {
14855
+ "items": {
14856
+ "type": "string"
14857
+ },
14858
+ "type": "array",
14859
+ "uniqueItems": true
14860
+ },
14861
+ "desiredReplicas": {
14862
+ "minimum": 0,
14863
+ "type": "integer"
14864
+ },
14865
+ "labels": {
14866
+ "additionalProperties": {
14867
+ "type": "string"
14868
+ },
14869
+ "type": "object"
14870
+ },
14871
+ "namespace": {
14872
+ "minLength": 1,
14873
+ "type": "string"
14874
+ },
14875
+ "readyReplicas": {
14876
+ "minimum": 0,
14877
+ "type": "integer"
14878
+ },
14879
+ "relatedResources": {
14880
+ "items": {
14881
+ "$ref": "#/components/schemas/KubernetesRelatedResource"
14882
+ },
14883
+ "type": "array"
14884
+ },
14885
+ "workloadKind": {
14886
+ "enum": [
14887
+ "Deployment",
14888
+ "StatefulSet",
14889
+ "DaemonSet"
14890
+ ],
14891
+ "type": "string"
14892
+ },
14893
+ "workloadName": {
14894
+ "minLength": 1,
14895
+ "type": "string"
14896
+ }
14897
+ },
14898
+ "required": [
14899
+ "clusterId",
14900
+ "namespace",
14901
+ "workloadKind",
14902
+ "workloadName",
14903
+ "desiredReplicas",
14904
+ "readyReplicas",
14905
+ "relatedResources"
14906
+ ],
14907
+ "type": "object"
14908
+ },
14909
+ "KubernetesImportCandidateListEnvelope": {
14910
+ "additionalProperties": false,
14911
+ "properties": {
14912
+ "items": {
14913
+ "items": {
14914
+ "$ref": "#/components/schemas/KubernetesImportCandidate"
14915
+ },
14916
+ "type": "array"
14917
+ },
14918
+ "truncated": {
14919
+ "type": "boolean"
14920
+ }
14921
+ },
14922
+ "required": [
14923
+ "items",
14924
+ "truncated"
14925
+ ],
14926
+ "type": "object"
14927
+ },
14928
+ "KubernetesImportedService": {
14929
+ "additionalProperties": false,
14930
+ "properties": {
14931
+ "created": {
14932
+ "type": "boolean"
14933
+ },
14934
+ "id": {
14935
+ "type": "string"
14936
+ },
14937
+ "key": {
14938
+ "type": "string"
14939
+ },
14940
+ "name": {
14941
+ "type": "string"
14942
+ },
14943
+ "workloadKind": {
14944
+ "enum": [
14945
+ "Deployment",
14946
+ "StatefulSet",
14947
+ "DaemonSet"
14948
+ ],
14949
+ "type": "string"
14950
+ },
14951
+ "workloadName": {
14952
+ "type": "string"
14953
+ }
14954
+ },
14955
+ "required": [
14956
+ "id",
14957
+ "key",
14958
+ "name",
14959
+ "workloadKind",
14960
+ "workloadName",
14961
+ "created"
14962
+ ],
14963
+ "type": "object"
14964
+ },
14965
+ "KubernetesImportedTarget": {
14966
+ "additionalProperties": false,
14967
+ "properties": {
14968
+ "created": {
14969
+ "type": "boolean"
14970
+ },
14971
+ "id": {
14972
+ "type": "string"
14973
+ },
14974
+ "workloadKind": {
14975
+ "enum": [
14976
+ "Deployment",
14977
+ "StatefulSet",
14978
+ "DaemonSet"
14979
+ ],
14980
+ "type": "string"
14981
+ },
14982
+ "workloadName": {
14983
+ "type": "string"
14984
+ }
14985
+ },
14986
+ "required": [
14987
+ "id",
14988
+ "workloadKind",
14989
+ "workloadName",
14990
+ "created"
14991
+ ],
14992
+ "type": "object"
14993
+ },
14994
+ "KubernetesImportEntityRef": {
14995
+ "additionalProperties": false,
14996
+ "properties": {
14997
+ "created": {
14998
+ "type": "boolean"
14999
+ },
15000
+ "id": {
15001
+ "type": "string"
15002
+ },
15003
+ "key": {
15004
+ "type": "string"
15005
+ },
15006
+ "name": {
15007
+ "type": "string"
15008
+ }
15009
+ },
15010
+ "required": [
15011
+ "id",
15012
+ "key",
15013
+ "name",
15014
+ "created"
15015
+ ],
15016
+ "type": "object"
15017
+ },
15018
+ "KubernetesRelatedResource": {
15019
+ "additionalProperties": false,
15020
+ "properties": {
15021
+ "kind": {
15022
+ "enum": [
15023
+ "Service",
15024
+ "Ingress",
15025
+ "HorizontalPodAutoscaler"
15026
+ ],
15027
+ "type": "string"
15028
+ },
15029
+ "name": {
15030
+ "minLength": 1,
15031
+ "type": "string"
15032
+ }
15033
+ },
15034
+ "required": [
15035
+ "kind",
15036
+ "name"
15037
+ ],
15038
+ "type": "object"
15039
+ },
14075
15040
  "KubernetesResourceAction": {
14076
15041
  "enum": [
14077
15042
  "list",
@@ -14811,6 +15776,142 @@
14811
15776
  ],
14812
15777
  "type": "object"
14813
15778
  },
15779
+ "KubernetesServiceImportRequest": {
15780
+ "additionalProperties": false,
15781
+ "properties": {
15782
+ "applicationKey": {
15783
+ "minLength": 1,
15784
+ "type": "string"
15785
+ },
15786
+ "applicationName": {
15787
+ "minLength": 1,
15788
+ "type": "string"
15789
+ },
15790
+ "clusterId": {
15791
+ "minLength": 1,
15792
+ "type": "string"
15793
+ },
15794
+ "environmentKey": {
15795
+ "minLength": 1,
15796
+ "type": "string"
15797
+ },
15798
+ "environmentName": {
15799
+ "minLength": 1,
15800
+ "type": "string"
15801
+ },
15802
+ "namespace": {
15803
+ "minLength": 1,
15804
+ "type": "string"
15805
+ },
15806
+ "ownershipMode": {
15807
+ "enum": [
15808
+ "observe_only",
15809
+ "managed"
15810
+ ],
15811
+ "type": "string"
15812
+ },
15813
+ "workloads": {
15814
+ "items": {
15815
+ "$ref": "#/components/schemas/KubernetesWorkloadImportInput"
15816
+ },
15817
+ "maxItems": 100,
15818
+ "minItems": 1,
15819
+ "type": "array",
15820
+ "uniqueItems": true
15821
+ }
15822
+ },
15823
+ "required": [
15824
+ "clusterId",
15825
+ "namespace",
15826
+ "applicationKey",
15827
+ "applicationName",
15828
+ "environmentKey",
15829
+ "environmentName",
15830
+ "ownershipMode",
15831
+ "workloads"
15832
+ ],
15833
+ "type": "object"
15834
+ },
15835
+ "KubernetesServiceImportResult": {
15836
+ "additionalProperties": false,
15837
+ "properties": {
15838
+ "application": {
15839
+ "$ref": "#/components/schemas/KubernetesImportEntityRef"
15840
+ },
15841
+ "applicationEnvironmentCreated": {
15842
+ "type": "boolean"
15843
+ },
15844
+ "applicationEnvironmentId": {
15845
+ "type": "string"
15846
+ },
15847
+ "environment": {
15848
+ "$ref": "#/components/schemas/KubernetesImportEntityRef"
15849
+ },
15850
+ "ownershipMode": {
15851
+ "enum": [
15852
+ "observe_only",
15853
+ "managed"
15854
+ ],
15855
+ "type": "string"
15856
+ },
15857
+ "services": {
15858
+ "items": {
15859
+ "$ref": "#/components/schemas/KubernetesImportedService"
15860
+ },
15861
+ "type": "array"
15862
+ },
15863
+ "targets": {
15864
+ "items": {
15865
+ "$ref": "#/components/schemas/KubernetesImportedTarget"
15866
+ },
15867
+ "type": "array"
15868
+ }
15869
+ },
15870
+ "required": [
15871
+ "application",
15872
+ "environment",
15873
+ "applicationEnvironmentId",
15874
+ "applicationEnvironmentCreated",
15875
+ "ownershipMode",
15876
+ "services",
15877
+ "targets"
15878
+ ],
15879
+ "type": "object"
15880
+ },
15881
+ "KubernetesServiceImportResultEnvelope": {
15882
+ "additionalProperties": false,
15883
+ "properties": {
15884
+ "data": {
15885
+ "$ref": "#/components/schemas/KubernetesServiceImportResult"
15886
+ }
15887
+ },
15888
+ "required": [
15889
+ "data"
15890
+ ],
15891
+ "type": "object"
15892
+ },
15893
+ "KubernetesWorkloadImportInput": {
15894
+ "additionalProperties": false,
15895
+ "properties": {
15896
+ "workloadKind": {
15897
+ "enum": [
15898
+ "Deployment",
15899
+ "StatefulSet",
15900
+ "DaemonSet"
15901
+ ],
15902
+ "type": "string"
15903
+ },
15904
+ "workloadName": {
15905
+ "minLength": 1,
15906
+ "type": "string"
15907
+ }
15908
+ },
15909
+ "required": [
15910
+ "workloadKind",
15911
+ "workloadName"
15912
+ ],
15913
+ "type": "object"
15914
+ },
14814
15915
  "LLMCallLog": {
14815
15916
  "additionalProperties": false,
14816
15917
  "properties": {
@@ -19022,6 +20123,9 @@
19022
20123
  "minSohaVersion": {
19023
20124
  "type": "string"
19024
20125
  },
20126
+ "package": {
20127
+ "$ref": "#/components/schemas/PluginPackageDescriptor"
20128
+ },
19025
20129
  "packageUrl": {
19026
20130
  "type": "string"
19027
20131
  },
@@ -19770,6 +20874,312 @@
19770
20874
  "description": "Native provider-compatible JSON. Unknown fields are preserved and responses are not wrapped in an OpenSoha envelope.",
19771
20875
  "type": "object"
19772
20876
  },
20877
+ "ObservabilityDashboard": {
20878
+ "additionalProperties": false,
20879
+ "properties": {
20880
+ "createdAt": {
20881
+ "format": "date-time",
20882
+ "type": "string"
20883
+ },
20884
+ "dataSourceId": {
20885
+ "maxLength": 200,
20886
+ "type": "string"
20887
+ },
20888
+ "id": {
20889
+ "maxLength": 128,
20890
+ "minLength": 1,
20891
+ "type": "string"
20892
+ },
20893
+ "name": {
20894
+ "maxLength": 200,
20895
+ "minLength": 1,
20896
+ "type": "string"
20897
+ },
20898
+ "panels": {
20899
+ "items": {
20900
+ "$ref": "#/components/schemas/ObservabilityDashboardPanel"
20901
+ },
20902
+ "maxItems": 200,
20903
+ "type": "array"
20904
+ },
20905
+ "source": {
20906
+ "$ref": "#/components/schemas/ObservabilityDashboardSource"
20907
+ },
20908
+ "sourceSchemaVersion": {
20909
+ "minimum": 0,
20910
+ "type": "integer"
20911
+ },
20912
+ "tags": {
20913
+ "items": {
20914
+ "maxLength": 100,
20915
+ "minLength": 1,
20916
+ "type": "string"
20917
+ },
20918
+ "maxItems": 50,
20919
+ "type": "array",
20920
+ "uniqueItems": true
20921
+ },
20922
+ "updatedAt": {
20923
+ "format": "date-time",
20924
+ "type": "string"
20925
+ }
20926
+ },
20927
+ "required": [
20928
+ "id",
20929
+ "name",
20930
+ "source",
20931
+ "tags",
20932
+ "panels",
20933
+ "createdAt",
20934
+ "updatedAt"
20935
+ ],
20936
+ "type": "object"
20937
+ },
20938
+ "ObservabilityDashboardEnvelope": {
20939
+ "additionalProperties": false,
20940
+ "properties": {
20941
+ "data": {
20942
+ "$ref": "#/components/schemas/ObservabilityDashboard"
20943
+ }
20944
+ },
20945
+ "required": [
20946
+ "data"
20947
+ ],
20948
+ "type": "object"
20949
+ },
20950
+ "ObservabilityDashboardImportResult": {
20951
+ "additionalProperties": false,
20952
+ "properties": {
20953
+ "dashboard": {
20954
+ "$ref": "#/components/schemas/ObservabilityDashboard"
20955
+ },
20956
+ "importedPanelCount": {
20957
+ "minimum": 1,
20958
+ "type": "integer"
20959
+ },
20960
+ "skippedPanelCount": {
20961
+ "minimum": 0,
20962
+ "type": "integer"
20963
+ },
20964
+ "warnings": {
20965
+ "items": {
20966
+ "$ref": "#/components/schemas/ObservabilityDashboardImportWarning"
20967
+ },
20968
+ "maxItems": 500,
20969
+ "type": "array"
20970
+ }
20971
+ },
20972
+ "required": [
20973
+ "dashboard",
20974
+ "warnings",
20975
+ "importedPanelCount",
20976
+ "skippedPanelCount"
20977
+ ],
20978
+ "type": "object"
20979
+ },
20980
+ "ObservabilityDashboardImportResultEnvelope": {
20981
+ "additionalProperties": false,
20982
+ "properties": {
20983
+ "data": {
20984
+ "$ref": "#/components/schemas/ObservabilityDashboardImportResult"
20985
+ }
20986
+ },
20987
+ "required": [
20988
+ "data"
20989
+ ],
20990
+ "type": "object"
20991
+ },
20992
+ "ObservabilityDashboardImportWarning": {
20993
+ "additionalProperties": false,
20994
+ "properties": {
20995
+ "code": {
20996
+ "enum": [
20997
+ "unsupported_panel_type",
20998
+ "skipped_target",
20999
+ "unsupported_variable",
21000
+ "datasource_rebound",
21001
+ "unsupported_feature"
21002
+ ],
21003
+ "type": "string"
21004
+ },
21005
+ "message": {
21006
+ "maxLength": 500,
21007
+ "minLength": 1,
21008
+ "type": "string"
21009
+ },
21010
+ "panelId": {
21011
+ "maxLength": 128,
21012
+ "type": "string"
21013
+ }
21014
+ },
21015
+ "required": [
21016
+ "code",
21017
+ "message"
21018
+ ],
21019
+ "type": "object"
21020
+ },
21021
+ "ObservabilityDashboardListEnvelope": {
21022
+ "additionalProperties": false,
21023
+ "properties": {
21024
+ "items": {
21025
+ "items": {
21026
+ "$ref": "#/components/schemas/ObservabilityDashboard"
21027
+ },
21028
+ "type": "array"
21029
+ }
21030
+ },
21031
+ "required": [
21032
+ "items"
21033
+ ],
21034
+ "type": "object"
21035
+ },
21036
+ "ObservabilityDashboardPanel": {
21037
+ "additionalProperties": false,
21038
+ "properties": {
21039
+ "id": {
21040
+ "maxLength": 128,
21041
+ "minLength": 1,
21042
+ "type": "string"
21043
+ },
21044
+ "layout": {
21045
+ "$ref": "#/components/schemas/ObservabilityDashboardPanelLayout"
21046
+ },
21047
+ "markdown": {
21048
+ "maxLength": 32768,
21049
+ "type": "string"
21050
+ },
21051
+ "queryable": {
21052
+ "type": "boolean"
21053
+ },
21054
+ "targets": {
21055
+ "items": {
21056
+ "$ref": "#/components/schemas/ObservabilityDashboardTarget"
21057
+ },
21058
+ "maxItems": 8,
21059
+ "type": "array"
21060
+ },
21061
+ "title": {
21062
+ "maxLength": 200,
21063
+ "minLength": 1,
21064
+ "type": "string"
21065
+ },
21066
+ "type": {
21067
+ "$ref": "#/components/schemas/ObservabilityDashboardPanelType"
21068
+ }
21069
+ },
21070
+ "required": [
21071
+ "id",
21072
+ "title",
21073
+ "type",
21074
+ "layout",
21075
+ "targets",
21076
+ "queryable"
21077
+ ],
21078
+ "type": "object"
21079
+ },
21080
+ "ObservabilityDashboardPanelLayout": {
21081
+ "additionalProperties": false,
21082
+ "properties": {
21083
+ "h": {
21084
+ "maximum": 100,
21085
+ "minimum": 1,
21086
+ "type": "integer"
21087
+ },
21088
+ "w": {
21089
+ "maximum": 24,
21090
+ "minimum": 1,
21091
+ "type": "integer"
21092
+ },
21093
+ "x": {
21094
+ "maximum": 23,
21095
+ "minimum": 0,
21096
+ "type": "integer"
21097
+ },
21098
+ "y": {
21099
+ "minimum": 0,
21100
+ "type": "integer"
21101
+ }
21102
+ },
21103
+ "required": [
21104
+ "x",
21105
+ "y",
21106
+ "w",
21107
+ "h"
21108
+ ],
21109
+ "type": "object"
21110
+ },
21111
+ "ObservabilityDashboardPanelQueryInput": {
21112
+ "additionalProperties": false,
21113
+ "properties": {
21114
+ "stepSeconds": {
21115
+ "default": 60,
21116
+ "maximum": 3600,
21117
+ "minimum": 1,
21118
+ "type": "integer"
21119
+ },
21120
+ "timeFrom": {
21121
+ "format": "date-time",
21122
+ "type": "string"
21123
+ },
21124
+ "timeTo": {
21125
+ "format": "date-time",
21126
+ "type": "string"
21127
+ }
21128
+ },
21129
+ "required": [
21130
+ "timeFrom",
21131
+ "timeTo"
21132
+ ],
21133
+ "type": "object"
21134
+ },
21135
+ "ObservabilityDashboardPanelType": {
21136
+ "enum": [
21137
+ "timeseries",
21138
+ "stat",
21139
+ "text",
21140
+ "row"
21141
+ ],
21142
+ "type": "string",
21143
+ "x-enum-varnames": [
21144
+ "ObservabilityDashboardPanelTypeTimeseries",
21145
+ "ObservabilityDashboardPanelTypeStat",
21146
+ "ObservabilityDashboardPanelTypeText",
21147
+ "ObservabilityDashboardPanelTypeRow"
21148
+ ]
21149
+ },
21150
+ "ObservabilityDashboardSource": {
21151
+ "enum": [
21152
+ "grafana"
21153
+ ],
21154
+ "type": "string",
21155
+ "x-enum-varnames": [
21156
+ "ObservabilityDashboardSourceGrafana"
21157
+ ]
21158
+ },
21159
+ "ObservabilityDashboardTarget": {
21160
+ "additionalProperties": false,
21161
+ "properties": {
21162
+ "expression": {
21163
+ "maxLength": 8192,
21164
+ "minLength": 1,
21165
+ "type": "string"
21166
+ },
21167
+ "legend": {
21168
+ "maxLength": 256,
21169
+ "type": "string"
21170
+ },
21171
+ "refId": {
21172
+ "maxLength": 16,
21173
+ "minLength": 1,
21174
+ "type": "string"
21175
+ }
21176
+ },
21177
+ "required": [
21178
+ "refId",
21179
+ "expression"
21180
+ ],
21181
+ "type": "object"
21182
+ },
19773
21183
  "ObservabilityDataSource": {
19774
21184
  "additionalProperties": false,
19775
21185
  "properties": {
@@ -19987,6 +21397,28 @@
19987
21397
  "ObservabilityDataSourceValidationStatusFailed"
19988
21398
  ]
19989
21399
  },
21400
+ "ObservabilityGrafanaDashboardImportInput": {
21401
+ "additionalProperties": false,
21402
+ "properties": {
21403
+ "dataSourceId": {
21404
+ "description": "Enabled Soha Prometheus data source used by every imported queryable panel.",
21405
+ "maxLength": 200,
21406
+ "minLength": 1,
21407
+ "type": "string"
21408
+ },
21409
+ "json": {
21410
+ "description": "Grafana Classic dashboard JSON or a V1 resource whose spec contains the Classic dashboard model.",
21411
+ "maxLength": 2097152,
21412
+ "minLength": 2,
21413
+ "type": "string"
21414
+ }
21415
+ },
21416
+ "required": [
21417
+ "json",
21418
+ "dataSourceId"
21419
+ ],
21420
+ "type": "object"
21421
+ },
19990
21422
  "ObservabilityLogDataSourceConfig": {
19991
21423
  "additionalProperties": false,
19992
21424
  "properties": {
@@ -20140,6 +21572,41 @@
20140
21572
  },
20141
21573
  "type": "object"
20142
21574
  },
21575
+ "ObservabilityMetricDataSource": {
21576
+ "additionalProperties": false,
21577
+ "properties": {
21578
+ "id": {
21579
+ "maxLength": 200,
21580
+ "minLength": 1,
21581
+ "type": "string"
21582
+ },
21583
+ "name": {
21584
+ "maxLength": 200,
21585
+ "minLength": 1,
21586
+ "type": "string"
21587
+ }
21588
+ },
21589
+ "required": [
21590
+ "id",
21591
+ "name"
21592
+ ],
21593
+ "type": "object"
21594
+ },
21595
+ "ObservabilityMetricDataSourceListEnvelope": {
21596
+ "additionalProperties": false,
21597
+ "properties": {
21598
+ "items": {
21599
+ "items": {
21600
+ "$ref": "#/components/schemas/ObservabilityMetricDataSource"
21601
+ },
21602
+ "type": "array"
21603
+ }
21604
+ },
21605
+ "required": [
21606
+ "items"
21607
+ ],
21608
+ "type": "object"
21609
+ },
20143
21610
  "ObservabilityMetricKey": {
20144
21611
  "enum": [
20145
21612
  "cpu_usage",
@@ -21613,6 +23080,64 @@
21613
23080
  },
21614
23081
  "type": "object"
21615
23082
  },
23083
+ "PluginArtifactRecord": {
23084
+ "additionalProperties": false,
23085
+ "properties": {
23086
+ "active": {
23087
+ "type": "boolean"
23088
+ },
23089
+ "checksumStatus": {
23090
+ "enum": [
23091
+ "verified",
23092
+ "mismatch"
23093
+ ],
23094
+ "type": "string"
23095
+ },
23096
+ "installedAt": {
23097
+ "format": "date-time",
23098
+ "type": "string"
23099
+ },
23100
+ "provenanceStatus": {
23101
+ "enum": [
23102
+ "verified",
23103
+ "not_provided",
23104
+ "invalid"
23105
+ ],
23106
+ "type": "string"
23107
+ },
23108
+ "sha256": {
23109
+ "pattern": "^sha256:[a-f0-9]{64}$",
23110
+ "type": "string"
23111
+ },
23112
+ "signatureStatus": {
23113
+ "enum": [
23114
+ "verified",
23115
+ "not_provided",
23116
+ "untrusted",
23117
+ "invalid"
23118
+ ],
23119
+ "type": "string"
23120
+ },
23121
+ "sizeBytes": {
23122
+ "format": "int64",
23123
+ "minimum": 1,
23124
+ "type": "integer"
23125
+ },
23126
+ "version": {
23127
+ "type": "string"
23128
+ }
23129
+ },
23130
+ "required": [
23131
+ "version",
23132
+ "sha256",
23133
+ "sizeBytes",
23134
+ "checksumStatus",
23135
+ "signatureStatus",
23136
+ "provenanceStatus",
23137
+ "active"
23138
+ ],
23139
+ "type": "object"
23140
+ },
21616
23141
  "PluginAssetSnapshot": {
21617
23142
  "additionalProperties": false,
21618
23143
  "properties": {
@@ -22080,6 +23605,9 @@
22080
23605
  "marketplaceUrl": {
22081
23606
  "type": "string"
22082
23607
  },
23608
+ "package": {
23609
+ "$ref": "#/components/schemas/PluginPackageDescriptor"
23610
+ },
22083
23611
  "pluginId": {
22084
23612
  "type": "string"
22085
23613
  },
@@ -22122,6 +23650,9 @@
22122
23650
  "capabilities": {
22123
23651
  "$ref": "#/components/schemas/PluginCapabilityRequest"
22124
23652
  },
23653
+ "companionPack": {
23654
+ "$ref": "#/components/schemas/CompanionPackManifest"
23655
+ },
22125
23656
  "compatibility": {
22126
23657
  "$ref": "#/components/schemas/PluginCompatibility"
22127
23658
  },
@@ -22186,7 +23717,8 @@
22186
23717
  "metric-extension",
22187
23718
  "notification-channel",
22188
23719
  "identity-template",
22189
- "ui-extension"
23720
+ "ui-extension",
23721
+ "companion-pack"
22190
23722
  ],
22191
23723
  "type": "string"
22192
23724
  },
@@ -22320,6 +23852,62 @@
22320
23852
  ],
22321
23853
  "type": "object"
22322
23854
  },
23855
+ "PluginPackageDescriptor": {
23856
+ "additionalProperties": false,
23857
+ "properties": {
23858
+ "contentType": {
23859
+ "enum": [
23860
+ "application/zip",
23861
+ "application/gzip",
23862
+ "application/x-tar"
23863
+ ],
23864
+ "type": "string"
23865
+ },
23866
+ "provenanceUrl": {
23867
+ "format": "uri",
23868
+ "type": "string"
23869
+ },
23870
+ "sbomUrl": {
23871
+ "format": "uri",
23872
+ "type": "string"
23873
+ },
23874
+ "sha256": {
23875
+ "pattern": "^sha256:[a-f0-9]{64}$",
23876
+ "type": "string"
23877
+ },
23878
+ "signature": {
23879
+ "minLength": 1,
23880
+ "type": "string"
23881
+ },
23882
+ "signatureAlgorithm": {
23883
+ "enum": [
23884
+ "ed25519"
23885
+ ],
23886
+ "type": "string"
23887
+ },
23888
+ "signingKeyId": {
23889
+ "pattern": "^[a-z][a-z0-9._-]*$",
23890
+ "type": "string"
23891
+ },
23892
+ "sizeBytes": {
23893
+ "format": "int64",
23894
+ "maximum": 268435456,
23895
+ "minimum": 1,
23896
+ "type": "integer"
23897
+ },
23898
+ "url": {
23899
+ "format": "uri",
23900
+ "type": "string"
23901
+ }
23902
+ },
23903
+ "required": [
23904
+ "url",
23905
+ "contentType",
23906
+ "sizeBytes",
23907
+ "sha256"
23908
+ ],
23909
+ "type": "object"
23910
+ },
22323
23911
  "PluginPermissionRequest": {
22324
23912
  "additionalProperties": false,
22325
23913
  "properties": {
@@ -22338,6 +23926,58 @@
22338
23926
  },
22339
23927
  "type": "object"
22340
23928
  },
23929
+ "PluginProvenanceStatement": {
23930
+ "additionalProperties": false,
23931
+ "description": "The Ed25519 signature covers UTF-8 lines subjectSha256, builderId, sourceUri, sourceCommit, and builtAt in that order, joined with LF and without a trailing LF.",
23932
+ "properties": {
23933
+ "builderId": {
23934
+ "maxLength": 512,
23935
+ "minLength": 1,
23936
+ "type": "string"
23937
+ },
23938
+ "builtAt": {
23939
+ "format": "date-time",
23940
+ "type": "string"
23941
+ },
23942
+ "signature": {
23943
+ "minLength": 1,
23944
+ "type": "string"
23945
+ },
23946
+ "signatureAlgorithm": {
23947
+ "enum": [
23948
+ "ed25519"
23949
+ ],
23950
+ "type": "string"
23951
+ },
23952
+ "signingKeyId": {
23953
+ "pattern": "^[a-z][a-z0-9._-]*$",
23954
+ "type": "string"
23955
+ },
23956
+ "sourceCommit": {
23957
+ "pattern": "^[A-Fa-f0-9]{7,64}$",
23958
+ "type": "string"
23959
+ },
23960
+ "sourceUri": {
23961
+ "format": "uri",
23962
+ "type": "string"
23963
+ },
23964
+ "subjectSha256": {
23965
+ "pattern": "^sha256:[a-f0-9]{64}$",
23966
+ "type": "string"
23967
+ }
23968
+ },
23969
+ "required": [
23970
+ "subjectSha256",
23971
+ "builderId",
23972
+ "sourceUri",
23973
+ "sourceCommit",
23974
+ "builtAt",
23975
+ "signingKeyId",
23976
+ "signatureAlgorithm",
23977
+ "signature"
23978
+ ],
23979
+ "type": "object"
23980
+ },
22341
23981
  "PluginResourceExtensions": {
22342
23982
  "additionalProperties": false,
22343
23983
  "properties": {
@@ -22668,6 +24308,140 @@
22668
24308
  },
22669
24309
  "type": "object"
22670
24310
  },
24311
+ "RegistryConnection": {
24312
+ "additionalProperties": false,
24313
+ "properties": {
24314
+ "createdAt": {
24315
+ "format": "date-time",
24316
+ "type": "string"
24317
+ },
24318
+ "endpoint": {
24319
+ "minLength": 1,
24320
+ "type": "string"
24321
+ },
24322
+ "id": {
24323
+ "minLength": 1,
24324
+ "type": "string"
24325
+ },
24326
+ "insecure": {
24327
+ "type": "boolean"
24328
+ },
24329
+ "metadata": {
24330
+ "$ref": "#/components/schemas/RegistryConnectionMetadata"
24331
+ },
24332
+ "name": {
24333
+ "minLength": 1,
24334
+ "type": "string"
24335
+ },
24336
+ "namespace": {
24337
+ "type": "string"
24338
+ },
24339
+ "registryType": {
24340
+ "minLength": 1,
24341
+ "type": "string"
24342
+ },
24343
+ "updatedAt": {
24344
+ "format": "date-time",
24345
+ "type": "string"
24346
+ },
24347
+ "username": {
24348
+ "type": "string"
24349
+ }
24350
+ },
24351
+ "required": [
24352
+ "id",
24353
+ "name",
24354
+ "registryType",
24355
+ "endpoint",
24356
+ "insecure",
24357
+ "metadata",
24358
+ "createdAt",
24359
+ "updatedAt"
24360
+ ],
24361
+ "type": "object"
24362
+ },
24363
+ "RegistryConnectionEnvelope": {
24364
+ "additionalProperties": false,
24365
+ "properties": {
24366
+ "data": {
24367
+ "$ref": "#/components/schemas/RegistryConnection"
24368
+ }
24369
+ },
24370
+ "required": [
24371
+ "data"
24372
+ ],
24373
+ "type": "object"
24374
+ },
24375
+ "RegistryConnectionInput": {
24376
+ "additionalProperties": false,
24377
+ "properties": {
24378
+ "endpoint": {
24379
+ "minLength": 1,
24380
+ "type": "string"
24381
+ },
24382
+ "id": {
24383
+ "type": "string"
24384
+ },
24385
+ "insecure": {
24386
+ "type": "boolean"
24387
+ },
24388
+ "name": {
24389
+ "minLength": 1,
24390
+ "type": "string"
24391
+ },
24392
+ "namespace": {
24393
+ "type": "string"
24394
+ },
24395
+ "registryType": {
24396
+ "minLength": 1,
24397
+ "type": "string"
24398
+ },
24399
+ "secret": {
24400
+ "type": "string",
24401
+ "writeOnly": true
24402
+ },
24403
+ "username": {
24404
+ "type": "string"
24405
+ }
24406
+ },
24407
+ "required": [
24408
+ "name",
24409
+ "registryType",
24410
+ "endpoint"
24411
+ ],
24412
+ "type": "object"
24413
+ },
24414
+ "RegistryConnectionListEnvelope": {
24415
+ "additionalProperties": false,
24416
+ "properties": {
24417
+ "items": {
24418
+ "items": {
24419
+ "$ref": "#/components/schemas/RegistryConnection"
24420
+ },
24421
+ "type": "array"
24422
+ }
24423
+ },
24424
+ "required": [
24425
+ "items"
24426
+ ],
24427
+ "type": "object"
24428
+ },
24429
+ "RegistryConnectionMetadata": {
24430
+ "additionalProperties": false,
24431
+ "properties": {
24432
+ "secretConfigured": {
24433
+ "type": "boolean"
24434
+ },
24435
+ "secretStorage": {
24436
+ "type": "string"
24437
+ }
24438
+ },
24439
+ "required": [
24440
+ "secretConfigured",
24441
+ "secretStorage"
24442
+ ],
24443
+ "type": "object"
24444
+ },
22671
24445
  "ReleaseBundle": {
22672
24446
  "additionalProperties": false,
22673
24447
  "properties": {
@@ -25347,6 +27121,287 @@
25347
27121
  ],
25348
27122
  "type": "object"
25349
27123
  },
27124
+ "SoftwarePackage": {
27125
+ "additionalProperties": false,
27126
+ "properties": {
27127
+ "arch": {
27128
+ "pattern": "^[a-z0-9][a-z0-9._-]{0,63}$",
27129
+ "type": "string"
27130
+ },
27131
+ "category": {
27132
+ "maxLength": 50,
27133
+ "type": "string"
27134
+ },
27135
+ "createdAt": {
27136
+ "format": "date-time",
27137
+ "type": "string"
27138
+ },
27139
+ "description": {
27140
+ "maxLength": 500,
27141
+ "type": "string"
27142
+ },
27143
+ "downloadPath": {
27144
+ "pattern": "^/api/v1/software/packages/[^/]+/download$",
27145
+ "type": "string"
27146
+ },
27147
+ "fileName": {
27148
+ "maxLength": 255,
27149
+ "minLength": 1,
27150
+ "type": "string"
27151
+ },
27152
+ "id": {
27153
+ "maxLength": 128,
27154
+ "minLength": 1,
27155
+ "type": "string"
27156
+ },
27157
+ "name": {
27158
+ "maxLength": 100,
27159
+ "minLength": 1,
27160
+ "type": "string"
27161
+ },
27162
+ "platform": {
27163
+ "pattern": "^[a-z0-9][a-z0-9._-]{0,63}$",
27164
+ "type": "string"
27165
+ },
27166
+ "publisher": {
27167
+ "maxLength": 100,
27168
+ "minLength": 1,
27169
+ "type": "string"
27170
+ },
27171
+ "sha256": {
27172
+ "pattern": "^[0-9a-f]{64}$",
27173
+ "type": "string"
27174
+ },
27175
+ "sizeBytes": {
27176
+ "format": "int64",
27177
+ "maximum": 4294967296,
27178
+ "minimum": 1,
27179
+ "type": "integer"
27180
+ },
27181
+ "softwareId": {
27182
+ "pattern": "^[a-z0-9][a-z0-9._-]{0,63}$",
27183
+ "type": "string"
27184
+ },
27185
+ "updatedAt": {
27186
+ "format": "date-time",
27187
+ "type": "string"
27188
+ },
27189
+ "version": {
27190
+ "maxLength": 64,
27191
+ "minLength": 1,
27192
+ "type": "string"
27193
+ }
27194
+ },
27195
+ "required": [
27196
+ "id",
27197
+ "softwareId",
27198
+ "name",
27199
+ "publisher",
27200
+ "version",
27201
+ "platform",
27202
+ "arch",
27203
+ "fileName",
27204
+ "sizeBytes",
27205
+ "sha256",
27206
+ "downloadPath",
27207
+ "createdAt",
27208
+ "updatedAt"
27209
+ ],
27210
+ "type": "object"
27211
+ },
27212
+ "SoftwarePackageEnvelope": {
27213
+ "additionalProperties": false,
27214
+ "properties": {
27215
+ "data": {
27216
+ "$ref": "#/components/schemas/SoftwarePackage"
27217
+ }
27218
+ },
27219
+ "required": [
27220
+ "data"
27221
+ ],
27222
+ "type": "object"
27223
+ },
27224
+ "SoftwarePackageListEnvelope": {
27225
+ "additionalProperties": false,
27226
+ "properties": {
27227
+ "items": {
27228
+ "items": {
27229
+ "$ref": "#/components/schemas/SoftwarePackage"
27230
+ },
27231
+ "type": "array"
27232
+ },
27233
+ "nextCursor": {
27234
+ "type": "string"
27235
+ }
27236
+ },
27237
+ "required": [
27238
+ "items"
27239
+ ],
27240
+ "type": "object"
27241
+ },
27242
+ "SoftwarePackageUploadRequest": {
27243
+ "additionalProperties": false,
27244
+ "properties": {
27245
+ "arch": {
27246
+ "pattern": "^[a-z0-9][a-z0-9._-]{0,63}$",
27247
+ "type": "string"
27248
+ },
27249
+ "category": {
27250
+ "maxLength": 50,
27251
+ "type": "string"
27252
+ },
27253
+ "description": {
27254
+ "maxLength": 500,
27255
+ "type": "string"
27256
+ },
27257
+ "file": {
27258
+ "format": "binary",
27259
+ "type": "string"
27260
+ },
27261
+ "name": {
27262
+ "maxLength": 100,
27263
+ "minLength": 1,
27264
+ "type": "string"
27265
+ },
27266
+ "platform": {
27267
+ "pattern": "^[a-z0-9][a-z0-9._-]{0,63}$",
27268
+ "type": "string"
27269
+ },
27270
+ "publisher": {
27271
+ "maxLength": 100,
27272
+ "minLength": 1,
27273
+ "type": "string"
27274
+ },
27275
+ "softwareId": {
27276
+ "pattern": "^[a-z0-9][a-z0-9._-]{0,63}$",
27277
+ "type": "string"
27278
+ },
27279
+ "version": {
27280
+ "maxLength": 64,
27281
+ "minLength": 1,
27282
+ "type": "string"
27283
+ }
27284
+ },
27285
+ "required": [
27286
+ "softwareId",
27287
+ "name",
27288
+ "publisher",
27289
+ "version",
27290
+ "platform",
27291
+ "arch",
27292
+ "file"
27293
+ ],
27294
+ "type": "object"
27295
+ },
27296
+ "SoftwarePackageURLImportRequest": {
27297
+ "additionalProperties": false,
27298
+ "properties": {
27299
+ "arch": {
27300
+ "pattern": "^[a-z0-9][a-z0-9._-]{0,63}$",
27301
+ "type": "string"
27302
+ },
27303
+ "category": {
27304
+ "maxLength": 50,
27305
+ "type": "string"
27306
+ },
27307
+ "description": {
27308
+ "maxLength": 500,
27309
+ "type": "string"
27310
+ },
27311
+ "fileName": {
27312
+ "maxLength": 255,
27313
+ "minLength": 1,
27314
+ "type": "string"
27315
+ },
27316
+ "name": {
27317
+ "maxLength": 100,
27318
+ "minLength": 1,
27319
+ "type": "string"
27320
+ },
27321
+ "platform": {
27322
+ "pattern": "^[a-z0-9][a-z0-9._-]{0,63}$",
27323
+ "type": "string"
27324
+ },
27325
+ "publisher": {
27326
+ "maxLength": 100,
27327
+ "minLength": 1,
27328
+ "type": "string"
27329
+ },
27330
+ "softwareId": {
27331
+ "pattern": "^[a-z0-9][a-z0-9._-]{0,63}$",
27332
+ "type": "string"
27333
+ },
27334
+ "url": {
27335
+ "format": "uri",
27336
+ "maxLength": 2048,
27337
+ "pattern": "^https://",
27338
+ "type": "string"
27339
+ },
27340
+ "version": {
27341
+ "maxLength": 64,
27342
+ "minLength": 1,
27343
+ "type": "string"
27344
+ }
27345
+ },
27346
+ "required": [
27347
+ "softwareId",
27348
+ "name",
27349
+ "publisher",
27350
+ "version",
27351
+ "platform",
27352
+ "arch",
27353
+ "url"
27354
+ ],
27355
+ "type": "object"
27356
+ },
27357
+ "SoftwareStorage": {
27358
+ "additionalProperties": false,
27359
+ "properties": {
27360
+ "backend": {
27361
+ "maxLength": 64,
27362
+ "minLength": 1,
27363
+ "type": "string"
27364
+ },
27365
+ "items": {
27366
+ "items": {
27367
+ "$ref": "#/components/schemas/SoftwarePackage"
27368
+ },
27369
+ "type": "array"
27370
+ },
27371
+ "nextCursor": {
27372
+ "type": "string"
27373
+ },
27374
+ "objectCount": {
27375
+ "format": "int64",
27376
+ "minimum": 0,
27377
+ "type": "integer"
27378
+ },
27379
+ "totalBytes": {
27380
+ "format": "int64",
27381
+ "minimum": 0,
27382
+ "type": "integer"
27383
+ }
27384
+ },
27385
+ "required": [
27386
+ "backend",
27387
+ "objectCount",
27388
+ "totalBytes",
27389
+ "items"
27390
+ ],
27391
+ "type": "object"
27392
+ },
27393
+ "SoftwareStorageEnvelope": {
27394
+ "additionalProperties": false,
27395
+ "properties": {
27396
+ "data": {
27397
+ "$ref": "#/components/schemas/SoftwareStorage"
27398
+ }
27399
+ },
27400
+ "required": [
27401
+ "data"
27402
+ ],
27403
+ "type": "object"
27404
+ },
25350
27405
  "SourceBranch": {
25351
27406
  "additionalProperties": false,
25352
27407
  "properties": {
@@ -27511,6 +29566,11 @@
27511
29566
  }
27512
29567
  },
27513
29568
  "securitySchemes": {
29569
+ "agentBearerAuth": {
29570
+ "description": "Per-cluster Agent session token provisioned through the installation manifest.",
29571
+ "scheme": "bearer",
29572
+ "type": "http"
29573
+ },
27514
29574
  "bearerAuth": {
27515
29575
  "bearerFormat": "JWT",
27516
29576
  "scheme": "bearer",
@@ -27532,7 +29592,7 @@
27532
29592
  "info": {
27533
29593
  "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",
27534
29594
  "title": "Soha API",
27535
- "version": "0.1.6"
29595
+ "version": "0.1.8"
27536
29596
  },
27537
29597
  "openapi": "3.1.0",
27538
29598
  "paths": {
@@ -27856,6 +29916,39 @@
27856
29916
  ]
27857
29917
  }
27858
29918
  },
29919
+ "/agent-sessions/connect": {
29920
+ "get": {
29921
+ "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",
29922
+ "operationId": "connectClusterAgentSession",
29923
+ "parameters": [
29924
+ {
29925
+ "$ref": "#/components/parameters/ClusterIDQuery"
29926
+ }
29927
+ ],
29928
+ "responses": {
29929
+ "101": {
29930
+ "description": "WebSocket session established."
29931
+ },
29932
+ "400": {
29933
+ "$ref": "#/components/responses/Error"
29934
+ },
29935
+ "401": {
29936
+ "$ref": "#/components/responses/Error"
29937
+ },
29938
+ "409": {
29939
+ "$ref": "#/components/responses/Error"
29940
+ }
29941
+ },
29942
+ "security": [
29943
+ {
29944
+ "agentBearerAuth": []
29945
+ }
29946
+ ],
29947
+ "tags": [
29948
+ "Platform"
29949
+ ]
29950
+ }
29951
+ },
27859
29952
  "/ai-gateway/approval-requests": {
27860
29953
  "get": {
27861
29954
  "operationId": "listAIGatewayApprovalRequests",
@@ -34406,6 +36499,149 @@
34406
36499
  ]
34407
36500
  }
34408
36501
  },
36502
+ "/application-environments/helm-release-imports": {
36503
+ "post": {
36504
+ "operationId": "importHelmReleases",
36505
+ "requestBody": {
36506
+ "content": {
36507
+ "application/json": {
36508
+ "schema": {
36509
+ "$ref": "#/components/schemas/HelmReleaseImportRequest"
36510
+ }
36511
+ }
36512
+ },
36513
+ "required": true
36514
+ },
36515
+ "responses": {
36516
+ "200": {
36517
+ "content": {
36518
+ "application/json": {
36519
+ "schema": {
36520
+ "$ref": "#/components/schemas/HelmReleaseImportResultEnvelope"
36521
+ }
36522
+ }
36523
+ },
36524
+ "description": "Idempotent Helm release import result."
36525
+ },
36526
+ "400": {
36527
+ "$ref": "#/components/responses/Error"
36528
+ },
36529
+ "403": {
36530
+ "$ref": "#/components/responses/Error"
36531
+ },
36532
+ "409": {
36533
+ "$ref": "#/components/responses/Error"
36534
+ }
36535
+ },
36536
+ "tags": [
36537
+ "Delivery"
36538
+ ]
36539
+ }
36540
+ },
36541
+ "/application-environments/imports": {
36542
+ "post": {
36543
+ "operationId": "importKubernetesServices",
36544
+ "requestBody": {
36545
+ "content": {
36546
+ "application/json": {
36547
+ "schema": {
36548
+ "$ref": "#/components/schemas/KubernetesServiceImportRequest"
36549
+ }
36550
+ }
36551
+ },
36552
+ "required": true
36553
+ },
36554
+ "responses": {
36555
+ "200": {
36556
+ "content": {
36557
+ "application/json": {
36558
+ "schema": {
36559
+ "$ref": "#/components/schemas/KubernetesServiceImportResultEnvelope"
36560
+ }
36561
+ }
36562
+ },
36563
+ "description": "Idempotent Kubernetes service import result."
36564
+ },
36565
+ "400": {
36566
+ "$ref": "#/components/responses/Error"
36567
+ },
36568
+ "403": {
36569
+ "$ref": "#/components/responses/Error"
36570
+ },
36571
+ "409": {
36572
+ "$ref": "#/components/responses/Error"
36573
+ }
36574
+ },
36575
+ "tags": [
36576
+ "Delivery"
36577
+ ]
36578
+ }
36579
+ },
36580
+ "/application-environments/target-candidates": {
36581
+ "get": {
36582
+ "operationId": "listApplicationEnvironmentTargetCandidates",
36583
+ "parameters": [
36584
+ {
36585
+ "in": "query",
36586
+ "name": "clusterId",
36587
+ "required": true,
36588
+ "schema": {
36589
+ "minLength": 1,
36590
+ "type": "string"
36591
+ }
36592
+ },
36593
+ {
36594
+ "in": "query",
36595
+ "name": "namespace",
36596
+ "required": true,
36597
+ "schema": {
36598
+ "minLength": 1,
36599
+ "type": "string"
36600
+ }
36601
+ },
36602
+ {
36603
+ "in": "query",
36604
+ "name": "search",
36605
+ "required": false,
36606
+ "schema": {
36607
+ "type": "string"
36608
+ }
36609
+ },
36610
+ {
36611
+ "in": "query",
36612
+ "name": "limit",
36613
+ "required": false,
36614
+ "schema": {
36615
+ "default": 100,
36616
+ "maximum": 200,
36617
+ "minimum": 1,
36618
+ "type": "integer"
36619
+ }
36620
+ }
36621
+ ],
36622
+ "responses": {
36623
+ "200": {
36624
+ "content": {
36625
+ "application/json": {
36626
+ "schema": {
36627
+ "$ref": "#/components/schemas/KubernetesImportCandidateListEnvelope"
36628
+ }
36629
+ }
36630
+ },
36631
+ "description": "Discoverable Kubernetes workloads and their related resources."
36632
+ },
36633
+ "400": {
36634
+ "$ref": "#/components/responses/Error"
36635
+ },
36636
+ "403": {
36637
+ "$ref": "#/components/responses/Error"
36638
+ }
36639
+ },
36640
+ "tags": [
36641
+ "Delivery"
36642
+ ]
36643
+ }
36644
+ },
34409
36645
  "/applications": {
34410
36646
  "get": {
34411
36647
  "operationId": "listApplications",
@@ -35365,6 +37601,43 @@
35365
37601
  ]
35366
37602
  }
35367
37603
  },
37604
+ "/clusters/{clusterID}/agent-installation": {
37605
+ "post": {
37606
+ "operationId": "createClusterAgentInstallation",
37607
+ "parameters": [
37608
+ {
37609
+ "$ref": "#/components/parameters/ClusterID"
37610
+ }
37611
+ ],
37612
+ "responses": {
37613
+ "200": {
37614
+ "content": {
37615
+ "application/json": {
37616
+ "schema": {
37617
+ "$ref": "#/components/schemas/AgentInstallationEnvelope"
37618
+ }
37619
+ }
37620
+ },
37621
+ "description": "Short-lived Kubernetes manifest URL and kubectl command for installing the cluster Agent."
37622
+ },
37623
+ "400": {
37624
+ "$ref": "#/components/responses/Error"
37625
+ },
37626
+ "403": {
37627
+ "$ref": "#/components/responses/Error"
37628
+ },
37629
+ "404": {
37630
+ "$ref": "#/components/responses/Error"
37631
+ },
37632
+ "409": {
37633
+ "$ref": "#/components/responses/Error"
37634
+ }
37635
+ },
37636
+ "tags": [
37637
+ "Platform"
37638
+ ]
37639
+ }
37640
+ },
35368
37641
  "/clusters/{clusterID}/logs/query": {
35369
37642
  "post": {
35370
37643
  "operationId": "queryClusterLogs",
@@ -35808,6 +38081,151 @@
35808
38081
  ]
35809
38082
  }
35810
38083
  },
38084
+ "/companion/interactions": {
38085
+ "post": {
38086
+ "operationId": "recordCompanionInteraction",
38087
+ "parameters": [
38088
+ {
38089
+ "$ref": "#/components/parameters/IdempotencyKey"
38090
+ }
38091
+ ],
38092
+ "requestBody": {
38093
+ "content": {
38094
+ "application/json": {
38095
+ "schema": {
38096
+ "$ref": "#/components/schemas/CompanionInteractionRequest"
38097
+ }
38098
+ }
38099
+ },
38100
+ "required": true
38101
+ },
38102
+ "responses": {
38103
+ "200": {
38104
+ "content": {
38105
+ "application/json": {
38106
+ "schema": {
38107
+ "$ref": "#/components/schemas/CompanionInteractionReceiptEnvelope"
38108
+ }
38109
+ }
38110
+ },
38111
+ "description": "Existing idempotent interaction result."
38112
+ },
38113
+ "201": {
38114
+ "content": {
38115
+ "application/json": {
38116
+ "schema": {
38117
+ "$ref": "#/components/schemas/CompanionInteractionReceiptEnvelope"
38118
+ }
38119
+ }
38120
+ },
38121
+ "description": "Interaction applied to the companion profile."
38122
+ },
38123
+ "400": {
38124
+ "$ref": "#/components/responses/Error"
38125
+ },
38126
+ "401": {
38127
+ "$ref": "#/components/responses/Error"
38128
+ },
38129
+ "403": {
38130
+ "$ref": "#/components/responses/Error"
38131
+ },
38132
+ "404": {
38133
+ "$ref": "#/components/responses/Error"
38134
+ },
38135
+ "409": {
38136
+ "$ref": "#/components/responses/Error"
38137
+ },
38138
+ "422": {
38139
+ "$ref": "#/components/responses/Error"
38140
+ },
38141
+ "503": {
38142
+ "$ref": "#/components/responses/Error"
38143
+ }
38144
+ },
38145
+ "tags": [
38146
+ "Companion"
38147
+ ]
38148
+ }
38149
+ },
38150
+ "/companion/profile": {
38151
+ "get": {
38152
+ "operationId": "getCompanionProfile",
38153
+ "responses": {
38154
+ "200": {
38155
+ "content": {
38156
+ "application/json": {
38157
+ "schema": {
38158
+ "$ref": "#/components/schemas/CompanionProfileEnvelope"
38159
+ }
38160
+ }
38161
+ },
38162
+ "description": "Current principal's companion profile."
38163
+ },
38164
+ "401": {
38165
+ "$ref": "#/components/responses/Error"
38166
+ },
38167
+ "403": {
38168
+ "$ref": "#/components/responses/Error"
38169
+ },
38170
+ "503": {
38171
+ "$ref": "#/components/responses/Error"
38172
+ }
38173
+ },
38174
+ "tags": [
38175
+ "Companion"
38176
+ ]
38177
+ }
38178
+ },
38179
+ "/companion/profile/reset": {
38180
+ "post": {
38181
+ "operationId": "resetCompanionProfile",
38182
+ "parameters": [
38183
+ {
38184
+ "$ref": "#/components/parameters/IdempotencyKey"
38185
+ }
38186
+ ],
38187
+ "requestBody": {
38188
+ "content": {
38189
+ "application/json": {
38190
+ "schema": {
38191
+ "$ref": "#/components/schemas/CompanionProfileResetRequest"
38192
+ }
38193
+ }
38194
+ },
38195
+ "required": false
38196
+ },
38197
+ "responses": {
38198
+ "200": {
38199
+ "content": {
38200
+ "application/json": {
38201
+ "schema": {
38202
+ "$ref": "#/components/schemas/CompanionProfileEnvelope"
38203
+ }
38204
+ }
38205
+ },
38206
+ "description": "Companion progression reset for the selected pack."
38207
+ },
38208
+ "401": {
38209
+ "$ref": "#/components/responses/Error"
38210
+ },
38211
+ "403": {
38212
+ "$ref": "#/components/responses/Error"
38213
+ },
38214
+ "404": {
38215
+ "$ref": "#/components/responses/Error"
38216
+ },
38217
+ "409": {
38218
+ "$ref": "#/components/responses/Error"
38219
+ },
38220
+ "503": {
38221
+ "$ref": "#/components/responses/Error"
38222
+ }
38223
+ },
38224
+ "tags": [
38225
+ "Companion"
38226
+ ]
38227
+ }
38228
+ },
35811
38229
  "/compute/access-sources": {
35812
38230
  "get": {
35813
38231
  "operationId": "listComputeAccessSources",
@@ -40467,6 +42885,38 @@
40467
42885
  ]
40468
42886
  }
40469
42887
  },
42888
+ "/kubernetes/agent-installations/{installTicket}/manifest.yaml": {
42889
+ "get": {
42890
+ "operationId": "downloadKubernetesAgentInstallationManifest",
42891
+ "parameters": [
42892
+ {
42893
+ "$ref": "#/components/parameters/AgentInstallTicket"
42894
+ }
42895
+ ],
42896
+ "responses": {
42897
+ "200": {
42898
+ "content": {
42899
+ "application/yaml": {
42900
+ "schema": {
42901
+ "type": "string"
42902
+ }
42903
+ }
42904
+ },
42905
+ "description": "Complete Kubernetes Agent installation manifest. The download URL is short-lived."
42906
+ },
42907
+ "404": {
42908
+ "$ref": "#/components/responses/Error"
42909
+ },
42910
+ "410": {
42911
+ "$ref": "#/components/responses/Error"
42912
+ }
42913
+ },
42914
+ "security": [],
42915
+ "tags": [
42916
+ "Platform"
42917
+ ]
42918
+ }
42919
+ },
40470
42920
  "/marketplace/index.json": {
40471
42921
  "get": {
40472
42922
  "operationId": "getPublicMarketplaceCatalog",
@@ -40522,6 +42972,40 @@
40522
42972
  ]
40523
42973
  }
40524
42974
  },
42975
+ "/marketplace/plugins/{pluginID}/{version}/provenance.json": {
42976
+ "get": {
42977
+ "operationId": "getPublicMarketplacePluginProvenance",
42978
+ "parameters": [
42979
+ {
42980
+ "$ref": "#/components/parameters/PluginID"
42981
+ },
42982
+ {
42983
+ "in": "path",
42984
+ "name": "version",
42985
+ "required": true,
42986
+ "schema": {
42987
+ "type": "string"
42988
+ }
42989
+ }
42990
+ ],
42991
+ "responses": {
42992
+ "200": {
42993
+ "content": {
42994
+ "application/json": {
42995
+ "schema": {
42996
+ "$ref": "#/components/schemas/PluginProvenanceStatement"
42997
+ }
42998
+ }
42999
+ },
43000
+ "description": "Immutable signed provenance statement for a plugin package."
43001
+ }
43002
+ },
43003
+ "security": [],
43004
+ "tags": [
43005
+ "Marketplace"
43006
+ ]
43007
+ }
43008
+ },
40525
43009
  "/mcp/capabilities": {
40526
43010
  "get": {
40527
43011
  "operationId": "listMCPCapabilities",
@@ -40542,6 +43026,178 @@
40542
43026
  ]
40543
43027
  }
40544
43028
  },
43029
+ "/observability/dashboards": {
43030
+ "get": {
43031
+ "operationId": "listObservabilityDashboards",
43032
+ "responses": {
43033
+ "200": {
43034
+ "content": {
43035
+ "application/json": {
43036
+ "schema": {
43037
+ "$ref": "#/components/schemas/ObservabilityDashboardListEnvelope"
43038
+ }
43039
+ }
43040
+ },
43041
+ "description": "Dashboards visible to the current principal."
43042
+ },
43043
+ "403": {
43044
+ "$ref": "#/components/responses/Error"
43045
+ }
43046
+ },
43047
+ "tags": [
43048
+ "Observability"
43049
+ ]
43050
+ }
43051
+ },
43052
+ "/observability/dashboards/{dashboardID}": {
43053
+ "delete": {
43054
+ "operationId": "deleteObservabilityDashboard",
43055
+ "parameters": [
43056
+ {
43057
+ "$ref": "#/components/parameters/DashboardID"
43058
+ }
43059
+ ],
43060
+ "responses": {
43061
+ "200": {
43062
+ "content": {
43063
+ "application/json": {
43064
+ "schema": {
43065
+ "$ref": "#/components/schemas/OperationStatus"
43066
+ }
43067
+ }
43068
+ },
43069
+ "description": "Dashboard deleted."
43070
+ },
43071
+ "403": {
43072
+ "$ref": "#/components/responses/Error"
43073
+ },
43074
+ "404": {
43075
+ "$ref": "#/components/responses/Error"
43076
+ }
43077
+ },
43078
+ "tags": [
43079
+ "Observability"
43080
+ ]
43081
+ },
43082
+ "get": {
43083
+ "operationId": "getObservabilityDashboard",
43084
+ "parameters": [
43085
+ {
43086
+ "$ref": "#/components/parameters/DashboardID"
43087
+ }
43088
+ ],
43089
+ "responses": {
43090
+ "200": {
43091
+ "content": {
43092
+ "application/json": {
43093
+ "schema": {
43094
+ "$ref": "#/components/schemas/ObservabilityDashboardEnvelope"
43095
+ }
43096
+ }
43097
+ },
43098
+ "description": "Dashboard detail including normalized panels and targets."
43099
+ },
43100
+ "403": {
43101
+ "$ref": "#/components/responses/Error"
43102
+ },
43103
+ "404": {
43104
+ "$ref": "#/components/responses/Error"
43105
+ }
43106
+ },
43107
+ "tags": [
43108
+ "Observability"
43109
+ ]
43110
+ }
43111
+ },
43112
+ "/observability/dashboards/{dashboardID}/panels/{panelID}/query": {
43113
+ "post": {
43114
+ "operationId": "queryObservabilityDashboardPanel",
43115
+ "parameters": [
43116
+ {
43117
+ "$ref": "#/components/parameters/DashboardID"
43118
+ },
43119
+ {
43120
+ "$ref": "#/components/parameters/DashboardPanelID"
43121
+ }
43122
+ ],
43123
+ "requestBody": {
43124
+ "content": {
43125
+ "application/json": {
43126
+ "schema": {
43127
+ "$ref": "#/components/schemas/ObservabilityDashboardPanelQueryInput"
43128
+ }
43129
+ }
43130
+ },
43131
+ "required": true
43132
+ },
43133
+ "responses": {
43134
+ "200": {
43135
+ "content": {
43136
+ "application/json": {
43137
+ "schema": {
43138
+ "$ref": "#/components/schemas/ObservabilityMetricQueryEnvelope"
43139
+ }
43140
+ }
43141
+ },
43142
+ "description": "Normalized metric series for the persisted dashboard panel targets."
43143
+ },
43144
+ "400": {
43145
+ "$ref": "#/components/responses/Error"
43146
+ },
43147
+ "403": {
43148
+ "$ref": "#/components/responses/Error"
43149
+ },
43150
+ "404": {
43151
+ "$ref": "#/components/responses/Error"
43152
+ },
43153
+ "503": {
43154
+ "$ref": "#/components/responses/Error"
43155
+ }
43156
+ },
43157
+ "tags": [
43158
+ "Observability"
43159
+ ]
43160
+ }
43161
+ },
43162
+ "/observability/dashboards/imports": {
43163
+ "post": {
43164
+ "operationId": "importGrafanaDashboard",
43165
+ "requestBody": {
43166
+ "content": {
43167
+ "application/json": {
43168
+ "schema": {
43169
+ "$ref": "#/components/schemas/ObservabilityGrafanaDashboardImportInput"
43170
+ }
43171
+ }
43172
+ },
43173
+ "required": true
43174
+ },
43175
+ "responses": {
43176
+ "201": {
43177
+ "content": {
43178
+ "application/json": {
43179
+ "schema": {
43180
+ "$ref": "#/components/schemas/ObservabilityDashboardImportResultEnvelope"
43181
+ }
43182
+ }
43183
+ },
43184
+ "description": "Imported native dashboard and explicit compatibility warnings."
43185
+ },
43186
+ "400": {
43187
+ "$ref": "#/components/responses/Error"
43188
+ },
43189
+ "403": {
43190
+ "$ref": "#/components/responses/Error"
43191
+ },
43192
+ "404": {
43193
+ "$ref": "#/components/responses/Error"
43194
+ }
43195
+ },
43196
+ "tags": [
43197
+ "Observability"
43198
+ ]
43199
+ }
43200
+ },
40545
43201
  "/observability/data-sources": {
40546
43202
  "get": {
40547
43203
  "operationId": "listObservabilityDataSources",
@@ -40677,6 +43333,29 @@
40677
43333
  ]
40678
43334
  }
40679
43335
  },
43336
+ "/observability/metrics/data-sources": {
43337
+ "get": {
43338
+ "operationId": "listObservabilityMetricDataSources",
43339
+ "responses": {
43340
+ "200": {
43341
+ "content": {
43342
+ "application/json": {
43343
+ "schema": {
43344
+ "$ref": "#/components/schemas/ObservabilityMetricDataSourceListEnvelope"
43345
+ }
43346
+ }
43347
+ },
43348
+ "description": "Enabled Prometheus data sources available for metric dashboards."
43349
+ },
43350
+ "403": {
43351
+ "$ref": "#/components/responses/Error"
43352
+ }
43353
+ },
43354
+ "tags": [
43355
+ "Observability"
43356
+ ]
43357
+ }
43358
+ },
40680
43359
  "/observability/metrics/query": {
40681
43360
  "post": {
40682
43361
  "operationId": "queryObservabilityMetrics",
@@ -40832,6 +43511,137 @@
40832
43511
  ]
40833
43512
  }
40834
43513
  },
43514
+ "/plugins/{pluginID}/activate": {
43515
+ "post": {
43516
+ "operationId": "activateInstalledPlugin",
43517
+ "parameters": [
43518
+ {
43519
+ "$ref": "#/components/parameters/PluginID"
43520
+ },
43521
+ {
43522
+ "$ref": "#/components/parameters/IdempotencyKey"
43523
+ }
43524
+ ],
43525
+ "requestBody": {
43526
+ "content": {
43527
+ "application/json": {
43528
+ "schema": {
43529
+ "$ref": "#/components/schemas/CompanionActivationRequest"
43530
+ }
43531
+ }
43532
+ },
43533
+ "required": false
43534
+ },
43535
+ "responses": {
43536
+ "200": {
43537
+ "content": {
43538
+ "application/json": {
43539
+ "schema": {
43540
+ "$ref": "#/components/schemas/InstalledPluginEnvelope"
43541
+ }
43542
+ }
43543
+ },
43544
+ "description": "Companion pack version activated."
43545
+ },
43546
+ "401": {
43547
+ "$ref": "#/components/responses/Error"
43548
+ },
43549
+ "403": {
43550
+ "$ref": "#/components/responses/Error"
43551
+ },
43552
+ "404": {
43553
+ "$ref": "#/components/responses/Error"
43554
+ },
43555
+ "409": {
43556
+ "$ref": "#/components/responses/Error"
43557
+ },
43558
+ "422": {
43559
+ "$ref": "#/components/responses/Error"
43560
+ },
43561
+ "503": {
43562
+ "$ref": "#/components/responses/Error"
43563
+ }
43564
+ },
43565
+ "tags": [
43566
+ "Plugins"
43567
+ ]
43568
+ }
43569
+ },
43570
+ "/plugins/{pluginID}/assets/{assetPath}": {
43571
+ "get": {
43572
+ "operationId": "getInstalledPluginAsset",
43573
+ "parameters": [
43574
+ {
43575
+ "$ref": "#/components/parameters/PluginID"
43576
+ },
43577
+ {
43578
+ "$ref": "#/components/parameters/PluginAssetPath"
43579
+ }
43580
+ ],
43581
+ "responses": {
43582
+ "200": {
43583
+ "content": {
43584
+ "application/json": {
43585
+ "schema": {
43586
+ "format": "binary",
43587
+ "type": "string"
43588
+ }
43589
+ },
43590
+ "application/octet-stream": {
43591
+ "schema": {
43592
+ "format": "binary",
43593
+ "type": "string"
43594
+ }
43595
+ },
43596
+ "image/jpeg": {
43597
+ "schema": {
43598
+ "format": "binary",
43599
+ "type": "string"
43600
+ }
43601
+ },
43602
+ "image/png": {
43603
+ "schema": {
43604
+ "format": "binary",
43605
+ "type": "string"
43606
+ }
43607
+ },
43608
+ "image/svg+xml": {
43609
+ "schema": {
43610
+ "format": "binary",
43611
+ "type": "string"
43612
+ }
43613
+ },
43614
+ "image/webp": {
43615
+ "schema": {
43616
+ "format": "binary",
43617
+ "type": "string"
43618
+ }
43619
+ }
43620
+ },
43621
+ "description": "Immutable verified asset from the active companion pack.",
43622
+ "headers": {
43623
+ "Cache-Control": {
43624
+ "schema": {
43625
+ "type": "string"
43626
+ }
43627
+ }
43628
+ }
43629
+ },
43630
+ "401": {
43631
+ "$ref": "#/components/responses/Error"
43632
+ },
43633
+ "403": {
43634
+ "$ref": "#/components/responses/Error"
43635
+ },
43636
+ "404": {
43637
+ "$ref": "#/components/responses/Error"
43638
+ }
43639
+ },
43640
+ "tags": [
43641
+ "Plugins"
43642
+ ]
43643
+ }
43644
+ },
40835
43645
  "/plugins/{pluginID}/config": {
40836
43646
  "put": {
40837
43647
  "operationId": "configureInstalledPlugin",
@@ -40942,6 +43752,62 @@
40942
43752
  ]
40943
43753
  }
40944
43754
  },
43755
+ "/plugins/{pluginID}/rollback": {
43756
+ "post": {
43757
+ "operationId": "rollbackInstalledPlugin",
43758
+ "parameters": [
43759
+ {
43760
+ "$ref": "#/components/parameters/PluginID"
43761
+ },
43762
+ {
43763
+ "$ref": "#/components/parameters/IdempotencyKey"
43764
+ }
43765
+ ],
43766
+ "requestBody": {
43767
+ "content": {
43768
+ "application/json": {
43769
+ "schema": {
43770
+ "$ref": "#/components/schemas/CompanionRollbackRequest"
43771
+ }
43772
+ }
43773
+ },
43774
+ "required": false
43775
+ },
43776
+ "responses": {
43777
+ "200": {
43778
+ "content": {
43779
+ "application/json": {
43780
+ "schema": {
43781
+ "$ref": "#/components/schemas/InstalledPluginEnvelope"
43782
+ }
43783
+ }
43784
+ },
43785
+ "description": "Companion pack rolled back to a retained verified version."
43786
+ },
43787
+ "401": {
43788
+ "$ref": "#/components/responses/Error"
43789
+ },
43790
+ "403": {
43791
+ "$ref": "#/components/responses/Error"
43792
+ },
43793
+ "404": {
43794
+ "$ref": "#/components/responses/Error"
43795
+ },
43796
+ "409": {
43797
+ "$ref": "#/components/responses/Error"
43798
+ },
43799
+ "422": {
43800
+ "$ref": "#/components/responses/Error"
43801
+ },
43802
+ "503": {
43803
+ "$ref": "#/components/responses/Error"
43804
+ }
43805
+ },
43806
+ "tags": [
43807
+ "Plugins"
43808
+ ]
43809
+ }
43810
+ },
40945
43811
  "/plugins/{pluginID}/upgrade": {
40946
43812
  "post": {
40947
43813
  "operationId": "upgradeInstalledPlugin",
@@ -41167,6 +44033,148 @@
41167
44033
  ]
41168
44034
  }
41169
44035
  },
44036
+ "/registries": {
44037
+ "get": {
44038
+ "operationId": "listRegistryConnections",
44039
+ "parameters": [
44040
+ {
44041
+ "in": "query",
44042
+ "name": "limit",
44043
+ "required": false,
44044
+ "schema": {
44045
+ "maximum": 200,
44046
+ "minimum": 1,
44047
+ "type": "integer"
44048
+ }
44049
+ }
44050
+ ],
44051
+ "responses": {
44052
+ "200": {
44053
+ "content": {
44054
+ "application/json": {
44055
+ "schema": {
44056
+ "$ref": "#/components/schemas/RegistryConnectionListEnvelope"
44057
+ }
44058
+ }
44059
+ },
44060
+ "description": "Registry connections visible to the current principal."
44061
+ },
44062
+ "403": {
44063
+ "$ref": "#/components/responses/Error"
44064
+ }
44065
+ },
44066
+ "tags": [
44067
+ "Delivery"
44068
+ ]
44069
+ },
44070
+ "post": {
44071
+ "operationId": "createRegistryConnection",
44072
+ "requestBody": {
44073
+ "content": {
44074
+ "application/json": {
44075
+ "schema": {
44076
+ "$ref": "#/components/schemas/RegistryConnectionInput"
44077
+ }
44078
+ }
44079
+ },
44080
+ "required": true
44081
+ },
44082
+ "responses": {
44083
+ "201": {
44084
+ "content": {
44085
+ "application/json": {
44086
+ "schema": {
44087
+ "$ref": "#/components/schemas/RegistryConnectionEnvelope"
44088
+ }
44089
+ }
44090
+ },
44091
+ "description": "Created registry connection."
44092
+ },
44093
+ "400": {
44094
+ "$ref": "#/components/responses/Error"
44095
+ },
44096
+ "403": {
44097
+ "$ref": "#/components/responses/Error"
44098
+ }
44099
+ },
44100
+ "tags": [
44101
+ "Delivery"
44102
+ ]
44103
+ }
44104
+ },
44105
+ "/registries/{connectionID}": {
44106
+ "delete": {
44107
+ "operationId": "deleteRegistryConnection",
44108
+ "parameters": [
44109
+ {
44110
+ "$ref": "#/components/parameters/RegistryConnectionID"
44111
+ }
44112
+ ],
44113
+ "responses": {
44114
+ "200": {
44115
+ "content": {
44116
+ "application/json": {
44117
+ "schema": {
44118
+ "$ref": "#/components/schemas/OperationStatus"
44119
+ }
44120
+ }
44121
+ },
44122
+ "description": "Deleted registry connection."
44123
+ },
44124
+ "403": {
44125
+ "$ref": "#/components/responses/Error"
44126
+ },
44127
+ "404": {
44128
+ "$ref": "#/components/responses/Error"
44129
+ }
44130
+ },
44131
+ "tags": [
44132
+ "Delivery"
44133
+ ]
44134
+ },
44135
+ "put": {
44136
+ "operationId": "updateRegistryConnection",
44137
+ "parameters": [
44138
+ {
44139
+ "$ref": "#/components/parameters/RegistryConnectionID"
44140
+ }
44141
+ ],
44142
+ "requestBody": {
44143
+ "content": {
44144
+ "application/json": {
44145
+ "schema": {
44146
+ "$ref": "#/components/schemas/RegistryConnectionInput"
44147
+ }
44148
+ }
44149
+ },
44150
+ "required": true
44151
+ },
44152
+ "responses": {
44153
+ "200": {
44154
+ "content": {
44155
+ "application/json": {
44156
+ "schema": {
44157
+ "$ref": "#/components/schemas/RegistryConnectionEnvelope"
44158
+ }
44159
+ }
44160
+ },
44161
+ "description": "Updated registry connection."
44162
+ },
44163
+ "400": {
44164
+ "$ref": "#/components/responses/Error"
44165
+ },
44166
+ "403": {
44167
+ "$ref": "#/components/responses/Error"
44168
+ },
44169
+ "404": {
44170
+ "$ref": "#/components/responses/Error"
44171
+ }
44172
+ },
44173
+ "tags": [
44174
+ "Delivery"
44175
+ ]
44176
+ }
44177
+ },
41170
44178
  "/repositories": {
41171
44179
  "get": {
41172
44180
  "operationId": "listRepositories",
@@ -42139,6 +45147,271 @@
42139
45147
  ]
42140
45148
  }
42141
45149
  },
45150
+ "/software/packages": {
45151
+ "get": {
45152
+ "operationId": "listSoftwarePackages",
45153
+ "parameters": [
45154
+ {
45155
+ "in": "query",
45156
+ "name": "platform",
45157
+ "required": false,
45158
+ "schema": {
45159
+ "maxLength": 64,
45160
+ "type": "string"
45161
+ }
45162
+ },
45163
+ {
45164
+ "in": "query",
45165
+ "name": "arch",
45166
+ "required": false,
45167
+ "schema": {
45168
+ "maxLength": 64,
45169
+ "type": "string"
45170
+ }
45171
+ },
45172
+ {
45173
+ "in": "query",
45174
+ "name": "cursor",
45175
+ "required": false,
45176
+ "schema": {
45177
+ "maxLength": 256,
45178
+ "type": "string"
45179
+ }
45180
+ },
45181
+ {
45182
+ "in": "query",
45183
+ "name": "limit",
45184
+ "required": false,
45185
+ "schema": {
45186
+ "maximum": 200,
45187
+ "minimum": 1,
45188
+ "type": "integer"
45189
+ }
45190
+ }
45191
+ ],
45192
+ "responses": {
45193
+ "200": {
45194
+ "content": {
45195
+ "application/json": {
45196
+ "schema": {
45197
+ "$ref": "#/components/schemas/SoftwarePackageListEnvelope"
45198
+ }
45199
+ }
45200
+ },
45201
+ "description": "Software packages visible to the current principal."
45202
+ },
45203
+ "401": {
45204
+ "$ref": "#/components/responses/Error"
45205
+ },
45206
+ "403": {
45207
+ "$ref": "#/components/responses/Error"
45208
+ }
45209
+ },
45210
+ "tags": [
45211
+ "Software"
45212
+ ]
45213
+ },
45214
+ "post": {
45215
+ "operationId": "uploadSoftwarePackage",
45216
+ "requestBody": {
45217
+ "content": {
45218
+ "multipart/form-data": {
45219
+ "schema": {
45220
+ "$ref": "#/components/schemas/SoftwarePackageUploadRequest"
45221
+ }
45222
+ }
45223
+ },
45224
+ "required": true
45225
+ },
45226
+ "responses": {
45227
+ "201": {
45228
+ "content": {
45229
+ "application/json": {
45230
+ "schema": {
45231
+ "$ref": "#/components/schemas/SoftwarePackageEnvelope"
45232
+ }
45233
+ }
45234
+ },
45235
+ "description": "Software package uploaded and published."
45236
+ },
45237
+ "400": {
45238
+ "$ref": "#/components/responses/Error"
45239
+ },
45240
+ "401": {
45241
+ "$ref": "#/components/responses/Error"
45242
+ },
45243
+ "403": {
45244
+ "$ref": "#/components/responses/Error"
45245
+ },
45246
+ "409": {
45247
+ "$ref": "#/components/responses/Error"
45248
+ },
45249
+ "413": {
45250
+ "$ref": "#/components/responses/Error"
45251
+ }
45252
+ },
45253
+ "tags": [
45254
+ "Software"
45255
+ ]
45256
+ }
45257
+ },
45258
+ "/software/packages/{packageID}": {
45259
+ "delete": {
45260
+ "operationId": "deleteSoftwarePackage",
45261
+ "parameters": [
45262
+ {
45263
+ "$ref": "#/components/parameters/SoftwarePackageID"
45264
+ }
45265
+ ],
45266
+ "responses": {
45267
+ "204": {
45268
+ "description": "Software package deleted."
45269
+ },
45270
+ "401": {
45271
+ "$ref": "#/components/responses/Error"
45272
+ },
45273
+ "403": {
45274
+ "$ref": "#/components/responses/Error"
45275
+ },
45276
+ "404": {
45277
+ "$ref": "#/components/responses/Error"
45278
+ }
45279
+ },
45280
+ "tags": [
45281
+ "Software"
45282
+ ]
45283
+ }
45284
+ },
45285
+ "/software/packages/{packageID}/download": {
45286
+ "get": {
45287
+ "operationId": "downloadSoftwarePackage",
45288
+ "parameters": [
45289
+ {
45290
+ "$ref": "#/components/parameters/SoftwarePackageID"
45291
+ }
45292
+ ],
45293
+ "responses": {
45294
+ "200": {
45295
+ "content": {
45296
+ "application/octet-stream": {
45297
+ "schema": {
45298
+ "format": "binary",
45299
+ "type": "string"
45300
+ }
45301
+ }
45302
+ },
45303
+ "description": "Software package binary."
45304
+ },
45305
+ "401": {
45306
+ "$ref": "#/components/responses/Error"
45307
+ },
45308
+ "403": {
45309
+ "$ref": "#/components/responses/Error"
45310
+ },
45311
+ "404": {
45312
+ "$ref": "#/components/responses/Error"
45313
+ }
45314
+ },
45315
+ "tags": [
45316
+ "Software"
45317
+ ]
45318
+ }
45319
+ },
45320
+ "/software/packages/import": {
45321
+ "post": {
45322
+ "operationId": "importSoftwarePackage",
45323
+ "requestBody": {
45324
+ "content": {
45325
+ "application/json": {
45326
+ "schema": {
45327
+ "$ref": "#/components/schemas/SoftwarePackageURLImportRequest"
45328
+ }
45329
+ }
45330
+ },
45331
+ "required": true
45332
+ },
45333
+ "responses": {
45334
+ "201": {
45335
+ "content": {
45336
+ "application/json": {
45337
+ "schema": {
45338
+ "$ref": "#/components/schemas/SoftwarePackageEnvelope"
45339
+ }
45340
+ }
45341
+ },
45342
+ "description": "Software package downloaded from the source URL and published."
45343
+ },
45344
+ "400": {
45345
+ "$ref": "#/components/responses/Error"
45346
+ },
45347
+ "401": {
45348
+ "$ref": "#/components/responses/Error"
45349
+ },
45350
+ "403": {
45351
+ "$ref": "#/components/responses/Error"
45352
+ },
45353
+ "409": {
45354
+ "$ref": "#/components/responses/Error"
45355
+ },
45356
+ "413": {
45357
+ "$ref": "#/components/responses/Error"
45358
+ }
45359
+ },
45360
+ "tags": [
45361
+ "Software"
45362
+ ]
45363
+ }
45364
+ },
45365
+ "/software/storage": {
45366
+ "get": {
45367
+ "operationId": "getSoftwareStorage",
45368
+ "parameters": [
45369
+ {
45370
+ "in": "query",
45371
+ "name": "cursor",
45372
+ "required": false,
45373
+ "schema": {
45374
+ "maxLength": 256,
45375
+ "type": "string"
45376
+ }
45377
+ },
45378
+ {
45379
+ "in": "query",
45380
+ "name": "limit",
45381
+ "required": false,
45382
+ "schema": {
45383
+ "maximum": 200,
45384
+ "minimum": 1,
45385
+ "type": "integer"
45386
+ }
45387
+ }
45388
+ ],
45389
+ "responses": {
45390
+ "200": {
45391
+ "content": {
45392
+ "application/json": {
45393
+ "schema": {
45394
+ "$ref": "#/components/schemas/SoftwareStorageEnvelope"
45395
+ }
45396
+ }
45397
+ },
45398
+ "description": "Managed software storage summary and object records."
45399
+ },
45400
+ "400": {
45401
+ "$ref": "#/components/responses/Error"
45402
+ },
45403
+ "401": {
45404
+ "$ref": "#/components/responses/Error"
45405
+ },
45406
+ "403": {
45407
+ "$ref": "#/components/responses/Error"
45408
+ }
45409
+ },
45410
+ "tags": [
45411
+ "Software"
45412
+ ]
45413
+ }
45414
+ },
42142
45415
  "/source-connections": {
42143
45416
  "get": {
42144
45417
  "operationId": "listSourceConnections",
@@ -43010,6 +46283,9 @@
43010
46283
  {
43011
46284
  "name": "Plugins"
43012
46285
  },
46286
+ {
46287
+ "name": "Software"
46288
+ },
43013
46289
  {
43014
46290
  "name": "Access"
43015
46291
  },