@opensoha/contracts 0.1.5 → 0.1.7

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 (74) hide show
  1. package/COMPATIBILITY.md +13 -0
  2. package/README.md +6 -0
  3. package/auth/catalog_generated.go +17 -0
  4. package/auth/catalog_test.go +53 -0
  5. package/auth/permission-catalog.json +11097 -0
  6. package/auth/permission-catalog.schema.json +74 -0
  7. package/capabilities/cluster-capability-matrix.schema.json +30 -1
  8. package/compat/json-schema-ecosystem-0.1.0.json +1 -1
  9. package/compat/openapi-loose-boundaries-0.1.0.json +1 -1
  10. package/examples/gateway-manifest/minimal.json +6 -6
  11. package/examples/openapi/agent-run-tool-call-request.json +1 -1
  12. package/examples/openapi/agent-tool-call-result-envelope.json +1 -1
  13. package/examples/openapi/gateway-manifest-envelope.json +4 -4
  14. package/examples/openapi/tool-invocation-request.json +1 -1
  15. package/examples/openapi/tool-invocation-result-envelope.json +1 -1
  16. package/examples/plugin-manifest/skill-pack.json +2 -2
  17. package/examples/skill-manifest/k8s-sre.json +2 -2
  18. package/examples/token-claims/service-account.json +1 -1
  19. package/fixtures/json-schema/cluster-capability-matrix/valid/runtime-parity.json +3 -0
  20. package/fixtures/json-schema/gateway-manifest/valid/minimal.json +4 -4
  21. package/fixtures/json-schema/permission-catalog/invalid/missing-action.json +18 -0
  22. package/fixtures/json-schema/permission-catalog/valid/minimal.json +19 -0
  23. package/fixtures/json-schema/skill-manifest/valid/minimal.json +2 -2
  24. package/fixtures/json-schema/token-claims/valid/service-account.json +1 -1
  25. package/fixtures/openapi/AIGatewayManifestEnvelope/valid/minimal.json +1 -1
  26. package/fixtures/openapi/AccessRoleInput/invalid/missing-permissions.json +4 -0
  27. package/fixtures/openapi/AccessRoleInput/valid/granular-vm-operator.json +10 -0
  28. package/fixtures/openapi/AgentInstallationEnvelope/invalid/missing-command.json +7 -0
  29. package/fixtures/openapi/AgentInstallationEnvelope/valid/minimal.json +8 -0
  30. package/fixtures/openapi/ApplicationInput/invalid/missing-key.json +4 -0
  31. package/fixtures/openapi/ApplicationInput/valid/minimal.json +5 -0
  32. package/fixtures/openapi/AuthorizationDecision/invalid/missing-reason.json +7 -0
  33. package/fixtures/openapi/AuthorizationDecision/valid/deny-vm-delete.json +16 -0
  34. package/fixtures/openapi/HelmReleaseImportRequest/invalid/empty-releases.json +10 -0
  35. package/fixtures/openapi/HelmReleaseImportRequest/valid/managed.json +14 -0
  36. package/fixtures/openapi/HelmReleaseImportResultEnvelope/invalid/missing-mode.json +20 -0
  37. package/fixtures/openapi/HelmReleaseImportResultEnvelope/valid/created.json +35 -0
  38. package/fixtures/openapi/KubernetesImportCandidateListEnvelope/invalid/unknown-kind.json +14 -0
  39. package/fixtures/openapi/KubernetesImportCandidateListEnvelope/valid/grouped.json +31 -0
  40. package/fixtures/openapi/KubernetesServiceImportRequest/invalid/unsupported-mode.json +15 -0
  41. package/fixtures/openapi/KubernetesServiceImportRequest/valid/managed.json +15 -0
  42. package/fixtures/openapi/KubernetesServiceImportRequest/valid/observe-only.json +15 -0
  43. package/fixtures/openapi/KubernetesServiceImportResultEnvelope/invalid/missing-mode.json +20 -0
  44. package/fixtures/openapi/KubernetesServiceImportResultEnvelope/valid/created.json +37 -0
  45. package/fixtures/openapi/MCPCapabilityListEnvelope/invalid/missing-scopes.json +1 -1
  46. package/fixtures/openapi/MCPCapabilityListEnvelope/valid/minimal.json +1 -1
  47. package/fixtures/openapi/ObservabilityDashboardImportResultEnvelope/invalid/missing-dashboard.json +7 -0
  48. package/fixtures/openapi/ObservabilityDashboardImportResultEnvelope/valid/imported.json +36 -0
  49. package/fixtures/openapi/ObservabilityGrafanaDashboardImportInput/invalid/missing-data-source.json +3 -0
  50. package/fixtures/openapi/ObservabilityGrafanaDashboardImportInput/invalid/missing-json.json +3 -0
  51. package/fixtures/openapi/ObservabilityGrafanaDashboardImportInput/valid/classic.json +4 -0
  52. package/fixtures/openapi/ObservabilityMetricDataSourceListEnvelope/invalid/missing-name.json +7 -0
  53. package/fixtures/openapi/ObservabilityMetricDataSourceListEnvelope/valid/list.json +8 -0
  54. package/fixtures/openapi/PermissionCatalogEnvelope/invalid/invalid-hash.json +8 -0
  55. package/fixtures/openapi/PermissionCatalogEnvelope/valid/minimal.json +22 -0
  56. package/fixtures/openapi/PersonalAccessTokenInput/invalid/extra-field.json +1 -1
  57. package/fixtures/openapi/PersonalAccessTokenInput/valid/create.json +1 -1
  58. package/fixtures/openapi/RegistryConnectionInput/invalid/missing-type.json +4 -0
  59. package/fixtures/openapi/RegistryConnectionInput/valid/harbor.json +9 -0
  60. package/fixtures/openapi/RegistryConnectionListEnvelope/invalid/exposed-secret.json +18 -0
  61. package/fixtures/openapi/RegistryConnectionListEnvelope/valid/configured.json +19 -0
  62. package/fixtures/openapi/SoftwarePackage/invalid/unsafe-software-package.json +15 -0
  63. package/fixtures/openapi/SoftwarePackage/valid/software-package.json +17 -0
  64. package/fixtures/openapi/SoftwarePackageURLImportRequest/invalid/software-package-url-import-request.json +9 -0
  65. package/fixtures/openapi/SoftwarePackageURLImportRequest/valid/software-package-url-import-request.json +12 -0
  66. package/fixtures/openapi/SoftwareStorage/invalid/software-storage.json +6 -0
  67. package/fixtures/openapi/SoftwareStorage/valid/software-storage.json +22 -0
  68. package/gen/go/sohaapi/client.go +1 -1
  69. package/gen/go/sohaapi/types.go +906 -3
  70. package/gen/ts/sohaapi/index.ts +1603 -71
  71. package/openapi/soha-api.json +2910 -3
  72. package/openapi/soha-api.yaml +1759 -165
  73. package/openapi/spec_generated.go +3 -3
  74. package/package.json +7 -3
