@grantjs/schema 1.1.7 → 1.2.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.
Files changed (48) hide show
  1. package/package.json +1 -1
  2. package/src/generated/graphql.ts +1617 -126
  3. package/src/generated/resolvers.ts +495 -0
  4. package/src/generated/schema-types.ts +258 -0
  5. package/src/index.ts +2 -0
  6. package/src/operations/groups/getGroupsList.graphql +38 -0
  7. package/src/operations/groups/updateGroup.graphql +6 -0
  8. package/src/operations/me/me.graphql +4 -0
  9. package/src/operations/permissions/getPermissionsList.graphql +45 -0
  10. package/src/operations/permissions/updatePermission.graphql +6 -0
  11. package/src/operations/resources/updateResource.graphql +6 -0
  12. package/src/operations/role-permissions/role-permissions.graphql +39 -0
  13. package/src/operations/roles/getRoles.graphql +12 -0
  14. package/src/operations/roles/getRolesList.graphql +38 -0
  15. package/src/operations/roles/updateRole.graphql +6 -0
  16. package/src/operations/user-permissions/user-permissions.graphql +39 -0
  17. package/src/operations/users/getUsers.graphql +26 -0
  18. package/src/operations/users/getUsersList.graphql +43 -0
  19. package/src/operations/users/updateUser.graphql +6 -0
  20. package/src/schema/auth/inputs/is-authorized.graphql +7 -0
  21. package/src/schema/auth/queries/is-authorized.graphql +3 -0
  22. package/src/schema/groups/types/group.graphql +3 -0
  23. package/src/schema/permissions/types/permission.graphql +2 -0
  24. package/src/schema/project-role-permissions/types/project-role-permission.graphql +27 -0
  25. package/src/schema/project-user-groups/types/project-user-group.graphql +27 -0
  26. package/src/schema/project-user-permissions/types/project-user-permission.graphql +27 -0
  27. package/src/schema/projects/inputs/sync-project-cdm.graphql +17 -0
  28. package/src/schema/role-permissions/inputs/assign-role-permission.graphql +5 -0
  29. package/src/schema/role-permissions/inputs/query-role-permissions.graphql +4 -0
  30. package/src/schema/role-permissions/inputs/revoke-role-permission.graphql +6 -0
  31. package/src/schema/role-permissions/mutations/assign-role-permission.graphql +3 -0
  32. package/src/schema/role-permissions/mutations/revoke-role-permission.graphql +3 -0
  33. package/src/schema/role-permissions/types/role-permission.graphql +10 -0
  34. package/src/schema/roles/inputs/create-role.graphql +1 -0
  35. package/src/schema/roles/types/role.graphql +5 -0
  36. package/src/schema/user-groups/inputs/add-user-group.graphql +4 -0
  37. package/src/schema/user-groups/inputs/query-user-groups.graphql +4 -0
  38. package/src/schema/user-groups/inputs/remove-user-group.graphql +4 -0
  39. package/src/schema/user-groups/types/user-group.graphql +10 -0
  40. package/src/schema/user-permissions/inputs/assign-user-permission.graphql +5 -0
  41. package/src/schema/user-permissions/inputs/query-user-permissions.graphql +4 -0
  42. package/src/schema/user-permissions/inputs/revoke-user-permission.graphql +6 -0
  43. package/src/schema/user-permissions/mutations/assign-user-permission.graphql +3 -0
  44. package/src/schema/user-permissions/mutations/revoke-user-permission.graphql +3 -0
  45. package/src/schema/user-permissions/types/user-permission.graphql +10 -0
  46. package/src/schema/users/inputs/create-user.graphql +2 -0
  47. package/src/schema/users/inputs/update-user.graphql +1 -0
  48. package/src/schema/users/types/user.graphql +7 -0
@@ -260,6 +260,12 @@ export type AddProjectRoleInput = {
260
260
  roleId: Scalars['ID']['input'];
261
261
  };
262
262
 
