@opensoha/contracts 0.1.14 → 0.1.16

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (111) hide show
  1. package/auth/catalog_generated.go +2 -2
  2. package/auth/permission-catalog.json +113 -8
  3. package/compat/json-schema-ecosystem-0.1.0.json +1 -1
  4. package/compat/openapi-loose-boundaries-0.1.0.json +58 -1
  5. package/fixtures/openapi/AISkillsSettingsEnvelope/invalid/missing-registry.json +3 -0
  6. package/fixtures/openapi/AISkillsSettingsEnvelope/valid/registry.json +13 -0
  7. package/fixtures/openapi/AlertEventStreamSignal/invalid/missing-observed-at.json +4 -0
  8. package/fixtures/openapi/AlertEventStreamSignal/valid/changed.json +9 -0
  9. package/fixtures/openapi/AlertRuleEnvelope/invalid/missing-data.json +1 -0
  10. package/fixtures/openapi/AlertRuleEnvelope/valid/metrics.json +11 -0
  11. package/fixtures/openapi/AlertRuleInput/invalid/missing-name.json +3 -0
  12. package/fixtures/openapi/AlertRuleInput/valid/metrics.json +25 -0
  13. package/fixtures/openapi/AlertRuleRunListEnvelope/invalid/missing-rule-id.json +12 -0
  14. package/fixtures/openapi/AlertRuleRunListEnvelope/valid/items.json +13 -0
  15. package/fixtures/openapi/AlertRuleTestResultEnvelope/invalid/missing-executed-at.json +5 -0
  16. package/fixtures/openapi/AlertRuleTestResultEnvelope/valid/clear.json +10 -0
  17. package/fixtures/openapi/ApplicationRuntimeEnvironment/invalid/unknown-status.json +7 -0
  18. package/fixtures/openapi/ApplicationRuntimeEnvironment/valid/unavailable.json +7 -0
  19. package/fixtures/openapi/ApplicationWorkflowInput/invalid/owner-fields.json +7 -0
  20. package/fixtures/openapi/ApplicationWorkflowInput/valid/minimal.json +9 -0
  21. package/fixtures/openapi/BrandingAssetUploadEnvelope/valid/svg-data-url.json +5 -0
  22. package/fixtures/openapi/BrowserHandoffCompletionEnvelope/invalid/token-leak.json +7 -0
  23. package/fixtures/openapi/BrowserHandoffCompletionEnvelope/valid/completed.json +6 -0
  24. package/fixtures/openapi/BrowserHandoffEnvelope/invalid/missing-principal.json +12 -0
  25. package/fixtures/openapi/BrowserHandoffEnvelope/valid/pending.json +11 -0
  26. package/fixtures/openapi/ChangePasswordRequest/invalid/missing-current-password.json +3 -0
  27. package/fixtures/openapi/ChangePasswordRequest/invalid/short-new-password.json +4 -0
  28. package/fixtures/openapi/ChangePasswordRequest/valid/password.json +4 -0
  29. package/fixtures/openapi/ComputeOverviewEnvelope/valid/partial.json +6 -0
  30. package/fixtures/openapi/ComputeTaskListEnvelope/invalid/progress-overflow.json +21 -0
  31. package/fixtures/openapi/ComputeTaskListEnvelope/valid/running.json +15 -0
  32. package/fixtures/openapi/ComputeTaskStreamEvent/invalid/missing-observed-at.json +3 -0
  33. package/fixtures/openapi/ComputeTaskStreamEvent/valid/snapshot.json +27 -0
  34. package/fixtures/openapi/DesktopAuthAttemptCreateRequest/invalid/https-redirect.json +6 -0
  35. package/fixtures/openapi/DesktopAuthAttemptCreateRequest/invalid/localhost-redirect.json +6 -0
  36. package/fixtures/openapi/DesktopAuthAttemptCreateRequest/invalid/plain-challenge.json +6 -0
  37. package/fixtures/openapi/DesktopAuthAttemptCreateRequest/invalid/privileged-port.json +6 -0
  38. package/fixtures/openapi/DesktopAuthAttemptCreateRequest/invalid/short-callback.json +6 -0
  39. package/fixtures/openapi/DesktopAuthAttemptCreateRequest/valid/loopback.json +6 -0
  40. package/fixtures/openapi/DesktopAuthAttemptEnvelope/invalid/missing-expiry.json +6 -0
  41. package/fixtures/openapi/DesktopAuthAttemptEnvelope/valid/attempt.json +7 -0
  42. package/fixtures/openapi/DesktopAuthAttemptExchangeRequest/invalid/short-verifier.json +4 -0
  43. package/fixtures/openapi/DesktopAuthAttemptExchangeRequest/valid/exchange.json +4 -0
  44. package/fixtures/openapi/IdentityApplication/invalid/missing-id.json +7 -0
  45. package/fixtures/openapi/IdentityApplication/valid/full.json +30 -0
  46. package/fixtures/openapi/IdentityApplicationEnvelope/invalid/missing-data.json +1 -0
  47. package/fixtures/openapi/IdentityApplicationEnvelope/valid/minimal.json +10 -0
  48. package/fixtures/openapi/IdentityApplicationLaunchListEnvelope/invalid/missing-user.json +11 -0
  49. package/fixtures/openapi/IdentityApplicationLaunchListEnvelope/valid/minimal.json +12 -0
  50. package/fixtures/openapi/KubernetesResourceGraphEnvelope/invalid/edge-without-target.json +16 -0
  51. package/fixtures/openapi/KubernetesResourceGraphEnvelope/valid/deployment.json +53 -0
  52. package/fixtures/openapi/KubernetesResourceSearchEnvelope/invalid/missing-resource.json +10 -0
  53. package/fixtures/openapi/KubernetesResourceSearchEnvelope/valid/mixed.json +29 -0
  54. package/fixtures/openapi/KubernetesResourceStreamEvent/invalid/missing-observed-at.json +5 -0
  55. package/fixtures/openapi/KubernetesResourceStreamEvent/valid/modified.json +18 -0
  56. package/fixtures/openapi/KubernetesSecurityPostureEnvelope/invalid/finding-without-severity.json +24 -0
  57. package/fixtures/openapi/KubernetesSecurityPostureEnvelope/valid/kubescape.json +34 -0
  58. package/fixtures/openapi/KubernetesService/invalid/node-port-out-of-range.json +14 -0
  59. package/fixtures/openapi/KubernetesService/valid/port-mappings.json +22 -0
  60. package/fixtures/openapi/KubernetesServiceDetail/invalid/empty-target-port.json +13 -0
  61. package/fixtures/openapi/KubernetesServiceDetail/valid/port-mappings.json +22 -0
  62. package/fixtures/openapi/LogQuery/invalid/empty-data-source-id.json +7 -0
  63. package/fixtures/openapi/LogQuery/valid/durable-data-source.json +14 -0
  64. package/fixtures/openapi/ManifestPackage/invalid/missing-application.json +12 -0
  65. package/fixtures/openapi/ManifestPackage/valid/service-scoped.json +29 -0
  66. package/fixtures/openapi/OIDCClientInput/valid/generated-client-id.json +8 -0
  67. package/fixtures/openapi/OIDCClientSecretRevealEnvelope/invalid/missing-secret.json +6 -0
  68. package/fixtures/openapi/OIDCClientSecretRevealEnvelope/valid/reveal.json +7 -0
  69. package/fixtures/openapi/OperationalPlanEnvelope/invalid/kubernetes-owner-without-manager.json +29 -0
  70. package/fixtures/openapi/OperationalPlanEnvelope/valid/kubernetes-resource-update.json +30 -0
  71. package/fixtures/openapi/PasswordChangeResult/invalid/unexpected-status.json +3 -0
  72. package/fixtures/openapi/PasswordChangeResult/valid/ok.json +3 -0
  73. package/fixtures/openapi/PortalApplicationListEnvelope/invalid/missing-items.json +1 -0
  74. package/fixtures/openapi/PortalApplicationListEnvelope/valid/minimal.json +12 -0
  75. package/fixtures/openapi/PortalBootstrapEnvelope/invalid/missing-security.json +17 -0
  76. package/fixtures/openapi/PortalBootstrapEnvelope/valid/minimal.json +31 -0
  77. package/fixtures/openapi/PortalLaunchDecisionEnvelope/invalid/missing-launch-url.json +14 -0
  78. package/fixtures/openapi/PortalLaunchDecisionEnvelope/valid/desktop-handoff.json +16 -0
  79. package/fixtures/openapi/PortalLaunchRequest/invalid/unknown-surface.json +3 -0
  80. package/fixtures/openapi/PortalLaunchRequest/valid/default-web.json +1 -0
  81. package/fixtures/openapi/PortalLaunchRequest/valid/desktop.json +3 -0
  82. package/fixtures/openapi/PortalSecuritySummaryEnvelope/invalid/missing-session-count.json +15 -0
  83. package/fixtures/openapi/PortalSecuritySummaryEnvelope/valid/minimal.json +16 -0
  84. package/fixtures/openapi/ScopeGrantInput/invalid/delivery-missing-business-line.json +7 -0
  85. package/fixtures/openapi/ScopeGrantInput/invalid/platform-missing-clusters.json +7 -0
  86. package/fixtures/openapi/ScopeGrantInput/valid/platform.json +8 -0
  87. package/fixtures/openapi/SoftwarePackage/valid/software-package.json +6 -0
  88. package/fixtures/openapi/SoftwarePackageDownloadRecord/invalid/negative-duration.json +6 -0
  89. package/fixtures/openapi/SoftwarePackageDownloadRecord/valid/software-package-download-record.json +8 -0
  90. package/fixtures/openapi/SoftwarePackageURLImportRequest/valid/software-package-url-import-request.json +4 -0
  91. package/fixtures/openapi/SoftwareStorage/invalid/software-storage.json +1 -1
  92. package/fixtures/openapi/SoftwareStorage/valid/software-storage.json +13 -1
  93. package/fixtures/openapi/SystemIntegrationCreateRequest/invalid/s3-storage-missing-name.json +5 -0
  94. package/fixtures/openapi/SystemIntegrationCreateRequest/valid/s3-software-storage.json +18 -0
  95. package/fixtures/openapi/UpdateProfileRequest/invalid/invalid-avatar-fit.json +5 -0
  96. package/fixtures/openapi/UpdateProfileRequest/invalid/missing-email.json +3 -0
  97. package/fixtures/openapi/UpdateProfileRequest/valid/profile.json +7 -0
  98. package/fixtures/openapi/WorkbenchAgentRunListEnvelope/invalid/callback-token.json +17 -0
  99. package/fixtures/openapi/WorkbenchAgentRunListEnvelope/valid/session-scoped.json +17 -0
  100. package/fixtures/openapi/WorkbenchSessionEnvelope/invalid/missing-owner.json +8 -0
  101. package/fixtures/openapi/WorkbenchSessionEnvelope/valid/current.json +17 -0
  102. package/gen/go/sohaapi/client.go +210 -5
  103. package/gen/go/sohaapi/client_test.go +128 -5
  104. package/gen/go/sohaapi/types.go +2820 -190
  105. package/gen/go/sohaapi/types_test.go +62 -0
  106. package/gen/ts/sohaapi/index.ts +9118 -4206
  107. package/openapi/soha-api.json +16369 -6935
  108. package/openapi/soha-api.yaml +12986 -8319
  109. package/openapi/spec_generated.go +3 -3
  110. package/package.json +1 -1
  111. package/resource/models.go +197 -0
