opal-security 5.0.1 → 5.1.0
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 +26 -28
- package/build/commands/login.d.ts +0 -1
- package/build/commands/login.js +36 -89
- package/build/commands/whoami.js +2 -2
- package/build/graphql/gql.d.ts +4 -4
- package/build/graphql/gql.js +2 -2
- package/build/graphql/graphql.d.ts +6661 -59
- package/build/graphql/graphql.js +701 -3
- package/build/labels.d.ts +6 -2
- package/build/labels.js +133 -2
- package/build/lib/request/api/queries/apps.js +5 -1
- package/build/lib/request/api/queries/assets.js +10 -3
- package/build/lib/request/api/queries/roles.js +11 -5
- package/build/lib/request/displays.js +13 -8
- package/build/lib/request/prompts/asset-prompt.js +5 -2
- package/build/lib/request/prompts/role-prompt.js +1 -1
- package/build/lib/request/request-utils.d.ts +2 -2
- package/build/lib/request/request-utils.js +20 -20
- package/build/lib/request/types.d.ts +5 -3
- package/build/lib/resources.js +1 -0
- package/oclif.manifest.json +22 -29
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -22,7 +22,7 @@ $ npm install -g opal-security
|
|
|
22
22
|
$ opal COMMAND
|
|
23
23
|
running command...
|
|
24
24
|
$ opal (--version)
|
|
25
|
-
opal-security/5.0
|
|
25
|
+
opal-security/5.1.0 darwin-arm64 node-v18.20.4
|
|
26
26
|
$ opal --help [COMMAND]
|
|
27
27
|
USAGE
|
|
28
28
|
$ opal COMMAND
|
|
@@ -68,7 +68,7 @@ USAGE
|
|
|
68
68
|
$ opal autocomplete [SHELL] [-r]
|
|
69
69
|
|
|
70
70
|
ARGUMENTS
|
|
71
|
-
|
|
71
|
+
SHELL shell type
|
|
72
72
|
|
|
73
73
|
FLAGS
|
|
74
74
|
-r, --refresh-cache Refresh cache (ignores displaying instructions)
|
|
@@ -106,7 +106,7 @@ EXAMPLES
|
|
|
106
106
|
$ opal aws:identity
|
|
107
107
|
```
|
|
108
108
|
|
|
109
|
-
_See code: [src/commands/aws/identity.ts](https://github.com/opalsecurity/opal-cli/blob/v5.0
|
|
109
|
+
_See code: [src/commands/aws/identity.ts](https://github.com/opalsecurity/opal-cli/blob/v5.1.0/src/commands/aws/identity.ts)_
|
|
110
110
|
|
|
111
111
|
## `opal clear-auth-config`
|
|
112
112
|
|
|
@@ -123,7 +123,7 @@ EXAMPLES
|
|
|
123
123
|
$ opal clear-auth-config
|
|
124
124
|
```
|
|
125
125
|
|
|
126
|
-
_See code: [src/commands/clear-auth-config.ts](https://github.com/opalsecurity/opal-cli/blob/v5.0
|
|
126
|
+
_See code: [src/commands/clear-auth-config.ts](https://github.com/opalsecurity/opal-cli/blob/v5.1.0/src/commands/clear-auth-config.ts)_
|
|
127
127
|
|
|
128
128
|
## `opal curl-example`
|
|
129
129
|
|
|
@@ -140,7 +140,7 @@ DESCRIPTION
|
|
|
140
140
|
Prints out an example cURL command containing the parameters the CLI uses to query the Opal server.
|
|
141
141
|
```
|
|
142
142
|
|
|
143
|
-
_See code: [src/commands/curl-example.ts](https://github.com/opalsecurity/opal-cli/blob/v5.0
|
|
143
|
+
_See code: [src/commands/curl-example.ts](https://github.com/opalsecurity/opal-cli/blob/v5.1.0/src/commands/curl-example.ts)_
|
|
144
144
|
|
|
145
145
|
## `opal groups get`
|
|
146
146
|
|
|
@@ -161,7 +161,7 @@ EXAMPLES
|
|
|
161
161
|
$ opal groups:get --id 54052a3e-5375-4392-aeaf-0c6c44c131d4
|
|
162
162
|
```
|
|
163
163
|
|
|
164
|
-
_See code: [src/commands/groups/get.ts](https://github.com/opalsecurity/opal-cli/blob/v5.0
|
|
164
|
+
_See code: [src/commands/groups/get.ts](https://github.com/opalsecurity/opal-cli/blob/v5.1.0/src/commands/groups/get.ts)_
|
|
165
165
|
|
|
166
166
|
## `opal help [COMMANDS]`
|
|
167
167
|
|
|
@@ -172,7 +172,7 @@ USAGE
|
|
|
172
172
|
$ opal help [COMMANDS...] [-n]
|
|
173
173
|
|
|
174
174
|
ARGUMENTS
|
|
175
|
-
|
|
175
|
+
COMMANDS... Command to show help for.
|
|
176
176
|
|
|
177
177
|
FLAGS
|
|
178
178
|
-n, --nested-commands Include all nested commands in the output.
|
|
@@ -208,7 +208,7 @@ EXAMPLES
|
|
|
208
208
|
$ opal iam-roles:start --id 51f7176b-0464-4a6f-8369-e951e187b398 --profileName "custom-profile"
|
|
209
209
|
```
|
|
210
210
|
|
|
211
|
-
_See code: [src/commands/iam-roles/start.ts](https://github.com/opalsecurity/opal-cli/blob/v5.0
|
|
211
|
+
_See code: [src/commands/iam-roles/start.ts](https://github.com/opalsecurity/opal-cli/blob/v5.1.0/src/commands/iam-roles/start.ts)_
|
|
212
212
|
|
|
213
213
|
## `opal kube-roles start`
|
|
214
214
|
|
|
@@ -235,7 +235,7 @@ EXAMPLES
|
|
|
235
235
|
$ opal kube-roles:start --id 51f7176b-0464-4a6f-8369-e951e187b398 --accessLevelRemoteId "arn:aws:iam::712234975475:role/acme-eks-cluster-admin-role"
|
|
236
236
|
```
|
|
237
237
|
|
|
238
|
-
_See code: [src/commands/kube-roles/start.ts](https://github.com/opalsecurity/opal-cli/blob/v5.0
|
|
238
|
+
_See code: [src/commands/kube-roles/start.ts](https://github.com/opalsecurity/opal-cli/blob/v5.1.0/src/commands/kube-roles/start.ts)_
|
|
239
239
|
|
|
240
240
|
## `opal login`
|
|
241
241
|
|
|
@@ -243,11 +243,9 @@ Authenticates you with the Opal server.
|
|
|
243
243
|
|
|
244
244
|
```
|
|
245
245
|
USAGE
|
|
246
|
-
$ opal login [-h] [--email <value>]
|
|
246
|
+
$ opal login [-h] [--email <value>]
|
|
247
247
|
|
|
248
248
|
FLAGS
|
|
249
|
-
-d, --device-code Enables the Device Code flow instead of the Authorization Code flow when logging in.
|
|
250
|
-
Use the Device Code flow if your environment can't open a browser or listen on a local port.
|
|
251
249
|
-h, --help Show CLI help.
|
|
252
250
|
--email=<value> Email address to login with.
|
|
253
251
|
|
|
@@ -258,7 +256,7 @@ EXAMPLES
|
|
|
258
256
|
$ opal login
|
|
259
257
|
```
|
|
260
258
|
|
|
261
|
-
_See code: [src/commands/login.ts](https://github.com/opalsecurity/opal-cli/blob/v5.0
|
|
259
|
+
_See code: [src/commands/login.ts](https://github.com/opalsecurity/opal-cli/blob/v5.1.0/src/commands/login.ts)_
|
|
262
260
|
|
|
263
261
|
## `opal logout`
|
|
264
262
|
|
|
@@ -278,7 +276,7 @@ EXAMPLES
|
|
|
278
276
|
$ opal logout
|
|
279
277
|
```
|
|
280
278
|
|
|
281
|
-
_See code: [src/commands/logout.ts](https://github.com/opalsecurity/opal-cli/blob/v5.0
|
|
279
|
+
_See code: [src/commands/logout.ts](https://github.com/opalsecurity/opal-cli/blob/v5.1.0/src/commands/logout.ts)_
|
|
282
280
|
|
|
283
281
|
## `opal postgres-instances start`
|
|
284
282
|
|
|
@@ -312,7 +310,7 @@ EXAMPLES
|
|
|
312
310
|
$ opal postgres-instances:start --id 51f7176b-0464-4a6f-8369-e951e187b398 --accessLevelRemoteId fullaccess --action view
|
|
313
311
|
```
|
|
314
312
|
|
|
315
|
-
_See code: [src/commands/postgres-instances/start.ts](https://github.com/opalsecurity/opal-cli/blob/v5.0
|
|
313
|
+
_See code: [src/commands/postgres-instances/start.ts](https://github.com/opalsecurity/opal-cli/blob/v5.1.0/src/commands/postgres-instances/start.ts)_
|
|
316
314
|
|
|
317
315
|
## `opal request create`
|
|
318
316
|
|
|
@@ -338,7 +336,7 @@ DESCRIPTION
|
|
|
338
336
|
Creates an Opal access request via an interactive form
|
|
339
337
|
```
|
|
340
338
|
|
|
341
|
-
_See code: [src/commands/request/create.ts](https://github.com/opalsecurity/opal-cli/blob/v5.0
|
|
339
|
+
_See code: [src/commands/request/create.ts](https://github.com/opalsecurity/opal-cli/blob/v5.1.0/src/commands/request/create.ts)_
|
|
342
340
|
|
|
343
341
|
## `opal request get`
|
|
344
342
|
|
|
@@ -362,7 +360,7 @@ EXAMPLES
|
|
|
362
360
|
$ opal request get --id 54052a3e-5375-4392-aeaf-0c6c44c131d4 --verbose
|
|
363
361
|
```
|
|
364
362
|
|
|
365
|
-
_See code: [src/commands/request/get.ts](https://github.com/opalsecurity/opal-cli/blob/v5.0
|
|
363
|
+
_See code: [src/commands/request/get.ts](https://github.com/opalsecurity/opal-cli/blob/v5.1.0/src/commands/request/get.ts)_
|
|
366
364
|
|
|
367
365
|
## `opal request list`
|
|
368
366
|
|
|
@@ -394,7 +392,7 @@ EXAMPLES
|
|
|
394
392
|
$ opal request list --n 5 --pending --verbose
|
|
395
393
|
```
|
|
396
394
|
|
|
397
|
-
_See code: [src/commands/request/list.ts](https://github.com/opalsecurity/opal-cli/blob/v5.0
|
|
395
|
+
_See code: [src/commands/request/list.ts](https://github.com/opalsecurity/opal-cli/blob/v5.1.0/src/commands/request/list.ts)_
|
|
398
396
|
|
|
399
397
|
## `opal request ls`
|
|
400
398
|
|
|
@@ -445,7 +443,7 @@ EXAMPLES
|
|
|
445
443
|
$ opal resources:get --id 54052a3e-5375-4392-aeaf-0c6c44c131d4
|
|
446
444
|
```
|
|
447
445
|
|
|
448
|
-
_See code: [src/commands/resources/get.ts](https://github.com/opalsecurity/opal-cli/blob/v5.0
|
|
446
|
+
_See code: [src/commands/resources/get.ts](https://github.com/opalsecurity/opal-cli/blob/v5.1.0/src/commands/resources/get.ts)_
|
|
449
447
|
|
|
450
448
|
## `opal set-auth-config`
|
|
451
449
|
|
|
@@ -475,7 +473,7 @@ EXAMPLES
|
|
|
475
473
|
$ opal set-auth-config --organizationID=org-456 --clientID=abc123 --issuerUrl=https://auth.example.com
|
|
476
474
|
```
|
|
477
475
|
|
|
478
|
-
_See code: [src/commands/set-auth-config.ts](https://github.com/opalsecurity/opal-cli/blob/v5.0
|
|
476
|
+
_See code: [src/commands/set-auth-config.ts](https://github.com/opalsecurity/opal-cli/blob/v5.1.0/src/commands/set-auth-config.ts)_
|
|
479
477
|
|
|
480
478
|
## `opal set-custom-header`
|
|
481
479
|
|
|
@@ -496,7 +494,7 @@ EXAMPLES
|
|
|
496
494
|
$ opal set-custom-header --header 'cf-access-token: $TOKEN'
|
|
497
495
|
```
|
|
498
496
|
|
|
499
|
-
_See code: [src/commands/set-custom-header.ts](https://github.com/opalsecurity/opal-cli/blob/v5.0
|
|
497
|
+
_See code: [src/commands/set-custom-header.ts](https://github.com/opalsecurity/opal-cli/blob/v5.1.0/src/commands/set-custom-header.ts)_
|
|
500
498
|
|
|
501
499
|
## `opal set-token`
|
|
502
500
|
|
|
@@ -516,7 +514,7 @@ EXAMPLES
|
|
|
516
514
|
$ opal set-token
|
|
517
515
|
```
|
|
518
516
|
|
|
519
|
-
_See code: [src/commands/set-token.ts](https://github.com/opalsecurity/opal-cli/blob/v5.0
|
|
517
|
+
_See code: [src/commands/set-token.ts](https://github.com/opalsecurity/opal-cli/blob/v5.1.0/src/commands/set-token.ts)_
|
|
520
518
|
|
|
521
519
|
## `opal set-url [URL]`
|
|
522
520
|
|
|
@@ -527,7 +525,7 @@ USAGE
|
|
|
527
525
|
$ opal set-url [URL] [-h] [--allowSelfSignedCerts]
|
|
528
526
|
|
|
529
527
|
ARGUMENTS
|
|
530
|
-
|
|
528
|
+
URL URL of the Opal server to use. If unspecified, defaults to https://app.opal.dev
|
|
531
529
|
|
|
532
530
|
FLAGS
|
|
533
531
|
-h, --help Show CLI help.
|
|
@@ -540,7 +538,7 @@ EXAMPLES
|
|
|
540
538
|
$ opal set-url
|
|
541
539
|
```
|
|
542
540
|
|
|
543
|
-
_See code: [src/commands/set-url.ts](https://github.com/opalsecurity/opal-cli/blob/v5.0
|
|
541
|
+
_See code: [src/commands/set-url.ts](https://github.com/opalsecurity/opal-cli/blob/v5.1.0/src/commands/set-url.ts)_
|
|
544
542
|
|
|
545
543
|
## `opal ssh copyFrom`
|
|
546
544
|
|
|
@@ -568,7 +566,7 @@ EXAMPLES
|
|
|
568
566
|
$ opal ssh:copyFrom --src instance/dir --dest my/dir --id 51f7176b-0464-4a6f-8369-e951e187b398
|
|
569
567
|
```
|
|
570
568
|
|
|
571
|
-
_See code: [src/commands/ssh/copyFrom.ts](https://github.com/opalsecurity/opal-cli/blob/v5.0
|
|
569
|
+
_See code: [src/commands/ssh/copyFrom.ts](https://github.com/opalsecurity/opal-cli/blob/v5.1.0/src/commands/ssh/copyFrom.ts)_
|
|
572
570
|
|
|
573
571
|
## `opal ssh copyTo`
|
|
574
572
|
|
|
@@ -596,7 +594,7 @@ EXAMPLES
|
|
|
596
594
|
$ opal ssh:copyTo --src my/dir --dest instance/dir --id 51f7176b-0464-4a6f-8369-e951e187b398
|
|
597
595
|
```
|
|
598
596
|
|
|
599
|
-
_See code: [src/commands/ssh/copyTo.ts](https://github.com/opalsecurity/opal-cli/blob/v5.0
|
|
597
|
+
_See code: [src/commands/ssh/copyTo.ts](https://github.com/opalsecurity/opal-cli/blob/v5.1.0/src/commands/ssh/copyTo.ts)_
|
|
600
598
|
|
|
601
599
|
## `opal ssh start`
|
|
602
600
|
|
|
@@ -619,7 +617,7 @@ EXAMPLES
|
|
|
619
617
|
$ opal ssh:start --id 51f7176b-0464-4a6f-8369-e951e187b398
|
|
620
618
|
```
|
|
621
619
|
|
|
622
|
-
_See code: [src/commands/ssh/start.ts](https://github.com/opalsecurity/opal-cli/blob/v5.0
|
|
620
|
+
_See code: [src/commands/ssh/start.ts](https://github.com/opalsecurity/opal-cli/blob/v5.1.0/src/commands/ssh/start.ts)_
|
|
623
621
|
|
|
624
622
|
## `opal version`
|
|
625
623
|
|
|
@@ -656,5 +654,5 @@ DESCRIPTION
|
|
|
656
654
|
Describes current url set, organization name, and logged in user if applicable.
|
|
657
655
|
```
|
|
658
656
|
|
|
659
|
-
_See code: [src/commands/whoami.ts](https://github.com/opalsecurity/opal-cli/blob/v5.0
|
|
657
|
+
_See code: [src/commands/whoami.ts](https://github.com/opalsecurity/opal-cli/blob/v5.1.0/src/commands/whoami.ts)_
|
|
660
658
|
<!-- commandsstop -->
|
|
@@ -9,7 +9,6 @@ export default class Login extends Command {
|
|
|
9
9
|
static flags: {
|
|
10
10
|
help: import("@oclif/core/lib/interfaces").BooleanFlag<void>;
|
|
11
11
|
email: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
12
|
-
"device-code": import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
13
12
|
};
|
|
14
13
|
static args: {};
|
|
15
14
|
run(): Promise<void>;
|
package/build/commands/login.js
CHANGED
|
@@ -95,7 +95,6 @@ class Login extends Command {
|
|
|
95
95
|
let organizationId = existingCreds.organizationID;
|
|
96
96
|
let organizationName;
|
|
97
97
|
let clientIDCandidate = (_a = existingCreds.clientID) !== null && _a !== void 0 ? _a : (_b = configData === null || configData === void 0 ? void 0 : configData.creds) === null || _b === void 0 ? void 0 : _b.clientIDCandidate; // configData.creds.clientIDCandidate is pre-4.0, load from here for backwards-compat
|
|
98
|
-
const useDeviceCodeFlow = flags["device-code"];
|
|
99
98
|
// If user starts a new login, remove their existing auth cookie / API token
|
|
100
99
|
await removeAuthSecret(this);
|
|
101
100
|
// Only use the previous email + organizationID if email isn't explicitly specified.
|
|
@@ -225,67 +224,21 @@ class Login extends Command {
|
|
|
225
224
|
scope += " mfa:skip";
|
|
226
225
|
}
|
|
227
226
|
let tokens;
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
(Code expires in ${Math.floor(response.expires_in / 60)} minutes)
|
|
244
|
-
|
|
245
|
-
⚠️ Security Check:
|
|
246
|
-
• Verify the URL starts with: ${chalk.underline(response.verification_uri)}
|
|
247
|
-
• You should see the Opal logo and a device activation dialog
|
|
248
|
-
• Never enter this code on any other website
|
|
249
|
-
`);
|
|
250
|
-
await inquirer.prompt([
|
|
251
|
-
{
|
|
252
|
-
type: "input",
|
|
253
|
-
name: "continue",
|
|
254
|
-
message: "Press Enter to open your browser and continue\n",
|
|
255
|
-
},
|
|
256
|
-
]);
|
|
257
|
-
this.log(`
|
|
258
|
-
If your browser doesn't automatically, go to:
|
|
259
|
-
|
|
260
|
-
${authURI}
|
|
261
|
-
`);
|
|
262
|
-
await open(authURI, { wait: false });
|
|
263
|
-
ux.action.start("Waiting for authorization");
|
|
264
|
-
try {
|
|
265
|
-
tokens = await client.pollDeviceAuthorizationGrant(config, response);
|
|
266
|
-
ux.action.stop("✓ Authorized");
|
|
267
|
-
}
|
|
268
|
-
catch (error) {
|
|
269
|
-
ux.action.stop("✗ Failed");
|
|
270
|
-
throw error;
|
|
271
|
-
}
|
|
272
|
-
}
|
|
273
|
-
else {
|
|
274
|
-
const { port, urlPromise } = await startLocalServer();
|
|
275
|
-
const code_verifier = client.randomPKCECodeVerifier();
|
|
276
|
-
const code_challenge = await client.calculatePKCECodeChallenge(code_verifier);
|
|
277
|
-
const clientState = client.randomState();
|
|
278
|
-
const parameters = {
|
|
279
|
-
redirect_uri: `http://127.0.0.1:${port}/callback`,
|
|
280
|
-
scope,
|
|
281
|
-
code_challenge,
|
|
282
|
-
code_challenge_method: "S256",
|
|
283
|
-
state: clientState,
|
|
284
|
-
};
|
|
285
|
-
const redirectTo = client
|
|
286
|
-
.buildAuthorizationUrl(config, parameters)
|
|
287
|
-
.toString();
|
|
288
|
-
this.log(`
|
|
227
|
+
const { port, urlPromise } = await startLocalServer();
|
|
228
|
+
const code_verifier = client.randomPKCECodeVerifier();
|
|
229
|
+
const code_challenge = await client.calculatePKCECodeChallenge(code_verifier);
|
|
230
|
+
const clientState = client.randomState();
|
|
231
|
+
const parameters = {
|
|
232
|
+
redirect_uri: `http://127.0.0.1:${port}/callback`,
|
|
233
|
+
scope,
|
|
234
|
+
code_challenge,
|
|
235
|
+
code_challenge_method: "S256",
|
|
236
|
+
state: clientState,
|
|
237
|
+
};
|
|
238
|
+
const redirectTo = client
|
|
239
|
+
.buildAuthorizationUrl(config, parameters)
|
|
240
|
+
.toString();
|
|
241
|
+
this.log(`
|
|
289
242
|
🔐 Authentication Required
|
|
290
243
|
|
|
291
244
|
To continue, please authorize this application in your browser.
|
|
@@ -296,32 +249,31 @@ To continue, please authorize this application in your browser.
|
|
|
296
249
|
• After authenticating, you should be redirected to a page that says Authentication Successful!
|
|
297
250
|
• Never enter your credentials on suspicious-looking pages
|
|
298
251
|
`);
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
252
|
+
await inquirer.prompt([
|
|
253
|
+
{
|
|
254
|
+
type: "input",
|
|
255
|
+
name: "continue",
|
|
256
|
+
message: "Press Enter to open your browser and continue\n",
|
|
257
|
+
},
|
|
258
|
+
]);
|
|
259
|
+
this.log(`
|
|
307
260
|
If your browser doesn't automatically, go to:
|
|
308
261
|
|
|
309
262
|
${redirectTo}
|
|
310
263
|
`);
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
}
|
|
264
|
+
ux.action.start("Waiting for authorization");
|
|
265
|
+
try {
|
|
266
|
+
await open(redirectTo.toString(), { wait: false });
|
|
267
|
+
const url = await urlPromise;
|
|
268
|
+
tokens = await client.authorizationCodeGrant(config, new URL(url), {
|
|
269
|
+
pkceCodeVerifier: code_verifier,
|
|
270
|
+
expectedState: clientState,
|
|
271
|
+
});
|
|
272
|
+
ux.action.stop("✓ Authorized");
|
|
273
|
+
}
|
|
274
|
+
catch (error) {
|
|
275
|
+
ux.action.stop("✗ Failed");
|
|
276
|
+
throw error;
|
|
325
277
|
}
|
|
326
278
|
const { error: tokenExchangeError } = await runMutation({
|
|
327
279
|
command: this,
|
|
@@ -378,11 +330,6 @@ Login.flags = {
|
|
|
378
330
|
multiple: false,
|
|
379
331
|
description: "Email address to login with.",
|
|
380
332
|
}),
|
|
381
|
-
"device-code": Flags.boolean({
|
|
382
|
-
char: "d",
|
|
383
|
-
description: "Enables the Device Code flow instead of the Authorization Code flow when logging in.\n\
|
|
384
|
-
Use the Device Code flow if your environment can't open a browser or listen on a local port.",
|
|
385
|
-
}),
|
|
386
333
|
};
|
|
387
334
|
Login.args = {};
|
|
388
335
|
export default Login;
|
package/build/commands/whoami.js
CHANGED
|
@@ -10,13 +10,13 @@ class WhoAmI extends Command {
|
|
|
10
10
|
const configData = getOrCreateConfigData(this.config.configDir);
|
|
11
11
|
const url = configData[urlKey];
|
|
12
12
|
if (email) {
|
|
13
|
-
this.log(`User email:
|
|
13
|
+
this.log(`User email: ${email}`);
|
|
14
14
|
}
|
|
15
15
|
if (organizationID) {
|
|
16
16
|
this.log(`OrganizationID: ${organizationID}`);
|
|
17
17
|
}
|
|
18
18
|
if (url) {
|
|
19
|
-
this.log(`Server:
|
|
19
|
+
this.log(`Server: ${url}`);
|
|
20
20
|
}
|
|
21
21
|
}
|
|
22
22
|
}
|
package/build/graphql/gql.d.ts
CHANGED
|
@@ -18,7 +18,7 @@ type Documents = {
|
|
|
18
18
|
"\n query HasValidOidcIdToken($oidcProviderType: OIDCProviderType!) {\n hasValidOidcToken(oidcProviderType: $oidcProviderType)\n }\n ": typeof types.HasValidOidcIdTokenDocument;
|
|
19
19
|
"\n mutation CreateRequest(\n $requestedResources: [RequestedResourceInput!]!\n $requestedGroups: [RequestedGroupInput!]!\n $reason: String!\n $durationInMinutes: Int\n ) {\n createRequest(\n input: {\n requestedResources: $requestedResources\n requestedGroups: $requestedGroups\n reason: $reason\n durationInMinutes: $durationInMinutes\n }\n ) {\n ... on CreateRequestResult {\n request {\n id\n status\n }\n }\n ... on RequestDurationTooLargeError {\n message\n }\n ... on RequestRequiresUserAuthTokenForConnectionError {\n message\n }\n ... on NoReviewersSetForOwnerError {\n message\n ownerId\n }\n ... on NoReviewersSetForResourceError {\n message\n resourceId\n }\n ... on NoReviewersSetForGroupError {\n message\n groupId\n }\n ... on NoManagerSetForRequestingUserError {\n message\n }\n ... on MfaInvalidError {\n message\n }\n ... on BulkRequestTooLargeError {\n message\n }\n ... on ItemCannotBeRequestedError {\n message\n }\n ... on UserCannotRequestAccessForTargetGroupError {\n message\n groupId\n userId\n }\n ... on GroupNestingNotAllowedError {\n message\n fromGroupId\n toGroupId\n }\n ... on TargetUserHasNestedAccessError {\n message\n groupIds\n }\n ... on RequestReasonMissingError {\n message\n }\n ... on RequestFieldValueMissingError {\n message\n fieldName\n }\n ... on LinkedGroupNotRequestableError {\n message\n sourceGroupId\n groupBindingId\n }\n ... on RequestReasonBelowMinLengthError {\n message\n }\n\n }\n }\n": typeof types.CreateRequestDocument;
|
|
20
20
|
'\n query GetRequestableAppsQuery($searchQuery: String) {\n appsV2(\n filters: {\n access: REQUESTABLE\n searchQuery: $searchQuery\n }\n ) @connection(key: "paginated-app-dropdown") {\n edges {\n node {\n id\n displayName\n ... on Connection {\n connectionType\n }\n ... on Resource {\n resourceType\n }\n }\n }\n pageInfo {\n hasNextPage\n hasPreviousPage\n startCursor\n endCursor\n }\n }\n }\n ': typeof types.GetRequestableAppsQueryDocument;
|
|
21
|
-
"\n query PaginatedEntityDropdown(\n $id: UUID!\n $searchQuery: String\n) {\n app(id: $id) {\n __typename\n ... on App {\n id\n items(\n input: {\n access: REQUESTABLE\n searchQuery: $searchQuery\n includeOnlyRequestable: true\n }\n ) {\n items {\n key\n resource {\n id\n name\n }\n group {\n id\n name\n }\n }\n cursor\n }\n }\n ... on AppNotFoundError {\n message\n }\n }\n}\n": typeof types.PaginatedEntityDropdownDocument;
|
|
21
|
+
"\n query PaginatedEntityDropdown(\n $id: UUID!\n $searchQuery: String\n) {\n app(id: $id) {\n __typename\n ... on App {\n id\n items(\n input: {\n access: REQUESTABLE\n searchQuery: $searchQuery\n includeOnlyRequestable: true\n }\n ) {\n items {\n key\n resource {\n id\n name\n resourceType\n }\n group {\n id\n name\n groupType\n }\n }\n cursor\n }\n }\n ... on AppNotFoundError {\n message\n }\n }\n}\n": typeof types.PaginatedEntityDropdownDocument;
|
|
22
22
|
"\n query GetCatalogItem($uuid: UUID!) {\n catalogItem(id: $uuid) {\n __typename\n ... on Connection {\n id\n displayName\n }\n ... on Resource {\n id\n displayName\n connection {\n id\n displayName\n }\n accessLevels{\n accessLevelName\n accessLevelRemoteId\n }\n }\n ...on Group {\n id\n name\n connection {\n id\n displayName\n }\n accessLevels{\n accessLevelName\n accessLevelRemoteId\n }\n }\n ... on UserFacingError {\n message\n }\n }\n }\n ": typeof types.GetCatalogItemDocument;
|
|
23
23
|
"\n query RequestDefaults(\n $requestedResources: [RequestConfigurationResourceInput!]!\n $requestedGroups: [RequestConfigurationGroupInput!]!\n ) {\n requestDefaults(input: {\n requestedResources: $requestedResources,\n requestedGroups: $requestedGroups,\n }\n ) {\n ... on RequestDefaults {\n durationOptions {\n durationInMinutes\n label\n }\n recommendedDurationInMinutes\n defaultDurationInMinutes\n maxDurationInMinutes\n requireSupportTicket\n reasonOptional\n requesterIsAdmin\n messages {\n entityId\n level\n code\n }\n }\n }\n }": typeof types.RequestDefaultsDocument;
|
|
24
24
|
"\n fragment ResourceFields on Resource {\n displayName\n id\n connectionId\n connection {\n name\n connectionType\n }\n }\n": typeof types.ResourceFieldsFragmentDoc;
|
|
@@ -29,7 +29,7 @@ type Documents = {
|
|
|
29
29
|
"query GetBundle($id: BundleId!) {\n bundle(input: { id: $id }) {\n __typename\n ... on BundleResult {\n bundle {\n name\n id\n items {\n edges {\n accessLevel {\n accessLevelName\n accessLevelRemoteId\n }\n node {\n ... on Resource {\n ...ResourceFields\n isRequestable\n }\n ... on Group {\n ...GroupFields\n isRequestable\n }\n }\n }\n }\n }\n }\n ... on BundleNotFoundError {\n message\n }\n }\n}": typeof types.GetBundleDocument;
|
|
30
30
|
"\n query ResourceAccessLevels($resourceId: ResourceId!) {\n accessLevels(input: {\n resourceId: $resourceId,\n onlyMine: false,\n }) {\n __typename\n ... on ResourceAccessLevelsResult {\n accessLevels {\n ... on ResourceAccessLevel {\n accessLevelName\n accessLevelRemoteId\n }\n }\n }\n ... on ResourceNotFoundError {\n message\n }\n }\n }\n": typeof types.ResourceAccessLevelsDocument;
|
|
31
31
|
"\nquery GroupAccessLevels($groupId: GroupId!) {\n groupAccessLevels(\n input: { groupId: $groupId }\n ) {\n ... on GroupAccessLevelsResult {\n groupId\n accessLevels {\n ... on GroupAccessLevel {\n accessLevelName\n accessLevelRemoteId\n }\n }\n }\n }\n}\n": typeof types.GroupAccessLevelsDocument;
|
|
32
|
-
"\n query GetAssociatedItems($resourceId: ResourceId!, $searchQuery: String) {\n resource(input: {\n id: $resourceId\n }) {\n __typename\n ... on ResourceResult {\n __typename\n resource {\n associatedItems(\n first: 200\n filters: {\n searchQuery: {\n contains: $searchQuery\n }\n access: REQUESTABLE\n endUserVisible: true\n entityType: {\n in: [GROUP, RESOURCE]\n }\n }\n ) {\n edges {\n __typename\n ... on ResourceAssociatedItemEdge {\n alias\n node {\n __typename\n id\n name\n ... on Resource {\n accessLevels(\n filters: {\n skipRemoteAccessLevels: false # azure app roles are remote\n }\n ) {\n __typename\n accessLevelName\n accessLevelRemoteId\n }\n }\n }\n }\n }\n }\n }\n }\n ... on ResourceNotFoundError {\n message\n }\n }\n }\n": typeof types.GetAssociatedItemsDocument;
|
|
32
|
+
"\n query GetAssociatedItems($resourceId: ResourceId!, $searchQuery: String) {\n resource(input: {\n id: $resourceId\n }) {\n __typename\n ... on ResourceResult {\n __typename\n resource {\n associatedItems(\n first: 200\n filters: {\n searchQuery: {\n contains: $searchQuery\n }\n access: REQUESTABLE\n endUserVisible: true\n entityType: {\n in: [GROUP, RESOURCE]\n }\n }\n ) {\n edges {\n __typename\n ... on ResourceAssociatedItemEdge {\n alias\n node {\n __typename\n id\n name\n ... on Group {\n groupType\n }\n ... on Resource {\n resourceType\n accessLevels(\n filters: {\n skipRemoteAccessLevels: false # azure app roles are remote\n }\n ) {\n __typename\n accessLevelName\n accessLevelRemoteId\n }\n }\n }\n }\n }\n }\n }\n }\n ... on ResourceNotFoundError {\n message\n }\n }\n }\n": typeof types.GetAssociatedItemsDocument;
|
|
33
33
|
};
|
|
34
34
|
declare const documents: Documents;
|
|
35
35
|
/**
|
|
@@ -72,7 +72,7 @@ export declare function graphql(source: '\n query GetRequestableAppsQuery($sear
|
|
|
72
72
|
/**
|
|
73
73
|
* The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
|
|
74
74
|
*/
|
|
75
|
-
export declare function graphql(source: "\n query PaginatedEntityDropdown(\n $id: UUID!\n $searchQuery: String\n) {\n app(id: $id) {\n __typename\n ... on App {\n id\n items(\n input: {\n access: REQUESTABLE\n searchQuery: $searchQuery\n includeOnlyRequestable: true\n }\n ) {\n items {\n key\n resource {\n id\n name\n }\n group {\n id\n name\n }\n }\n cursor\n }\n }\n ... on AppNotFoundError {\n message\n }\n }\n}\n"): (typeof documents)["\n query PaginatedEntityDropdown(\n $id: UUID!\n $searchQuery: String\n) {\n app(id: $id) {\n __typename\n ... on App {\n id\n items(\n input: {\n access: REQUESTABLE\n searchQuery: $searchQuery\n includeOnlyRequestable: true\n }\n ) {\n items {\n key\n resource {\n id\n name\n }\n group {\n id\n name\n }\n }\n cursor\n }\n }\n ... on AppNotFoundError {\n message\n }\n }\n}\n"];
|
|
75
|
+
export declare function graphql(source: "\n query PaginatedEntityDropdown(\n $id: UUID!\n $searchQuery: String\n) {\n app(id: $id) {\n __typename\n ... on App {\n id\n items(\n input: {\n access: REQUESTABLE\n searchQuery: $searchQuery\n includeOnlyRequestable: true\n }\n ) {\n items {\n key\n resource {\n id\n name\n resourceType\n }\n group {\n id\n name\n groupType\n }\n }\n cursor\n }\n }\n ... on AppNotFoundError {\n message\n }\n }\n}\n"): (typeof documents)["\n query PaginatedEntityDropdown(\n $id: UUID!\n $searchQuery: String\n) {\n app(id: $id) {\n __typename\n ... on App {\n id\n items(\n input: {\n access: REQUESTABLE\n searchQuery: $searchQuery\n includeOnlyRequestable: true\n }\n ) {\n items {\n key\n resource {\n id\n name\n resourceType\n }\n group {\n id\n name\n groupType\n }\n }\n cursor\n }\n }\n ... on AppNotFoundError {\n message\n }\n }\n}\n"];
|
|
76
76
|
/**
|
|
77
77
|
* The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
|
|
78
78
|
*/
|
|
@@ -116,6 +116,6 @@ export declare function graphql(source: "\nquery GroupAccessLevels($groupId: Gro
|
|
|
116
116
|
/**
|
|
117
117
|
* The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
|
|
118
118
|
*/
|
|
119
|
-
export declare function graphql(source: "\n query GetAssociatedItems($resourceId: ResourceId!, $searchQuery: String) {\n resource(input: {\n id: $resourceId\n }) {\n __typename\n ... on ResourceResult {\n __typename\n resource {\n associatedItems(\n first: 200\n filters: {\n searchQuery: {\n contains: $searchQuery\n }\n access: REQUESTABLE\n endUserVisible: true\n entityType: {\n in: [GROUP, RESOURCE]\n }\n }\n ) {\n edges {\n __typename\n ... on ResourceAssociatedItemEdge {\n alias\n node {\n __typename\n id\n name\n ... on Resource {\n accessLevels(\n filters: {\n skipRemoteAccessLevels: false # azure app roles are remote\n }\n ) {\n __typename\n accessLevelName\n accessLevelRemoteId\n }\n }\n }\n }\n }\n }\n }\n }\n ... on ResourceNotFoundError {\n message\n }\n }\n }\n"): (typeof documents)["\n query GetAssociatedItems($resourceId: ResourceId!, $searchQuery: String) {\n resource(input: {\n id: $resourceId\n }) {\n __typename\n ... on ResourceResult {\n __typename\n resource {\n associatedItems(\n first: 200\n filters: {\n searchQuery: {\n contains: $searchQuery\n }\n access: REQUESTABLE\n endUserVisible: true\n entityType: {\n in: [GROUP, RESOURCE]\n }\n }\n ) {\n edges {\n __typename\n ... on ResourceAssociatedItemEdge {\n alias\n node {\n __typename\n id\n name\n ... on Resource {\n accessLevels(\n filters: {\n skipRemoteAccessLevels: false # azure app roles are remote\n }\n ) {\n __typename\n accessLevelName\n accessLevelRemoteId\n }\n }\n }\n }\n }\n }\n }\n }\n ... on ResourceNotFoundError {\n message\n }\n }\n }\n"];
|
|
119
|
+
export declare function graphql(source: "\n query GetAssociatedItems($resourceId: ResourceId!, $searchQuery: String) {\n resource(input: {\n id: $resourceId\n }) {\n __typename\n ... on ResourceResult {\n __typename\n resource {\n associatedItems(\n first: 200\n filters: {\n searchQuery: {\n contains: $searchQuery\n }\n access: REQUESTABLE\n endUserVisible: true\n entityType: {\n in: [GROUP, RESOURCE]\n }\n }\n ) {\n edges {\n __typename\n ... on ResourceAssociatedItemEdge {\n alias\n node {\n __typename\n id\n name\n ... on Group {\n groupType\n }\n ... on Resource {\n resourceType\n accessLevels(\n filters: {\n skipRemoteAccessLevels: false # azure app roles are remote\n }\n ) {\n __typename\n accessLevelName\n accessLevelRemoteId\n }\n }\n }\n }\n }\n }\n }\n }\n ... on ResourceNotFoundError {\n message\n }\n }\n }\n"): (typeof documents)["\n query GetAssociatedItems($resourceId: ResourceId!, $searchQuery: String) {\n resource(input: {\n id: $resourceId\n }) {\n __typename\n ... on ResourceResult {\n __typename\n resource {\n associatedItems(\n first: 200\n filters: {\n searchQuery: {\n contains: $searchQuery\n }\n access: REQUESTABLE\n endUserVisible: true\n entityType: {\n in: [GROUP, RESOURCE]\n }\n }\n ) {\n edges {\n __typename\n ... on ResourceAssociatedItemEdge {\n alias\n node {\n __typename\n id\n name\n ... on Group {\n groupType\n }\n ... on Resource {\n resourceType\n accessLevels(\n filters: {\n skipRemoteAccessLevels: false # azure app roles are remote\n }\n ) {\n __typename\n accessLevelName\n accessLevelRemoteId\n }\n }\n }\n }\n }\n }\n }\n }\n ... on ResourceNotFoundError {\n message\n }\n }\n }\n"];
|
|
120
120
|
export type DocumentType<TDocumentNode extends DocumentNode<any, any>> = TDocumentNode extends DocumentNode<infer TType, any> ? TType : never;
|
|
121
121
|
export {};
|
package/build/graphql/gql.js
CHANGED
|
@@ -7,7 +7,7 @@ const documents = {
|
|
|
7
7
|
"\n query HasValidOidcIdToken($oidcProviderType: OIDCProviderType!) {\n hasValidOidcToken(oidcProviderType: $oidcProviderType)\n }\n ": types.HasValidOidcIdTokenDocument,
|
|
8
8
|
"\n mutation CreateRequest(\n $requestedResources: [RequestedResourceInput!]!\n $requestedGroups: [RequestedGroupInput!]!\n $reason: String!\n $durationInMinutes: Int\n ) {\n createRequest(\n input: {\n requestedResources: $requestedResources\n requestedGroups: $requestedGroups\n reason: $reason\n durationInMinutes: $durationInMinutes\n }\n ) {\n ... on CreateRequestResult {\n request {\n id\n status\n }\n }\n ... on RequestDurationTooLargeError {\n message\n }\n ... on RequestRequiresUserAuthTokenForConnectionError {\n message\n }\n ... on NoReviewersSetForOwnerError {\n message\n ownerId\n }\n ... on NoReviewersSetForResourceError {\n message\n resourceId\n }\n ... on NoReviewersSetForGroupError {\n message\n groupId\n }\n ... on NoManagerSetForRequestingUserError {\n message\n }\n ... on MfaInvalidError {\n message\n }\n ... on BulkRequestTooLargeError {\n message\n }\n ... on ItemCannotBeRequestedError {\n message\n }\n ... on UserCannotRequestAccessForTargetGroupError {\n message\n groupId\n userId\n }\n ... on GroupNestingNotAllowedError {\n message\n fromGroupId\n toGroupId\n }\n ... on TargetUserHasNestedAccessError {\n message\n groupIds\n }\n ... on RequestReasonMissingError {\n message\n }\n ... on RequestFieldValueMissingError {\n message\n fieldName\n }\n ... on LinkedGroupNotRequestableError {\n message\n sourceGroupId\n groupBindingId\n }\n ... on RequestReasonBelowMinLengthError {\n message\n }\n\n }\n }\n": types.CreateRequestDocument,
|
|
9
9
|
'\n query GetRequestableAppsQuery($searchQuery: String) {\n appsV2(\n filters: {\n access: REQUESTABLE\n searchQuery: $searchQuery\n }\n ) @connection(key: "paginated-app-dropdown") {\n edges {\n node {\n id\n displayName\n ... on Connection {\n connectionType\n }\n ... on Resource {\n resourceType\n }\n }\n }\n pageInfo {\n hasNextPage\n hasPreviousPage\n startCursor\n endCursor\n }\n }\n }\n ': types.GetRequestableAppsQueryDocument,
|
|
10
|
-
"\n query PaginatedEntityDropdown(\n $id: UUID!\n $searchQuery: String\n) {\n app(id: $id) {\n __typename\n ... on App {\n id\n items(\n input: {\n access: REQUESTABLE\n searchQuery: $searchQuery\n includeOnlyRequestable: true\n }\n ) {\n items {\n key\n resource {\n id\n name\n }\n group {\n id\n name\n }\n }\n cursor\n }\n }\n ... on AppNotFoundError {\n message\n }\n }\n}\n": types.PaginatedEntityDropdownDocument,
|
|
10
|
+
"\n query PaginatedEntityDropdown(\n $id: UUID!\n $searchQuery: String\n) {\n app(id: $id) {\n __typename\n ... on App {\n id\n items(\n input: {\n access: REQUESTABLE\n searchQuery: $searchQuery\n includeOnlyRequestable: true\n }\n ) {\n items {\n key\n resource {\n id\n name\n resourceType\n }\n group {\n id\n name\n groupType\n }\n }\n cursor\n }\n }\n ... on AppNotFoundError {\n message\n }\n }\n}\n": types.PaginatedEntityDropdownDocument,
|
|
11
11
|
"\n query GetCatalogItem($uuid: UUID!) {\n catalogItem(id: $uuid) {\n __typename\n ... on Connection {\n id\n displayName\n }\n ... on Resource {\n id\n displayName\n connection {\n id\n displayName\n }\n accessLevels{\n accessLevelName\n accessLevelRemoteId\n }\n }\n ...on Group {\n id\n name\n connection {\n id\n displayName\n }\n accessLevels{\n accessLevelName\n accessLevelRemoteId\n }\n }\n ... on UserFacingError {\n message\n }\n }\n }\n ": types.GetCatalogItemDocument,
|
|
12
12
|
"\n query RequestDefaults(\n $requestedResources: [RequestConfigurationResourceInput!]!\n $requestedGroups: [RequestConfigurationGroupInput!]!\n ) {\n requestDefaults(input: {\n requestedResources: $requestedResources,\n requestedGroups: $requestedGroups,\n }\n ) {\n ... on RequestDefaults {\n durationOptions {\n durationInMinutes\n label\n }\n recommendedDurationInMinutes\n defaultDurationInMinutes\n maxDurationInMinutes\n requireSupportTicket\n reasonOptional\n requesterIsAdmin\n messages {\n entityId\n level\n code\n }\n }\n }\n }": types.RequestDefaultsDocument,
|
|
13
13
|
"\n fragment ResourceFields on Resource {\n displayName\n id\n connectionId\n connection {\n name\n connectionType\n }\n }\n": types.ResourceFieldsFragmentDoc,
|
|
@@ -18,7 +18,7 @@ const documents = {
|
|
|
18
18
|
"query GetBundle($id: BundleId!) {\n bundle(input: { id: $id }) {\n __typename\n ... on BundleResult {\n bundle {\n name\n id\n items {\n edges {\n accessLevel {\n accessLevelName\n accessLevelRemoteId\n }\n node {\n ... on Resource {\n ...ResourceFields\n isRequestable\n }\n ... on Group {\n ...GroupFields\n isRequestable\n }\n }\n }\n }\n }\n }\n ... on BundleNotFoundError {\n message\n }\n }\n}": types.GetBundleDocument,
|
|
19
19
|
"\n query ResourceAccessLevels($resourceId: ResourceId!) {\n accessLevels(input: {\n resourceId: $resourceId,\n onlyMine: false,\n }) {\n __typename\n ... on ResourceAccessLevelsResult {\n accessLevels {\n ... on ResourceAccessLevel {\n accessLevelName\n accessLevelRemoteId\n }\n }\n }\n ... on ResourceNotFoundError {\n message\n }\n }\n }\n": types.ResourceAccessLevelsDocument,
|
|
20
20
|
"\nquery GroupAccessLevels($groupId: GroupId!) {\n groupAccessLevels(\n input: { groupId: $groupId }\n ) {\n ... on GroupAccessLevelsResult {\n groupId\n accessLevels {\n ... on GroupAccessLevel {\n accessLevelName\n accessLevelRemoteId\n }\n }\n }\n }\n}\n": types.GroupAccessLevelsDocument,
|
|
21
|
-
"\n query GetAssociatedItems($resourceId: ResourceId!, $searchQuery: String) {\n resource(input: {\n id: $resourceId\n }) {\n __typename\n ... on ResourceResult {\n __typename\n resource {\n associatedItems(\n first: 200\n filters: {\n searchQuery: {\n contains: $searchQuery\n }\n access: REQUESTABLE\n endUserVisible: true\n entityType: {\n in: [GROUP, RESOURCE]\n }\n }\n ) {\n edges {\n __typename\n ... on ResourceAssociatedItemEdge {\n alias\n node {\n __typename\n id\n name\n ... on Resource {\n accessLevels(\n filters: {\n skipRemoteAccessLevels: false # azure app roles are remote\n }\n ) {\n __typename\n accessLevelName\n accessLevelRemoteId\n }\n }\n }\n }\n }\n }\n }\n }\n ... on ResourceNotFoundError {\n message\n }\n }\n }\n": types.GetAssociatedItemsDocument,
|
|
21
|
+
"\n query GetAssociatedItems($resourceId: ResourceId!, $searchQuery: String) {\n resource(input: {\n id: $resourceId\n }) {\n __typename\n ... on ResourceResult {\n __typename\n resource {\n associatedItems(\n first: 200\n filters: {\n searchQuery: {\n contains: $searchQuery\n }\n access: REQUESTABLE\n endUserVisible: true\n entityType: {\n in: [GROUP, RESOURCE]\n }\n }\n ) {\n edges {\n __typename\n ... on ResourceAssociatedItemEdge {\n alias\n node {\n __typename\n id\n name\n ... on Group {\n groupType\n }\n ... on Resource {\n resourceType\n accessLevels(\n filters: {\n skipRemoteAccessLevels: false # azure app roles are remote\n }\n ) {\n __typename\n accessLevelName\n accessLevelRemoteId\n }\n }\n }\n }\n }\n }\n }\n }\n ... on ResourceNotFoundError {\n message\n }\n }\n }\n": types.GetAssociatedItemsDocument,
|
|
22
22
|
};
|
|
23
23
|
export function graphql(source) {
|
|
24
24
|
var _a;
|