263
+ export type AddProjectRolePermissionInput = {
264
+ permissionId: Scalars['ID']['input'];
265
+ projectId: Scalars['ID']['input'];
266
+ roleId: Scalars['ID']['input'];
267
+ };
268
+
263
269
  export type AddProjectTagInput = {
264
270
  isPrimary?: InputMaybe<Scalars['Boolean']['input']>;
265
271
  projectId: Scalars['ID']['input'];
@@ -274,12 +280,24 @@ export type AddProjectUserApiKeyInput = {
274
280
  userId: Scalars['ID']['input'];
275
281
  };
276
282
 
283
+ export type AddProjectUserGroupInput = {
284
+ groupId: Scalars['ID']['input'];
285
+ projectId: Scalars['ID']['input'];
286
+ userId: Scalars['ID']['input'];
287
+ };
288
+
277
289
  export type AddProjectUserInput = {
278
290
  metadata?: InputMaybe<Scalars['JSON']['input']>;
279
291
  projectId: Scalars['ID']['input'];
280
292
  userId: Scalars['ID']['input'];
281
293
  };
282
294
 
295
+ export type AddProjectUserPermissionInput = {
296
+ permissionId: Scalars['ID']['input'];
297
+ projectId: Scalars['ID']['input'];
298
+ userId: Scalars['ID']['input'];
299
+ };
300
+
283
301
  export type AddResourceTagInput = {
284
302
  isPrimary?: InputMaybe<Scalars['Boolean']['input']>;
285
303
  resourceId: Scalars['ID']['input'];
@@ -297,6 +315,11 @@ export type AddRoleTagInput = {
297
315
  tagId: Scalars['ID']['input'];
298
316
  };
299
317
 
318
+ export type AddUserGroupInput = {
319
+ groupId: Scalars['ID']['input'];
320
+ userId: Scalars['ID']['input'];
321
+ };
322
+
300
323
  export type AddUserRoleInput = {
301
324
  roleId: Scalars['ID']['input'];
302
325
  userId: Scalars['ID']['input'];
@@ -354,6 +377,18 @@ export enum ApiKeySortableField {
354
377
  Name = 'name',
355
378
  }
356
379
 
380
+ export type AssignRolePermissionInput = {
381
+ permissionId: Scalars['ID']['input'];
382
+ roleId: Scalars['ID']['input'];
383
+ scope: Scope;
384
+ };
385
+
386
+ export type AssignUserPermissionInput = {
387
+ permissionId: Scalars['ID']['input'];
388
+ scope: Scope;
389
+ userId: Scalars['ID']['input'];
390
+ };
391
+
357
392
  export type Auditable = {
358
393
  createdAt: Scalars['Date']['output'];
359
394
  deletedAt?: Maybe<Scalars['Date']['output']>;
@@ -595,6 +630,7 @@ export type CreateRoleInput = {
595
630
  groupIds?: InputMaybe<Array<Scalars['ID']['input']>>;
596
631
  metadata?: InputMaybe<Scalars['JSON']['input']>;
597
632
  name: Scalars['String']['input'];
633
+ permissionIds?: InputMaybe<Array<Scalars['ID']['input']>>;
598
634
  primaryTagId?: InputMaybe<Scalars['ID']['input']>;
599
635
  scope: Scope;
600
636
  tagIds?: InputMaybe<Array<Scalars['ID']['input']>>;
@@ -617,8 +653,10 @@ export type CreateUserAuthenticationMethodInput = {
617
653
  };
618
654
 
619
655
  export type CreateUserInput = {
656
+ groupIds?: InputMaybe<Array<Scalars['ID']['input']>>;
620
657
  metadata?: InputMaybe<Scalars['JSON']['input']>;
621
658
  name: Scalars['String']['input'];
659
+ permissionIds?: InputMaybe<Array<Scalars['ID']['input']>>;
622
660
  pictureUrl?: InputMaybe<Scalars['String']['input']>;
623
661
  primaryTagId?: InputMaybe<Scalars['ID']['input']>;
624
662
  roleIds?: InputMaybe<Array<Scalars['ID']['input']>>;
@@ -697,7 +735,10 @@ export type Group = Auditable & {
697
735
  id: Scalars['ID']['output'];
698
736
  metadata: Scalars['JSON']['output'];
699
737
  name: Scalars['String']['output'];
738
+ permissionCount: Scalars['Int']['output'];
700
739
  permissions?: Maybe<Array<Permission>>;
740
+ primaryTag?: Maybe<Tag>;
741
+ tagCount: Scalars['Int']['output'];
701
742
  tags?: Maybe<Array<Tag>>;
702
743
  updatedAt: Scalars['Date']['output'];
703
744
  };
@@ -784,6 +825,13 @@ export type IsAuthorizedContextInput = {
784
825
  resource?: InputMaybe<Scalars['JSON']['input']>;
785
826
  };
786
827
 
828
+ /**
829
+ * Check whether the authenticated principal may perform an action on a resource.
830
+ *
831
+ * Unions Role → Group → Permission, User → Group → Permission, Role → Permission,
832
+ * and User → Permission before matching the requested resource and action.
833
+ * Conditional permissions are evaluated against role/group/user execution context.
834
+ */
787
835
  export type IsAuthorizedInput = {
788
836
  context: IsAuthorizedContextInput;
789
837
  permission: IsAuthorizedPermissionInput;
@@ -878,6 +926,8 @@ export type Mutation = {
878
926
  __typename?: 'Mutation';
879
927
  _empty?: Maybe<Scalars['String']['output']>;
880
928
  acceptInvitation: AcceptInvitationResult;
929
+ assignRolePermission: RolePermission;
930
+ assignUserPermission: UserPermission;
881
931
  /**
882
932
  * Cancel a pending or running project CDM sync job. Cancellation is
883
933
  * immediate when the job is still PENDING; if the job is already RUNNING, the
@@ -929,6 +979,8 @@ export type Mutation = {
929
979
  revokeApiKey: ApiKey;
930
980
  revokeInvitation: OrganizationInvitation;
931
981
  revokeMyUserSession: RevokeMyUserSessionResult;
982
+ revokeRolePermission: RolePermission;
983
+ revokeUserPermission: UserPermission;
932
984
  /**
933
985
  * Rotate the signing key for the given scope: create a new active key and mark the previous one as rotated.
934
986
  * Allowed scopes: accountProject, organizationProject only.
@@ -985,6 +1037,14 @@ export type MutationAcceptInvitationArgs = {
985
1037
  input: AcceptInvitationInput;
986
1038
  };
987
1039
 
1040
+ export type MutationAssignRolePermissionArgs = {
1041
+ input: AssignRolePermissionInput;
1042
+ };
1043
+
1044
+ export type MutationAssignUserPermissionArgs = {
1045
+ input: AssignUserPermissionInput;
1046
+ };
1047
+
988
1048
  export type MutationCancelProjectSyncArgs = {
989
1049
  id: Scalars['ID']['input'];
990
1050
  jobId: Scalars['ID']['input'];
@@ -1160,6 +1220,14 @@ export type MutationRevokeMyUserSessionArgs = {
1160
1220
  id: Scalars['ID']['input'];
1161
1221
  };
1162
1222
 
1223
+ export type MutationRevokeRolePermissionArgs = {
1224
+ input: RevokeRolePermissionInput;
1225
+ };
1226
+
1227
+ export type MutationRevokeUserPermissionArgs = {
1228
+ input: RevokeUserPermissionInput;
1229
+ };
1230
+
1163
1231
  export type MutationRotateSigningKeyArgs = {
1164
1232
  scope: Scope;
1165
1233
  };
@@ -1524,8 +1592,10 @@ export type Permission = Auditable & {
1524
1592
  id: Scalars['ID']['output'];
1525
1593
  metadata: Scalars['JSON']['output'];
1526
1594
  name: Scalars['String']['output'];
1595
+ primaryTag?: Maybe<Tag>;
1527
1596
  resource?: Maybe<Resource>;
1528
1597
  resourceId?: Maybe<Scalars['ID']['output']>;
1598
+ tagCount: Scalars['Int']['output'];
1529
1599
  tags?: Maybe<Array<Tag>>;
1530
1600
  updatedAt: Scalars['Date']['output'];
1531
1601
  };
@@ -1737,6 +1807,17 @@ export type ProjectRoleProjectArgs = {
1737
1807
  organizationId: Scalars['ID']['input'];
1738
1808
  };
1739
1809
 
1810
+ export type ProjectRolePermission = Auditable & {
1811
+ __typename?: 'ProjectRolePermission';
1812
+ createdAt: Scalars['Date']['output'];
1813
+ deletedAt?: Maybe<Scalars['Date']['output']>;
1814
+ id: Scalars['ID']['output'];
1815
+ permissionId: Scalars['ID']['output'];
1816
+ projectId: Scalars['ID']['output'];
1817
+ roleId: Scalars['ID']['output'];
1818
+ updatedAt: Scalars['Date']['output'];
1819
+ };
1820
+
1740
1821
  export enum ProjectSearchableField {
1741
1822
  Description = 'description',
1742
1823
  Name = 'name',
@@ -1866,12 +1947,35 @@ export type ProjectUserApiKey = Auditable & {
1866
1947
  userId: Scalars['ID']['output'];
1867
1948
  };
1868
1949
 
1950
+ export type ProjectUserGroup = Auditable & {
1951
+ __typename?: 'ProjectUserGroup';
1952
+ createdAt: Scalars['Date']['output'];
1953
+ deletedAt?: Maybe<Scalars['Date']['output']>;
1954
+ groupId: Scalars['ID']['output'];
1955
+ id: Scalars['ID']['output'];
1956
+ projectId: Scalars['ID']['output'];
1957
+ updatedAt: Scalars['Date']['output'];
1958
+ userId: Scalars['ID']['output'];
1959
+ };
1960
+
1961
+ export type ProjectUserPermission = Auditable & {
1962
+ __typename?: 'ProjectUserPermission';
1963
+ createdAt: Scalars['Date']['output'];
1964
+ deletedAt?: Maybe<Scalars['Date']['output']>;
1965
+ id: Scalars['ID']['output'];
1966
+ permissionId: Scalars['ID']['output'];
1967
+ projectId: Scalars['ID']['output'];
1968
+ updatedAt: Scalars['Date']['output'];
1969
+ userId: Scalars['ID']['output'];
1970
+ };
1971
+
1869
1972
  export type Query = {
1870
1973
  __typename?: 'Query';
1871
1974
  _empty?: Maybe<Scalars['String']['output']>;
1872
1975
  apiKeys: ApiKeyPage;
1873
1976
  groups: GroupPage;
1874
1977
  invitation?: Maybe<OrganizationInvitation>;
1978
+ /** Evaluate authorization for the current session or API key token. */
1875
1979
  isAuthorized: AuthorizationResult;
1876
1980
  me: MeResponse;
1877
1981
  myMfaDevices: Array<MfaDevice>;
@@ -2167,6 +2271,12 @@ export type QueryProjectResourcesInput = {
2167
2271
  resourceId?: InputMaybe<Scalars['ID']['input']>;
2168
2272
  };
2169
2273
 
2274
+ export type QueryProjectRolePermissionsInput = {
2275
+ permissionId?: InputMaybe<Scalars['ID']['input']>;
2276
+ projectId?: InputMaybe<Scalars['ID']['input']>;
2277
+ roleId?: InputMaybe<Scalars['ID']['input']>;
2278
+ };
2279
+
2170
2280
  export type QueryProjectRolesInput = {
2171
2281
  projectId: Scalars['ID']['input'];
2172
2282
  };
@@ -2181,6 +2291,18 @@ export type QueryProjectUserApiKeysInput = {
2181
2291
  userId: Scalars['ID']['input'];
2182
2292
  };
2183
2293
 
2294
+ export type QueryProjectUserGroupsInput = {
2295
+ groupId?: InputMaybe<Scalars['ID']['input']>;
2296
+ projectId?: InputMaybe<Scalars['ID']['input']>;
2297
+ userId?: InputMaybe<Scalars['ID']['input']>;
2298
+ };
2299
+
2300
+ export type QueryProjectUserPermissionsInput = {
2301
+ permissionId?: InputMaybe<Scalars['ID']['input']>;
2302
+ projectId?: InputMaybe<Scalars['ID']['input']>;
2303
+ userId?: InputMaybe<Scalars['ID']['input']>;
2304
+ };
2305
+
2184
2306
  export type QueryProjectUsersInput = {
2185
2307
  projectId?: InputMaybe<Scalars['ID']['input']>;
2186
2308
  userId?: InputMaybe<Scalars['ID']['input']>;
@@ -2196,11 +2318,26 @@ export type QueryRoleGroupsInput = {
2196
2318
  roleId?: InputMaybe<Scalars['ID']['input']>;
2197
2319
  };
2198
2320
 
2321
+ export type QueryRolePermissionsInput = {
2322
+ permissionId?: InputMaybe<Scalars['ID']['input']>;
2323
+ roleId?: InputMaybe<Scalars['ID']['input']>;
2324
+ };
2325
+
2199
2326
  export type QueryRoleTagsInput = {
2200
2327
  roleId?: InputMaybe<Scalars['ID']['input']>;
2201
2328
  tagId?: InputMaybe<Scalars['ID']['input']>;
2202
2329
  };
2203
2330
 
2331
+ export type QueryUserGroupsInput = {
2332
+ groupId?: InputMaybe<Scalars['ID']['input']>;
2333
+ userId?: InputMaybe<Scalars['ID']['input']>;
2334
+ };
2335
+
2336
+ export type QueryUserPermissionsInput = {
2337
+ permissionId?: InputMaybe<Scalars['ID']['input']>;
2338
+ userId?: InputMaybe<Scalars['ID']['input']>;
2339
+ };
2340
+
2204
2341
  export type QueryUserRolesInput = {
2205
2342
  roleId?: InputMaybe<Scalars['ID']['input']>;
2206
2343
  userId?: InputMaybe<Scalars['ID']['input']>;
@@ -2341,6 +2478,12 @@ export type RemoveProjectRoleInput = {
2341
2478
  roleId: Scalars['ID']['input'];
2342
2479
  };
2343
2480
 
2481
+ export type RemoveProjectRolePermissionInput = {
2482
+ permissionId: Scalars['ID']['input'];
2483
+ projectId: Scalars['ID']['input'];
2484
+ roleId: Scalars['ID']['input'];
2485
+ };
2486
+
2344
2487
  export type RemoveProjectTagInput = {
2345
2488
  projectId: Scalars['ID']['input'];
2346
2489
  tagId: Scalars['ID']['input'];
@@ -2352,11 +2495,23 @@ export type RemoveProjectUserApiKeyInput = {
2352
2495
  userId: Scalars['ID']['input'];
2353
2496
  };
2354
2497
 
2498
+ export type RemoveProjectUserGroupInput = {
2499
+ groupId: Scalars['ID']['input'];
2500
+ projectId: Scalars['ID']['input'];
2501
+ userId: Scalars['ID']['input'];
2502
+ };
2503
+
2355
2504
  export type RemoveProjectUserInput = {
2356
2505
  projectId: Scalars['ID']['input'];
2357
2506
  userId: Scalars['ID']['input'];
2358
2507
  };
2359
2508
 
2509
+ export type RemoveProjectUserPermissionInput = {
2510
+ permissionId: Scalars['ID']['input'];
2511
+ projectId: Scalars['ID']['input'];
2512
+ userId: Scalars['ID']['input'];
2513
+ };
2514
+
2360
2515
  export type RemoveResourceTagInput = {
2361
2516
  resourceId: Scalars['ID']['input'];
2362
2517
  tagId: Scalars['ID']['input'];
@@ -2372,6 +2527,11 @@ export type RemoveRoleTagInput = {
2372
2527
  tagId: Scalars['ID']['input'];
2373
2528
  };
2374
2529
 
2530
+ export type RemoveUserGroupInput = {
2531
+ groupId: Scalars['ID']['input'];
2532
+ userId: Scalars['ID']['input'];
2533
+ };
2534
+
2375
2535
  export type RemoveUserRoleInput = {
2376
2536
  roleId: Scalars['ID']['input'];
2377
2537
  userId: Scalars['ID']['input'];
@@ -2501,25 +2661,52 @@ export type RevokeMyUserSessionResult = {
2501
2661
  success: Scalars['Boolean']['output'];
2502
2662
  };
2503
2663
 
2664
+ export type RevokeRolePermissionInput = {
2665
+ hardDelete?: InputMaybe<Scalars['Boolean']['input']>;
2666
+ permissionId: Scalars['ID']['input'];
2667
+ roleId: Scalars['ID']['input'];
2668
+ scope: Scope;
2669
+ };
2670
+
2671
+ export type RevokeUserPermissionInput = {
2672
+ hardDelete?: InputMaybe<Scalars['Boolean']['input']>;
2673
+ permissionId: Scalars['ID']['input'];
2674
+ scope: Scope;
2675
+ userId: Scalars['ID']['input'];
2676
+ };
2677
+
2504
2678
  export type Role = Auditable & {
2505
2679
  __typename?: 'Role';
2506
2680
  createdAt: Scalars['Date']['output'];
2507
2681
  deletedAt?: Maybe<Scalars['Date']['output']>;
2508
2682
  description?: Maybe<Scalars['String']['output']>;
2683
+ groupCount: Scalars['Int']['output'];
2509
2684
  groups?: Maybe<Array<Group>>;
2510
2685
  id: Scalars['ID']['output'];
2511
2686
  metadata: Scalars['JSON']['output'];
2512
2687
  name: Scalars['String']['output'];
2688
+ permissionCount: Scalars['Int']['output'];
2689
+ primaryTag?: Maybe<Tag>;
2690
+ rolePermissions?: Maybe<Array<RolePermission>>;
2691
+ tagCount: Scalars['Int']['output'];
2513
2692
  tags?: Maybe<Array<Tag>>;
2514
2693
  updatedAt: Scalars['Date']['output'];
2515
2694
  };
2516
2695
 
2517
2696
  export type RoleCdmInput = {
2518
2697
  description?: InputMaybe<Scalars['String']['input']>;
2698
+ /**
2699
+ * Group keys from the `groups` section. When set, permissions are linked via
2700
+ * Role → Group → Permission. Omit to use direct `permissions` on the role.
2701
+ */
2519
2702
  groups?: InputMaybe<Array<Scalars['String']['input']>>;
2520
2703
  key: Scalars['String']['input'];
2521
2704
  metadata?: InputMaybe<Scalars['JSON']['input']>;
2522
2705
  name: Scalars['String']['input'];
2706
+ /**
2707
+ * Permission document keys or catalog refs (`resourceSlug:action`). Used for
2708
+ * direct Role → Permission when `groups` is empty.
2709
+ */
2523
2710
  permissions?: InputMaybe<Array<Scalars['String']['input']>>;
2524
2711
  primaryTag?: InputMaybe<Scalars['String']['input']>;
2525
2712
  tags?: InputMaybe<Array<Scalars['String']['input']>>;
@@ -2552,6 +2739,26 @@ export type RolePage = PaginatedResults & {
2552
2739
  totalCount: Scalars['Int']['output'];
2553
2740
  };
2554
2741
 
2742
+ export type RolePermission = Auditable & {
2743
+ __typename?: 'RolePermission';
2744
+ createdAt: Scalars['Date']['output'];
2745
+ deletedAt?: Maybe<Scalars['Date']['output']>;
2746
+ id: Scalars['ID']['output'];
2747
+ permission?: Maybe<Permission>;
2748
+ permissionId: Scalars['ID']['output'];
2749
+ role?: Maybe<Role>;
2750
+ roleId: Scalars['ID']['output'];
2751
+ updatedAt: Scalars['Date']['output'];
2752
+ };
2753
+
2754
+ export type RolePermissionPermissionArgs = {
2755
+ scope: Scope;
2756
+ };
2757
+
2758
+ export type RolePermissionRoleArgs = {
2759
+ scope: Scope;
2760
+ };
2761
+
2555
2762
  export enum RoleSearchableField {
2556
2763
  Description = 'description',
2557
2764
  Name = 'name',
@@ -2948,6 +3155,7 @@ export type UpdateUserAuthenticationMethodInput = {
2948
3155
  };
2949
3156
 
2950
3157
  export type UpdateUserInput = {
3158
+ groupIds?: InputMaybe<Array<Scalars['ID']['input']>>;
2951
3159
  metadata?: InputMaybe<Scalars['JSON']['input']>;
2952
3160
  name?: InputMaybe<Scalars['String']['input']>;
2953
3161
  pictureUrl?: InputMaybe<Scalars['String']['input']>;
@@ -2999,10 +3207,17 @@ export type User = Auditable & {
2999
3207
  id: Scalars['ID']['output'];
3000
3208
  metadata: Scalars['JSON']['output'];
3001
3209
  name: Scalars['String']['output'];
3210
+ permissionCount: Scalars['Int']['output'];
3002
3211
  pictureUrl?: Maybe<Scalars['String']['output']>;
3212
+ primaryTag?: Maybe<Tag>;
3213
+ projectUserApiKeyCount: Scalars['Int']['output'];
3214
+ roleCount: Scalars['Int']['output'];
3003
3215
  roles?: Maybe<Array<Role>>;
3216
+ tagCount: Scalars['Int']['output'];
3004
3217
  tags?: Maybe<Array<Tag>>;
3005
3218
  updatedAt: Scalars['Date']['output'];
3219
+ userGroups?: Maybe<Array<UserGroup>>;
3220
+ userPermissions?: Maybe<Array<UserPermission>>;
3006
3221
  };
3007
3222
 
3008
3223
  export type UserApiKeyCdmInput = {
@@ -3045,12 +3260,15 @@ export enum UserAuthenticationMethodProvider {
3045
3260
 
3046
3261
  export type UserCdmInput = {
3047
3262
  apiKeys?: InputMaybe<Array<UserApiKeyCdmInput>>;
3263
+ /** Direct group assignment. Each key must appear in the document `groups` section. */
3048
3264
  groups?: InputMaybe<Array<Scalars['String']['input']>>;
3049
3265
  key: CdmKeyResolverInput;
3050
3266
  metadata?: InputMaybe<Scalars['JSON']['input']>;
3051
3267
  name: Scalars['String']['input'];
3268
+ /** Direct user → permission grants (document keys or catalog `resourceSlug:action` refs). */
3052
3269
  permissions?: InputMaybe<Array<Scalars['String']['input']>>;
3053
3270
  primaryTag?: InputMaybe<Scalars['String']['input']>;
3271
+ /** Role template keys from the `roles` section. */
3054
3272
  roles?: InputMaybe<Array<Scalars['String']['input']>>;
3055
3273
  tags?: InputMaybe<Array<Scalars['String']['input']>>;
3056
3274
  };
@@ -3075,6 +3293,26 @@ export type UserExportData = {
3075
3293
  updatedAt: Scalars['Date']['output'];
3076
3294
  };
3077
3295
 
3296
+ export type UserGroup = Auditable & {
3297
+ __typename?: 'UserGroup';
3298
+ createdAt: Scalars['Date']['output'];
3299
+ deletedAt?: Maybe<Scalars['Date']['output']>;
3300
+ group?: Maybe<Group>;
3301
+ groupId: Scalars['ID']['output'];
3302
+ id: Scalars['ID']['output'];
3303
+ updatedAt: Scalars['Date']['output'];
3304
+ user?: Maybe<User>;
3305
+ userId: Scalars['ID']['output'];
3306
+ };
3307
+
3308
+ export type UserGroupGroupArgs = {
3309
+ scope: Scope;
3310
+ };
3311
+
3312
+ export type UserGroupUserArgs = {
3313
+ scope: Scope;
3314
+ };
3315
+
3078
3316
  export type UserPage = PaginatedResults & {
3079
3317
  __typename?: 'UserPage';
3080
3318
  hasNextPage: Scalars['Boolean']['output'];
@@ -3082,6 +3320,26 @@ export type UserPage = PaginatedResults & {
3082
3320
  users: Array<User>;
3083
3321
  };
3084
3322
 
3323
+ export type UserPermission = Auditable & {
3324
+ __typename?: 'UserPermission';
3325
+ createdAt: Scalars['Date']['output'];
3326
+ deletedAt?: Maybe<Scalars['Date']['output']>;
3327
+ id: Scalars['ID']['output'];
3328
+ permission?: Maybe<Permission>;
3329
+ permissionId: Scalars['ID']['output'];
3330
+ updatedAt: Scalars['Date']['output'];
3331
+ user?: Maybe<User>;
3332
+ userId: Scalars['ID']['output'];
3333
+ };
3334
+
3335
+ export type UserPermissionPermissionArgs = {
3336
+ scope: Scope;
3337
+ };
3338
+
3339
+ export type UserPermissionUserArgs = {
3340
+ scope: Scope;
3341
+ };
3342
+
3085
3343
  export type UserRegistrationData = {
3086
3344
  name: Scalars['String']['input'];
3087
3345
  password: Scalars['String']['input'];
package/src/index.ts CHANGED
@@ -18,8 +18,10 @@ export type {
18
18
  ResolversTypes,
19
19
  ResolverTypeWrapper,
20
20
  ResourceResolvers,
21
+ RolePermissionResolvers,
21
22
  RoleResolvers,
22
23
  TagResolvers,
24
+ UserPermissionResolvers,
23
25
  UserResolvers,
24
26
  } from './generated/resolvers';
25
27
  export * from './generated/schema-types';
@@ -0,0 +1,38 @@
1
+ query GetGroupsList(
2
+ $scope: Scope!
3
+ $page: Int
4
+ $limit: Int
5
+ $sort: GroupSortInput
6
+ $search: String
7
+ $ids: [ID!]
8
+ $tagIds: [ID!]
9
+ ) {
10
+ groups(
11
+ scope: $scope
12
+ page: $page
13
+ limit: $limit
14
+ sort: $sort
15
+ search: $search
16
+ ids: $ids
17
+ tagIds: $tagIds
18
+ ) {
19
+ groups {
20
+ id
21
+ name
22
+ description
23
+ metadata
24
+ createdAt
25
+ updatedAt
26
+ primaryTag {
27
+ id
28
+ name
29
+ color
30
+ isPrimary
31
+ }
32
+ permissionCount
33
+ tagCount
34
+ }
35
+ totalCount
36
+ hasNextPage
37
+ }
38
+ }
@@ -6,5 +6,11 @@ mutation UpdateGroup($id: ID!, $input: UpdateGroupInput!) {
6
6
  metadata
7
7
  createdAt
8
8
  updatedAt
9
+ tags {
10
+ id
11
+ name
12
+ color
13
+ isPrimary
14
+ }
9
15
  }
10
16
  }
@@ -11,6 +11,10 @@ query Me {
11
11
  name
12
12
  pictureUrl
13
13
  metadata
14
+ roleCount
15
+ permissionCount
16
+ projectUserApiKeyCount
17
+ tagCount
14
18
  createdAt
15
19
  updatedAt
16
20
  }
@@ -0,0 +1,45 @@
1
+ query GetPermissionsList(
2
+ $scope: Scope!
3
+ $page: Int
4
+ $limit: Int
5
+ $sort: PermissionSortInput
6
+ $search: String
7
+ $ids: [ID!]
8
+ $tagIds: [ID!]
9
+ ) {
10
+ permissions(
11
+ scope: $scope
12
+ page: $page
13
+ limit: $limit
14
+ sort: $sort
15
+ search: $search
16
+ ids: $ids
17
+ tagIds: $tagIds
18
+ ) {
19
+ permissions {
20
+ id
21
+ name
22
+ action
23
+ description
24
+ metadata
25
+ resourceId
26
+ condition
27
+ createdAt
28
+ updatedAt
29
+ primaryTag {
30
+ id
31
+ name
32
+ color
33
+ isPrimary
34
+ }
35
+ resource {
36
+ id
37
+ name
38
+ slug
39
+ }
40
+ tagCount
41
+ }
42
+ totalCount
43
+ hasNextPage
44
+ }
45
+ }
@@ -13,5 +13,11 @@ mutation UpdatePermission($id: ID!, $input: UpdatePermissionInput!) {
13
13
  condition
14
14
  createdAt
15
15
  updatedAt
16
+ tags {
17
+ id
18
+ name
19
+ color
20
+ isPrimary
21
+ }
16
22
  }
17
23
  }
@@ -8,5 +8,11 @@ mutation UpdateResource($id: ID!, $input: UpdateResourceInput!) {
8
8
  isActive
9
9
  createdAt
10
10
  updatedAt
11
+ tags {
12
+ id
13
+ name
14
+ color
15
+ isPrimary
16
+ }
11
17
  }
12
18
  }
@@ -0,0 +1,39 @@
1
+ mutation AssignRolePermission($input: AssignRolePermissionInput!) {
2
+ assignRolePermission(input: $input) {
3
+ id
4
+ roleId
5
+ permissionId
6
+ createdAt
7
+ updatedAt
8
+ }
9
+ }
10
+
11
+ mutation RevokeRolePermission($input: RevokeRolePermissionInput!) {
12
+ revokeRolePermission(input: $input) {
13
+ id
14
+ roleId
15
+ permissionId
16
+ deletedAt
17
+ }
18
+ }
19
+
20
+ query GetRoleDirectPermissions($scope: Scope!, $roleId: ID!) {
21
+ roles(scope: $scope, ids: [$roleId], limit: 1) {
22
+ roles {
23
+ id
24
+ permissionCount
25
+ rolePermissions {
26
+ id
27
+ permissionId
28
+ permission(scope: $scope) {
29
+ id
30
+ name
31
+ action
32
+ resource {
33
+ slug
34
+ }
35
+ }
36
+ }
37
+ }
38
+ }
39
+ }