@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
@@ -0,0 +1,6 @@
1
+ {
2
+ "providerId": "corp-oidc",
3
+ "redirectUri": "http://127.0.0.1:49152/callback/T4I0wIrt0Pp4qABC",
4
+ "codeChallenge": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
5
+ "codeChallengeMethod": "S256"
6
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "data": {
3
+ "attemptId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
4
+ "authorizationUrl": "https://soha.example.com/api/v1/auth/desktop/attempts/3fa85f64-5717-4562-b3fc-2c963f66afa6/start"
5
+ }
6
+ }
@@ -0,0 +1,7 @@
1
+ {
2
+ "data": {
3
+ "attemptId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
4
+ "authorizationUrl": "https://soha.example.com/api/v1/auth/desktop/attempts/3fa85f64-5717-4562-b3fc-2c963f66afa6/start",
5
+ "expiresAt": "2026-08-20T12:00:00Z"
6
+ }
7
+ }
@@ -0,0 +1,4 @@
1
+ {
2
+ "code": "ZGVza3RvcC1jYWxsYmFjay1jb2Rl",
3
+ "codeVerifier": "short"
4
+ }
@@ -0,0 +1,4 @@
1
+ {
2
+ "code": "ZGVza3RvcC1jYWxsYmFjay1jb2Rl",
3
+ "codeVerifier": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
4
+ }
@@ -0,0 +1,7 @@
1
+ {
2
+ "name": "Example App",
3
+ "slug": "example-app",
4
+ "status": "enabled",
5
+ "createdAt": "2026-08-24T08:00:00Z",
6
+ "updatedAt": "2026-08-24T08:00:00Z"
7
+ }
@@ -0,0 +1,30 @@
1
+ {
2
+ "id": "app-example",
3
+ "name": "Example App",
4
+ "slug": "example-app",
5
+ "description": "Example identity application",
6
+ "iconUrl": "https://app.example.com/icon.png",
7
+ "tags": ["platform"],
8
+ "launchUrl": "https://app.example.com",
9
+ "providerId": "provider-example",
10
+ "providerType": "oidc",
11
+ "portalVisible": true,
12
+ "featured": false,
13
+ "sortOrder": 100,
14
+ "status": "enabled",
15
+ "metadata": {
16
+ "owner": "platform"
17
+ },
18
+ "assignments": [
19
+ {
20
+ "id": "assignment-example",
21
+ "applicationId": "app-example",
22
+ "subjectType": "role",
23
+ "subjectId": "platform-admin",
24
+ "effect": "allow",
25
+ "createdAt": "2026-08-24T08:00:00Z"
26
+ }
27
+ ],
28
+ "createdAt": "2026-08-24T08:00:00Z",
29
+ "updatedAt": "2026-08-24T08:00:00Z"
30
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "data": {
3
+ "id": "app-1",
4
+ "name": "Soha Console",
5
+ "slug": "soha-console",
6
+ "status": "enabled",
7
+ "createdAt": "2026-08-31T00:00:00Z",
8
+ "updatedAt": "2026-08-31T00:00:00Z"
9
+ }
10
+ }
@@ -0,0 +1,11 @@
1
+ {
2
+ "items": [
3
+ {
4
+ "id": "launch-1",
5
+ "applicationId": "app-1",
6
+ "providerType": "oidc",
7
+ "result": "allow",
8
+ "createdAt": "2026-08-31T00:00:00Z"
9
+ }
10
+ ]
11
+ }
@@ -0,0 +1,12 @@
1
+ {
2
+ "items": [
3
+ {
4
+ "id": "launch-1",
5
+ "applicationId": "app-1",
6
+ "userId": "user-1",
7
+ "providerType": "oidc",
8
+ "result": "allow",
9
+ "createdAt": "2026-08-31T00:00:00Z"
10
+ }
11
+ ]
12
+ }
@@ -0,0 +1,16 @@
1
+ {
2
+ "data": {
3
+ "clusterId": "cluster-a",
4
+ "generatedAt": "2026-08-23T08:00:00Z",
5
+ "nodes": [],
6
+ "edges": [
7
+ {
8
+ "id": "broken",
9
+ "sourceId": "a",
10
+ "relation": "owns"
11
+ }
12
+ ],
13
+ "evidence": [],
14
+ "warnings": []
15
+ }
16
+ }
@@ -0,0 +1,53 @@
1
+ {
2
+ "data": {
3
+ "clusterId": "cluster-a",
4
+ "namespace": "team-a",
5
+ "generatedAt": "2026-08-23T08:00:00Z",
6
+ "rootId": "apps/v1:Deployment:team-a/api",
7
+ "nodes": [
8
+ {
9
+ "id": "apps/v1:Deployment:team-a/api",
10
+ "resource": {
11
+ "clusterId": "cluster-a",
12
+ "apiVersion": "apps/v1",
13
+ "kind": "Deployment",
14
+ "name": "api",
15
+ "namespace": "team-a",
16
+ "scopeMode": "namespace"
17
+ },
18
+ "status": "healthy"
19
+ },
20
+ {
21
+ "id": "v1:Pod:team-a/api-1",
22
+ "resource": {
23
+ "clusterId": "cluster-a",
24
+ "apiVersion": "v1",
25
+ "kind": "Pod",
26
+ "name": "api-1",
27
+ "namespace": "team-a",
28
+ "scopeMode": "namespace"
29
+ },
30
+ "status": "Running"
31
+ }
32
+ ],
33
+ "edges": [
34
+ {
35
+ "id": "owns:deployment-api:pod-api-1",
36
+ "sourceId": "apps/v1:Deployment:team-a/api",
37
+ "targetId": "v1:Pod:team-a/api-1",
38
+ "relation": "owns"
39
+ }
40
+ ],
41
+ "evidence": [
42
+ {
43
+ "id": "event/team-a/api-1-scheduled",
44
+ "type": "kubernetes-event",
45
+ "severity": "info",
46
+ "summary": "Pod scheduled",
47
+ "observedAt": "2026-08-23T07:59:58Z",
48
+ "resourceId": "v1:Pod:team-a/api-1"
49
+ }
50
+ ],
51
+ "warnings": []
52
+ }
53
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "data": {
3
+ "items": [
4
+ {
5
+ "status": "Running"
6
+ }
7
+ ],
8
+ "truncated": false
9
+ }
10
+ }
@@ -0,0 +1,29 @@
1
+ {
2
+ "data": {
3
+ "items": [
4
+ {
5
+ "resource": {
6
+ "clusterId": "cluster-a",
7
+ "apiVersion": "v1",
8
+ "kind": "Pod",
9
+ "name": "api-7c8d9f",
10
+ "namespace": "production",
11
+ "scopeMode": "namespace",
12
+ "uid": "pod-uid"
13
+ },
14
+ "status": "Running"
15
+ },
16
+ {
17
+ "resource": {
18
+ "clusterId": "cluster-a",
19
+ "apiVersion": "v1",
20
+ "kind": "Node",
21
+ "name": "worker-1",
22
+ "scopeMode": "cluster"
23
+ },
24
+ "status": "Ready"
25
+ }
26
+ ],
27
+ "truncated": false
28
+ }
29
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "type": "modified",
3
+ "clusterId": "cluster-a",
4
+ "source": "informer"
5
+ }
@@ -0,0 +1,18 @@
1
+ {
2
+ "type": "modified",
3
+ "clusterId": "cluster-a",
4
+ "observedAt": "2026-08-23T08:00:00Z",
5
+ "source": "informer",
6
+ "resourceVersion": "42",
7
+ "cacheStatus": "live",
8
+ "resyncRequired": false,
9
+ "resource": {
10
+ "clusterId": "cluster-a",
11
+ "apiVersion": "v1",
12
+ "kind": "Pod",
13
+ "name": "api-1",
14
+ "namespace": "team-a",
15
+ "scopeMode": "namespace",
16
+ "uid": "pod-uid"
17
+ }
18
+ }
@@ -0,0 +1,24 @@
1
+ {
2
+ "data": {
3
+ "clusterId": "cluster-a",
4
+ "provider": "kubescape",
5
+ "status": "available",
6
+ "generatedAt": "2026-08-23T08:00:00Z",
7
+ "counts": {
8
+ "critical": 0,
9
+ "high": 1,
10
+ "medium": 0,
11
+ "low": 0,
12
+ "unknown": 0
13
+ },
14
+ "findings": [
15
+ {
16
+ "id": "broken",
17
+ "category": "configuration",
18
+ "title": "Missing severity",
19
+ "status": "failed"
20
+ }
21
+ ],
22
+ "warnings": []
23
+ }
24
+ }
@@ -0,0 +1,34 @@
1
+ {
2
+ "data": {
3
+ "clusterId": "cluster-a",
4
+ "provider": "kubescape",
5
+ "status": "available",
6
+ "generatedAt": "2026-08-23T08:00:00Z",
7
+ "counts": {
8
+ "critical": 1,
9
+ "high": 2,
10
+ "medium": 3,
11
+ "low": 4,
12
+ "unknown": 0
13
+ },
14
+ "findings": [
15
+ {
16
+ "id": "configuration:C-001:team-a:Deployment:api",
17
+ "category": "configuration",
18
+ "severity": "high",
19
+ "title": "Privileged container",
20
+ "status": "failed",
21
+ "controlId": "C-001",
22
+ "resource": {
23
+ "clusterId": "cluster-a",
24
+ "apiVersion": "apps/v1",
25
+ "kind": "Deployment",
26
+ "name": "api",
27
+ "namespace": "team-a",
28
+ "scopeMode": "namespace"
29
+ }
30
+ }
31
+ ],
32
+ "warnings": []
33
+ }
34
+ }
@@ -0,0 +1,14 @@
1
+ {
2
+ "name": "web",
3
+ "namespace": "default",
4
+ "type": "NodePort",
5
+ "ageSeconds": 0,
6
+ "portMappings": [
7
+ {
8
+ "protocol": "TCP",
9
+ "targetPort": "8080",
10
+ "port": 80,
11
+ "nodePort": 70000
12
+ }
13
+ ]
14
+ }
@@ -0,0 +1,22 @@
1
+ {
2
+ "name": "web",
3
+ "namespace": "default",
4
+ "type": "NodePort",
5
+ "ageSeconds": 0,
6
+ "ports": ["http:80/tcp (nodePort:30001)"],
7
+ "portMappings": [
8
+ {
9
+ "name": "http",
10
+ "protocol": "TCP",
11
+ "targetPort": "8080",
12
+ "port": 80,
13
+ "nodePort": 30001
14
+ },
15
+ {
16
+ "name": "metrics",
17
+ "protocol": "TCP",
18
+ "targetPort": "metrics",
19
+ "port": 9090
20
+ }
21
+ ]
22
+ }
@@ -0,0 +1,13 @@
1
+ {
2
+ "name": "web",
3
+ "namespace": "default",
4
+ "type": "ClusterIP",
5
+ "ageSeconds": 60,
6
+ "portMappings": [
7
+ {
8
+ "protocol": "TCP",
9
+ "targetPort": "",
10
+ "port": 80
11
+ }
12
+ ]
13
+ }
@@ -0,0 +1,22 @@
1
+ {
2
+ "name": "web",
3
+ "namespace": "default",
4
+ "type": "ClusterIP",
5
+ "clusterIp": "10.43.0.10",
6
+ "ageSeconds": 60,
7
+ "ports": ["http:80/tcp"],
8
+ "portMappings": [
9
+ {
10
+ "name": "http",
11
+ "protocol": "TCP",
12
+ "targetPort": "http",
13
+ "port": 80
14
+ }
15
+ ],
16
+ "endpoints": [
17
+ {
18
+ "address": "10.42.0.10",
19
+ "ready": true
20
+ }
21
+ ]
22
+ }
@@ -0,0 +1,7 @@
1
+ {
2
+ "sourceMode": "durable",
3
+ "dataSourceId": "",
4
+ "selector": {
5
+ "namespace": "payments"
6
+ }
7
+ }
@@ -0,0 +1,14 @@
1
+ {
2
+ "sourceMode": "durable",
3
+ "dataSourceId": "loki-main",
4
+ "selector": {
5
+ "namespace": "payments",
6
+ "workloadKind": "Deployment",
7
+ "workloadName": "checkout-api"
8
+ },
9
+ "from": "2026-08-31T08:00:00Z",
10
+ "to": "2026-08-31T08:15:00Z",
11
+ "limit": 200,
12
+ "direction": "backward",
13
+ "text": "upstream timeout"
14
+ }
@@ -0,0 +1,12 @@
1
+ {
2
+ "id": "manifest-package-1",
3
+ "name": "checkout-api-ingress",
4
+ "serviceId": "service-checkout-api",
5
+ "renderer": "raw_yaml",
6
+ "status": "draft",
7
+ "currentRevision": 0,
8
+ "files": [],
9
+ "bindings": [],
10
+ "createdAt": "2026-08-27T00:00:00Z",
11
+ "updatedAt": "2026-08-27T00:00:00Z"
12
+ }
@@ -0,0 +1,29 @@
1
+ {
2
+ "id": "manifest-package-1",
3
+ "name": "checkout-api-ingress",
4
+ "description": "Service-level delivery extensions",
5
+ "applicationId": "app-1",
6
+ "serviceId": "service-checkout-api",
7
+ "renderer": "raw_yaml",
8
+ "status": "draft",
9
+ "currentRevision": 0,
10
+ "files": [
11
+ {
12
+ "path": "ingress.yaml",
13
+ "content": "apiVersion: networking.k8s.io/v1\nkind: Ingress\n"
14
+ }
15
+ ],
16
+ "bindings": [
17
+ {
18
+ "id": "binding-1",
19
+ "applicationEnvironmentId": "app-env-prod",
20
+ "environmentKey": "prod",
21
+ "clusterId": "cluster-prod",
22
+ "namespace": "checkout",
23
+ "overlay": { "host": "checkout.example.com" },
24
+ "status": "ready"
25
+ }
26
+ ],
27
+ "createdAt": "2026-08-27T00:00:00Z",
28
+ "updatedAt": "2026-08-27T00:00:00Z"
29
+ }
@@ -0,0 +1,8 @@
1
+ {
2
+ "clientType": "confidential",
3
+ "redirectUris": ["https://app.example.com/oauth/callback"],
4
+ "allowedScopes": ["openid", "profile", "email"],
5
+ "allowedGrantTypes": ["authorization_code"],
6
+ "requirePkce": true,
7
+ "status": "enabled"
8
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "data": {
3
+ "clientId": "generated-client-id",
4
+ "revealedAt": "2026-08-24T08:00:00Z"
5
+ }
6
+ }
@@ -0,0 +1,7 @@
1
+ {
2
+ "data": {
3
+ "clientId": "generated-client-id",
4
+ "clientSecret": "revealable-client-secret",
5
+ "revealedAt": "2026-08-24T08:00:00Z"
6
+ }
7
+ }
@@ -0,0 +1,29 @@
1
+ {
2
+ "data": {
3
+ "capability": "k8s.resources.update",
4
+ "target": "cluster-a/team-a/Deployment/api",
5
+ "ready": false,
6
+ "riskLevel": "mutate",
7
+ "requiresApproval": false,
8
+ "changes": [
9
+ {
10
+ "action": "apply",
11
+ "resource": "Deployment/api",
12
+ "summary": "apply the reviewed manifest"
13
+ }
14
+ ],
15
+ "warnings": [],
16
+ "kubernetesResourceUpdate": {
17
+ "fieldManager": "opensoha-resource-edit/v1",
18
+ "changedFields": ["/spec/replicas"],
19
+ "owners": [
20
+ {
21
+ "operation": "Apply",
22
+ "apiVersion": "apps/v1",
23
+ "fields": ["/spec/template"]
24
+ }
25
+ ],
26
+ "conflicts": []
27
+ }
28
+ }
29
+ }
@@ -0,0 +1,30 @@
1
+ {
2
+ "data": {
3
+ "capability": "k8s.resources.update",
4
+ "target": "cluster-a/team-a/Deployment/api",
5
+ "ready": true,
6
+ "riskLevel": "mutate",
7
+ "requiresApproval": false,
8
+ "changes": [
9
+ {
10
+ "action": "apply",
11
+ "resource": "Deployment/api",
12
+ "summary": "apply the reviewed manifest"
13
+ }
14
+ ],
15
+ "warnings": [],
16
+ "kubernetesResourceUpdate": {
17
+ "fieldManager": "opensoha-resource-edit/v1",
18
+ "changedFields": ["/spec/replicas"],
19
+ "owners": [
20
+ {
21
+ "manager": "helm",
22
+ "operation": "Apply",
23
+ "apiVersion": "apps/v1",
24
+ "fields": ["/spec/template"]
25
+ }
26
+ ],
27
+ "conflicts": []
28
+ }
29
+ }
30
+ }
@@ -0,0 +1,3 @@
1
+ {
2
+ "status": "changed"
3
+ }
@@ -0,0 +1,3 @@
1
+ {
2
+ "status": "ok"
3
+ }
@@ -0,0 +1,12 @@
1
+ {
2
+ "items": [
3
+ {
4
+ "id": "app-1",
5
+ "name": "Soha Console",
6
+ "slug": "soha-console",
7
+ "status": "enabled",
8
+ "createdAt": "2026-08-31T00:00:00Z",
9
+ "updatedAt": "2026-08-31T00:00:00Z"
10
+ }
11
+ ]
12
+ }
@@ -0,0 +1,17 @@
1
+ {
2
+ "data": {
3
+ "principal": {
4
+ "userId": "user-1",
5
+ "userName": "OpenSoha",
6
+ "email": "opensoha@example.com",
7
+ "roles": [],
8
+ "teams": [],
9
+ "projects": [],
10
+ "tags": []
11
+ },
12
+ "applications": [],
13
+ "favorites": [],
14
+ "recent": [],
15
+ "categories": []
16
+ }
17
+ }
@@ -0,0 +1,31 @@
1
+ {
2
+ "data": {
3
+ "principal": {
4
+ "userId": "user-1",
5
+ "userName": "OpenSoha",
6
+ "email": "opensoha@example.com",
7
+ "roles": [],
8
+ "teams": [],
9
+ "projects": [],
10
+ "tags": []
11
+ },
12
+ "applications": [],
13
+ "favorites": [],
14
+ "recent": [],
15
+ "categories": [],
16
+ "security": {
17
+ "principal": {
18
+ "userId": "user-1",
19
+ "userName": "OpenSoha",
20
+ "email": "opensoha@example.com",
21
+ "roles": [],
22
+ "teams": [],
23
+ "projects": [],
24
+ "tags": []
25
+ },
26
+ "mfaEnabled": false,
27
+ "linkedSources": [],
28
+ "activeSession": 1
29
+ }
30
+ }
31
+ }
@@ -0,0 +1,14 @@
1
+ {
2
+ "data": {
3
+ "application": {
4
+ "id": "app-1",
5
+ "name": "Soha Console",
6
+ "slug": "soha-console",
7
+ "status": "enabled",
8
+ "createdAt": "2026-08-31T00:00:00Z",
9
+ "updatedAt": "2026-08-31T00:00:00Z"
10
+ },
11
+ "providerType": "oidc",
12
+ "decision": "allow"
13
+ }
14
+ }
@@ -0,0 +1,16 @@
1
+ {
2
+ "data": {
3
+ "application": {
4
+ "id": "app-1",
5
+ "name": "Soha Console",
6
+ "slug": "soha-console",
7
+ "status": "enabled",
8
+ "createdAt": "2026-08-31T00:00:00Z",
9
+ "updatedAt": "2026-08-31T00:00:00Z"
10
+ },
11
+ "launchUrl": "/auth/browser-handoff/handoff-1",
12
+ "providerType": "oidc",
13
+ "decision": "allow",
14
+ "handoffExpiresAt": "2026-08-31T00:01:00Z"
15
+ }
16
+ }