@@ -6,8 +6,8 @@ import _ "embed"
6
6
 
7
7
  const (
8
8
  PermissionCatalogVersion = "2.0.0"
9
- PermissionCatalogContentSHA256 = "0efe8f496fa0fb29703584586f9306d04fdb5b9a38eaea78532107698230f609"
10
- PermissionCatalogSHA256 = "5f1d8b49fb4155473f61ff255002ec7a13e3f63d718d5f9fc592daa93da610df"
9
+ PermissionCatalogContentSHA256 = "5aa6fa361c2ab8d987415fb1eb93218510deb9359a68212dfe86655dbfaeea5e"
10
+ PermissionCatalogSHA256 = "01c80a71427e3d7f4898212fb1667405c27f1b798318d9eac86ece8262cd188c"
11
11
  )
12
12
 
13
13
  //go:embed permission-catalog.json
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "schemaVersion": "authorization.opensoha.io/v1",
3
3
  "catalogVersion": "2.0.0",
4
- "contentHash": "sha256:0efe8f496fa0fb29703584586f9306d04fdb5b9a38eaea78532107698230f609",
4
+ "contentHash": "sha256:5aa6fa361c2ab8d987415fb1eb93218510deb9359a68212dfe86655dbfaeea5e",
5
5
  "permissions": [
6
6
  {
7
7
  "key": "access.directory.create",
@@ -943,6 +943,70 @@
943
943
  "status": "active",
944
944
  "assignable": true
945
945
  },
946
+ {
947
+ "key": "ai.data-sources.create",
948
+ "domain": "ai",
949
+ "resource": "data-sources",
950
+ "action": "create",
951
+ "displayName": "创建 AI 数据源",
952
+ "riskLevel": "mutate",
953
+ "scopeKinds": [
954
+ "tenant",
955
+ "workspace",
956
+ "resource"
957
+ ],
958
+ "approvalPolicy": "never",
959
+ "status": "active",
960
+ "assignable": true
961
+ },
962
+ {
963
+ "key": "ai.data-sources.update",
964
+ "domain": "ai",
965
+ "resource": "data-sources",
966
+ "action": "update",
967
+ "displayName": "修改 AI 数据源",
968
+ "riskLevel": "mutate",
969
+ "scopeKinds": [
970
+ "tenant",
971
+ "workspace",
972
+ "resource"
973
+ ],
974
+ "approvalPolicy": "never",
975
+ "status": "active",
976
+ "assignable": true
977
+ },
978
+ {
979
+ "key": "ai.data-sources.validate",
980
+ "domain": "ai",
981
+ "resource": "data-sources",
982
+ "action": "validate",
983
+ "displayName": "校验 AI 数据源",
984
+ "riskLevel": "mutate",
985
+ "scopeKinds": [
986
+ "tenant",
987
+ "workspace",
988
+ "resource"
989
+ ],
990
+ "approvalPolicy": "never",
991
+ "status": "active",
992
+ "assignable": true
993
+ },
994
+ {
995
+ "key": "ai.data-sources.view",
996
+ "domain": "ai",
997
+ "resource": "data-sources",
998
+ "action": "view",
999
+ "displayName": "查看 AI 数据源",
1000
+ "riskLevel": "read",
1001
+ "scopeKinds": [
1002
+ "tenant",
1003
+ "workspace",
1004
+ "resource"
1005
+ ],
1006
+ "approvalPolicy": "never",
1007
+ "status": "active",
1008
+ "assignable": true
1009
+ },
946
1010
  {
947
1011
  "key": "ai.environments.create",
948
1012
  "domain": "ai",
@@ -5456,6 +5520,26 @@
5456
5520
  "status": "active",
5457
5521
  "assignable": true
5458
5522
  },
5523
+ {
5524
+ "key": "platform.access-control.access-reviews.execute",
5525
+ "domain": "platform",
5526
+ "resource": "access-control.access-reviews",
5527
+ "action": "execute",
5528
+ "displayName": "执行 Kubernetes 有效权限检查",
5529
+ "riskLevel": "read",
5530
+ "scopeKinds": [
5531
+ "workspace",
5532
+ "cluster",
5533
+ "namespace",
5534
+ "resource"
5535
+ ],
5536
+ "approvalPolicy": "never",
5537
+ "status": "active",
5538
+ "assignable": true,
5539
+ "legacyAliases": [
5540
+ "platform.access-control.view"
5541
+ ]
5542
+ },
5459
5543
  {
5460
5544
  "key": "platform.access-control.cluster-role-bindings.create",
5461
5545
  "domain": "platform",
@@ -5897,6 +5981,7 @@
5897
5981
  "status": "legacy",
5898
5982
  "assignable": false,
5899
5983
  "replacedBy": [
5984
+ "platform.access-control.access-reviews.execute",
5900
5985
  "platform.access-control.cluster-role-bindings.view",
5901
5986
  "platform.access-control.cluster-roles.view",
5902
5987
  "platform.access-control.role-bindings.view",
@@ -7266,6 +7351,25 @@
7266
7351
  "delete"
7267
7352
  ]
7268
7353
  },
7354
+ {
7355
+ "key": "platform.helm.releases.rollback",
7356
+ "domain": "platform",
7357
+ "resource": "helm.releases",
7358
+ "action": "rollback",
7359
+ "displayName": "回滚 Kubernetes HelmRelease",
7360
+ "riskLevel": "high",
7361
+ "scopeKinds": [
7362
+ "cluster",
7363
+ "namespace",
7364
+ "resource"
7365
+ ],
7366
+ "approvalPolicy": "eligible",
7367
+ "status": "active",
7368
+ "assignable": true,
7369
+ "legacyCapabilities": [
7370
+ "rollback"
7371
+ ]
7372
+ },
7269
7373
  {
7270
7374
  "key": "platform.helm.releases.update",
7271
7375
  "domain": "platform",
@@ -10388,9 +10492,9 @@
10388
10492
  "replacedBy": [
10389
10493
  "virtualization.clusters.create",
10390
10494
  "virtualization.clusters.delete",
10391
- "virtualization.clusters.sync",
10392
10495
  "virtualization.clusters.test",
10393
- "virtualization.clusters.update"
10496
+ "virtualization.clusters.update",
10497
+ "virtualization.sync.sync"
10394
10498
  ]
10395
10499
  },
10396
10500
  {
@@ -10405,10 +10509,10 @@
10405
10509
  "resource"
10406
10510
  ],
10407
10511
  "approvalPolicy": "never",
10408
- "status": "active",
10409
- "assignable": true,
10410
- "legacyAliases": [
10411
- "virtualization.clusters.manage"
10512
+ "status": "legacy",
10513
+ "assignable": false,
10514
+ "replacedBy": [
10515
+ "virtualization.sync.sync"
10412
10516
  ]
10413
10517
  },
10414
10518
  {
@@ -10773,6 +10877,7 @@
10773
10877
  "status": "active",
10774
10878
  "assignable": true,
10775
10879
  "legacyAliases": [
10880
+ "virtualization.clusters.sync",
10776
10881
  "virtualization.sync.manage"
10777
10882
  ]
10778
10883
  },
@@ -10964,7 +11069,7 @@
10964
11069
  "domain": "workbench",
10965
11070
  "resource": "delivery",
10966
11071
  "action": "view",
10967
- "displayName": "访问应用交付工作台",
11072
+ "displayName": "访问持续交付工作台",
10968
11073
  "riskLevel": "read",
10969
11074
  "scopeKinds": [
10970
11075
  "tenant",
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "0.1.14",
2
+ "version": "0.1.16",
3
3
  "schemas": {
4
4
  "plugins/plugin-manifest.schema.json": {
5
5
  "rootRequired": ["id", "name", "publisher", "type", "version"],
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "0.1.14",
2
+ "version": "0.1.16",
3
3
  "generatedFrom": "openapi/soha-api.yaml",
4
4
  "entries": [
5
5
  {
@@ -170,6 +170,10 @@
170
170
  "kind": "additionalPropertiesTrue",
171
171
  "path": "components/schemas/ApplicationServiceInput/properties/metadata/additionalProperties"
172
172
  },
173
+ {
174
+ "kind": "additionalPropertiesTrue",
175
+ "path": "components/schemas/ApplicationWorkflowInput/properties/definition/additionalProperties"
176
+ },
173
177
  {
174
178
  "kind": "additionalPropertiesTrue",
175
179
  "path": "components/schemas/ApprovalRequest/properties/relatedIds/additionalProperties"
@@ -206,6 +210,14 @@
206
210
  "kind": "additionalPropertiesTrue",
207
211
  "path": "components/schemas/AuthBootstrapEnvelope/properties/data/properties/permissionSnapshot/additionalProperties"
208
212
  },
213
+ {
214
+ "kind": "additionalPropertiesTrue",
215
+ "path": "components/schemas/IdentityApplication/properties/metadata/additionalProperties"
216
+ },
217
+ {
218
+ "kind": "additionalPropertiesTrue",
219
+ "path": "components/schemas/IdentityApplicationInput/properties/metadata/additionalProperties"
220
+ },
209
221
  {
210
222
  "kind": "additionalPropertiesTrue",
211
223
  "path": "components/schemas/BuildPolicy/properties/buildArgs/additionalProperties"
@@ -666,6 +678,51 @@
666
678
  "path": "components/schemas/ApprovalRequest/properties/output",
667
679
  "target": "#/components/schemas/AnyValue"
668
680
  },
681
+ {
682
+ "kind": "schemaRef",
683
+ "path": "components/schemas/AlertRule/properties/datasourceSelector",
684
+ "target": "#/components/schemas/GenericObject"
685
+ },
686
+ {
687
+ "kind": "schemaRef",
688
+ "path": "components/schemas/AlertRule/properties/querySpec",
689
+ "target": "#/components/schemas/GenericObject"
690
+ },
691
+ {
692
+ "kind": "schemaRef",
693
+ "path": "components/schemas/AlertRule/properties/thresholdSpec",
694
+ "target": "#/components/schemas/GenericObject"
695
+ },
696
+ {
697
+ "kind": "schemaRef",
698
+ "path": "components/schemas/AlertRuleInput/properties/datasourceSelector",
699
+ "target": "#/components/schemas/GenericObject"
700
+ },
701
+ {
702
+ "kind": "schemaRef",
703
+ "path": "components/schemas/AlertRuleInput/properties/querySpec",
704
+ "target": "#/components/schemas/GenericObject"
705
+ },
706
+ {
707
+ "kind": "schemaRef",
708
+ "path": "components/schemas/AlertRuleInput/properties/thresholdSpec",
709
+ "target": "#/components/schemas/GenericObject"
710
+ },
711
+ {
712
+ "kind": "schemaRef",
713
+ "path": "components/schemas/AlertRuleRun/properties/result",
714
+ "target": "#/components/schemas/GenericObject"
715
+ },
716
+ {
717
+ "kind": "schemaRef",
718
+ "path": "components/schemas/AlertRuleTestResult/properties/notificationPreview/items",
719
+ "target": "#/components/schemas/GenericObject"
720
+ },
721
+ {
722
+ "kind": "schemaRef",
723
+ "path": "components/schemas/AlertRuleTestResult/properties/samples/items",
724
+ "target": "#/components/schemas/GenericObject"
725
+ },
669
726
  {
670
727
  "kind": "schemaRef",
671
728
  "path": "components/schemas/DeliveryDraft/properties/executionHints",
@@ -0,0 +1,13 @@
1
+ {
2
+ "data": {
3
+ "skillsRegistry": [
4
+ {
5
+ "id": "observability-summary",
6
+ "name": "Observability Summary",
7
+ "category": "observability",
8
+ "enabled": true,
9
+ "scopes": ["cluster"]
10
+ }
11
+ ]
12
+ }
13
+ }
@@ -0,0 +1,4 @@
1
+ {
2
+ "type": "changed",
3
+ "eventId": "alert-1"
4
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "type": "changed",
3
+ "observedAt": "2026-08-23T08:00:00Z",
4
+ "clusterId": "cluster-a",
5
+ "namespace": "team-a",
6
+ "eventId": "alert-1",
7
+ "eventStatus": "firing",
8
+ "resyncRequired": false
9
+ }
@@ -0,0 +1,11 @@
1
+ {
2
+ "data": {
3
+ "id": "rule-checkout-errors",
4
+ "name": "Checkout error rate",
5
+ "ruleType": "metrics",
6
+ "forSeconds": 120,
7
+ "enabled": true,
8
+ "createdAt": "2026-08-31T00:00:00Z",
9
+ "updatedAt": "2026-08-31T00:05:00Z"
10
+ }
11
+ }
@@ -0,0 +1,3 @@
1
+ {
2
+ "ruleType": "metrics"
3
+ }
@@ -0,0 +1,25 @@
1
+ {
2
+ "name": "Checkout error rate",
3
+ "ruleType": "metrics",
4
+ "datasourceSelector": {
5
+ "id": "prometheus-main"
6
+ },
7
+ "querySpec": {
8
+ "metricKey": "http.server.errors"
9
+ },
10
+ "thresholdSpec": {
11
+ "operator": "gte",
12
+ "value": 5
13
+ },
14
+ "forSeconds": 120,
15
+ "groupBy": ["service"],
16
+ "labels": {
17
+ "severity": "critical"
18
+ },
19
+ "annotations": {
20
+ "summary": "Checkout error rate is elevated"
21
+ },
22
+ "notificationPolicyId": "policy-primary",
23
+ "healingPolicyIds": ["healing-checkout"],
24
+ "enabled": true
25
+ }
@@ -0,0 +1,12 @@
1
+ {
2
+ "items": [
3
+ {
4
+ "id": "run-1",
5
+ "status": "completed",
6
+ "matched": false,
7
+ "durationMs": 42,
8
+ "createdAt": "2026-08-31T00:06:00Z",
9
+ "updatedAt": "2026-08-31T00:06:00Z"
10
+ }
11
+ ]
12
+ }
@@ -0,0 +1,13 @@
1
+ {
2
+ "items": [
3
+ {
4
+ "id": "run-1",
5
+ "ruleId": "rule-checkout-errors",
6
+ "status": "completed",
7
+ "matched": false,
8
+ "durationMs": 42,
9
+ "createdAt": "2026-08-31T00:06:00Z",
10
+ "updatedAt": "2026-08-31T00:06:00Z"
11
+ }
12
+ ]
13
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "data": {
3
+ "matched": false
4
+ }
5
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "data": {
3
+ "ruleId": "rule-checkout-errors",
4
+ "ruleType": "metrics",
5
+ "state": "clear",
6
+ "summary": "metrics threshold is clear",
7
+ "matched": false,
8
+ "executedAt": "2026-08-31T00:06:00Z"
9
+ }
10
+ }
@@ -0,0 +1,7 @@
1
+ {
2
+ "applicationEnvironmentId": "binding-1",
3
+ "environmentId": "production",
4
+ "requiresApproval": true,
5
+ "status": "offline",
6
+ "workloads": []
7
+ }
@@ -0,0 +1,7 @@
1
+ {
2
+ "applicationEnvironmentId": "binding-1",
3
+ "environmentId": "production",
4
+ "requiresApproval": true,
5
+ "status": "unavailable",
6
+ "workloads": []
7
+ }
@@ -0,0 +1,7 @@
1
+ {
2
+ "key": "application-app-2",
3
+ "name": "Production release",
4
+ "category": "application:app-2",
5
+ "definition": {},
6
+ "enabled": true
7
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "name": "Production release",
3
+ "definition": {
4
+ "mode": "release_dag",
5
+ "nodes": [],
6
+ "edges": []
7
+ },
8
+ "enabled": true
9
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "data": {
3
+ "url": "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg=="
4
+ }
5
+ }
@@ -0,0 +1,7 @@
1
+ {
2
+ "data": {
3
+ "status": "completed",
4
+ "destinationUrl": "/oauth2/authorize?client_id=console",
5
+ "accessToken": "must-not-be-returned"
6
+ }
7
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "data": {
3
+ "status": "completed",
4
+ "destinationUrl": "/oauth2/authorize?client_id=console"
5
+ }
6
+ }
@@ -0,0 +1,12 @@
1
+ {
2
+ "data": {
3
+ "application": {
4
+ "id": "app-1",
5
+ "name": "Soha Console"
6
+ },
7
+ "accountName": "OpenSoha",
8
+ "email": "must-not-be-exposed@example.com",
9
+ "status": "pending",
10
+ "expiresAt": "2026-08-31T00:01:00Z"
11
+ }
12
+ }
@@ -0,0 +1,11 @@
1
+ {
2
+ "data": {
3
+ "application": {
4
+ "id": "app-1",
5
+ "name": "Soha Console"
6
+ },
7
+ "accountName": "OpenSoha",
8
+ "status": "pending",
9
+ "expiresAt": "2026-08-31T00:01:00Z"
10
+ }
11
+ }
@@ -0,0 +1,3 @@
1
+ {
2
+ "newPassword": "new-password"
3
+ }
@@ -0,0 +1,4 @@
1
+ {
2
+ "currentPassword": "current-password",
3
+ "newPassword": "short"
4
+ }
@@ -0,0 +1,4 @@
1
+ {
2
+ "currentPassword": "current-password",
3
+ "newPassword": "new-password"
4
+ }
@@ -27,6 +27,12 @@
27
27
  "checkedAt": "2026-07-14T02:00:00Z"
28
28
  }
29
29
  ],
30
+ "generatedAt": "2026-07-14T02:00:01Z",
31
+ "freshness": {
32
+ "status": "fresh",
33
+ "observedAt": "2026-07-14T02:00:00Z",
34
+ "maxAgeSeconds": 120
35
+ },
30
36
  "partial": true,
31
37
  "warnings": [{ "code": "runtime_section_unavailable" }]
32
38
  }
@@ -0,0 +1,21 @@
1
+ {
2
+ "items": [
3
+ {
4
+ "id": "virtualization:task-1",
5
+ "domain": "virtualization",
6
+ "sourceType": "virtualization_task",
7
+ "sourceId": "task-1",
8
+ "kind": "vm.create",
9
+ "category": "lifecycle",
10
+ "normalizedStatus": "running",
11
+ "rawStatus": "running",
12
+ "resources": [],
13
+ "attemptCount": 1,
14
+ "cancelable": true,
15
+ "retryable": false,
16
+ "availableActions": ["cancel"],
17
+ "progress": 1.5,
18
+ "createdAt": "2026-07-14T02:00:00Z"
19
+ }
20
+ ]
21
+ }
@@ -23,6 +23,21 @@
23
23
  "cancelable": true,
24
24
  "retryable": false,
25
25
  "availableActions": ["logs", "cancel"],
26
+ "progress": 0.65,
27
+ "heartbeat": {
28
+ "status": "fresh",
29
+ "observedAt": "2026-07-14T02:00:08Z",
30
+ "timeoutSeconds": 30
31
+ },
32
+ "result": {
33
+ "status": "accepted",
34
+ "summary": "Provider accepted the VM create request."
35
+ },
36
+ "verification": {
37
+ "status": "pending",
38
+ "summary": "Waiting for the VM to become observable."
39
+ },
40
+ "auditRef": "audit-virtualization-task-1",
26
41
  "createdAt": "2026-07-14T02:00:00Z",
27
42
  "startedAt": "2026-07-14T02:00:01Z"
28
43
  }
@@ -0,0 +1,27 @@
1
+ {
2
+ "type": "snapshot",
3
+ "observedAt": "2026-07-14T02:00:08Z",
4
+ "sequence": 1,
5
+ "task": {
6
+ "id": "virtualization:task-1",
7
+ "domain": "virtualization",
8
+ "sourceType": "virtualization_task",
9
+ "sourceId": "task-1",
10
+ "kind": "vm.create",
11
+ "category": "lifecycle",
12
+ "normalizedStatus": "running",
13
+ "rawStatus": "running",
14
+ "resources": [],
15
+ "attemptCount": 1,
16
+ "cancelable": true,
17
+ "retryable": false,
18
+ "availableActions": ["logs", "cancel"],
19
+ "progress": 0.65,
20
+ "heartbeat": {
21
+ "status": "fresh",
22
+ "observedAt": "2026-07-14T02:00:08Z",
23
+ "timeoutSeconds": 30
24
+ },
25
+ "createdAt": "2026-07-14T02:00:00Z"
26
+ }
27
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "providerId": "corp-oidc",
3
+ "redirectUri": "https://127.0.0.1:49152/callback/T4I0wIrt0Pp4qABC",
4
+ "codeChallenge": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
5
+ "codeChallengeMethod": "S256"
6
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "providerId": "corp-oidc",
3
+ "redirectUri": "http://localhost:49152/callback/T4I0wIrt0Pp4qABC",
4
+ "codeChallenge": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
5
+ "codeChallengeMethod": "S256"
6
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "providerId": "corp-oidc",
3
+ "redirectUri": "http://127.0.0.1:49152/callback/T4I0wIrt0Pp4qABC",
4
+ "codeChallenge": "short",
5
+ "codeChallengeMethod": "plain"
6
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "providerId": "corp-oidc",
3
+ "redirectUri": "http://127.0.0.1:1023/callback/T4I0wIrt0Pp4qABC",
4
+ "codeChallenge": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
5
+ "codeChallengeMethod": "S256"
6
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "providerId": "corp-oidc",
3
+ "redirectUri": "http://127.0.0.1:49152/callback/short",
4
+ "codeChallenge": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
5
+ "codeChallengeMethod": "S256"
6
+ }