@@ -0,0 +1,74 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://contracts.opensoha.dev/auth/permission-catalog.schema.json",
4
+ "title": "OpenSoha Permission Catalog",
5
+ "type": "object",
6
+ "additionalProperties": false,
7
+ "required": ["schemaVersion", "catalogVersion", "contentHash", "permissions"],
8
+ "properties": {
9
+ "schemaVersion": { "const": "authorization.opensoha.io/v1" },
10
+ "catalogVersion": { "type": "string", "pattern": "^[0-9]+\\.[0-9]+\\.[0-9]+$" },
11
+ "contentHash": { "type": "string", "pattern": "^sha256:[a-f0-9]{64}$" },
12
+ "permissions": {
13
+ "type": "array",
14
+ "minItems": 1,
15
+ "items": { "$ref": "#/$defs/permission" }
16
+ }
17
+ },
18
+ "$defs": {
19
+ "permission": {
20
+ "type": "object",
21
+ "additionalProperties": false,
22
+ "required": [
23
+ "key",
24
+ "domain",
25
+ "resource",
26
+ "action",
27
+ "displayName",
28
+ "riskLevel",
29
+ "scopeKinds",
30
+ "approvalPolicy",
31
+ "status",
32
+ "assignable"
33
+ ],
34
+ "properties": {
35
+ "key": {
36
+ "type": "string",
37
+ "pattern": "^[a-z][a-z0-9_-]*(?:\\.[a-z][a-z0-9_-]*)+$"
38
+ },
39
+ "domain": { "type": "string", "pattern": "^[a-z][a-z0-9_-]*$" },
40
+ "resource": { "type": "string", "pattern": "^[a-z][a-z0-9_.-]*$" },
41
+ "action": { "type": "string", "pattern": "^[a-z][a-z0-9_-]*$" },
42
+ "displayName": { "type": "string", "minLength": 1 },
43
+ "riskLevel": { "type": "string", "enum": ["read", "mutate", "execute", "high"] },
44
+ "scopeKinds": {
45
+ "type": "array",
46
+ "minItems": 1,
47
+ "uniqueItems": true,
48
+ "items": {
49
+ "type": "string",
50
+ "enum": ["tenant", "workspace", "cluster", "namespace", "project", "resource", "owner"]
51
+ }
52
+ },
53
+ "approvalPolicy": { "type": "string", "enum": ["never", "eligible", "required"] },
54
+ "status": { "type": "string", "enum": ["active", "legacy"] },
55
+ "assignable": { "type": "boolean" },
56
+ "legacyAliases": {
57
+ "type": "array",
58
+ "uniqueItems": true,
59
+ "items": { "type": "string", "minLength": 1 }
60
+ },
61
+ "legacyCapabilities": {
62
+ "type": "array",
63
+ "uniqueItems": true,
64
+ "items": { "type": "string", "pattern": "^[a-z][a-z0-9_-]*$" }
65
+ },
66
+ "replacedBy": {
67
+ "type": "array",
68
+ "uniqueItems": true,
69
+ "items": { "type": "string", "minLength": 1 }
70
+ }
71
+ }
72
+ }
73
+ }
74
+ }
@@ -48,6 +48,11 @@
48
48
  "properties": {
49
49
  "status": { "$ref": "#/$defs/CapabilityStatus" },
50
50
  "reason": { "type": "string", "minLength": 1 },
51
+ "notes": {
52
+ "type": "array",
53
+ "items": { "type": "string", "minLength": 1 },
54
+ "uniqueItems": true
55
+ },
51
56
  "diagnostic": { "type": "string" },
52
57
  "requiredAgentVersion": { "type": "string" },
53
58
  "requiredScopes": {
@@ -71,10 +76,34 @@
71
76
  "label": { "type": "string", "minLength": 1 },
72
77
  "category": {
73
78
  "type": "string",
74
- "enum": ["kubernetes", "helm", "yaml", "logs", "exec", "port-forward", "docker", "runtime"]
79
+ "enum": [
80
+ "kubernetes",
81
+ "helm",
82
+ "yaml",
83
+ "logs",
84
+ "exec",
85
+ "port-forward",
86
+ "docker",
87
+ "runtime",
88
+ "platform",
89
+ "workloads",
90
+ "configuration",
91
+ "access",
92
+ "network",
93
+ "storage",
94
+ "extensions",
95
+ "delivery",
96
+ "observability"
97
+ ]
98
+ },
99
+ "requiredScopes": {
100
+ "type": "array",
101
+ "items": { "type": "string", "minLength": 1 },
102
+ "uniqueItems": true
75
103
  },
76
104
  "riskLevel": { "$ref": "#/$defs/RiskLevel" },
77
105
  "requiresApproval": { "type": "boolean" },
106
+ "docsUrl": { "type": "string", "minLength": 1 },
78
107
  "direct": { "$ref": "#/$defs/ModeSupport" },
79
108
  "agent": { "$ref": "#/$defs/ModeSupport" },
80
109
  "metadata": {
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "0.1.5",
2
+ "version": "0.1.7",
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.5",
2
+ "version": "0.1.7",
3
3
  "generatedFrom": "openapi/soha-api.yaml",
4
4
  "entries": [
5
5
  {
@@ -10,22 +10,22 @@
10
10
  "teams": [],
11
11
  "projects": [],
12
12
  "tags": [],
13
- "permissionKeys": ["ai.gateway.tools.read", "k8s.pods.read"]
13
+ "permissionKeys": ["ai.gateway.view", "platform.pods.view"]
14
14
  },
15
15
  "caller": {
16
16
  "identityMode": "user",
17
17
  "source": "cli"
18
18
  },
19
- "permissionKeys": ["ai.gateway.tools.read", "k8s.pods.read"],
19
+ "permissionKeys": ["ai.gateway.view", "platform.pods.view"],
20
20
  "tools": [
21
21
  {
22
- "name": "k8s.list_pods",
22
+ "name": "k8s.pods.list",
23
23
  "title": "List pods",
24
24
  "description": "List Kubernetes pods in a namespace.",
25
25
  "domain": "kubernetes",
26
26
  "action": "read",
27
27
  "riskLevel": "read",
28
- "permissionKeys": ["k8s.pods.read"],
28
+ "permissionKeys": ["platform.pods.view"],
29
29
  "requiredScopes": ["cluster", "namespace"],
30
30
  "mcpAdapterId": "builtin.kubernetes",
31
31
  "mcpToolName": "k8s.pods.list",
@@ -57,8 +57,8 @@
57
57
  "name": "Kubernetes SRE",
58
58
  "category": "ai-gateway",
59
59
  "description": "Read-only cluster diagnosis skill.",
60
- "capabilityRefs": ["k8s.list_pods"],
61
- "permissionKeys": ["k8s.pods.read"],
60
+ "capabilityRefs": ["k8s.pods.list"],
61
+ "permissionKeys": ["platform.pods.view"],
62
62
  "requiredScopes": ["cluster", "namespace"]
63
63
  }
64
64
  ],
@@ -4,7 +4,7 @@
4
4
  "agentId": "agent-01",
5
5
  "toolBindingId": "binding-01",
6
6
  "adapterId": "builtin.kubernetes",
7
- "toolName": "k8s.list_pods",
7
+ "toolName": "k8s.pods.list",
8
8
  "input": {
9
9
  "namespace": "default"
10
10
  }
@@ -2,7 +2,7 @@
2
2
  "data": {
3
3
  "runId": "run-01",
4
4
  "toolExecution": {
5
- "toolName": "k8s.list_pods",
5
+ "toolName": "k8s.pods.list",
6
6
  "status": "succeeded",
7
7
  "requestId": "req-01"
8
8
  },
@@ -11,22 +11,22 @@
11
11
  "teams": [],
12
12
  "projects": [],
13
13
  "tags": [],
14
- "permissionKeys": ["ai.gateway.tools.read", "k8s.pods.read"]
14
+ "permissionKeys": ["ai.gateway.view", "platform.pods.view"]
15
15
  },
16
16
  "caller": {
17
17
  "identityMode": "user",
18
18
  "source": "web"
19
19
  },
20
- "permissionKeys": ["ai.gateway.tools.read", "k8s.pods.read"],
20
+ "permissionKeys": ["ai.gateway.view", "platform.pods.view"],
21
21
  "tools": [
22
22
  {
23
- "name": "k8s.list_pods",
23
+ "name": "k8s.pods.list",
24
24
  "title": "List pods",
25
25
  "description": "List Kubernetes pods in a namespace.",
26
26
  "domain": "kubernetes",
27
27
  "action": "read",
28
28
  "riskLevel": "read",
29
- "permissionKeys": ["k8s.pods.read"],
29
+ "permissionKeys": ["platform.pods.view"],
30
30
  "requiredScopes": ["cluster", "namespace"],
31
31
  "requiresApproval": false,
32
32
  "inputSchema": {
@@ -1,5 +1,5 @@
1
1
  {
2
- "toolName": "k8s.list_pods",
2
+ "toolName": "k8s.pods.list",
3
3
  "input": {
4
4
  "clusterId": "default",
5
5
  "namespace": "default"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "data": {
3
- "toolName": "k8s.list_pods",
3
+ "toolName": "k8s.pods.list",
4
4
  "riskLevel": "read",
5
5
  "requiresApproval": false,
6
6
  "result": "succeeded",
@@ -14,11 +14,11 @@
14
14
  "skills": ["skills/ai-gateway/k8s-sre/SKILL.md"]
15
15
  },
16
16
  "capabilities": {
17
- "tools": ["k8s.list_pods"],
17
+ "tools": ["k8s.pods.list"],
18
18
  "skills": ["k8s-sre"]
19
19
  },
20
20
  "permissions": {
21
- "required": ["k8s.pods.read"],
21
+ "required": ["platform.pods.view"],
22
22
  "domain": ["kubernetes"]
23
23
  },
24
24
  "runtime": {
@@ -4,8 +4,8 @@
4
4
  "version": "0.1.0",
5
5
  "category": "ai-gateway",
6
6
  "description": "Read-only Kubernetes troubleshooting skill.",
7
- "capabilityRefs": ["k8s.list_pods"],
8
- "permissionKeys": ["k8s.pods.read"],
7
+ "capabilityRefs": ["k8s.pods.list"],
8
+ "permissionKeys": ["platform.pods.view"],
9
9
  "requiredScopes": ["cluster", "namespace"],
10
10
  "providerSkillRefs": [
11
11
  {
@@ -10,6 +10,6 @@
10
10
  "subjectId": "sa-1",
11
11
  "tenantId": "default",
12
12
  "workspaceId": "default",
13
- "permissionKeys": ["ai.gateway.tools.read", "k8s.pods.read"],
13
+ "permissionKeys": ["ai.gateway.view", "platform.pods.view"],
14
14
  "scopes": ["ai:read", "k8s:read"]
15
15
  }
@@ -6,14 +6,17 @@
6
6
  "key": "kubernetes.yaml.apply",
7
7
  "label": "Apply Kubernetes YAML",
8
8
  "category": "yaml",
9
+ "requiredScopes": ["cluster", "namespace"],
9
10
  "riskLevel": "mutate",
10
11
  "requiresApproval": true,
12
+ "docsUrl": "/operations/kubernetes-yaml",
11
13
  "direct": {
12
14
  "status": "available",
13
15
  "requiredScopes": ["cluster:write", "kubernetes:apply"]
14
16
  },
15
17
  "agent": {
16
18
  "status": "available",
19
+ "notes": ["Requires the resource mutation allowlist."],
17
20
  "requiredAgentVersion": "0.1.0",
18
21
  "requiredScopes": ["agent:kubernetes:apply"]
19
22
  },
@@ -10,22 +10,22 @@
10
10
  "teams": [],
11
11
  "projects": [],
12
12
  "tags": [],
13
- "permissionKeys": ["ai.gateway.tools.read"]
13
+ "permissionKeys": ["ai.gateway.view"]
14
14
  },
15
15
  "caller": {
16
16
  "identityMode": "user",
17
17
  "source": "cli"
18
18
  },
19
- "permissionKeys": ["ai.gateway.tools.read"],
19
+ "permissionKeys": ["ai.gateway.view"],
20
20
  "tools": [
21
21
  {
22
- "name": "k8s.list_pods",
22
+ "name": "k8s.pods.list",
23
23
  "title": "List pods",
24
24
  "description": "List Kubernetes pods in a namespace.",
25
25
  "domain": "kubernetes",
26
26
  "action": "read",
27
27
  "riskLevel": "read",
28
- "permissionKeys": ["k8s.pods.read"],
28
+ "permissionKeys": ["platform.pods.view"],
29
29
  "requiresApproval": false,
30
30
  "inputSchema": {
31
31
  "type": "object",
@@ -0,0 +1,18 @@
1
+ {
2
+ "schemaVersion": "authorization.opensoha.io/v1",
3
+ "catalogVersion": "1.0.0",
4
+ "contentHash": "sha256:0000000000000000000000000000000000000000000000000000000000000000",
5
+ "permissions": [
6
+ {
7
+ "key": "virtualization.vms.view",
8
+ "domain": "virtualization",
9
+ "resource": "vms",
10
+ "displayName": "View virtual machines",
11
+ "riskLevel": "read",
12
+ "scopeKinds": ["workspace", "resource"],
13
+ "approvalPolicy": "never",
14
+ "status": "active",
15
+ "assignable": true
16
+ }
17
+ ]
18
+ }
@@ -0,0 +1,19 @@
1
+ {
2
+ "schemaVersion": "authorization.opensoha.io/v1",
3
+ "catalogVersion": "1.0.0",
4
+ "contentHash": "sha256:0000000000000000000000000000000000000000000000000000000000000000",
5
+ "permissions": [
6
+ {
7
+ "key": "virtualization.vms.view",
8
+ "domain": "virtualization",
9
+ "resource": "vms",
10
+ "action": "view",
11
+ "displayName": "View virtual machines",
12
+ "riskLevel": "read",
13
+ "scopeKinds": ["workspace", "resource"],
14
+ "approvalPolicy": "never",
15
+ "status": "active",
16
+ "assignable": true
17
+ }
18
+ ]
19
+ }
@@ -3,6 +3,6 @@
3
3
  "name": "Kubernetes SRE",
4
4
  "version": "0.1.0",
5
5
  "category": "ai-gateway",
6
- "capabilityRefs": ["k8s.list_pods"],
7
- "permissionKeys": ["k8s.pods.read"]
6
+ "capabilityRefs": ["k8s.pods.list"],
7
+ "permissionKeys": ["platform.pods.view"]
8
8
  }
@@ -10,6 +10,6 @@
10
10
  "subjectId": "sa-1",
11
11
  "tenantId": "default",
12
12
  "workspaceId": "default",
13
- "permissionKeys": ["ai.gateway.tools.read"],
13
+ "permissionKeys": ["ai.gateway.view"],
14
14
  "scopes": ["ai:read"]
15
15
  }
@@ -15,7 +15,7 @@
15
15
  "caller": {
16
16
  "identityMode": "user"
17
17
  },
18
- "permissionKeys": ["ai.gateway.tools.read"],
18
+ "permissionKeys": ["ai.gateway.view"],
19
19
  "tools": [],
20
20
  "resources": [],
21
21
  "prompts": [],
@@ -0,0 +1,4 @@
1
+ {
2
+ "name": "vm-builder",
3
+ "scope": "custom"
4
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "name": "vm-builder",
3
+ "scope": "custom",
4
+ "capabilities": [],
5
+ "permissionKeys": [
6
+ "virtualization.vms.view",
7
+ "virtualization.vms.create",
8
+ "virtualization.vms.resize"
9
+ ]
10
+ }
@@ -0,0 +1,7 @@
1
+ {
2
+ "data": {
3
+ "clusterId": "cluster-1",
4
+ "manifestUrl": "https://soha.example.com/api/v1/kubernetes/agent-installations/dGlja2V0.manifest/manifest.yaml",
5
+ "expiresAt": "2026-08-08T10:15:00Z"
6
+ }
7
+ }
@@ -0,0 +1,8 @@
1
+ {
2
+ "data": {
3
+ "clusterId": "cluster-1",
4
+ "manifestUrl": "https://soha.example.com/api/v1/kubernetes/agent-installations/dGlja2V0.manifest/manifest.yaml",
5
+ "command": "kubectl apply -f https://soha.example.com/api/v1/kubernetes/agent-installations/dGlja2V0.manifest/manifest.yaml",
6
+ "expiresAt": "2026-08-08T10:15:00Z"
7
+ }
8
+ }
@@ -0,0 +1,4 @@
1
+ {
2
+ "name": "Payments",
3
+ "enabled": true
4
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "name": "Payments",
3
+ "key": "payments",
4
+ "enabled": true
5
+ }
@@ -0,0 +1,7 @@
1
+ {
2
+ "status": "deny",
3
+ "permissionKey": "virtualization.vms.delete",
4
+ "action": "delete",
5
+ "resource": { "type": "virtualization.vm", "id": "vm-01" },
6
+ "policyVersion": "authorization.opensoha.io/v1"
7
+ }
@@ -0,0 +1,16 @@
1
+ {
2
+ "status": "deny",
3
+ "permissionKey": "virtualization.vms.delete",
4
+ "action": "delete",
5
+ "resource": {
6
+ "type": "virtualization.vm",
7
+ "id": "vm-01",
8
+ "workspaceId": "default"
9
+ },
10
+ "effectiveScope": {
11
+ "workspaceIds": ["default"]
12
+ },
13
+ "reasonCode": "missing_permission",
14
+ "policyVersion": "authorization.opensoha.io/v1",
15
+ "allowedActions": ["view", "create", "resize"]
16
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "clusterId": "cluster-prod",
3
+ "namespace": "payments",
4
+ "applicationKey": "payments",
5
+ "applicationName": "Payments",
6
+ "environmentKey": "prod",
7
+ "environmentName": "Production",
8
+ "ownershipMode": "managed",
9
+ "releases": []
10
+ }
@@ -0,0 +1,14 @@
1
+ {
2
+ "clusterId": "cluster-prod",
3
+ "namespace": "payments",
4
+ "applicationKey": "payments",
5
+ "applicationName": "Payments",
6
+ "environmentKey": "prod",
7
+ "environmentName": "Production",
8
+ "ownershipMode": "managed",
9
+ "releases": [
10
+ {
11
+ "releaseName": "payments"
12
+ }
13
+ ]
14
+ }
@@ -0,0 +1,20 @@
1
+ {
2
+ "data": {
3
+ "application": {
4
+ "id": "app-1",
5
+ "key": "payments",
6
+ "name": "Payments",
7
+ "created": true
8
+ },
9
+ "environment": {
10
+ "id": "env-1",
11
+ "key": "prod",
12
+ "name": "Production",
13
+ "created": false
14
+ },
15
+ "applicationEnvironmentId": "app-env-1",
16
+ "applicationEnvironmentCreated": true,
17
+ "services": [],
18
+ "targets": []
19
+ }
20
+ }
@@ -0,0 +1,35 @@
1
+ {
2
+ "data": {
3
+ "application": {
4
+ "id": "app-1",
5
+ "key": "payments",
6
+ "name": "Payments",
7
+ "created": true
8
+ },
9
+ "environment": {
10
+ "id": "env-1",
11
+ "key": "prod",
12
+ "name": "Production",
13
+ "created": false
14
+ },
15
+ "applicationEnvironmentId": "app-env-1",
16
+ "applicationEnvironmentCreated": true,
17
+ "ownershipMode": "managed",
18
+ "services": [
19
+ {
20
+ "id": "service-1",
21
+ "key": "helm-payments",
22
+ "name": "payments",
23
+ "releaseName": "payments",
24
+ "created": true
25
+ }
26
+ ],
27
+ "targets": [
28
+ {
29
+ "id": "target-1",
30
+ "releaseName": "payments",
31
+ "created": true
32
+ }
33
+ ]
34
+ }
35
+ }
@@ -0,0 +1,14 @@
1
+ {
2
+ "items": [
3
+ {
4
+ "clusterId": "cluster-prod",
5
+ "namespace": "payments",
6
+ "workloadKind": "Pod",
7
+ "workloadName": "payments-api-123",
8
+ "desiredReplicas": 1,
9
+ "readyReplicas": 1,
10
+ "relatedResources": []
11
+ }
12
+ ],
13
+ "truncated": false
14
+ }
@@ -0,0 +1,31 @@
1
+ {
2
+ "items": [
3
+ {
4
+ "clusterId": "cluster-prod",
5
+ "namespace": "payments",
6
+ "workloadKind": "Deployment",
7
+ "workloadName": "payments-api",
8
+ "desiredReplicas": 3,
9
+ "readyReplicas": 3,
10
+ "containers": ["api"],
11
+ "labels": {
12
+ "app": "payments-api"
13
+ },
14
+ "relatedResources": [
15
+ {
16
+ "kind": "Service",
17
+ "name": "payments-api"
18
+ },
19
+ {
20
+ "kind": "Ingress",
21
+ "name": "payments"
22
+ },
23
+ {
24
+ "kind": "HorizontalPodAutoscaler",
25
+ "name": "payments-api"
26
+ }
27
+ ]
28
+ }
29
+ ],
30
+ "truncated": false
31
+ }
@@ -0,0 +1,15 @@
1
+ {
2
+ "clusterId": "cluster-prod",
3
+ "namespace": "payments",
4
+ "applicationKey": "payments",
5
+ "applicationName": "Payments",
6
+ "environmentKey": "prod",
7
+ "environmentName": "Production",
8
+ "ownershipMode": "takeover",
9
+ "workloads": [
10
+ {
11
+ "workloadKind": "Deployment",
12
+ "workloadName": "payments-api"
13
+ }
14
+ ]
15
+ }
@@ -0,0 +1,15 @@
1
+ {
2
+ "clusterId": "cluster-prod",
3
+ "namespace": "payments",
4
+ "applicationKey": "payments",
5
+ "applicationName": "Payments",
6
+ "environmentKey": "prod",
7
+ "environmentName": "Production",
8
+ "ownershipMode": "managed",
9
+ "workloads": [
10
+ {
11
+ "workloadKind": "Deployment",
12
+ "workloadName": "payments-api"
13
+ }
14
+ ]
15
+ }