workos 0.7.3 → 0.8.1
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.
- package/README.md +353 -8
- package/dist/bin.js +938 -128
- package/dist/bin.js.map +1 -1
- package/dist/commands/api-key-mgmt.d.ts +16 -0
- package/dist/commands/api-key-mgmt.js +96 -0
- package/dist/commands/api-key-mgmt.js.map +1 -0
- package/dist/commands/audit-log.d.ts +26 -0
- package/dist/commands/audit-log.js +155 -0
- package/dist/commands/audit-log.js.map +1 -0
- package/dist/commands/config.d.ts +3 -0
- package/dist/commands/config.js +54 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/connection.d.ts +13 -0
- package/dist/commands/connection.js +94 -0
- package/dist/commands/connection.js.map +1 -0
- package/dist/commands/debug-sso.d.ts +1 -0
- package/dist/commands/debug-sso.js +78 -0
- package/dist/commands/debug-sso.js.map +1 -0
- package/dist/commands/debug-sync.d.ts +1 -0
- package/dist/commands/debug-sync.js +102 -0
- package/dist/commands/debug-sync.js.map +1 -0
- package/dist/commands/directory.d.ts +27 -0
- package/dist/commands/directory.js +174 -0
- package/dist/commands/directory.js.map +1 -0
- package/dist/commands/env.js +41 -28
- package/dist/commands/env.js.map +1 -1
- package/dist/commands/event.d.ts +9 -0
- package/dist/commands/event.js +43 -0
- package/dist/commands/event.js.map +1 -0
- package/dist/commands/feature-flag.d.ts +12 -0
- package/dist/commands/feature-flag.js +96 -0
- package/dist/commands/feature-flag.js.map +1 -0
- package/dist/commands/install-skill.js +3 -5
- package/dist/commands/install-skill.js.map +1 -1
- package/dist/commands/install.js +13 -20
- package/dist/commands/install.js.map +1 -1
- package/dist/commands/invitation.d.ts +19 -0
- package/dist/commands/invitation.js +94 -0
- package/dist/commands/invitation.js.map +1 -0
- package/dist/commands/membership.d.ts +20 -0
- package/dist/commands/membership.js +129 -0
- package/dist/commands/membership.js.map +1 -0
- package/dist/commands/onboard-user.d.ts +7 -0
- package/dist/commands/onboard-user.js +61 -0
- package/dist/commands/onboard-user.js.map +1 -0
- package/dist/commands/org-domain.d.ts +4 -0
- package/dist/commands/org-domain.js +45 -0
- package/dist/commands/org-domain.js.map +1 -0
- package/dist/commands/organization.d.ts +1 -5
- package/dist/commands/organization.js +34 -73
- package/dist/commands/organization.js.map +1 -1
- package/dist/commands/permission.d.ts +20 -0
- package/dist/commands/permission.js +93 -0
- package/dist/commands/permission.js.map +1 -0
- package/dist/commands/portal.d.ts +7 -0
- package/dist/commands/portal.js +26 -0
- package/dist/commands/portal.js.map +1 -0
- package/dist/commands/role.d.ts +17 -0
- package/dist/commands/role.js +122 -0
- package/dist/commands/role.js.map +1 -0
- package/dist/commands/seed.d.ts +4 -0
- package/dist/commands/seed.js +238 -0
- package/dist/commands/seed.js.map +1 -0
- package/dist/commands/session.d.ts +8 -0
- package/dist/commands/session.js +63 -0
- package/dist/commands/session.js.map +1 -0
- package/dist/commands/setup-org.d.ts +6 -0
- package/dist/commands/setup-org.js +99 -0
- package/dist/commands/setup-org.js.map +1 -0
- package/dist/commands/user.js +35 -71
- package/dist/commands/user.js.map +1 -1
- package/dist/commands/vault.d.ts +24 -0
- package/dist/commands/vault.js +120 -0
- package/dist/commands/vault.js.map +1 -0
- package/dist/commands/webhook.d.ts +3 -0
- package/dist/commands/webhook.js +73 -0
- package/dist/commands/webhook.js.map +1 -0
- package/dist/dashboard/components/DiffPanel.js.map +1 -1
- package/dist/dashboard/lib/logo-frames.js +1 -1
- package/dist/dashboard/lib/logo-frames.js.map +1 -1
- package/dist/doctor/checks/dashboard.js.map +1 -1
- package/dist/doctor/checks/environment.js.map +1 -1
- package/dist/integrations/go/index.js +1 -3
- package/dist/integrations/go/index.js.map +1 -1
- package/dist/lib/adapters/headless-adapter.d.ts +67 -0
- package/dist/lib/adapters/headless-adapter.js +263 -0
- package/dist/lib/adapters/headless-adapter.js.map +1 -0
- package/dist/lib/adapters/index.d.ts +1 -0
- package/dist/lib/adapters/index.js +1 -0
- package/dist/lib/adapters/index.js.map +1 -1
- package/dist/lib/agent-interface.d.ts +3 -11
- package/dist/lib/agent-interface.js +3 -19
- package/dist/lib/agent-interface.js.map +1 -1
- package/dist/lib/api-error-handler.d.ts +6 -0
- package/dist/lib/api-error-handler.js +58 -0
- package/dist/lib/api-error-handler.js.map +1 -0
- package/dist/lib/api-key.js +5 -1
- package/dist/lib/api-key.js.map +1 -1
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/credential-proxy.js +0 -6
- package/dist/lib/credential-proxy.js.map +1 -1
- package/dist/lib/device-auth.js +1 -1
- package/dist/lib/device-auth.js.map +1 -1
- package/dist/lib/ensure-auth.js +25 -4
- package/dist/lib/ensure-auth.js.map +1 -1
- package/dist/lib/installer-core.d.ts +12 -12
- package/dist/lib/run-with-core.js +25 -4
- package/dist/lib/run-with-core.js.map +1 -1
- package/dist/lib/validation/validator.js +0 -1
- package/dist/lib/validation/validator.js.map +1 -1
- package/dist/lib/workos-client.d.ts +58 -0
- package/dist/lib/workos-client.js +137 -0
- package/dist/lib/workos-client.js.map +1 -0
- package/dist/run.d.ts +7 -0
- package/dist/run.js +5 -2
- package/dist/run.js.map +1 -1
- package/dist/smoke-test.ts +881 -0
- package/dist/steps/run-prettier.js +1 -1
- package/dist/steps/run-prettier.js.map +1 -1
- package/dist/utils/analytics.d.ts +1 -1
- package/dist/utils/analytics.js.map +1 -1
- package/dist/utils/clack-utils.js +1 -1
- package/dist/utils/clack-utils.js.map +1 -1
- package/dist/utils/environment.js +8 -0
- package/dist/utils/environment.js.map +1 -1
- package/dist/utils/exit-codes.d.ts +22 -0
- package/dist/utils/exit-codes.js +30 -0
- package/dist/utils/exit-codes.js.map +1 -0
- package/dist/utils/help-json.d.ts +45 -0
- package/dist/utils/help-json.js +1161 -0
- package/dist/utils/help-json.js.map +1 -0
- package/dist/utils/ndjson.d.ts +16 -0
- package/dist/utils/ndjson.js +18 -0
- package/dist/utils/ndjson.js.map +1 -0
- package/dist/utils/output.d.ts +40 -0
- package/dist/utils/output.js +95 -0
- package/dist/utils/output.js.map +1 -0
- package/dist/utils/package-manager.js +2 -3
- package/dist/utils/package-manager.js.map +1 -1
- package/dist/utils/paths.d.ts +5 -0
- package/dist/utils/paths.js +18 -0
- package/dist/utils/paths.js.map +1 -0
- package/dist/utils/register-subcommand.d.ts +7 -0
- package/dist/utils/register-subcommand.js +36 -0
- package/dist/utils/register-subcommand.js.map +1 -0
- package/dist/utils/telemetry-types.d.ts +1 -1
- package/dist/utils/telemetry-types.js.map +1 -1
- package/dist/utils/types.d.ts +12 -0
- package/dist/utils/types.js.map +1 -1
- package/package.json +20 -16
- package/skills/workos-management/SKILL.md +250 -0
|
@@ -1,105 +1,70 @@
|
|
|
1
1
|
import chalk from 'chalk';
|
|
2
|
-
import {
|
|
2
|
+
import { createWorkOSClient } from '../lib/workos-client.js';
|
|
3
3
|
import { formatTable } from '../utils/table.js';
|
|
4
|
+
import { outputSuccess, outputJson, isJsonMode } from '../utils/output.js';
|
|
5
|
+
import { createApiErrorHandler } from '../lib/api-error-handler.js';
|
|
4
6
|
export function parseDomainArgs(args) {
|
|
5
7
|
return args.map((arg) => {
|
|
6
8
|
const parts = arg.split(':');
|
|
7
9
|
return {
|
|
8
10
|
domain: parts[0],
|
|
9
|
-
state: parts[1] || 'verified',
|
|
11
|
+
state: (parts[1] || 'verified'),
|
|
10
12
|
};
|
|
11
13
|
});
|
|
12
14
|
}
|
|
13
|
-
|
|
14
|
-
if (error instanceof WorkOSApiError) {
|
|
15
|
-
if (error.statusCode === 401) {
|
|
16
|
-
console.error(chalk.red('Invalid API key. Check your environment configuration.'));
|
|
17
|
-
}
|
|
18
|
-
else if (error.statusCode === 404) {
|
|
19
|
-
console.error(chalk.red(`Organization not found.`));
|
|
20
|
-
}
|
|
21
|
-
else if (error.statusCode === 422 && error.errors?.length) {
|
|
22
|
-
console.error(chalk.red(error.errors.map((e) => e.message).join(', ')));
|
|
23
|
-
}
|
|
24
|
-
else {
|
|
25
|
-
console.error(chalk.red(error.message));
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
else {
|
|
29
|
-
console.error(chalk.red(error instanceof Error ? error.message : 'Unknown error'));
|
|
30
|
-
}
|
|
31
|
-
process.exit(1);
|
|
32
|
-
}
|
|
15
|
+
const handleApiError = createApiErrorHandler('Organization');
|
|
33
16
|
export async function runOrgCreate(name, domainArgs, apiKey, baseUrl) {
|
|
34
|
-
const
|
|
17
|
+
const client = createWorkOSClient(apiKey, baseUrl);
|
|
35
18
|
const domains = parseDomainArgs(domainArgs);
|
|
36
|
-
if (domains.length > 0) {
|
|
37
|
-
body.domain_data = domains;
|
|
38
|
-
}
|
|
39
19
|
try {
|
|
40
|
-
const org = await
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
apiKey,
|
|
44
|
-
baseUrl,
|
|
45
|
-
body,
|
|
20
|
+
const org = await client.sdk.organizations.createOrganization({
|
|
21
|
+
name,
|
|
22
|
+
...(domains.length > 0 && { domainData: domains }),
|
|
46
23
|
});
|
|
47
|
-
|
|
48
|
-
console.log(JSON.stringify(org, null, 2));
|
|
24
|
+
outputSuccess('Created organization', org);
|
|
49
25
|
}
|
|
50
26
|
catch (error) {
|
|
51
27
|
handleApiError(error);
|
|
52
28
|
}
|
|
53
29
|
}
|
|
54
30
|
export async function runOrgUpdate(orgId, name, apiKey, domain, state, baseUrl) {
|
|
55
|
-
const
|
|
56
|
-
if (domain) {
|
|
57
|
-
body.domain_data = [{ domain, state: state || 'verified' }];
|
|
58
|
-
}
|
|
31
|
+
const client = createWorkOSClient(apiKey, baseUrl);
|
|
59
32
|
try {
|
|
60
|
-
const org = await
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
baseUrl,
|
|
65
|
-
body,
|
|
33
|
+
const org = await client.sdk.organizations.updateOrganization({
|
|
34
|
+
organization: orgId,
|
|
35
|
+
name,
|
|
36
|
+
...(domain && { domainData: [{ domain, state: (state || 'verified') }] }),
|
|
66
37
|
});
|
|
67
|
-
|
|
68
|
-
console.log(JSON.stringify(org, null, 2));
|
|
38
|
+
outputSuccess('Updated organization', org);
|
|
69
39
|
}
|
|
70
40
|
catch (error) {
|
|
71
41
|
handleApiError(error);
|
|
72
42
|
}
|
|
73
43
|
}
|
|
74
44
|
export async function runOrgGet(orgId, apiKey, baseUrl) {
|
|
45
|
+
const client = createWorkOSClient(apiKey, baseUrl);
|
|
75
46
|
try {
|
|
76
|
-
const org = await
|
|
77
|
-
|
|
78
|
-
path: `/organizations/${orgId}`,
|
|
79
|
-
apiKey,
|
|
80
|
-
baseUrl,
|
|
81
|
-
});
|
|
82
|
-
console.log(JSON.stringify(org, null, 2));
|
|
47
|
+
const org = await client.sdk.organizations.getOrganization(orgId);
|
|
48
|
+
outputJson(org);
|
|
83
49
|
}
|
|
84
50
|
catch (error) {
|
|
85
51
|
handleApiError(error);
|
|
86
52
|
}
|
|
87
53
|
}
|
|
88
54
|
export async function runOrgList(options, apiKey, baseUrl) {
|
|
55
|
+
const client = createWorkOSClient(apiKey, baseUrl);
|
|
89
56
|
try {
|
|
90
|
-
const result = await
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
domains: options.domain,
|
|
97
|
-
limit: options.limit,
|
|
98
|
-
before: options.before,
|
|
99
|
-
after: options.after,
|
|
100
|
-
order: options.order,
|
|
101
|
-
},
|
|
57
|
+
const result = await client.sdk.organizations.listOrganizations({
|
|
58
|
+
...(options.domain && { domains: [options.domain] }),
|
|
59
|
+
limit: options.limit,
|
|
60
|
+
before: options.before,
|
|
61
|
+
after: options.after,
|
|
62
|
+
order: options.order,
|
|
102
63
|
});
|
|
64
|
+
if (isJsonMode()) {
|
|
65
|
+
outputJson({ data: result.data, listMetadata: result.listMetadata });
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
103
68
|
if (result.data.length === 0) {
|
|
104
69
|
console.log('No organizations found.');
|
|
105
70
|
return;
|
|
@@ -110,7 +75,7 @@ export async function runOrgList(options, apiKey, baseUrl) {
|
|
|
110
75
|
org.domains.map((d) => d.domain).join(', ') || chalk.dim('none'),
|
|
111
76
|
]);
|
|
112
77
|
console.log(formatTable([{ header: 'ID' }, { header: 'Name' }, { header: 'Domains' }], rows));
|
|
113
|
-
const { before, after } = result.
|
|
78
|
+
const { before, after } = result.listMetadata;
|
|
114
79
|
if (before && after) {
|
|
115
80
|
console.log(chalk.dim(`Before: ${before} After: ${after}`));
|
|
116
81
|
}
|
|
@@ -126,14 +91,10 @@ export async function runOrgList(options, apiKey, baseUrl) {
|
|
|
126
91
|
}
|
|
127
92
|
}
|
|
128
93
|
export async function runOrgDelete(orgId, apiKey, baseUrl) {
|
|
94
|
+
const client = createWorkOSClient(apiKey, baseUrl);
|
|
129
95
|
try {
|
|
130
|
-
await
|
|
131
|
-
|
|
132
|
-
path: `/organizations/${orgId}`,
|
|
133
|
-
apiKey,
|
|
134
|
-
baseUrl,
|
|
135
|
-
});
|
|
136
|
-
console.log(chalk.green(`Deleted organization ${orgId}`));
|
|
96
|
+
await client.sdk.organizations.deleteOrganization(orgId);
|
|
97
|
+
outputSuccess('Deleted organization', { id: orgId });
|
|
137
98
|
}
|
|
138
99
|
catch (error) {
|
|
139
100
|
handleApiError(error);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"organization.js","sourceRoot":"","sources":["../../src/commands/organization.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"organization.js","sourceRoot":"","sources":["../../src/commands/organization.ts"],"names":[],"mappings":"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","sourcesContent":["import chalk from 'chalk';\nimport type { DomainData } from '@workos-inc/node';\nimport { createWorkOSClient } from '../lib/workos-client.js';\nimport { formatTable } from '../utils/table.js';\nimport { outputSuccess, outputJson, isJsonMode } from '../utils/output.js';\nimport { createApiErrorHandler } from '../lib/api-error-handler.js';\n\nexport function parseDomainArgs(args: string[]): DomainData[] {\n return args.map((arg) => {\n const parts = arg.split(':');\n return {\n domain: parts[0],\n state: (parts[1] || 'verified') as DomainData['state'],\n };\n });\n}\n\nconst handleApiError = createApiErrorHandler('Organization');\n\nexport async function runOrgCreate(\n name: string,\n domainArgs: string[],\n apiKey: string,\n baseUrl?: string,\n): Promise<void> {\n const client = createWorkOSClient(apiKey, baseUrl);\n const domains = parseDomainArgs(domainArgs);\n\n try {\n const org = await client.sdk.organizations.createOrganization({\n name,\n ...(domains.length > 0 && { domainData: domains }),\n });\n outputSuccess('Created organization', org);\n } catch (error) {\n handleApiError(error);\n }\n}\n\nexport async function runOrgUpdate(\n orgId: string,\n name: string,\n apiKey: string,\n domain?: string,\n state?: string,\n baseUrl?: string,\n): Promise<void> {\n const client = createWorkOSClient(apiKey, baseUrl);\n\n try {\n const org = await client.sdk.organizations.updateOrganization({\n organization: orgId,\n name,\n ...(domain && { domainData: [{ domain, state: (state || 'verified') as DomainData['state'] }] }),\n });\n outputSuccess('Updated organization', org);\n } catch (error) {\n handleApiError(error);\n }\n}\n\nexport async function runOrgGet(orgId: string, apiKey: string, baseUrl?: string): Promise<void> {\n const client = createWorkOSClient(apiKey, baseUrl);\n\n try {\n const org = await client.sdk.organizations.getOrganization(orgId);\n outputJson(org);\n } catch (error) {\n handleApiError(error);\n }\n}\n\nexport interface OrgListOptions {\n domain?: string;\n limit?: number;\n before?: string;\n after?: string;\n order?: string;\n}\n\nexport async function runOrgList(options: OrgListOptions, apiKey: string, baseUrl?: string): Promise<void> {\n const client = createWorkOSClient(apiKey, baseUrl);\n\n try {\n const result = await client.sdk.organizations.listOrganizations({\n ...(options.domain && { domains: [options.domain] }),\n limit: options.limit,\n before: options.before,\n after: options.after,\n order: options.order as 'asc' | 'desc' | undefined,\n });\n\n if (isJsonMode()) {\n outputJson({ data: result.data, listMetadata: result.listMetadata });\n return;\n }\n\n if (result.data.length === 0) {\n console.log('No organizations found.');\n return;\n }\n\n const rows = result.data.map((org) => [\n org.id,\n org.name,\n org.domains.map((d) => d.domain).join(', ') || chalk.dim('none'),\n ]);\n\n console.log(formatTable([{ header: 'ID' }, { header: 'Name' }, { header: 'Domains' }], rows));\n\n const { before, after } = result.listMetadata;\n if (before && after) {\n console.log(chalk.dim(`Before: ${before} After: ${after}`));\n } else if (before) {\n console.log(chalk.dim(`Before: ${before}`));\n } else if (after) {\n console.log(chalk.dim(`After: ${after}`));\n }\n } catch (error) {\n handleApiError(error);\n }\n}\n\nexport async function runOrgDelete(orgId: string, apiKey: string, baseUrl?: string): Promise<void> {\n const client = createWorkOSClient(apiKey, baseUrl);\n\n try {\n await client.sdk.organizations.deleteOrganization(orgId);\n outputSuccess('Deleted organization', { id: orgId });\n } catch (error) {\n handleApiError(error);\n }\n}\n"]}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export interface PermissionListOptions {
|
|
2
|
+
limit?: number;
|
|
3
|
+
before?: string;
|
|
4
|
+
after?: string;
|
|
5
|
+
order?: string;
|
|
6
|
+
}
|
|
7
|
+
export declare function runPermissionList(options: PermissionListOptions, apiKey: string, baseUrl?: string): Promise<void>;
|
|
8
|
+
export declare function runPermissionGet(slug: string, apiKey: string, baseUrl?: string): Promise<void>;
|
|
9
|
+
export interface PermissionCreateOptions {
|
|
10
|
+
slug: string;
|
|
11
|
+
name: string;
|
|
12
|
+
description?: string;
|
|
13
|
+
}
|
|
14
|
+
export declare function runPermissionCreate(options: PermissionCreateOptions, apiKey: string, baseUrl?: string): Promise<void>;
|
|
15
|
+
export interface PermissionUpdateOptions {
|
|
16
|
+
name?: string;
|
|
17
|
+
description?: string;
|
|
18
|
+
}
|
|
19
|
+
export declare function runPermissionUpdate(slug: string, options: PermissionUpdateOptions, apiKey: string, baseUrl?: string): Promise<void>;
|
|
20
|
+
export declare function runPermissionDelete(slug: string, apiKey: string, baseUrl?: string): Promise<void>;
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import { createWorkOSClient } from '../lib/workos-client.js';
|
|
3
|
+
import { formatTable } from '../utils/table.js';
|
|
4
|
+
import { outputSuccess, outputJson, isJsonMode } from '../utils/output.js';
|
|
5
|
+
import { createApiErrorHandler } from '../lib/api-error-handler.js';
|
|
6
|
+
const handleApiError = createApiErrorHandler('Permission');
|
|
7
|
+
export async function runPermissionList(options, apiKey, baseUrl) {
|
|
8
|
+
const client = createWorkOSClient(apiKey, baseUrl);
|
|
9
|
+
try {
|
|
10
|
+
const result = await client.sdk.authorization.listPermissions({
|
|
11
|
+
limit: options.limit,
|
|
12
|
+
before: options.before,
|
|
13
|
+
after: options.after,
|
|
14
|
+
order: options.order,
|
|
15
|
+
});
|
|
16
|
+
if (isJsonMode()) {
|
|
17
|
+
outputJson({ data: result.data, listMetadata: result.listMetadata });
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
if (result.data.length === 0) {
|
|
21
|
+
console.log('No permissions found.');
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
const rows = result.data.map((perm) => [
|
|
25
|
+
perm.slug,
|
|
26
|
+
perm.name,
|
|
27
|
+
perm.description || chalk.dim('-'),
|
|
28
|
+
new Date(perm.createdAt).toLocaleDateString(),
|
|
29
|
+
]);
|
|
30
|
+
console.log(formatTable([{ header: 'Slug' }, { header: 'Name' }, { header: 'Description' }, { header: 'Created' }], rows));
|
|
31
|
+
const { before, after } = result.listMetadata;
|
|
32
|
+
if (before && after) {
|
|
33
|
+
console.log(chalk.dim(`Before: ${before} After: ${after}`));
|
|
34
|
+
}
|
|
35
|
+
else if (before) {
|
|
36
|
+
console.log(chalk.dim(`Before: ${before}`));
|
|
37
|
+
}
|
|
38
|
+
else if (after) {
|
|
39
|
+
console.log(chalk.dim(`After: ${after}`));
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
catch (error) {
|
|
43
|
+
handleApiError(error);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
export async function runPermissionGet(slug, apiKey, baseUrl) {
|
|
47
|
+
const client = createWorkOSClient(apiKey, baseUrl);
|
|
48
|
+
try {
|
|
49
|
+
const permission = await client.sdk.authorization.getPermission(slug);
|
|
50
|
+
outputJson(permission);
|
|
51
|
+
}
|
|
52
|
+
catch (error) {
|
|
53
|
+
handleApiError(error);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
export async function runPermissionCreate(options, apiKey, baseUrl) {
|
|
57
|
+
const client = createWorkOSClient(apiKey, baseUrl);
|
|
58
|
+
try {
|
|
59
|
+
const permission = await client.sdk.authorization.createPermission({
|
|
60
|
+
slug: options.slug,
|
|
61
|
+
name: options.name,
|
|
62
|
+
...(options.description && { description: options.description }),
|
|
63
|
+
});
|
|
64
|
+
outputSuccess('Created permission', permission);
|
|
65
|
+
}
|
|
66
|
+
catch (error) {
|
|
67
|
+
handleApiError(error);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
export async function runPermissionUpdate(slug, options, apiKey, baseUrl) {
|
|
71
|
+
const client = createWorkOSClient(apiKey, baseUrl);
|
|
72
|
+
try {
|
|
73
|
+
const permission = await client.sdk.authorization.updatePermission(slug, {
|
|
74
|
+
...(options.name !== undefined && { name: options.name }),
|
|
75
|
+
...(options.description !== undefined && { description: options.description }),
|
|
76
|
+
});
|
|
77
|
+
outputSuccess('Updated permission', permission);
|
|
78
|
+
}
|
|
79
|
+
catch (error) {
|
|
80
|
+
handleApiError(error);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
export async function runPermissionDelete(slug, apiKey, baseUrl) {
|
|
84
|
+
const client = createWorkOSClient(apiKey, baseUrl);
|
|
85
|
+
try {
|
|
86
|
+
await client.sdk.authorization.deletePermission(slug);
|
|
87
|
+
outputSuccess('Deleted permission', { slug });
|
|
88
|
+
}
|
|
89
|
+
catch (error) {
|
|
90
|
+
handleApiError(error);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=permission.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"permission.js","sourceRoot":"","sources":["../../src/commands/permission.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAC3E,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AAEpE,MAAM,cAAc,GAAG,qBAAqB,CAAC,YAAY,CAAC,CAAC;AAS3D,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,OAA8B,EAC9B,MAAc,EACd,OAAgB;IAEhB,MAAM,MAAM,GAAG,kBAAkB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAEnD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,eAAe,CAAC;YAC5D,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,KAAK,EAAE,OAAO,CAAC,KAAmC;SACnD,CAAC,CAAC;QAEH,IAAI,UAAU,EAAE,EAAE,CAAC;YACjB,UAAU,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,YAAY,EAAE,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;YACrE,OAAO;QACT,CAAC;QAED,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7B,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;YACrC,OAAO;QACT,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;YACrC,IAAI,CAAC,IAAI;YACT,IAAI,CAAC,IAAI;YACT,IAAI,CAAC,WAAW,IAAI,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC;YAClC,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,kBAAkB,EAAE;SAC9C,CAAC,CAAC;QAEH,OAAO,CAAC,GAAG,CACT,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,EAAE,IAAI,CAAC,CAC9G,CAAC;QAEF,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC,YAAY,CAAC;QAC9C,IAAI,MAAM,IAAI,KAAK,EAAE,CAAC;YACpB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,MAAM,YAAY,KAAK,EAAE,CAAC,CAAC,CAAC;QAC/D,CAAC;aAAM,IAAI,MAAM,EAAE,CAAC;YAClB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,MAAM,EAAE,CAAC,CAAC,CAAC;QAC9C,CAAC;aAAM,IAAI,KAAK,EAAE,CAAC;YACjB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,KAAK,EAAE,CAAC,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,cAAc,CAAC,KAAK,CAAC,CAAC;IACxB,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,IAAY,EAAE,MAAc,EAAE,OAAgB;IACnF,MAAM,MAAM,GAAG,kBAAkB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAEnD,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QACtE,UAAU,CAAC,UAAU,CAAC,CAAC;IACzB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,cAAc,CAAC,KAAK,CAAC,CAAC;IACxB,CAAC;AACH,CAAC;AAQD,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,OAAgC,EAChC,MAAc,EACd,OAAgB;IAEhB,MAAM,MAAM,GAAG,kBAAkB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAEnD,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,gBAAgB,CAAC;YACjE,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,GAAG,CAAC,OAAO,CAAC,WAAW,IAAI,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC;SACjE,CAAC,CAAC;QACH,aAAa,CAAC,oBAAoB,EAAE,UAAU,CAAC,CAAC;IAClD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,cAAc,CAAC,KAAK,CAAC,CAAC;IACxB,CAAC;AACH,CAAC;AAOD,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,IAAY,EACZ,OAAgC,EAChC,MAAc,EACd,OAAgB;IAEhB,MAAM,MAAM,GAAG,kBAAkB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAEnD,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,gBAAgB,CAAC,IAAI,EAAE;YACvE,GAAG,CAAC,OAAO,CAAC,IAAI,KAAK,SAAS,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC;YACzD,GAAG,CAAC,OAAO,CAAC,WAAW,KAAK,SAAS,IAAI,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC;SAC/E,CAAC,CAAC;QACH,aAAa,CAAC,oBAAoB,EAAE,UAAU,CAAC,CAAC;IAClD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,cAAc,CAAC,KAAK,CAAC,CAAC;IACxB,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,IAAY,EAAE,MAAc,EAAE,OAAgB;IACtF,MAAM,MAAM,GAAG,kBAAkB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAEnD,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;QACtD,aAAa,CAAC,oBAAoB,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IAChD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,cAAc,CAAC,KAAK,CAAC,CAAC;IACxB,CAAC;AACH,CAAC","sourcesContent":["import chalk from 'chalk';\nimport { createWorkOSClient } from '../lib/workos-client.js';\nimport { formatTable } from '../utils/table.js';\nimport { outputSuccess, outputJson, isJsonMode } from '../utils/output.js';\nimport { createApiErrorHandler } from '../lib/api-error-handler.js';\n\nconst handleApiError = createApiErrorHandler('Permission');\n\nexport interface PermissionListOptions {\n limit?: number;\n before?: string;\n after?: string;\n order?: string;\n}\n\nexport async function runPermissionList(\n options: PermissionListOptions,\n apiKey: string,\n baseUrl?: string,\n): Promise<void> {\n const client = createWorkOSClient(apiKey, baseUrl);\n\n try {\n const result = await client.sdk.authorization.listPermissions({\n limit: options.limit,\n before: options.before,\n after: options.after,\n order: options.order as 'asc' | 'desc' | undefined,\n });\n\n if (isJsonMode()) {\n outputJson({ data: result.data, listMetadata: result.listMetadata });\n return;\n }\n\n if (result.data.length === 0) {\n console.log('No permissions found.');\n return;\n }\n\n const rows = result.data.map((perm) => [\n perm.slug,\n perm.name,\n perm.description || chalk.dim('-'),\n new Date(perm.createdAt).toLocaleDateString(),\n ]);\n\n console.log(\n formatTable([{ header: 'Slug' }, { header: 'Name' }, { header: 'Description' }, { header: 'Created' }], rows),\n );\n\n const { before, after } = result.listMetadata;\n if (before && after) {\n console.log(chalk.dim(`Before: ${before} After: ${after}`));\n } else if (before) {\n console.log(chalk.dim(`Before: ${before}`));\n } else if (after) {\n console.log(chalk.dim(`After: ${after}`));\n }\n } catch (error) {\n handleApiError(error);\n }\n}\n\nexport async function runPermissionGet(slug: string, apiKey: string, baseUrl?: string): Promise<void> {\n const client = createWorkOSClient(apiKey, baseUrl);\n\n try {\n const permission = await client.sdk.authorization.getPermission(slug);\n outputJson(permission);\n } catch (error) {\n handleApiError(error);\n }\n}\n\nexport interface PermissionCreateOptions {\n slug: string;\n name: string;\n description?: string;\n}\n\nexport async function runPermissionCreate(\n options: PermissionCreateOptions,\n apiKey: string,\n baseUrl?: string,\n): Promise<void> {\n const client = createWorkOSClient(apiKey, baseUrl);\n\n try {\n const permission = await client.sdk.authorization.createPermission({\n slug: options.slug,\n name: options.name,\n ...(options.description && { description: options.description }),\n });\n outputSuccess('Created permission', permission);\n } catch (error) {\n handleApiError(error);\n }\n}\n\nexport interface PermissionUpdateOptions {\n name?: string;\n description?: string;\n}\n\nexport async function runPermissionUpdate(\n slug: string,\n options: PermissionUpdateOptions,\n apiKey: string,\n baseUrl?: string,\n): Promise<void> {\n const client = createWorkOSClient(apiKey, baseUrl);\n\n try {\n const permission = await client.sdk.authorization.updatePermission(slug, {\n ...(options.name !== undefined && { name: options.name }),\n ...(options.description !== undefined && { description: options.description }),\n });\n outputSuccess('Updated permission', permission);\n } catch (error) {\n handleApiError(error);\n }\n}\n\nexport async function runPermissionDelete(slug: string, apiKey: string, baseUrl?: string): Promise<void> {\n const client = createWorkOSClient(apiKey, baseUrl);\n\n try {\n await client.sdk.authorization.deletePermission(slug);\n outputSuccess('Deleted permission', { slug });\n } catch (error) {\n handleApiError(error);\n }\n}\n"]}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import { createWorkOSClient } from '../lib/workos-client.js';
|
|
3
|
+
import { outputJson, isJsonMode } from '../utils/output.js';
|
|
4
|
+
import { createApiErrorHandler } from '../lib/api-error-handler.js';
|
|
5
|
+
const handleApiError = createApiErrorHandler('Portal');
|
|
6
|
+
export async function runPortalGenerateLink(options, apiKey, baseUrl) {
|
|
7
|
+
const client = createWorkOSClient(apiKey, baseUrl);
|
|
8
|
+
try {
|
|
9
|
+
const result = await client.sdk.portal.generateLink({
|
|
10
|
+
intent: options.intent,
|
|
11
|
+
organization: options.organization,
|
|
12
|
+
...(options.returnUrl && { returnUrl: options.returnUrl }),
|
|
13
|
+
...(options.successUrl && { successUrl: options.successUrl }),
|
|
14
|
+
});
|
|
15
|
+
if (isJsonMode()) {
|
|
16
|
+
outputJson(result);
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
console.log(result.link);
|
|
20
|
+
console.log(chalk.dim('Note: Portal links expire after 5 minutes.'));
|
|
21
|
+
}
|
|
22
|
+
catch (error) {
|
|
23
|
+
handleApiError(error);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=portal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"portal.js","sourceRoot":"","sources":["../../src/commands/portal.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AAEpE,MAAM,cAAc,GAAG,qBAAqB,CAAC,QAAQ,CAAC,CAAC;AASvD,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,OAA8B,EAC9B,MAAc,EACd,OAAgB;IAEhB,MAAM,MAAM,GAAG,kBAAkB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAEnD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC;YAClD,MAAM,EAAE,OAAO,CAAC,MAAwE;YACxF,YAAY,EAAE,OAAO,CAAC,YAAY;YAClC,GAAG,CAAC,OAAO,CAAC,SAAS,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC;YAC1D,GAAG,CAAC,OAAO,CAAC,UAAU,IAAI,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC;SAC9D,CAAC,CAAC;QAEH,IAAI,UAAU,EAAE,EAAE,CAAC;YACjB,UAAU,CAAC,MAAM,CAAC,CAAC;YACnB,OAAO;QACT,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACzB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC,CAAC;IACvE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,cAAc,CAAC,KAAK,CAAC,CAAC;IACxB,CAAC;AACH,CAAC","sourcesContent":["import chalk from 'chalk';\nimport { createWorkOSClient } from '../lib/workos-client.js';\nimport { outputJson, isJsonMode } from '../utils/output.js';\nimport { createApiErrorHandler } from '../lib/api-error-handler.js';\n\nconst handleApiError = createApiErrorHandler('Portal');\n\nexport interface PortalGenerateOptions {\n intent: string;\n organization: string;\n returnUrl?: string;\n successUrl?: string;\n}\n\nexport async function runPortalGenerateLink(\n options: PortalGenerateOptions,\n apiKey: string,\n baseUrl?: string,\n): Promise<void> {\n const client = createWorkOSClient(apiKey, baseUrl);\n\n try {\n const result = await client.sdk.portal.generateLink({\n intent: options.intent as Parameters<typeof client.sdk.portal.generateLink>[0]['intent'],\n organization: options.organization,\n ...(options.returnUrl && { returnUrl: options.returnUrl }),\n ...(options.successUrl && { successUrl: options.successUrl }),\n });\n\n if (isJsonMode()) {\n outputJson(result);\n return;\n }\n\n console.log(result.link);\n console.log(chalk.dim('Note: Portal links expire after 5 minutes.'));\n } catch (error) {\n handleApiError(error);\n }\n}\n"]}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export declare function runRoleList(orgId: string | undefined, apiKey: string, baseUrl?: string): Promise<void>;
|
|
2
|
+
export declare function runRoleGet(slug: string, orgId: string | undefined, apiKey: string, baseUrl?: string): Promise<void>;
|
|
3
|
+
export interface RoleCreateOptions {
|
|
4
|
+
slug: string;
|
|
5
|
+
name: string;
|
|
6
|
+
description?: string;
|
|
7
|
+
}
|
|
8
|
+
export declare function runRoleCreate(options: RoleCreateOptions, orgId: string | undefined, apiKey: string, baseUrl?: string): Promise<void>;
|
|
9
|
+
export interface RoleUpdateOptions {
|
|
10
|
+
name?: string;
|
|
11
|
+
description?: string;
|
|
12
|
+
}
|
|
13
|
+
export declare function runRoleUpdate(slug: string, options: RoleUpdateOptions, orgId: string | undefined, apiKey: string, baseUrl?: string): Promise<void>;
|
|
14
|
+
export declare function runRoleDelete(slug: string, orgId: string, apiKey: string, baseUrl?: string): Promise<void>;
|
|
15
|
+
export declare function runRoleSetPermissions(slug: string, permissions: string[], orgId: string | undefined, apiKey: string, baseUrl?: string): Promise<void>;
|
|
16
|
+
export declare function runRoleAddPermission(slug: string, permissionSlug: string, orgId: string | undefined, apiKey: string, baseUrl?: string): Promise<void>;
|
|
17
|
+
export declare function runRoleRemovePermission(slug: string, permissionSlug: string, orgId: string, apiKey: string, baseUrl?: string): Promise<void>;
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
import { createWorkOSClient } from '../lib/workos-client.js';
|
|
2
|
+
import { formatTable } from '../utils/table.js';
|
|
3
|
+
import { outputSuccess, outputJson, isJsonMode } from '../utils/output.js';
|
|
4
|
+
import { createApiErrorHandler } from '../lib/api-error-handler.js';
|
|
5
|
+
const handleApiError = createApiErrorHandler('Role');
|
|
6
|
+
export async function runRoleList(orgId, apiKey, baseUrl) {
|
|
7
|
+
const client = createWorkOSClient(apiKey, baseUrl);
|
|
8
|
+
try {
|
|
9
|
+
const result = orgId
|
|
10
|
+
? await client.sdk.authorization.listOrganizationRoles(orgId)
|
|
11
|
+
: await client.sdk.authorization.listEnvironmentRoles();
|
|
12
|
+
if (isJsonMode()) {
|
|
13
|
+
outputJson({ data: result.data });
|
|
14
|
+
return;
|
|
15
|
+
}
|
|
16
|
+
if (result.data.length === 0) {
|
|
17
|
+
console.log('No roles found.');
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
const rows = result.data.map((role) => [
|
|
21
|
+
role.slug,
|
|
22
|
+
role.name,
|
|
23
|
+
role.type,
|
|
24
|
+
String(role.permissions.length),
|
|
25
|
+
new Date(role.createdAt).toLocaleDateString(),
|
|
26
|
+
]);
|
|
27
|
+
console.log(formatTable([{ header: 'Slug' }, { header: 'Name' }, { header: 'Type' }, { header: 'Permissions' }, { header: 'Created' }], rows));
|
|
28
|
+
}
|
|
29
|
+
catch (error) {
|
|
30
|
+
handleApiError(error);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
export async function runRoleGet(slug, orgId, apiKey, baseUrl) {
|
|
34
|
+
const client = createWorkOSClient(apiKey, baseUrl);
|
|
35
|
+
try {
|
|
36
|
+
const role = orgId
|
|
37
|
+
? await client.sdk.authorization.getOrganizationRole(orgId, slug)
|
|
38
|
+
: await client.sdk.authorization.getEnvironmentRole(slug);
|
|
39
|
+
outputJson(role);
|
|
40
|
+
}
|
|
41
|
+
catch (error) {
|
|
42
|
+
handleApiError(error);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
export async function runRoleCreate(options, orgId, apiKey, baseUrl) {
|
|
46
|
+
const client = createWorkOSClient(apiKey, baseUrl);
|
|
47
|
+
const opts = {
|
|
48
|
+
slug: options.slug,
|
|
49
|
+
name: options.name,
|
|
50
|
+
...(options.description && { description: options.description }),
|
|
51
|
+
};
|
|
52
|
+
try {
|
|
53
|
+
const role = orgId
|
|
54
|
+
? await client.sdk.authorization.createOrganizationRole(orgId, opts)
|
|
55
|
+
: await client.sdk.authorization.createEnvironmentRole(opts);
|
|
56
|
+
outputSuccess('Created role', role);
|
|
57
|
+
}
|
|
58
|
+
catch (error) {
|
|
59
|
+
handleApiError(error);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
export async function runRoleUpdate(slug, options, orgId, apiKey, baseUrl) {
|
|
63
|
+
const client = createWorkOSClient(apiKey, baseUrl);
|
|
64
|
+
const opts = {
|
|
65
|
+
...(options.name !== undefined && { name: options.name }),
|
|
66
|
+
...(options.description !== undefined && { description: options.description }),
|
|
67
|
+
};
|
|
68
|
+
try {
|
|
69
|
+
const role = orgId
|
|
70
|
+
? await client.sdk.authorization.updateOrganizationRole(orgId, slug, opts)
|
|
71
|
+
: await client.sdk.authorization.updateEnvironmentRole(slug, opts);
|
|
72
|
+
outputSuccess('Updated role', role);
|
|
73
|
+
}
|
|
74
|
+
catch (error) {
|
|
75
|
+
handleApiError(error);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
export async function runRoleDelete(slug, orgId, apiKey, baseUrl) {
|
|
79
|
+
const client = createWorkOSClient(apiKey, baseUrl);
|
|
80
|
+
try {
|
|
81
|
+
await client.sdk.authorization.deleteOrganizationRole(orgId, slug);
|
|
82
|
+
outputSuccess('Deleted role', { slug, organizationId: orgId });
|
|
83
|
+
}
|
|
84
|
+
catch (error) {
|
|
85
|
+
handleApiError(error);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
export async function runRoleSetPermissions(slug, permissions, orgId, apiKey, baseUrl) {
|
|
89
|
+
const client = createWorkOSClient(apiKey, baseUrl);
|
|
90
|
+
try {
|
|
91
|
+
const role = orgId
|
|
92
|
+
? await client.sdk.authorization.setOrganizationRolePermissions(orgId, slug, { permissions })
|
|
93
|
+
: await client.sdk.authorization.setEnvironmentRolePermissions(slug, { permissions });
|
|
94
|
+
outputSuccess('Set permissions on role', role);
|
|
95
|
+
}
|
|
96
|
+
catch (error) {
|
|
97
|
+
handleApiError(error);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
export async function runRoleAddPermission(slug, permissionSlug, orgId, apiKey, baseUrl) {
|
|
101
|
+
const client = createWorkOSClient(apiKey, baseUrl);
|
|
102
|
+
try {
|
|
103
|
+
const role = orgId
|
|
104
|
+
? await client.sdk.authorization.addOrganizationRolePermission(orgId, slug, { permissionSlug })
|
|
105
|
+
: await client.sdk.authorization.addEnvironmentRolePermission(slug, { permissionSlug });
|
|
106
|
+
outputSuccess('Added permission to role', role);
|
|
107
|
+
}
|
|
108
|
+
catch (error) {
|
|
109
|
+
handleApiError(error);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
export async function runRoleRemovePermission(slug, permissionSlug, orgId, apiKey, baseUrl) {
|
|
113
|
+
const client = createWorkOSClient(apiKey, baseUrl);
|
|
114
|
+
try {
|
|
115
|
+
await client.sdk.authorization.removeOrganizationRolePermission(orgId, slug, { permissionSlug });
|
|
116
|
+
outputSuccess('Removed permission from role', { slug, permissionSlug, organizationId: orgId });
|
|
117
|
+
}
|
|
118
|
+
catch (error) {
|
|
119
|
+
handleApiError(error);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
//# sourceMappingURL=role.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"role.js","sourceRoot":"","sources":["../../src/commands/role.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAC3E,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AAEpE,MAAM,cAAc,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;AAErD,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,KAAyB,EAAE,MAAc,EAAE,OAAgB;IAC3F,MAAM,MAAM,GAAG,kBAAkB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAEnD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,KAAK;YAClB,CAAC,CAAC,MAAM,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,qBAAqB,CAAC,KAAK,CAAC;YAC7D,CAAC,CAAC,MAAM,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,oBAAoB,EAAE,CAAC;QAE1D,IAAI,UAAU,EAAE,EAAE,CAAC;YACjB,UAAU,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;YAClC,OAAO;QACT,CAAC;QAED,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7B,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;YAC/B,OAAO;QACT,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;YACrC,IAAI,CAAC,IAAI;YACT,IAAI,CAAC,IAAI;YACT,IAAI,CAAC,IAAI;YACT,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;YAC/B,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,kBAAkB,EAAE;SAC9C,CAAC,CAAC;QAEH,OAAO,CAAC,GAAG,CACT,WAAW,CACT,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,EAC9G,IAAI,CACL,CACF,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,cAAc,CAAC,KAAK,CAAC,CAAC;IACxB,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,IAAY,EACZ,KAAyB,EACzB,MAAc,EACd,OAAgB;IAEhB,MAAM,MAAM,GAAG,kBAAkB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAEnD,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,KAAK;YAChB,CAAC,CAAC,MAAM,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,mBAAmB,CAAC,KAAK,EAAE,IAAI,CAAC;YACjE,CAAC,CAAC,MAAM,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;QAC5D,UAAU,CAAC,IAAI,CAAC,CAAC;IACnB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,cAAc,CAAC,KAAK,CAAC,CAAC;IACxB,CAAC;AACH,CAAC;AAQD,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,OAA0B,EAC1B,KAAyB,EACzB,MAAc,EACd,OAAgB;IAEhB,MAAM,MAAM,GAAG,kBAAkB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAEnD,MAAM,IAAI,GAAG;QACX,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,GAAG,CAAC,OAAO,CAAC,WAAW,IAAI,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC;KACjE,CAAC;IAEF,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,KAAK;YAChB,CAAC,CAAC,MAAM,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,sBAAsB,CAAC,KAAK,EAAE,IAAI,CAAC;YACpE,CAAC,CAAC,MAAM,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;QAC/D,aAAa,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;IACtC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,cAAc,CAAC,KAAK,CAAC,CAAC;IACxB,CAAC;AACH,CAAC;AAOD,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,IAAY,EACZ,OAA0B,EAC1B,KAAyB,EACzB,MAAc,EACd,OAAgB;IAEhB,MAAM,MAAM,GAAG,kBAAkB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAEnD,MAAM,IAAI,GAAG;QACX,GAAG,CAAC,OAAO,CAAC,IAAI,KAAK,SAAS,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC;QACzD,GAAG,CAAC,OAAO,CAAC,WAAW,KAAK,SAAS,IAAI,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC;KAC/E,CAAC;IAEF,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,KAAK;YAChB,CAAC,CAAC,MAAM,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,sBAAsB,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC;YAC1E,CAAC,CAAC,MAAM,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,qBAAqB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACrE,aAAa,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;IACtC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,cAAc,CAAC,KAAK,CAAC,CAAC;IACxB,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,IAAY,EAAE,KAAa,EAAE,MAAc,EAAE,OAAgB;IAC/F,MAAM,MAAM,GAAG,kBAAkB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAEnD,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,sBAAsB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACnE,aAAa,CAAC,cAAc,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,CAAC;IACjE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,cAAc,CAAC,KAAK,CAAC,CAAC;IACxB,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,IAAY,EACZ,WAAqB,EACrB,KAAyB,EACzB,MAAc,EACd,OAAgB;IAEhB,MAAM,MAAM,GAAG,kBAAkB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAEnD,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,KAAK;YAChB,CAAC,CAAC,MAAM,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,8BAA8B,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,WAAW,EAAE,CAAC;YAC7F,CAAC,CAAC,MAAM,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,6BAA6B,CAAC,IAAI,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC;QACxF,aAAa,CAAC,yBAAyB,EAAE,IAAI,CAAC,CAAC;IACjD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,cAAc,CAAC,KAAK,CAAC,CAAC;IACxB,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,IAAY,EACZ,cAAsB,EACtB,KAAyB,EACzB,MAAc,EACd,OAAgB;IAEhB,MAAM,MAAM,GAAG,kBAAkB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAEnD,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,KAAK;YAChB,CAAC,CAAC,MAAM,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,6BAA6B,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,cAAc,EAAE,CAAC;YAC/F,CAAC,CAAC,MAAM,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,4BAA4B,CAAC,IAAI,EAAE,EAAE,cAAc,EAAE,CAAC,CAAC;QAC1F,aAAa,CAAC,0BAA0B,EAAE,IAAI,CAAC,CAAC;IAClD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,cAAc,CAAC,KAAK,CAAC,CAAC;IACxB,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,IAAY,EACZ,cAAsB,EACtB,KAAa,EACb,MAAc,EACd,OAAgB;IAEhB,MAAM,MAAM,GAAG,kBAAkB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAEnD,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,gCAAgC,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,cAAc,EAAE,CAAC,CAAC;QACjG,aAAa,CAAC,8BAA8B,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,CAAC;IACjG,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,cAAc,CAAC,KAAK,CAAC,CAAC;IACxB,CAAC;AACH,CAAC","sourcesContent":["import { createWorkOSClient } from '../lib/workos-client.js';\nimport { formatTable } from '../utils/table.js';\nimport { outputSuccess, outputJson, isJsonMode } from '../utils/output.js';\nimport { createApiErrorHandler } from '../lib/api-error-handler.js';\n\nconst handleApiError = createApiErrorHandler('Role');\n\nexport async function runRoleList(orgId: string | undefined, apiKey: string, baseUrl?: string): Promise<void> {\n const client = createWorkOSClient(apiKey, baseUrl);\n\n try {\n const result = orgId\n ? await client.sdk.authorization.listOrganizationRoles(orgId)\n : await client.sdk.authorization.listEnvironmentRoles();\n\n if (isJsonMode()) {\n outputJson({ data: result.data });\n return;\n }\n\n if (result.data.length === 0) {\n console.log('No roles found.');\n return;\n }\n\n const rows = result.data.map((role) => [\n role.slug,\n role.name,\n role.type,\n String(role.permissions.length),\n new Date(role.createdAt).toLocaleDateString(),\n ]);\n\n console.log(\n formatTable(\n [{ header: 'Slug' }, { header: 'Name' }, { header: 'Type' }, { header: 'Permissions' }, { header: 'Created' }],\n rows,\n ),\n );\n } catch (error) {\n handleApiError(error);\n }\n}\n\nexport async function runRoleGet(\n slug: string,\n orgId: string | undefined,\n apiKey: string,\n baseUrl?: string,\n): Promise<void> {\n const client = createWorkOSClient(apiKey, baseUrl);\n\n try {\n const role = orgId\n ? await client.sdk.authorization.getOrganizationRole(orgId, slug)\n : await client.sdk.authorization.getEnvironmentRole(slug);\n outputJson(role);\n } catch (error) {\n handleApiError(error);\n }\n}\n\nexport interface RoleCreateOptions {\n slug: string;\n name: string;\n description?: string;\n}\n\nexport async function runRoleCreate(\n options: RoleCreateOptions,\n orgId: string | undefined,\n apiKey: string,\n baseUrl?: string,\n): Promise<void> {\n const client = createWorkOSClient(apiKey, baseUrl);\n\n const opts = {\n slug: options.slug,\n name: options.name,\n ...(options.description && { description: options.description }),\n };\n\n try {\n const role = orgId\n ? await client.sdk.authorization.createOrganizationRole(orgId, opts)\n : await client.sdk.authorization.createEnvironmentRole(opts);\n outputSuccess('Created role', role);\n } catch (error) {\n handleApiError(error);\n }\n}\n\nexport interface RoleUpdateOptions {\n name?: string;\n description?: string;\n}\n\nexport async function runRoleUpdate(\n slug: string,\n options: RoleUpdateOptions,\n orgId: string | undefined,\n apiKey: string,\n baseUrl?: string,\n): Promise<void> {\n const client = createWorkOSClient(apiKey, baseUrl);\n\n const opts = {\n ...(options.name !== undefined && { name: options.name }),\n ...(options.description !== undefined && { description: options.description }),\n };\n\n try {\n const role = orgId\n ? await client.sdk.authorization.updateOrganizationRole(orgId, slug, opts)\n : await client.sdk.authorization.updateEnvironmentRole(slug, opts);\n outputSuccess('Updated role', role);\n } catch (error) {\n handleApiError(error);\n }\n}\n\nexport async function runRoleDelete(slug: string, orgId: string, apiKey: string, baseUrl?: string): Promise<void> {\n const client = createWorkOSClient(apiKey, baseUrl);\n\n try {\n await client.sdk.authorization.deleteOrganizationRole(orgId, slug);\n outputSuccess('Deleted role', { slug, organizationId: orgId });\n } catch (error) {\n handleApiError(error);\n }\n}\n\nexport async function runRoleSetPermissions(\n slug: string,\n permissions: string[],\n orgId: string | undefined,\n apiKey: string,\n baseUrl?: string,\n): Promise<void> {\n const client = createWorkOSClient(apiKey, baseUrl);\n\n try {\n const role = orgId\n ? await client.sdk.authorization.setOrganizationRolePermissions(orgId, slug, { permissions })\n : await client.sdk.authorization.setEnvironmentRolePermissions(slug, { permissions });\n outputSuccess('Set permissions on role', role);\n } catch (error) {\n handleApiError(error);\n }\n}\n\nexport async function runRoleAddPermission(\n slug: string,\n permissionSlug: string,\n orgId: string | undefined,\n apiKey: string,\n baseUrl?: string,\n): Promise<void> {\n const client = createWorkOSClient(apiKey, baseUrl);\n\n try {\n const role = orgId\n ? await client.sdk.authorization.addOrganizationRolePermission(orgId, slug, { permissionSlug })\n : await client.sdk.authorization.addEnvironmentRolePermission(slug, { permissionSlug });\n outputSuccess('Added permission to role', role);\n } catch (error) {\n handleApiError(error);\n }\n}\n\nexport async function runRoleRemovePermission(\n slug: string,\n permissionSlug: string,\n orgId: string,\n apiKey: string,\n baseUrl?: string,\n): Promise<void> {\n const client = createWorkOSClient(apiKey, baseUrl);\n\n try {\n await client.sdk.authorization.removeOrganizationRolePermission(orgId, slug, { permissionSlug });\n outputSuccess('Removed permission from role', { slug, permissionSlug, organizationId: orgId });\n } catch (error) {\n handleApiError(error);\n }\n}\n"]}
|