@grantjs/schema 1.0.0 → 1.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.
Files changed (77) hide show
  1. package/package.json +8 -8
  2. package/src/cdm/cdm-export-sections.ts +22 -0
  3. package/src/generated/graphql.ts +1656 -46
  4. package/src/generated/resolvers.ts +727 -0
  5. package/src/index.ts +11 -10
  6. package/src/operations/auth/login.graphql +2 -0
  7. package/src/operations/auth/setupMfa.graphql +7 -0
  8. package/src/operations/auth/verifyMfa.graphql +7 -0
  9. package/src/operations/auth/verifyMfaRecoveryCode.graphql +7 -0
  10. package/src/operations/me/createMyMfaEnrollment.graphql +7 -0
  11. package/src/operations/me/generateMyMfaRecoveryCodes.graphql +3 -0
  12. package/src/operations/me/me.graphql +1 -0
  13. package/src/operations/me/myMfaDevices.graphql +10 -0
  14. package/src/operations/me/myMfaRecoveryCodeStatus.graphql +6 -0
  15. package/src/operations/me/removeMyMfaDevice.graphql +5 -0
  16. package/src/operations/me/setMyPrimaryMfaDevice.graphql +6 -0
  17. package/src/operations/me/verifyMyMfaEnrollment.graphql +5 -0
  18. package/src/operations/organizations/getOrganizations.graphql +1 -0
  19. package/src/operations/organizations/updateOrganization.graphql +1 -0
  20. package/src/operations/projects/cancel-project-sync.graphql +17 -0
  21. package/src/operations/projects/project-sync-job.graphql +37 -0
  22. package/src/operations/projects/project-sync-jobs.graphql +40 -0
  23. package/src/operations/projects/start-project-export.graphql +20 -0
  24. package/src/operations/projects/start-project-sync.graphql +17 -0
  25. package/src/operations/resources/createResource.graphql +6 -0
  26. package/src/schema/auth/inputs/verify-mfa-recovery-code.graphql +3 -0
  27. package/src/schema/auth/inputs/verify-mfa.graphql +3 -0
  28. package/src/schema/auth/mutations/setup-mfa.graphql +3 -0
  29. package/src/schema/auth/mutations/verify-mfa-recovery-code.graphql +3 -0
  30. package/src/schema/auth/mutations/verify-mfa.graphql +3 -0
  31. package/src/schema/auth/types/login-response.graphql +5 -0
  32. package/src/schema/auth/types/mfa-setup-response.graphql +5 -0
  33. package/src/schema/auth/types/mfa-verify-response.graphql +5 -0
  34. package/src/schema/me/inputs/generate-my-mfa-recovery-codes.graphql +3 -0
  35. package/src/schema/me/inputs/remove-my-mfa-device.graphql +3 -0
  36. package/src/schema/me/inputs/set-my-primary-mfa-device.graphql +3 -0
  37. package/src/schema/me/inputs/verify-my-mfa-enrollment.graphql +3 -0
  38. package/src/schema/me/mutations/create-my-mfa-enrollment.graphql +3 -0
  39. package/src/schema/me/mutations/generate-my-mfa-recovery-codes.graphql +3 -0
  40. package/src/schema/me/mutations/remove-my-mfa-device.graphql +3 -0
  41. package/src/schema/me/mutations/set-my-primary-mfa-device.graphql +3 -0
  42. package/src/schema/me/mutations/verify-my-mfa-enrollment.graphql +3 -0
  43. package/src/schema/me/queries/my-mfa-devices.graphql +3 -0
  44. package/src/schema/me/queries/my-mfa-recovery-code-status.graphql +3 -0
  45. package/src/schema/me/types/me-response.graphql +1 -0
  46. package/src/schema/me/types/mfa-device.graphql +8 -0
  47. package/src/schema/me/types/mfa-enrollment.graphql +5 -0
  48. package/src/schema/me/types/mfa-recovery-code-status.graphql +4 -0
  49. package/src/schema/me/types/mfa-verify-result.graphql +3 -0
  50. package/src/schema/organization-users/inputs/add-organization-user.graphql +1 -0
  51. package/src/schema/organization-users/types/organization-user.graphql +1 -0
  52. package/src/schema/organizations/inputs/update-organization.graphql +1 -0
  53. package/src/schema/organizations/types/organization.graphql +1 -0
  54. package/src/schema/permissions/inputs/create-permission.graphql +1 -0
  55. package/src/schema/permissions/inputs/update-permission.graphql +1 -0
  56. package/src/schema/permissions/types/permission.graphql +1 -0
  57. package/src/schema/project-user-api-keys/inputs/add-project-user-api-key.graphql +4 -0
  58. package/src/schema/project-users/inputs/add-project-user.graphql +1 -0
  59. package/src/schema/project-users/types/project-user.graphql +3 -0
  60. package/src/schema/projects/inputs/project-sync-job-sort.graphql +4 -0
  61. package/src/schema/projects/inputs/start-project-export.graphql +31 -0
  62. package/src/schema/projects/inputs/sync-project-cdm.graphql +132 -0
  63. package/src/schema/projects/mutations/cancel-project-sync.graphql +9 -0
  64. package/src/schema/projects/mutations/start-project-export.graphql +12 -0
  65. package/src/schema/projects/mutations/start-project-sync.graphql +15 -0
  66. package/src/schema/projects/queries/project-sync-job.graphql +7 -0
  67. package/src/schema/projects/queries/project-sync-jobs.graphql +17 -0
  68. package/src/schema/projects/types/project-sync-job-page.graphql +8 -0
  69. package/src/schema/projects/types/project-sync-job-sortable-field.graphql +7 -0
  70. package/src/schema/projects/types/project-sync-job.graphql +53 -0
  71. package/src/schema/projects/types/sync-project-result.graphql +27 -0
  72. package/src/schema/resources/inputs/create-resource.graphql +2 -0
  73. package/src/schema/resources/inputs/update-resource.graphql +1 -0
  74. package/src/schema/resources/types/resource.graphql +2 -0
  75. package/src/schema/tags/inputs/create-tag.graphql +1 -0
  76. package/src/schema/tags/inputs/update-tag.graphql +1 -0
  77. package/src/schema/tags/types/tag.graphql +1 -0
@@ -235,6 +235,7 @@ export type AddOrganizationTagInput = {
235
235
 
236
236
  export type AddOrganizationUserInput = {
237
237
  organizationId: Scalars['ID']['input'];
238
+ roleId: Scalars['ID']['input'];
238
239
  userId: Scalars['ID']['input'];
239
240
  };
240
241
 
@@ -278,11 +279,14 @@ export type AddProjectTagInput = {
278
279
 
279
280
  export type AddProjectUserApiKeyInput = {
280
281
  apiKeyId: Scalars['ID']['input'];
282
+ /** Optional pivot metadata (e.g. CDM `cdmImport` / `cdmSource`); omit for normal API creates. */
283
+ metadata?: InputMaybe<Scalars['JSON']['input']>;
281
284
  projectId: Scalars['ID']['input'];
282
285
  userId: Scalars['ID']['input'];
283
286
  };
284
287
 
285
288
  export type AddProjectUserInput = {
289
+ metadata?: InputMaybe<Scalars['JSON']['input']>;
286
290
  projectId: Scalars['ID']['input'];
287
291
  userId: Scalars['ID']['input'];
288
292
  };
@@ -398,6 +402,43 @@ export type AuthorizationResult = {
398
402
  reason?: Maybe<AuthorizationReason>;
399
403
  };
400
404
 
405
+ export enum CdmFindBy {
406
+ Email = 'email',
407
+ Id = 'id',
408
+ Key = 'key',
409
+ Name = 'name',
410
+ Slug = 'slug',
411
+ }
412
+
413
+ export enum CdmIfMissing {
414
+ CreateNew = 'createNew',
415
+ Fail = 'fail',
416
+ Skip = 'skip',
417
+ }
418
+
419
+ export type CdmKeyResolverInput = {
420
+ findBy?: InputMaybe<CdmFindBy>;
421
+ ifMissing?: InputMaybe<CdmIfMissing>;
422
+ value: Scalars['String']['input'];
423
+ };
424
+
425
+ export type CdmModeInput = {
426
+ confirmDestructive?: InputMaybe<Scalars['Boolean']['input']>;
427
+ onConflict?: InputMaybe<CdmOnConflict>;
428
+ strategy: CdmModeStrategy;
429
+ };
430
+
431
+ export enum CdmModeStrategy {
432
+ Merge = 'merge',
433
+ Replace = 'replace',
434
+ }
435
+
436
+ export enum CdmOnConflict {
437
+ Fail = 'fail',
438
+ Skip = 'skip',
439
+ Update = 'update',
440
+ }
441
+
401
442
  export type ChangeMyPasswordInput = {
402
443
  confirmPassword: Scalars['String']['input'];
403
444
  currentPassword: Scalars['String']['input'];
@@ -497,6 +538,7 @@ export type CreatePermissionInput = {
497
538
  action: Scalars['String']['input'];
498
539
  condition?: InputMaybe<Scalars['JSON']['input']>;
499
540
  description?: InputMaybe<Scalars['String']['input']>;
541
+ metadata?: InputMaybe<Scalars['JSON']['input']>;
500
542
  name: Scalars['String']['input'];
501
543
  primaryTagId?: InputMaybe<Scalars['ID']['input']>;
502
544
  resourceId?: InputMaybe<Scalars['ID']['input']>;
@@ -548,8 +590,10 @@ export type CreateProjectInput = {
548
590
 
549
591
  export type CreateResourceInput = {
550
592
  actions?: InputMaybe<Array<Scalars['String']['input']>>;
593
+ createPermissions?: InputMaybe<Scalars['Boolean']['input']>;
551
594
  description?: InputMaybe<Scalars['String']['input']>;
552
595
  isActive?: InputMaybe<Scalars['Boolean']['input']>;
596
+ metadata?: InputMaybe<Scalars['JSON']['input']>;
553
597
  name: Scalars['String']['input'];
554
598
  primaryTagId?: InputMaybe<Scalars['ID']['input']>;
555
599
  scope: Scope;
@@ -569,6 +613,7 @@ export type CreateRoleInput = {
569
613
 
570
614
  export type CreateTagInput = {
571
615
  color: Scalars['String']['input'];
616
+ metadata?: InputMaybe<Scalars['JSON']['input']>;
572
617
  name: Scalars['String']['input'];
573
618
  scope: Scope;
574
619
  };
@@ -632,6 +677,10 @@ export type ExchangeApiKeyResult = {
632
677
  expiresIn: Scalars['Int']['output'];
633
678
  };
634
679
 
680
+ export type GenerateMyMfaRecoveryCodesInput = {
681
+ factorId?: InputMaybe<Scalars['ID']['input']>;
682
+ };
683
+
635
684
  export type GetUserAuthenticationMethodsInput = {
636
685
  provider?: InputMaybe<UserAuthenticationMethodProvider>;
637
686
  userId?: InputMaybe<Scalars['ID']['input']>;
@@ -664,6 +713,16 @@ export type Group = Auditable & {
664
713
  updatedAt: Scalars['Date']['output'];
665
714
  };
666
715
 
716
+ export type GroupCdmInput = {
717
+ description?: InputMaybe<Scalars['String']['input']>;
718
+ key: Scalars['String']['input'];
719
+ metadata?: InputMaybe<Scalars['JSON']['input']>;
720
+ name: Scalars['String']['input'];
721
+ permissions?: InputMaybe<Array<Scalars['String']['input']>>;
722
+ primaryTag?: InputMaybe<Scalars['String']['input']>;
723
+ tags?: InputMaybe<Array<Scalars['String']['input']>>;
724
+ };
725
+
667
726
  export type GroupPage = PaginatedResults & {
668
727
  __typename?: 'GroupPage';
669
728
  groups: Array<Group>;
@@ -757,8 +816,11 @@ export type LoginResponse = {
757
816
  accessToken: Scalars['String']['output'];
758
817
  accounts: Array<Account>;
759
818
  email?: Maybe<Scalars['String']['output']>;
819
+ mfaVerified?: Maybe<Scalars['Boolean']['output']>;
760
820
  refreshToken: Scalars['String']['output'];
761
821
  requiresEmailVerification?: Maybe<Scalars['Boolean']['output']>;
822
+ /** When true, the client should complete MFA before expecting full API access (see AUTH_MIN_AAL_AT_LOGIN). */
823
+ requiresMfaStepUp?: Maybe<Scalars['Boolean']['output']>;
762
824
  verificationExpiry?: Maybe<Scalars['Date']['output']>;
763
825
  };
764
826
 
@@ -771,6 +833,7 @@ export type MeResponse = {
771
833
  __typename?: 'MeResponse';
772
834
  accounts: Array<Account>;
773
835
  email?: Maybe<Scalars['String']['output']>;
836
+ mfaVerified?: Maybe<Scalars['Boolean']['output']>;
774
837
  requiresEmailVerification?: Maybe<Scalars['Boolean']['output']>;
775
838
  verificationExpiry?: Maybe<Scalars['Date']['output']>;
776
839
  };
@@ -780,13 +843,63 @@ export enum MemberType {
780
843
  Member = 'member',
781
844
  }
782
845
 
846
+ export type MfaDevice = {
847
+ __typename?: 'MfaDevice';
848
+ createdAt: Scalars['Date']['output'];
849
+ id: Scalars['ID']['output'];
850
+ isEnabled: Scalars['Boolean']['output'];
851
+ isPrimary: Scalars['Boolean']['output'];
852
+ lastUsedAt?: Maybe<Scalars['Date']['output']>;
853
+ name: Scalars['String']['output'];
854
+ };
855
+
856
+ export type MfaEnrollment = {
857
+ __typename?: 'MfaEnrollment';
858
+ factorId: Scalars['ID']['output'];
859
+ otpAuthUrl: Scalars['String']['output'];
860
+ secret: Scalars['String']['output'];
861
+ };
862
+
863
+ export type MfaRecoveryCodeStatus = {
864
+ __typename?: 'MfaRecoveryCodeStatus';
865
+ activeCount: Scalars['Int']['output'];
866
+ lastGeneratedAt?: Maybe<Scalars['Date']['output']>;
867
+ };
868
+
869
+ export type MfaSetupResponse = {
870
+ __typename?: 'MfaSetupResponse';
871
+ factorId: Scalars['ID']['output'];
872
+ otpAuthUrl: Scalars['String']['output'];
873
+ secret: Scalars['String']['output'];
874
+ };
875
+
876
+ export type MfaVerifyResponse = {
877
+ __typename?: 'MfaVerifyResponse';
878
+ accessToken: Scalars['String']['output'];
879
+ mfaVerified: Scalars['Boolean']['output'];
880
+ refreshToken: Scalars['String']['output'];
881
+ };
882
+
883
+ export type MfaVerifyResult = {
884
+ __typename?: 'MfaVerifyResult';
885
+ success: Scalars['Boolean']['output'];
886
+ };
887
+
783
888
  export type Mutation = {
784
889
  __typename?: 'Mutation';
785
890
  _empty?: Maybe<Scalars['String']['output']>;
786
891
  acceptInvitation: AcceptInvitationResult;
892
+ /**
893
+ * Cancel a pending or running project CDM sync job. Cancellation is
894
+ * immediate when the job is still PENDING; if the job is already RUNNING, the
895
+ * cancellation is recorded and the worker stops at the next checkpoint
896
+ * (best-effort).
897
+ */
898
+ cancelProjectSync: ProjectSyncJob;
787
899
  changeMyPassword: ChangeMyPasswordResult;
788
900
  createApiKey: CreateApiKeyResult;
789
901
  createGroup: Group;
902
+ createMyMfaEnrollment: MfaEnrollment;
790
903
  createMySecondaryAccount: CreateMySecondaryAccountResult;
791
904
  createMyUserAuthenticationMethod: UserAuthenticationMethod;
792
905
  createOrganization: Organization;
@@ -811,11 +924,13 @@ export type Mutation = {
811
924
  deleteTag: Tag;
812
925
  deleteUser: User;
813
926
  exchangeApiKey: ExchangeApiKeyResult;
927
+ generateMyMfaRecoveryCodes: Array<Scalars['String']['output']>;
814
928
  inviteMember: OrganizationInvitation;
815
929
  login: LoginResponse;
816
930
  logoutMyUser: LogoutMyUserResponse;
817
931
  refreshSession: RefreshSessionResponse;
818
932
  register: CreateAccountResult;
933
+ removeMyMfaDevice: MfaVerifyResult;
819
934
  removeOrganizationMember: OrganizationMember;
820
935
  renewInvitation: OrganizationInvitation;
821
936
  requestPasswordReset: RequestPasswordResetResponse;
@@ -832,6 +947,31 @@ export type Mutation = {
832
947
  */
833
948
  rotateSigningKey: SigningKey;
834
949
  setMyPrimaryAuthenticationMethod: UserAuthenticationMethod;
950
+ setMyPrimaryMfaDevice: MfaDevice;
951
+ setupMfa: MfaSetupResponse;
952
+ /**
953
+ * Enqueue an asynchronous CDM **export** job for the given project. The worker
954
+ * snapshots current permission state into a replay-ready `SyncProjectInput` and
955
+ * stores it on the job row (`snapshot`); poll `projectSyncJob` for status.
956
+ *
957
+ * Requires Project:update in the given project scope (same as starting import jobs).
958
+ *
959
+ * Pass optional `input.jobName` for idempotency with the same rules as import `input.id`.
960
+ */
961
+ startProjectExport: ProjectSyncJob;
962
+ /**
963
+ * Enqueue an asynchronous project CDM import job for the given project.
964
+ * Applies a canonical data model document: roles, groups, resources, permissions,
965
+ * tags, project pivots, and user assignments scoped to the project.
966
+ * Requires Project:update in the given project scope.
967
+ *
968
+ * Returns immediately with a job descriptor in the PENDING status; the actual
969
+ * import runs in the background. Poll `projectSyncJob` for status.
970
+ * Pass optional `input.id` as a stable **job name** for idempotency: if an active job
971
+ * already exists for the same `(project, operation=IMPORT, jobName)`, that job is
972
+ * returned instead of creating a new one.
973
+ */
974
+ startProjectSync: ProjectSyncJob;
835
975
  updateGroup: Group;
836
976
  updateMyUser: User;
837
977
  updateOrganization: Organization;
@@ -847,12 +987,21 @@ export type Mutation = {
847
987
  uploadMyUserPicture: UploadUserPictureResult;
848
988
  uploadUserPicture: UploadUserPictureResult;
849
989
  verifyEmail: VerifyEmailResponse;
990
+ verifyMfa: MfaVerifyResponse;
991
+ verifyMfaRecoveryCode: MfaVerifyResponse;
992
+ verifyMyMfaEnrollment: MfaVerifyResult;
850
993
  };
851
994
 
852
995
  export type MutationAcceptInvitationArgs = {
853
996
  input: AcceptInvitationInput;
854
997
  };
855
998
 
999
+ export type MutationCancelProjectSyncArgs = {
1000
+ id: Scalars['ID']['input'];
1001
+ jobId: Scalars['ID']['input'];
1002
+ scope: Scope;
1003
+ };
1004
+
856
1005
  export type MutationChangeMyPasswordArgs = {
857
1006
  input: ChangeMyPasswordInput;
858
1007
  };
@@ -962,6 +1111,10 @@ export type MutationExchangeApiKeyArgs = {
962
1111
  input: ExchangeApiKeyInput;
963
1112
  };
964
1113
 
1114
+ export type MutationGenerateMyMfaRecoveryCodesArgs = {
1115
+ input?: InputMaybe<GenerateMyMfaRecoveryCodesInput>;
1116
+ };
1117
+
965
1118
  export type MutationInviteMemberArgs = {
966
1119
  input: InviteMemberInput;
967
1120
  };
@@ -974,6 +1127,10 @@ export type MutationRegisterArgs = {
974
1127
  input: RegisterInput;
975
1128
  };
976
1129
 
1130
+ export type MutationRemoveMyMfaDeviceArgs = {
1131
+ input: RemoveMyMfaDeviceInput;
1132
+ };
1133
+
977
1134
  export type MutationRemoveOrganizationMemberArgs = {
978
1135
  input: RemoveOrganizationMemberInput;
979
1136
  userId: Scalars['ID']['input'];
@@ -1022,6 +1179,22 @@ export type MutationSetMyPrimaryAuthenticationMethodArgs = {
1022
1179
  id: Scalars['ID']['input'];
1023
1180
  };
1024
1181
 
1182
+ export type MutationSetMyPrimaryMfaDeviceArgs = {
1183
+ input: SetMyPrimaryMfaDeviceInput;
1184
+ };
1185
+
1186
+ export type MutationStartProjectExportArgs = {
1187
+ id: Scalars['ID']['input'];
1188
+ input: StartProjectExportInput;
1189
+ scope: Scope;
1190
+ };
1191
+
1192
+ export type MutationStartProjectSyncArgs = {
1193
+ id: Scalars['ID']['input'];
1194
+ input: SyncProjectInput;
1195
+ scope: Scope;
1196
+ };
1197
+
1025
1198
  export type MutationUpdateGroupArgs = {
1026
1199
  id: Scalars['ID']['input'];
1027
1200
  input: UpdateGroupInput;
@@ -1088,6 +1261,18 @@ export type MutationVerifyEmailArgs = {
1088
1261
  input: VerifyEmailInput;
1089
1262
  };
1090
1263
 
1264
+ export type MutationVerifyMfaArgs = {
1265
+ input: VerifyMfaInput;
1266
+ };
1267
+
1268
+ export type MutationVerifyMfaRecoveryCodeArgs = {
1269
+ input: VerifyMfaRecoveryCodeInput;
1270
+ };
1271
+
1272
+ export type MutationVerifyMyMfaEnrollmentArgs = {
1273
+ input: VerifyMyMfaEnrollmentInput;
1274
+ };
1275
+
1091
1276
  export type MyUserSessionsInput = {
1092
1277
  audience?: InputMaybe<Scalars['String']['input']>;
1093
1278
  limit?: InputMaybe<Scalars['Int']['input']>;
@@ -1104,6 +1289,7 @@ export type Organization = Auditable & {
1104
1289
  name: Scalars['String']['output'];
1105
1290
  permissions?: Maybe<Array<Permission>>;
1106
1291
  projects?: Maybe<Array<Project>>;
1292
+ requireMfaForSensitiveActions: Scalars['Boolean']['output'];
1107
1293
  roles?: Maybe<Array<Role>>;
1108
1294
  slug: Scalars['String']['output'];
1109
1295
  tags?: Maybe<Array<Tag>>;
@@ -1328,6 +1514,7 @@ export type OrganizationUser = Auditable & {
1328
1514
  id: Scalars['ID']['output'];
1329
1515
  organization?: Maybe<Organization>;
1330
1516
  organizationId: Scalars['ID']['output'];
1517
+ roleId: Scalars['ID']['output'];
1331
1518
  updatedAt: Scalars['Date']['output'];
1332
1519
  user?: Maybe<User>;
1333
1520
  userId: Scalars['ID']['output'];
@@ -1346,6 +1533,7 @@ export type Permission = Auditable & {
1346
1533
  deletedAt?: Maybe<Scalars['Date']['output']>;
1347
1534
  description?: Maybe<Scalars['String']['output']>;
1348
1535
  id: Scalars['ID']['output'];
1536
+ metadata: Scalars['JSON']['output'];
1349
1537
  name: Scalars['String']['output'];
1350
1538
  resource?: Maybe<Resource>;
1351
1539
  resourceId?: Maybe<Scalars['ID']['output']>;
@@ -1353,6 +1541,20 @@ export type Permission = Auditable & {
1353
1541
  updatedAt: Scalars['Date']['output'];
1354
1542
  };
1355
1543
 
1544
+ /** Custom permission for this project; `resource` is an opaque key in the same document. */
1545
+ export type PermissionCdmInput = {
1546
+ action: Scalars['String']['input'];
1547
+ condition?: InputMaybe<Scalars['JSON']['input']>;
1548
+ description?: InputMaybe<Scalars['String']['input']>;
1549
+ groups?: InputMaybe<Array<Scalars['String']['input']>>;
1550
+ key: Scalars['String']['input'];
1551
+ metadata?: InputMaybe<Scalars['JSON']['input']>;
1552
+ name: Scalars['String']['input'];
1553
+ primaryTag?: InputMaybe<Scalars['String']['input']>;
1554
+ resource: Scalars['String']['input'];
1555
+ tags?: InputMaybe<Array<Scalars['String']['input']>>;
1556
+ };
1557
+
1356
1558
  export type PermissionPage = PaginatedResults & {
1357
1559
  __typename?: 'PermissionPage';
1358
1560
  hasNextPage: Scalars['Boolean']['output'];
@@ -1563,6 +1765,68 @@ export enum ProjectSortableField {
1563
1765
  UpdatedAt = 'updatedAt',
1564
1766
  }
1565
1767
 
1768
+ /** Asynchronous project CDM import or export job. */
1769
+ export type ProjectSyncJob = {
1770
+ __typename?: 'ProjectSyncJob';
1771
+ cancelledAt?: Maybe<Scalars['Date']['output']>;
1772
+ cdmVersion: Scalars['Int']['output'];
1773
+ completedAt?: Maybe<Scalars['Date']['output']>;
1774
+ enqueuedAt: Scalars['Date']['output'];
1775
+ errorMessage?: Maybe<Scalars['String']['output']>;
1776
+ /** Rollback snapshot (import) or exported CDM (export); REST `.../snapshot`. */
1777
+ hasSnapshot: Scalars['Boolean']['output'];
1778
+ id: Scalars['ID']['output'];
1779
+ /** Client idempotency key from `SyncProjectInput.id` on import. */
1780
+ jobName?: Maybe<Scalars['String']['output']>;
1781
+ /** Import merge/replace; null for export. */
1782
+ modeStrategy?: Maybe<CdmModeStrategy>;
1783
+ operation: ProjectSyncJobOperation;
1784
+ projectId: Scalars['ID']['output'];
1785
+ /** Import counters when completed; null for export (CDM in snapshot download). */
1786
+ result?: Maybe<SyncProjectResult>;
1787
+ snapshotSizeBytes?: Maybe<Scalars['Int']['output']>;
1788
+ snapshotTakenAt?: Maybe<Scalars['Date']['output']>;
1789
+ startedAt?: Maybe<Scalars['Date']['output']>;
1790
+ status: ProjectSyncJobStatus;
1791
+ warnings: Array<Scalars['String']['output']>;
1792
+ };
1793
+
1794
+ /** CDM import or export work for a project (`project_sync_jobs`). */
1795
+ export enum ProjectSyncJobOperation {
1796
+ Export = 'EXPORT',
1797
+ Import = 'IMPORT',
1798
+ }
1799
+
1800
+ /** Paginated list of project CDM sync jobs. */
1801
+ export type ProjectSyncJobPage = PaginatedResults & {
1802
+ __typename?: 'ProjectSyncJobPage';
1803
+ hasNextPage: Scalars['Boolean']['output'];
1804
+ jobs: Array<ProjectSyncJob>;
1805
+ totalCount: Scalars['Int']['output'];
1806
+ };
1807
+
1808
+ export type ProjectSyncJobSortInput = {
1809
+ field: ProjectSyncJobSortableField;
1810
+ order: SortOrder;
1811
+ };
1812
+
1813
+ export enum ProjectSyncJobSortableField {
1814
+ CompletedAt = 'completedAt',
1815
+ EnqueuedAt = 'enqueuedAt',
1816
+ JobName = 'jobName',
1817
+ StartedAt = 'startedAt',
1818
+ Status = 'status',
1819
+ }
1820
+
1821
+ /** Lifecycle status of an asynchronous project CDM sync job. */
1822
+ export enum ProjectSyncJobStatus {
1823
+ Cancelled = 'CANCELLED',
1824
+ Completed = 'COMPLETED',
1825
+ Failed = 'FAILED',
1826
+ Pending = 'PENDING',
1827
+ Running = 'RUNNING',
1828
+ }
1829
+
1566
1830
  export type ProjectTag = Auditable & {
1567
1831
  __typename?: 'ProjectTag';
1568
1832
  createdAt: Scalars['Date']['output'];
@@ -1584,7 +1848,10 @@ export type ProjectUser = Auditable & {
1584
1848
  __typename?: 'ProjectUser';
1585
1849
  createdAt: Scalars['Date']['output'];
1586
1850
  deletedAt?: Maybe<Scalars['Date']['output']>;
1851
+ displayName?: Maybe<Scalars['String']['output']>;
1587
1852
  id: Scalars['ID']['output'];
1853
+ metadata: Scalars['JSON']['output'];
1854
+ pictureUrl?: Maybe<Scalars['String']['output']>;
1588
1855
  project?: Maybe<Project>;
1589
1856
  projectId: Scalars['ID']['output'];
1590
1857
  updatedAt: Scalars['Date']['output'];
@@ -1618,6 +1885,8 @@ export type Query = {
1618
1885
  invitation?: Maybe<OrganizationInvitation>;
1619
1886
  isAuthorized: AuthorizationResult;
1620
1887
  me: MeResponse;
1888
+ myMfaDevices: Array<MfaDevice>;
1889
+ myMfaRecoveryCodeStatus: MfaRecoveryCodeStatus;
1621
1890
  myUserAuthenticationMethods: Array<UserAuthenticationMethod>;
1622
1891
  myUserDataExport: UserDataExport;
1623
1892
  myUserSessions: UserSessionPage;
@@ -1627,6 +1896,18 @@ export type Query = {
1627
1896
  permissions: PermissionPage;
1628
1897
  /** List OAuth apps for the given project scope. Allowed scopes: accountProject, organizationProject. */
1629
1898
  projectApps: ProjectAppPage;
1899
+ /**
1900
+ * Read the current state of a project CDM sync job. Use this to poll
1901
+ * the lifecycle of a job started via `startProjectSync`.
1902
+ */
1903
+ projectSyncJob: ProjectSyncJob;
1904
+ /**
1905
+ * List project CDM sync jobs for a project, with optional pagination,
1906
+ * search (matches jobName), status filter, and sort. Use this to populate the
1907
+ * job history view. Use `projectSyncJob` to read a single job's
1908
+ * current state for polling.
1909
+ */
1910
+ projectSyncJobs: ProjectSyncJobPage;
1630
1911
  projects: ProjectPage;
1631
1912
  resources: ResourcePage;
1632
1913
  roles: RolePage;
@@ -1718,6 +1999,22 @@ export type QueryProjectAppsArgs = {
1718
1999
  tagIds?: InputMaybe<Array<Scalars['ID']['input']>>;
1719
2000
  };
1720
2001
 
2002
+ export type QueryProjectSyncJobArgs = {
2003
+ id: Scalars['ID']['input'];
2004
+ jobId: Scalars['ID']['input'];
2005
+ scope: Scope;
2006
+ };
2007
+
2008
+ export type QueryProjectSyncJobsArgs = {
2009
+ id: Scalars['ID']['input'];
2010
+ limit?: InputMaybe<Scalars['Int']['input']>;
2011
+ page?: InputMaybe<Scalars['Int']['input']>;
2012
+ scope: Scope;
2013
+ search?: InputMaybe<Scalars['String']['input']>;
2014
+ sort?: InputMaybe<ProjectSyncJobSortInput>;
2015
+ status?: InputMaybe<ProjectSyncJobStatus>;
2016
+ };
2017
+
1721
2018
  export type QueryProjectsArgs = {
1722
2019
  ids?: InputMaybe<Array<Scalars['ID']['input']>>;
1723
2020
  limit?: InputMaybe<Scalars['Int']['input']>;
@@ -1975,6 +2272,10 @@ export type RemoveGroupTagInput = {
1975
2272
  tagId: Scalars['ID']['input'];
1976
2273
  };
1977
2274
 
2275
+ export type RemoveMyMfaDeviceInput = {
2276
+ factorId: Scalars['ID']['input'];
2277
+ };
2278
+
1978
2279
  export type RemoveOrganizationGroupInput = {
1979
2280
  groupId: Scalars['ID']['input'];
1980
2281
  organizationId: Scalars['ID']['input'];
@@ -2134,12 +2435,26 @@ export type Resource = Auditable & {
2134
2435
  description?: Maybe<Scalars['String']['output']>;
2135
2436
  id: Scalars['ID']['output'];
2136
2437
  isActive: Scalars['Boolean']['output'];
2438
+ metadata: Scalars['JSON']['output'];
2137
2439
  name: Scalars['String']['output'];
2440
+ permissions?: Maybe<Array<Permission>>;
2138
2441
  slug: Scalars['String']['output'];
2139
2442
  tags: Array<Tag>;
2140
2443
  updatedAt: Scalars['Date']['output'];
2141
2444
  };
2142
2445
 
2446
+ /** Project resource row for CDM import/export. */
2447
+ export type ResourceCdmInput = {
2448
+ actions: Array<Scalars['String']['input']>;
2449
+ description?: InputMaybe<Scalars['String']['input']>;
2450
+ key: Scalars['String']['input'];
2451
+ metadata?: InputMaybe<Scalars['JSON']['input']>;
2452
+ name: Scalars['String']['input'];
2453
+ primaryTag?: InputMaybe<Scalars['String']['input']>;
2454
+ slug?: InputMaybe<Scalars['String']['input']>;
2455
+ tags?: InputMaybe<Array<Scalars['String']['input']>>;
2456
+ };
2457
+
2143
2458
  export type ResourcePage = PaginatedResults & {
2144
2459
  __typename?: 'ResourcePage';
2145
2460
  hasNextPage: Scalars['Boolean']['output'];
@@ -2210,6 +2525,17 @@ export type Role = Auditable & {
2210
2525
  updatedAt: Scalars['Date']['output'];
2211
2526
  };
2212
2527
 
2528
+ export type RoleCdmInput = {
2529
+ description?: InputMaybe<Scalars['String']['input']>;
2530
+ groups?: InputMaybe<Array<Scalars['String']['input']>>;
2531
+ key: Scalars['String']['input'];
2532
+ metadata?: InputMaybe<Scalars['JSON']['input']>;
2533
+ name: Scalars['String']['input'];
2534
+ permissions?: InputMaybe<Array<Scalars['String']['input']>>;
2535
+ primaryTag?: InputMaybe<Scalars['String']['input']>;
2536
+ tags?: InputMaybe<Array<Scalars['String']['input']>>;
2537
+ };
2538
+
2213
2539
  export type RoleGroup = Auditable & {
2214
2540
  __typename?: 'RoleGroup';
2215
2541
  createdAt: Scalars['Date']['output'];
@@ -2293,6 +2619,10 @@ export type SessionExportData = {
2293
2619
  userAgent?: Maybe<Scalars['String']['output']>;
2294
2620
  };
2295
2621
 
2622
+ export type SetMyPrimaryMfaDeviceInput = {
2623
+ factorId: Scalars['ID']['input'];
2624
+ };
2625
+
2296
2626
  /**
2297
2627
  * Signing key for a scope (e.g. project). Used for RS256 API key tokens; public key is exposed in JWKS.
2298
2628
  * Only project scopes (accountProject, organizationProject) have manageable keys; system key is internal.
@@ -2318,6 +2648,77 @@ export enum SortOrder {
2318
2648
  Desc = 'DESC',
2319
2649
  }
2320
2650
 
2651
+ /**
2652
+ * Parameters for enqueueing an asynchronous CDM **export** job. The worker
2653
+ * materialises a `SyncProjectInput` document and stores it in the job `snapshot`
2654
+ * column; this input is persisted as the job `payload` (export options only).
2655
+ */
2656
+ export type StartProjectExportInput = {
2657
+ /**
2658
+ * When `users` are exported, whether to emit CDM-managed project user API key rows
2659
+ * (identity only). Omit = default true (full export behaviour).
2660
+ */
2661
+ includeUserApiKeys?: InputMaybe<Scalars['Boolean']['input']>;
2662
+ /**
2663
+ * Optional stable idempotency / display name (same column as import `SyncProjectInput.id`).
2664
+ * When set, an active job for the same `(project, operation=EXPORT, jobName)` is returned
2665
+ * instead of creating a new one.
2666
+ */
2667
+ jobName?: InputMaybe<Scalars['String']['input']>;
2668
+ /**
2669
+ * Embedded in the exported CDM document `mode` block for re-import.
2670
+ * Does not change export execution (snapshot is always read-only).
2671
+ */
2672
+ mode?: InputMaybe<CdmModeInput>;
2673
+ /** Subset of CDM slices to export; omit or empty for a full project export. */
2674
+ sections?: InputMaybe<Array<Scalars['String']['input']>>;
2675
+ /** CDM document version (only `1` is supported). */
2676
+ version: Scalars['Int']['input'];
2677
+ };
2678
+
2679
+ /**
2680
+ * Versioned canonical project document (CDM) for export/import: roles, users,
2681
+ * resources, permissions, groups, and tags scoped to one project.
2682
+ */
2683
+ export type SyncProjectInput = {
2684
+ groups?: InputMaybe<Array<GroupCdmInput>>;
2685
+ id?: InputMaybe<Scalars['String']['input']>;
2686
+ mode: CdmModeInput;
2687
+ permissions?: InputMaybe<Array<PermissionCdmInput>>;
2688
+ resources?: InputMaybe<Array<ResourceCdmInput>>;
2689
+ roles: Array<RoleCdmInput>;
2690
+ tags?: InputMaybe<Array<TagCdmInput>>;
2691
+ users: Array<UserCdmInput>;
2692
+ version: Scalars['Int']['input'];
2693
+ };
2694
+
2695
+ /** Counters and warnings from a completed CDM import. */
2696
+ export type SyncProjectResult = {
2697
+ __typename?: 'SyncProjectResult';
2698
+ groupPermissionsLinked: Scalars['Int']['output'];
2699
+ groupTagsLinked: Scalars['Int']['output'];
2700
+ groupsCreated: Scalars['Int']['output'];
2701
+ importId?: Maybe<Scalars['String']['output']>;
2702
+ permissionsCreated: Scalars['Int']['output'];
2703
+ projectGroupsLinked: Scalars['Int']['output'];
2704
+ projectId: Scalars['ID']['output'];
2705
+ projectPermissionsLinked: Scalars['Int']['output'];
2706
+ projectResourcesLinked: Scalars['Int']['output'];
2707
+ projectRolesLinked: Scalars['Int']['output'];
2708
+ projectTagsLinked: Scalars['Int']['output'];
2709
+ projectUserApiKeysCreated: Scalars['Int']['output'];
2710
+ projectUsersEnsured: Scalars['Int']['output'];
2711
+ resourcesCreated: Scalars['Int']['output'];
2712
+ roleGroupsLinked: Scalars['Int']['output'];
2713
+ roleTagsLinked: Scalars['Int']['output'];
2714
+ rolesCreated: Scalars['Int']['output'];
2715
+ tagsCreated: Scalars['Int']['output'];
2716
+ userRolesAssigned: Scalars['Int']['output'];
2717
+ userTagsLinked: Scalars['Int']['output'];
2718
+ usersCreated: Scalars['Int']['output'];
2719
+ warnings: Array<Scalars['String']['output']>;
2720
+ };
2721
+
2321
2722
  export type Tag = Auditable & {
2322
2723
  __typename?: 'Tag';
2323
2724
  color: Scalars['String']['output'];
@@ -2325,10 +2726,18 @@ export type Tag = Auditable & {
2325
2726
  deletedAt?: Maybe<Scalars['Date']['output']>;
2326
2727
  id: Scalars['ID']['output'];
2327
2728
  isPrimary?: Maybe<Scalars['Boolean']['output']>;
2729
+ metadata: Scalars['JSON']['output'];
2328
2730
  name: Scalars['String']['output'];
2329
2731
  updatedAt: Scalars['Date']['output'];
2330
2732
  };
2331
2733
 
2734
+ export type TagCdmInput = {
2735
+ color: Scalars['String']['input'];
2736
+ key: Scalars['String']['input'];
2737
+ metadata?: InputMaybe<Scalars['JSON']['input']>;
2738
+ name: Scalars['String']['input'];
2739
+ };
2740
+
2332
2741
  export type TagPage = PaginatedResults & {
2333
2742
  __typename?: 'TagPage';
2334
2743
  hasNextPage: Scalars['Boolean']['output'];
@@ -2414,6 +2823,7 @@ export type UpdateMyUserInput = {
2414
2823
 
2415
2824
  export type UpdateOrganizationInput = {
2416
2825
  name?: InputMaybe<Scalars['String']['input']>;
2826
+ requireMfaForSensitiveActions?: InputMaybe<Scalars['Boolean']['input']>;
2417
2827
  scope: Scope;
2418
2828
  };
2419
2829
 
@@ -2447,6 +2857,7 @@ export type UpdatePermissionInput = {
2447
2857
  action?: InputMaybe<Scalars['String']['input']>;
2448
2858
  condition?: InputMaybe<Scalars['JSON']['input']>;
2449
2859
  description?: InputMaybe<Scalars['String']['input']>;
2860
+ metadata?: InputMaybe<Scalars['JSON']['input']>;
2450
2861
  name?: InputMaybe<Scalars['String']['input']>;
2451
2862
  primaryTagId?: InputMaybe<Scalars['ID']['input']>;
2452
2863
  resourceId?: InputMaybe<Scalars['ID']['input']>;
@@ -2502,6 +2913,7 @@ export type UpdateResourceInput = {
2502
2913
  actions?: InputMaybe<Array<Scalars['String']['input']>>;
2503
2914
  description?: InputMaybe<Scalars['String']['input']>;
2504
2915
  isActive?: InputMaybe<Scalars['Boolean']['input']>;
2916
+ metadata?: InputMaybe<Scalars['JSON']['input']>;
2505
2917
  name?: InputMaybe<Scalars['String']['input']>;
2506
2918
  primaryTagId?: InputMaybe<Scalars['ID']['input']>;
2507
2919
  scope: Scope;
@@ -2533,6 +2945,7 @@ export type UpdateRoleTagInput = {
2533
2945
 
2534
2946
  export type UpdateTagInput = {
2535
2947
  color?: InputMaybe<Scalars['String']['input']>;
2948
+ metadata?: InputMaybe<Scalars['JSON']['input']>;
2536
2949
  name?: InputMaybe<Scalars['String']['input']>;
2537
2950
  scope: Scope;
2538
2951
  };
@@ -2603,6 +3016,16 @@ export type User = Auditable & {
2603
3016
  updatedAt: Scalars['Date']['output'];
2604
3017
  };
2605
3018
 
3019
+ export type UserApiKeyCdmInput = {
3020
+ clientId?: InputMaybe<Scalars['String']['input']>;
3021
+ clientSecret?: InputMaybe<Scalars['String']['input']>;
3022
+ description?: InputMaybe<Scalars['String']['input']>;
3023
+ expiresAt?: InputMaybe<Scalars['Date']['input']>;
3024
+ key?: InputMaybe<Scalars['String']['input']>;
3025
+ metadata?: InputMaybe<Scalars['JSON']['input']>;
3026
+ name?: InputMaybe<Scalars['String']['input']>;
3027
+ };
3028
+
2606
3029
  export enum UserAuthenticationEmailProviderAction {
2607
3030
  Connect = 'connect',
2608
3031
  Login = 'login',
@@ -2631,6 +3054,18 @@ export enum UserAuthenticationMethodProvider {
2631
3054
  Google = 'google',
2632
3055
  }
2633
3056
 
3057
+ export type UserCdmInput = {
3058
+ apiKeys?: InputMaybe<Array<UserApiKeyCdmInput>>;
3059
+ groups?: InputMaybe<Array<Scalars['String']['input']>>;
3060
+ key: CdmKeyResolverInput;
3061
+ metadata?: InputMaybe<Scalars['JSON']['input']>;
3062
+ name: Scalars['String']['input'];
3063
+ permissions?: InputMaybe<Array<Scalars['String']['input']>>;
3064
+ primaryTag?: InputMaybe<Scalars['String']['input']>;
3065
+ roles?: InputMaybe<Array<Scalars['String']['input']>>;
3066
+ tags?: InputMaybe<Array<Scalars['String']['input']>>;
3067
+ };
3068
+
2634
3069
  export type UserDataExport = {
2635
3070
  __typename?: 'UserDataExport';
2636
3071
  accounts: Array<AccountExportData>;
@@ -2770,6 +3205,18 @@ export type VerifyEmailResponse = {
2770
3205
  success: Scalars['Boolean']['output'];
2771
3206
  };
2772
3207
 
3208
+ export type VerifyMfaInput = {
3209
+ code: Scalars['String']['input'];
3210
+ };
3211
+
3212
+ export type VerifyMfaRecoveryCodeInput = {
3213
+ code: Scalars['String']['input'];
3214
+ };
3215
+
3216
+ export type VerifyMyMfaEnrollmentInput = {
3217
+ code: Scalars['String']['input'];
3218
+ };
3219
+
2773
3220
  export type WithIndex<TObject> = TObject & Record<string, any>;
2774
3221
  export type ResolversObject<TObject> = WithIndex<TObject>;
2775
3222
 
@@ -2924,6 +3371,7 @@ export type ResolversInterfaceTypes<_RefType extends Record<string, unknown>> =
2924
3371
  | PermissionPage
2925
3372
  | ProjectAppPage
2926
3373
  | ProjectPage
3374
+ | ProjectSyncJobPage
2927
3375
  | ResourcePage
2928
3376
  | RolePage
2929
3377
  | TagPage
@@ -2987,6 +3435,12 @@ export type ResolversTypes = ResolversObject<{
2987
3435
  AuthorizationReason: AuthorizationReason;
2988
3436
  AuthorizationResult: ResolverTypeWrapper<AuthorizationResult>;
2989
3437
  Boolean: ResolverTypeWrapper<Scalars['Boolean']['output']>;
3438
+ CdmFindBy: CdmFindBy;
3439
+ CdmIfMissing: CdmIfMissing;
3440
+ CdmKeyResolverInput: CdmKeyResolverInput;
3441
+ CdmModeInput: CdmModeInput;
3442
+ CdmModeStrategy: CdmModeStrategy;
3443
+ CdmOnConflict: CdmOnConflict;
2990
3444
  ChangeMyPasswordInput: ChangeMyPasswordInput;
2991
3445
  ChangeMyPasswordResult: ResolverTypeWrapper<ChangeMyPasswordResult>;
2992
3446
  Creatable: ResolverTypeWrapper<ResolversInterfaceTypes<ResolversTypes>['Creatable']>;
@@ -3016,9 +3470,11 @@ export type ResolversTypes = ResolversObject<{
3016
3470
  DeleteUserSessionInput: DeleteUserSessionInput;
3017
3471
  ExchangeApiKeyInput: ExchangeApiKeyInput;
3018
3472
  ExchangeApiKeyResult: ResolverTypeWrapper<ExchangeApiKeyResult>;
3473
+ GenerateMyMfaRecoveryCodesInput: GenerateMyMfaRecoveryCodesInput;
3019
3474
  GetUserAuthenticationMethodsInput: GetUserAuthenticationMethodsInput;
3020
3475
  GetUserSessionsInput: GetUserSessionsInput;
3021
3476
  Group: ResolverTypeWrapper<Group>;
3477
+ GroupCdmInput: GroupCdmInput;
3022
3478
  GroupPage: ResolverTypeWrapper<GroupPage>;
3023
3479
  GroupPermission: ResolverTypeWrapper<GroupPermission>;
3024
3480
  GroupSearchableField: GroupSearchableField;
@@ -3037,6 +3493,12 @@ export type ResolversTypes = ResolversObject<{
3037
3493
  LogoutMyUserResponse: ResolverTypeWrapper<LogoutMyUserResponse>;
3038
3494
  MeResponse: ResolverTypeWrapper<MeResponse>;
3039
3495
  MemberType: MemberType;
3496
+ MfaDevice: ResolverTypeWrapper<MfaDevice>;
3497
+ MfaEnrollment: ResolverTypeWrapper<MfaEnrollment>;
3498
+ MfaRecoveryCodeStatus: ResolverTypeWrapper<MfaRecoveryCodeStatus>;
3499
+ MfaSetupResponse: ResolverTypeWrapper<MfaSetupResponse>;
3500
+ MfaVerifyResponse: ResolverTypeWrapper<MfaVerifyResponse>;
3501
+ MfaVerifyResult: ResolverTypeWrapper<MfaVerifyResult>;
3040
3502
  Mutation: ResolverTypeWrapper<Record<PropertyKey, never>>;
3041
3503
  MyUserSessionsInput: MyUserSessionsInput;
3042
3504
  Organization: ResolverTypeWrapper<Organization>;
@@ -3068,6 +3530,7 @@ export type ResolversTypes = ResolversObject<{
3068
3530
  ResolversInterfaceTypes<ResolversTypes>['PaginatedResults']
3069
3531
  >;
3070
3532
  Permission: ResolverTypeWrapper<Permission>;
3533
+ PermissionCdmInput: PermissionCdmInput;
3071
3534
  PermissionPage: ResolverTypeWrapper<PermissionPage>;
3072
3535
  PermissionSearchableField: PermissionSearchableField;
3073
3536
  PermissionSortInput: PermissionSortInput;
@@ -3089,6 +3552,12 @@ export type ResolversTypes = ResolversObject<{
3089
3552
  ProjectSearchableField: ProjectSearchableField;
3090
3553
  ProjectSortInput: ProjectSortInput;
3091
3554
  ProjectSortableField: ProjectSortableField;
3555
+ ProjectSyncJob: ResolverTypeWrapper<ProjectSyncJob>;
3556
+ ProjectSyncJobOperation: ProjectSyncJobOperation;
3557
+ ProjectSyncJobPage: ResolverTypeWrapper<ProjectSyncJobPage>;
3558
+ ProjectSyncJobSortInput: ProjectSyncJobSortInput;
3559
+ ProjectSyncJobSortableField: ProjectSyncJobSortableField;
3560
+ ProjectSyncJobStatus: ProjectSyncJobStatus;
3092
3561
  ProjectTag: ResolverTypeWrapper<ProjectTag>;
3093
3562
  ProjectUser: ResolverTypeWrapper<ProjectUser>;
3094
3563
  ProjectUserApiKey: ResolverTypeWrapper<ProjectUserApiKey>;
@@ -3133,6 +3602,7 @@ export type ResolversTypes = ResolversObject<{
3133
3602
  RemoveAccountTagInput: RemoveAccountTagInput;
3134
3603
  RemoveGroupPermissionInput: RemoveGroupPermissionInput;
3135
3604
  RemoveGroupTagInput: RemoveGroupTagInput;
3605
+ RemoveMyMfaDeviceInput: RemoveMyMfaDeviceInput;
3136
3606
  RemoveOrganizationGroupInput: RemoveOrganizationGroupInput;
3137
3607
  RemoveOrganizationMemberInput: RemoveOrganizationMemberInput;
3138
3608
  RemoveOrganizationPermissionInput: RemoveOrganizationPermissionInput;
@@ -3163,6 +3633,7 @@ export type ResolversTypes = ResolversObject<{
3163
3633
  ResetPasswordInput: ResetPasswordInput;
3164
3634
  ResetPasswordResponse: ResolverTypeWrapper<ResetPasswordResponse>;
3165
3635
  Resource: ResolverTypeWrapper<Resource>;
3636
+ ResourceCdmInput: ResourceCdmInput;
3166
3637
  ResourcePage: ResolverTypeWrapper<ResourcePage>;
3167
3638
  ResourceSearchableField: ResourceSearchableField;
3168
3639
  ResourceSortInput: ResourceSortInput;
@@ -3171,6 +3642,7 @@ export type ResolversTypes = ResolversObject<{
3171
3642
  RevokeApiKeyInput: RevokeApiKeyInput;
3172
3643
  RevokeMyUserSessionResult: ResolverTypeWrapper<RevokeMyUserSessionResult>;
3173
3644
  Role: ResolverTypeWrapper<Role>;
3645
+ RoleCdmInput: RoleCdmInput;
3174
3646
  RoleGroup: ResolverTypeWrapper<RoleGroup>;
3175
3647
  RolePage: ResolverTypeWrapper<RolePage>;
3176
3648
  RoleSearchableField: RoleSearchableField;
@@ -3180,10 +3652,15 @@ export type ResolversTypes = ResolversObject<{
3180
3652
  Scope: Scope;
3181
3653
  Searchable: ResolverTypeWrapper<ResolversInterfaceTypes<ResolversTypes>['Searchable']>;
3182
3654
  SessionExportData: ResolverTypeWrapper<SessionExportData>;
3655
+ SetMyPrimaryMfaDeviceInput: SetMyPrimaryMfaDeviceInput;
3183
3656
  SigningKey: ResolverTypeWrapper<SigningKey>;
3184
3657
  SortOrder: SortOrder;
3658
+ StartProjectExportInput: StartProjectExportInput;
3185
3659
  String: ResolverTypeWrapper<Scalars['String']['output']>;
3660
+ SyncProjectInput: SyncProjectInput;
3661
+ SyncProjectResult: ResolverTypeWrapper<SyncProjectResult>;
3186
3662
  Tag: ResolverTypeWrapper<Tag>;
3663
+ TagCdmInput: TagCdmInput;
3187
3664
  TagPage: ResolverTypeWrapper<TagPage>;
3188
3665
  TagSearchableField: TagSearchableField;
3189
3666
  TagSortField: TagSortField;
@@ -3220,9 +3697,11 @@ export type ResolversTypes = ResolversObject<{
3220
3697
  UploadUserPictureInput: UploadUserPictureInput;
3221
3698
  UploadUserPictureResult: ResolverTypeWrapper<UploadUserPictureResult>;
3222
3699
  User: ResolverTypeWrapper<User>;
3700
+ UserApiKeyCdmInput: UserApiKeyCdmInput;
3223
3701
  UserAuthenticationEmailProviderAction: UserAuthenticationEmailProviderAction;
3224
3702
  UserAuthenticationMethod: ResolverTypeWrapper<UserAuthenticationMethod>;
3225
3703
  UserAuthenticationMethodProvider: UserAuthenticationMethodProvider;
3704
+ UserCdmInput: UserCdmInput;
3226
3705
  UserDataExport: ResolverTypeWrapper<UserDataExport>;
3227
3706
  UserExportData: ResolverTypeWrapper<UserExportData>;
3228
3707
  UserPage: ResolverTypeWrapper<UserPage>;
@@ -3239,6 +3718,9 @@ export type ResolversTypes = ResolversObject<{
3239
3718
  UserTag: ResolverTypeWrapper<UserTag>;
3240
3719
  VerifyEmailInput: VerifyEmailInput;
3241
3720
  VerifyEmailResponse: ResolverTypeWrapper<VerifyEmailResponse>;
3721
+ VerifyMfaInput: VerifyMfaInput;
3722
+ VerifyMfaRecoveryCodeInput: VerifyMfaRecoveryCodeInput;
3723
+ VerifyMyMfaEnrollmentInput: VerifyMyMfaEnrollmentInput;
3242
3724
  }>;
3243
3725
 
3244
3726
  /** Mapping between all available schema types and the resolvers parents */
@@ -3290,6 +3772,8 @@ export type ResolversParentTypes = ResolversObject<{
3290
3772
  AuthenticationMethodExportData: AuthenticationMethodExportData;
3291
3773
  AuthorizationResult: AuthorizationResult;
3292
3774
  Boolean: Scalars['Boolean']['output'];
3775
+ CdmKeyResolverInput: CdmKeyResolverInput;
3776
+ CdmModeInput: CdmModeInput;
3293
3777
  ChangeMyPasswordInput: ChangeMyPasswordInput;
3294
3778
  ChangeMyPasswordResult: ChangeMyPasswordResult;
3295
3779
  Creatable: ResolversInterfaceTypes<ResolversParentTypes>['Creatable'];
@@ -3319,9 +3803,11 @@ export type ResolversParentTypes = ResolversObject<{
3319
3803
  DeleteUserSessionInput: DeleteUserSessionInput;
3320
3804
  ExchangeApiKeyInput: ExchangeApiKeyInput;
3321
3805
  ExchangeApiKeyResult: ExchangeApiKeyResult;
3806
+ GenerateMyMfaRecoveryCodesInput: GenerateMyMfaRecoveryCodesInput;
3322
3807
  GetUserAuthenticationMethodsInput: GetUserAuthenticationMethodsInput;
3323
3808
  GetUserSessionsInput: GetUserSessionsInput;
3324
3809
  Group: Group;
3810
+ GroupCdmInput: GroupCdmInput;
3325
3811
  GroupPage: GroupPage;
3326
3812
  GroupPermission: GroupPermission;
3327
3813
  GroupSortInput: GroupSortInput;
@@ -3337,6 +3823,12 @@ export type ResolversParentTypes = ResolversObject<{
3337
3823
  LoginResponse: LoginResponse;
3338
3824
  LogoutMyUserResponse: LogoutMyUserResponse;
3339
3825
  MeResponse: MeResponse;
3826
+ MfaDevice: MfaDevice;
3827
+ MfaEnrollment: MfaEnrollment;
3828
+ MfaRecoveryCodeStatus: MfaRecoveryCodeStatus;
3829
+ MfaSetupResponse: MfaSetupResponse;
3830
+ MfaVerifyResponse: MfaVerifyResponse;
3831
+ MfaVerifyResult: MfaVerifyResult;
3340
3832
  Mutation: Record<PropertyKey, never>;
3341
3833
  MyUserSessionsInput: MyUserSessionsInput;
3342
3834
  Organization: Organization;
@@ -3359,6 +3851,7 @@ export type ResolversParentTypes = ResolversObject<{
3359
3851
  OrganizationUser: OrganizationUser;
3360
3852
  PaginatedResults: ResolversInterfaceTypes<ResolversParentTypes>['PaginatedResults'];
3361
3853
  Permission: Permission;
3854
+ PermissionCdmInput: PermissionCdmInput;
3362
3855
  PermissionPage: PermissionPage;
3363
3856
  PermissionSortInput: PermissionSortInput;
3364
3857
  PermissionTag: PermissionTag;
@@ -3374,6 +3867,9 @@ export type ResolversParentTypes = ResolversObject<{
3374
3867
  ProjectResource: ProjectResource;
3375
3868
  ProjectRole: ProjectRole;
3376
3869
  ProjectSortInput: ProjectSortInput;
3870
+ ProjectSyncJob: ProjectSyncJob;
3871
+ ProjectSyncJobPage: ProjectSyncJobPage;
3872
+ ProjectSyncJobSortInput: ProjectSyncJobSortInput;
3377
3873
  ProjectTag: ProjectTag;
3378
3874
  ProjectUser: ProjectUser;
3379
3875
  ProjectUserApiKey: ProjectUserApiKey;
@@ -3418,6 +3914,7 @@ export type ResolversParentTypes = ResolversObject<{
3418
3914
  RemoveAccountTagInput: RemoveAccountTagInput;
3419
3915
  RemoveGroupPermissionInput: RemoveGroupPermissionInput;
3420
3916
  RemoveGroupTagInput: RemoveGroupTagInput;
3917
+ RemoveMyMfaDeviceInput: RemoveMyMfaDeviceInput;
3421
3918
  RemoveOrganizationGroupInput: RemoveOrganizationGroupInput;
3422
3919
  RemoveOrganizationMemberInput: RemoveOrganizationMemberInput;
3423
3920
  RemoveOrganizationPermissionInput: RemoveOrganizationPermissionInput;
@@ -3448,12 +3945,14 @@ export type ResolversParentTypes = ResolversObject<{
3448
3945
  ResetPasswordInput: ResetPasswordInput;
3449
3946
  ResetPasswordResponse: ResetPasswordResponse;
3450
3947
  Resource: Resource;
3948
+ ResourceCdmInput: ResourceCdmInput;
3451
3949
  ResourcePage: ResourcePage;
3452
3950
  ResourceSortInput: ResourceSortInput;
3453
3951
  ResourceTag: ResourceTag;
3454
3952
  RevokeApiKeyInput: RevokeApiKeyInput;
3455
3953
  RevokeMyUserSessionResult: RevokeMyUserSessionResult;
3456
3954
  Role: Role;
3955
+ RoleCdmInput: RoleCdmInput;
3457
3956
  RoleGroup: RoleGroup;
3458
3957
  RolePage: RolePage;
3459
3958
  RoleSortInput: RoleSortInput;
@@ -3461,9 +3960,14 @@ export type ResolversParentTypes = ResolversObject<{
3461
3960
  Scope: Scope;
3462
3961
  Searchable: ResolversInterfaceTypes<ResolversParentTypes>['Searchable'];
3463
3962
  SessionExportData: SessionExportData;
3963
+ SetMyPrimaryMfaDeviceInput: SetMyPrimaryMfaDeviceInput;
3464
3964
  SigningKey: SigningKey;
3965
+ StartProjectExportInput: StartProjectExportInput;
3465
3966
  String: Scalars['String']['output'];
3967
+ SyncProjectInput: SyncProjectInput;
3968
+ SyncProjectResult: SyncProjectResult;
3466
3969
  Tag: Tag;
3970
+ TagCdmInput: TagCdmInput;
3467
3971
  TagPage: TagPage;
3468
3972
  TagSortInput: TagSortInput;
3469
3973
  UpdateAccountProjectTagInput: UpdateAccountProjectTagInput;
@@ -3496,7 +4000,9 @@ export type ResolversParentTypes = ResolversObject<{
3496
4000
  UploadUserPictureInput: UploadUserPictureInput;
3497
4001
  UploadUserPictureResult: UploadUserPictureResult;
3498
4002
  User: User;
4003
+ UserApiKeyCdmInput: UserApiKeyCdmInput;
3499
4004
  UserAuthenticationMethod: UserAuthenticationMethod;
4005
+ UserCdmInput: UserCdmInput;
3500
4006
  UserDataExport: UserDataExport;
3501
4007
  UserExportData: UserExportData;
3502
4008
  UserPage: UserPage;
@@ -3509,6 +4015,9 @@ export type ResolversParentTypes = ResolversObject<{
3509
4015
  UserTag: UserTag;
3510
4016
  VerifyEmailInput: VerifyEmailInput;
3511
4017
  VerifyEmailResponse: VerifyEmailResponse;
4018
+ VerifyMfaInput: VerifyMfaInput;
4019
+ VerifyMfaRecoveryCodeInput: VerifyMfaRecoveryCodeInput;
4020
+ VerifyMyMfaEnrollmentInput: VerifyMyMfaEnrollmentInput;
3512
4021
  }>;
3513
4022
 
3514
4023
  export type AcceptInvitationResultResolvers<
@@ -3928,8 +4437,10 @@ export type LoginResponseResolvers<
3928
4437
  accessToken?: Resolver<ResolversTypes['String'], ParentType, ContextType>;
3929
4438
  accounts?: Resolver<Array<ResolversTypes['Account']>, ParentType, ContextType>;
3930
4439
  email?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
4440
+ mfaVerified?: Resolver<Maybe<ResolversTypes['Boolean']>, ParentType, ContextType>;
3931
4441
  refreshToken?: Resolver<ResolversTypes['String'], ParentType, ContextType>;
3932
4442
  requiresEmailVerification?: Resolver<Maybe<ResolversTypes['Boolean']>, ParentType, ContextType>;
4443
+ requiresMfaStepUp?: Resolver<Maybe<ResolversTypes['Boolean']>, ParentType, ContextType>;
3933
4444
  verificationExpiry?: Resolver<Maybe<ResolversTypes['Date']>, ParentType, ContextType>;
3934
4445
  }>;
3935
4446
 
@@ -3947,10 +4458,69 @@ export type MeResponseResolvers<
3947
4458
  > = ResolversObject<{
3948
4459
  accounts?: Resolver<Array<ResolversTypes['Account']>, ParentType, ContextType>;
3949
4460
  email?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
4461
+ mfaVerified?: Resolver<Maybe<ResolversTypes['Boolean']>, ParentType, ContextType>;
3950
4462
  requiresEmailVerification?: Resolver<Maybe<ResolversTypes['Boolean']>, ParentType, ContextType>;
3951
4463
  verificationExpiry?: Resolver<Maybe<ResolversTypes['Date']>, ParentType, ContextType>;
3952
4464
  }>;
3953
4465
 
4466
+ export type MfaDeviceResolvers<
4467
+ ContextType = any,
4468
+ ParentType extends ResolversParentTypes['MfaDevice'] = ResolversParentTypes['MfaDevice'],
4469
+ > = ResolversObject<{
4470
+ createdAt?: Resolver<ResolversTypes['Date'], ParentType, ContextType>;
4471
+ id?: Resolver<ResolversTypes['ID'], ParentType, ContextType>;
4472
+ isEnabled?: Resolver<ResolversTypes['Boolean'], ParentType, ContextType>;
4473
+ isPrimary?: Resolver<ResolversTypes['Boolean'], ParentType, ContextType>;
4474
+ lastUsedAt?: Resolver<Maybe<ResolversTypes['Date']>, ParentType, ContextType>;
4475
+ name?: Resolver<ResolversTypes['String'], ParentType, ContextType>;
4476
+ }>;
4477
+
4478
+ export type MfaEnrollmentResolvers<
4479
+ ContextType = any,
4480
+ ParentType extends ResolversParentTypes['MfaEnrollment'] = ResolversParentTypes['MfaEnrollment'],
4481
+ > = ResolversObject<{
4482
+ factorId?: Resolver<ResolversTypes['ID'], ParentType, ContextType>;
4483
+ otpAuthUrl?: Resolver<ResolversTypes['String'], ParentType, ContextType>;
4484
+ secret?: Resolver<ResolversTypes['String'], ParentType, ContextType>;
4485
+ }>;
4486
+
4487
+ export type MfaRecoveryCodeStatusResolvers<
4488
+ ContextType = any,
4489
+ ParentType extends ResolversParentTypes['MfaRecoveryCodeStatus'] =
4490
+ ResolversParentTypes['MfaRecoveryCodeStatus'],
4491
+ > = ResolversObject<{
4492
+ activeCount?: Resolver<ResolversTypes['Int'], ParentType, ContextType>;
4493
+ lastGeneratedAt?: Resolver<Maybe<ResolversTypes['Date']>, ParentType, ContextType>;
4494
+ }>;
4495
+
4496
+ export type MfaSetupResponseResolvers<
4497
+ ContextType = any,
4498
+ ParentType extends ResolversParentTypes['MfaSetupResponse'] =
4499
+ ResolversParentTypes['MfaSetupResponse'],
4500
+ > = ResolversObject<{
4501
+ factorId?: Resolver<ResolversTypes['ID'], ParentType, ContextType>;
4502
+ otpAuthUrl?: Resolver<ResolversTypes['String'], ParentType, ContextType>;
4503
+ secret?: Resolver<ResolversTypes['String'], ParentType, ContextType>;
4504
+ }>;
4505
+
4506
+ export type MfaVerifyResponseResolvers<
4507
+ ContextType = any,
4508
+ ParentType extends ResolversParentTypes['MfaVerifyResponse'] =
4509
+ ResolversParentTypes['MfaVerifyResponse'],
4510
+ > = ResolversObject<{
4511
+ accessToken?: Resolver<ResolversTypes['String'], ParentType, ContextType>;
4512
+ mfaVerified?: Resolver<ResolversTypes['Boolean'], ParentType, ContextType>;
4513
+ refreshToken?: Resolver<ResolversTypes['String'], ParentType, ContextType>;
4514
+ }>;
4515
+
4516
+ export type MfaVerifyResultResolvers<
4517
+ ContextType = any,
4518
+ ParentType extends ResolversParentTypes['MfaVerifyResult'] =
4519
+ ResolversParentTypes['MfaVerifyResult'],
4520
+ > = ResolversObject<{
4521
+ success?: Resolver<ResolversTypes['Boolean'], ParentType, ContextType>;
4522
+ }>;
4523
+
3954
4524
  export type MutationResolvers<
3955
4525
  ContextType = any,
3956
4526
  ParentType extends ResolversParentTypes['Mutation'] = ResolversParentTypes['Mutation'],
@@ -3962,6 +4532,12 @@ export type MutationResolvers<
3962
4532
  ContextType,
3963
4533
  RequireFields<MutationAcceptInvitationArgs, 'input'>
3964
4534
  >;
4535
+ cancelProjectSync?: Resolver<
4536
+ ResolversTypes['ProjectSyncJob'],
4537
+ ParentType,
4538
+ ContextType,
4539
+ RequireFields<MutationCancelProjectSyncArgs, 'id' | 'jobId' | 'scope'>
4540
+ >;
3965
4541
  changeMyPassword?: Resolver<
3966
4542
  ResolversTypes['ChangeMyPasswordResult'],
3967
4543
  ParentType,
@@ -3980,6 +4556,7 @@ export type MutationResolvers<
3980
4556
  ContextType,
3981
4557
  RequireFields<MutationCreateGroupArgs, 'input'>
3982
4558
  >;
4559
+ createMyMfaEnrollment?: Resolver<ResolversTypes['MfaEnrollment'], ParentType, ContextType>;
3983
4560
  createMySecondaryAccount?: Resolver<
3984
4561
  ResolversTypes['CreateMySecondaryAccountResult'],
3985
4562
  ParentType,
@@ -4117,6 +4694,12 @@ export type MutationResolvers<
4117
4694
  ContextType,
4118
4695
  RequireFields<MutationExchangeApiKeyArgs, 'input'>
4119
4696
  >;
4697
+ generateMyMfaRecoveryCodes?: Resolver<
4698
+ Array<ResolversTypes['String']>,
4699
+ ParentType,
4700
+ ContextType,
4701
+ Partial<MutationGenerateMyMfaRecoveryCodesArgs>
4702
+ >;
4120
4703
  inviteMember?: Resolver<
4121
4704
  ResolversTypes['OrganizationInvitation'],
4122
4705
  ParentType,
@@ -4137,6 +4720,12 @@ export type MutationResolvers<
4137
4720
  ContextType,
4138
4721
  RequireFields<MutationRegisterArgs, 'input'>
4139
4722
  >;
4723
+ removeMyMfaDevice?: Resolver<
4724
+ ResolversTypes['MfaVerifyResult'],
4725
+ ParentType,
4726
+ ContextType,
4727
+ RequireFields<MutationRemoveMyMfaDeviceArgs, 'input'>
4728
+ >;
4140
4729
  removeOrganizationMember?: Resolver<
4141
4730
  ResolversTypes['OrganizationMember'],
4142
4731
  ParentType,
@@ -4203,6 +4792,25 @@ export type MutationResolvers<
4203
4792
  ContextType,
4204
4793
  RequireFields<MutationSetMyPrimaryAuthenticationMethodArgs, 'id'>
4205
4794
  >;
4795
+ setMyPrimaryMfaDevice?: Resolver<
4796
+ ResolversTypes['MfaDevice'],
4797
+ ParentType,
4798
+ ContextType,
4799
+ RequireFields<MutationSetMyPrimaryMfaDeviceArgs, 'input'>
4800
+ >;
4801
+ setupMfa?: Resolver<ResolversTypes['MfaSetupResponse'], ParentType, ContextType>;
4802
+ startProjectExport?: Resolver<
4803
+ ResolversTypes['ProjectSyncJob'],
4804
+ ParentType,
4805
+ ContextType,
4806
+ RequireFields<MutationStartProjectExportArgs, 'id' | 'input' | 'scope'>
4807
+ >;
4808
+ startProjectSync?: Resolver<
4809
+ ResolversTypes['ProjectSyncJob'],
4810
+ ParentType,
4811
+ ContextType,
4812
+ RequireFields<MutationStartProjectSyncArgs, 'id' | 'input' | 'scope'>
4813
+ >;
4206
4814
  updateGroup?: Resolver<
4207
4815
  ResolversTypes['Group'],
4208
4816
  ParentType,
@@ -4287,6 +4895,24 @@ export type MutationResolvers<
4287
4895
  ContextType,
4288
4896
  RequireFields<MutationVerifyEmailArgs, 'input'>
4289
4897
  >;
4898
+ verifyMfa?: Resolver<
4899
+ ResolversTypes['MfaVerifyResponse'],
4900
+ ParentType,
4901
+ ContextType,
4902
+ RequireFields<MutationVerifyMfaArgs, 'input'>
4903
+ >;
4904
+ verifyMfaRecoveryCode?: Resolver<
4905
+ ResolversTypes['MfaVerifyResponse'],
4906
+ ParentType,
4907
+ ContextType,
4908
+ RequireFields<MutationVerifyMfaRecoveryCodeArgs, 'input'>
4909
+ >;
4910
+ verifyMyMfaEnrollment?: Resolver<
4911
+ ResolversTypes['MfaVerifyResult'],
4912
+ ParentType,
4913
+ ContextType,
4914
+ RequireFields<MutationVerifyMyMfaEnrollmentArgs, 'input'>
4915
+ >;
4290
4916
  }>;
4291
4917
 
4292
4918
  export type OrganizationResolvers<
@@ -4300,6 +4926,7 @@ export type OrganizationResolvers<
4300
4926
  name?: Resolver<ResolversTypes['String'], ParentType, ContextType>;
4301
4927
  permissions?: Resolver<Maybe<Array<ResolversTypes['Permission']>>, ParentType, ContextType>;
4302
4928
  projects?: Resolver<Maybe<Array<ResolversTypes['Project']>>, ParentType, ContextType>;
4929
+ requireMfaForSensitiveActions?: Resolver<ResolversTypes['Boolean'], ParentType, ContextType>;
4303
4930
  roles?: Resolver<Maybe<Array<ResolversTypes['Role']>>, ParentType, ContextType>;
4304
4931
  slug?: Resolver<ResolversTypes['String'], ParentType, ContextType>;
4305
4932
  tags?: Resolver<Maybe<Array<ResolversTypes['Tag']>>, ParentType, ContextType>;
@@ -4520,6 +5147,7 @@ export type OrganizationUserResolvers<
4520
5147
  id?: Resolver<ResolversTypes['ID'], ParentType, ContextType>;
4521
5148
  organization?: Resolver<Maybe<ResolversTypes['Organization']>, ParentType, ContextType>;
4522
5149
  organizationId?: Resolver<ResolversTypes['ID'], ParentType, ContextType>;
5150
+ roleId?: Resolver<ResolversTypes['ID'], ParentType, ContextType>;
4523
5151
  updatedAt?: Resolver<ResolversTypes['Date'], ParentType, ContextType>;
4524
5152
  user?: Resolver<Maybe<ResolversTypes['User']>, ParentType, ContextType>;
4525
5153
  userId?: Resolver<ResolversTypes['ID'], ParentType, ContextType>;
@@ -4539,6 +5167,7 @@ export type PaginatedResultsResolvers<
4539
5167
  | 'PermissionPage'
4540
5168
  | 'ProjectAppPage'
4541
5169
  | 'ProjectPage'
5170
+ | 'ProjectSyncJobPage'
4542
5171
  | 'ResourcePage'
4543
5172
  | 'RolePage'
4544
5173
  | 'TagPage'
@@ -4559,6 +5188,7 @@ export type PermissionResolvers<
4559
5188
  deletedAt?: Resolver<Maybe<ResolversTypes['Date']>, ParentType, ContextType>;
4560
5189
  description?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
4561
5190
  id?: Resolver<ResolversTypes['ID'], ParentType, ContextType>;
5191
+ metadata?: Resolver<ResolversTypes['JSON'], ParentType, ContextType>;
4562
5192
  name?: Resolver<ResolversTypes['String'], ParentType, ContextType>;
4563
5193
  resource?: Resolver<Maybe<ResolversTypes['Resource']>, ParentType, ContextType>;
4564
5194
  resourceId?: Resolver<Maybe<ResolversTypes['ID']>, ParentType, ContextType>;
@@ -4771,6 +5401,41 @@ export type ProjectRoleResolvers<
4771
5401
  __isTypeOf?: IsTypeOfResolverFn<ParentType, ContextType>;
4772
5402
  }>;
4773
5403
 
5404
+ export type ProjectSyncJobResolvers<
5405
+ ContextType = any,
5406
+ ParentType extends ResolversParentTypes['ProjectSyncJob'] =
5407
+ ResolversParentTypes['ProjectSyncJob'],
5408
+ > = ResolversObject<{
5409
+ cancelledAt?: Resolver<Maybe<ResolversTypes['Date']>, ParentType, ContextType>;
5410
+ cdmVersion?: Resolver<ResolversTypes['Int'], ParentType, ContextType>;
5411
+ completedAt?: Resolver<Maybe<ResolversTypes['Date']>, ParentType, ContextType>;
5412
+ enqueuedAt?: Resolver<ResolversTypes['Date'], ParentType, ContextType>;
5413
+ errorMessage?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
5414
+ hasSnapshot?: Resolver<ResolversTypes['Boolean'], ParentType, ContextType>;
5415
+ id?: Resolver<ResolversTypes['ID'], ParentType, ContextType>;
5416
+ jobName?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
5417
+ modeStrategy?: Resolver<Maybe<ResolversTypes['CdmModeStrategy']>, ParentType, ContextType>;
5418
+ operation?: Resolver<ResolversTypes['ProjectSyncJobOperation'], ParentType, ContextType>;
5419
+ projectId?: Resolver<ResolversTypes['ID'], ParentType, ContextType>;
5420
+ result?: Resolver<Maybe<ResolversTypes['SyncProjectResult']>, ParentType, ContextType>;
5421
+ snapshotSizeBytes?: Resolver<Maybe<ResolversTypes['Int']>, ParentType, ContextType>;
5422
+ snapshotTakenAt?: Resolver<Maybe<ResolversTypes['Date']>, ParentType, ContextType>;
5423
+ startedAt?: Resolver<Maybe<ResolversTypes['Date']>, ParentType, ContextType>;
5424
+ status?: Resolver<ResolversTypes['ProjectSyncJobStatus'], ParentType, ContextType>;
5425
+ warnings?: Resolver<Array<ResolversTypes['String']>, ParentType, ContextType>;
5426
+ }>;
5427
+
5428
+ export type ProjectSyncJobPageResolvers<
5429
+ ContextType = any,
5430
+ ParentType extends ResolversParentTypes['ProjectSyncJobPage'] =
5431
+ ResolversParentTypes['ProjectSyncJobPage'],
5432
+ > = ResolversObject<{
5433
+ hasNextPage?: Resolver<ResolversTypes['Boolean'], ParentType, ContextType>;
5434
+ jobs?: Resolver<Array<ResolversTypes['ProjectSyncJob']>, ParentType, ContextType>;
5435
+ totalCount?: Resolver<ResolversTypes['Int'], ParentType, ContextType>;
5436
+ __isTypeOf?: IsTypeOfResolverFn<ParentType, ContextType>;
5437
+ }>;
5438
+
4774
5439
  export type ProjectTagResolvers<
4775
5440
  ContextType = any,
4776
5441
  ParentType extends ResolversParentTypes['ProjectTag'] = ResolversParentTypes['ProjectTag'],
@@ -4798,7 +5463,10 @@ export type ProjectUserResolvers<
4798
5463
  > = ResolversObject<{
4799
5464
  createdAt?: Resolver<ResolversTypes['Date'], ParentType, ContextType>;
4800
5465
  deletedAt?: Resolver<Maybe<ResolversTypes['Date']>, ParentType, ContextType>;
5466
+ displayName?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
4801
5467
  id?: Resolver<ResolversTypes['ID'], ParentType, ContextType>;
5468
+ metadata?: Resolver<ResolversTypes['JSON'], ParentType, ContextType>;
5469
+ pictureUrl?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
4802
5470
  project?: Resolver<
4803
5471
  Maybe<ResolversTypes['Project']>,
4804
5472
  ParentType,
@@ -4860,6 +5528,12 @@ export type QueryResolvers<
4860
5528
  RequireFields<QueryIsAuthorizedArgs, 'input'>
4861
5529
  >;
4862
5530
  me?: Resolver<ResolversTypes['MeResponse'], ParentType, ContextType>;
5531
+ myMfaDevices?: Resolver<Array<ResolversTypes['MfaDevice']>, ParentType, ContextType>;
5532
+ myMfaRecoveryCodeStatus?: Resolver<
5533
+ ResolversTypes['MfaRecoveryCodeStatus'],
5534
+ ParentType,
5535
+ ContextType
5536
+ >;
4863
5537
  myUserAuthenticationMethods?: Resolver<
4864
5538
  Array<ResolversTypes['UserAuthenticationMethod']>,
4865
5539
  ParentType,
@@ -4902,6 +5576,18 @@ export type QueryResolvers<
4902
5576
  ContextType,
4903
5577
  RequireFields<QueryProjectAppsArgs, 'scope'>
4904
5578
  >;
5579
+ projectSyncJob?: Resolver<
5580
+ ResolversTypes['ProjectSyncJob'],
5581
+ ParentType,
5582
+ ContextType,
5583
+ RequireFields<QueryProjectSyncJobArgs, 'id' | 'jobId' | 'scope'>
5584
+ >;
5585
+ projectSyncJobs?: Resolver<
5586
+ ResolversTypes['ProjectSyncJobPage'],
5587
+ ParentType,
5588
+ ContextType,
5589
+ RequireFields<QueryProjectSyncJobsArgs, 'id' | 'scope'>
5590
+ >;
4905
5591
  projects?: Resolver<
4906
5592
  ResolversTypes['ProjectPage'],
4907
5593
  ParentType,
@@ -4989,7 +5675,9 @@ export type ResourceResolvers<
4989
5675
  description?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
4990
5676
  id?: Resolver<ResolversTypes['ID'], ParentType, ContextType>;
4991
5677
  isActive?: Resolver<ResolversTypes['Boolean'], ParentType, ContextType>;
5678
+ metadata?: Resolver<ResolversTypes['JSON'], ParentType, ContextType>;
4992
5679
  name?: Resolver<ResolversTypes['String'], ParentType, ContextType>;
5680
+ permissions?: Resolver<Maybe<Array<ResolversTypes['Permission']>>, ParentType, ContextType>;
4993
5681
  slug?: Resolver<ResolversTypes['String'], ParentType, ContextType>;
4994
5682
  tags?: Resolver<Array<ResolversTypes['Tag']>, ParentType, ContextType>;
4995
5683
  updatedAt?: Resolver<ResolversTypes['Date'], ParentType, ContextType>;
@@ -5152,6 +5840,35 @@ export type SigningKeyResolvers<
5152
5840
  __isTypeOf?: IsTypeOfResolverFn<ParentType, ContextType>;
5153
5841
  }>;
5154
5842
 
5843
+ export type SyncProjectResultResolvers<
5844
+ ContextType = any,
5845
+ ParentType extends ResolversParentTypes['SyncProjectResult'] =
5846
+ ResolversParentTypes['SyncProjectResult'],
5847
+ > = ResolversObject<{
5848
+ groupPermissionsLinked?: Resolver<ResolversTypes['Int'], ParentType, ContextType>;
5849
+ groupTagsLinked?: Resolver<ResolversTypes['Int'], ParentType, ContextType>;
5850
+ groupsCreated?: Resolver<ResolversTypes['Int'], ParentType, ContextType>;
5851
+ importId?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
5852
+ permissionsCreated?: Resolver<ResolversTypes['Int'], ParentType, ContextType>;
5853
+ projectGroupsLinked?: Resolver<ResolversTypes['Int'], ParentType, ContextType>;
5854
+ projectId?: Resolver<ResolversTypes['ID'], ParentType, ContextType>;
5855
+ projectPermissionsLinked?: Resolver<ResolversTypes['Int'], ParentType, ContextType>;
5856
+ projectResourcesLinked?: Resolver<ResolversTypes['Int'], ParentType, ContextType>;
5857
+ projectRolesLinked?: Resolver<ResolversTypes['Int'], ParentType, ContextType>;
5858
+ projectTagsLinked?: Resolver<ResolversTypes['Int'], ParentType, ContextType>;
5859
+ projectUserApiKeysCreated?: Resolver<ResolversTypes['Int'], ParentType, ContextType>;
5860
+ projectUsersEnsured?: Resolver<ResolversTypes['Int'], ParentType, ContextType>;
5861
+ resourcesCreated?: Resolver<ResolversTypes['Int'], ParentType, ContextType>;
5862
+ roleGroupsLinked?: Resolver<ResolversTypes['Int'], ParentType, ContextType>;
5863
+ roleTagsLinked?: Resolver<ResolversTypes['Int'], ParentType, ContextType>;
5864
+ rolesCreated?: Resolver<ResolversTypes['Int'], ParentType, ContextType>;
5865
+ tagsCreated?: Resolver<ResolversTypes['Int'], ParentType, ContextType>;
5866
+ userRolesAssigned?: Resolver<ResolversTypes['Int'], ParentType, ContextType>;
5867
+ userTagsLinked?: Resolver<ResolversTypes['Int'], ParentType, ContextType>;
5868
+ usersCreated?: Resolver<ResolversTypes['Int'], ParentType, ContextType>;
5869
+ warnings?: Resolver<Array<ResolversTypes['String']>, ParentType, ContextType>;
5870
+ }>;
5871
+
5155
5872
  export type TagResolvers<
5156
5873
  ContextType = any,
5157
5874
  ParentType extends ResolversParentTypes['Tag'] = ResolversParentTypes['Tag'],
@@ -5161,6 +5878,7 @@ export type TagResolvers<
5161
5878
  deletedAt?: Resolver<Maybe<ResolversTypes['Date']>, ParentType, ContextType>;
5162
5879
  id?: Resolver<ResolversTypes['ID'], ParentType, ContextType>;
5163
5880
  isPrimary?: Resolver<Maybe<ResolversTypes['Boolean']>, ParentType, ContextType>;
5881
+ metadata?: Resolver<ResolversTypes['JSON'], ParentType, ContextType>;
5164
5882
  name?: Resolver<ResolversTypes['String'], ParentType, ContextType>;
5165
5883
  updatedAt?: Resolver<ResolversTypes['Date'], ParentType, ContextType>;
5166
5884
  __isTypeOf?: IsTypeOfResolverFn<ParentType, ContextType>;
@@ -5403,6 +6121,12 @@ export type Resolvers<ContextType = any> = ResolversObject<{
5403
6121
  LoginResponse?: LoginResponseResolvers<ContextType>;
5404
6122
  LogoutMyUserResponse?: LogoutMyUserResponseResolvers<ContextType>;
5405
6123
  MeResponse?: MeResponseResolvers<ContextType>;
6124
+ MfaDevice?: MfaDeviceResolvers<ContextType>;
6125
+ MfaEnrollment?: MfaEnrollmentResolvers<ContextType>;
6126
+ MfaRecoveryCodeStatus?: MfaRecoveryCodeStatusResolvers<ContextType>;
6127
+ MfaSetupResponse?: MfaSetupResponseResolvers<ContextType>;
6128
+ MfaVerifyResponse?: MfaVerifyResponseResolvers<ContextType>;
6129
+ MfaVerifyResult?: MfaVerifyResultResolvers<ContextType>;
5406
6130
  Mutation?: MutationResolvers<ContextType>;
5407
6131
  Organization?: OrganizationResolvers<ContextType>;
5408
6132
  OrganizationGroup?: OrganizationGroupResolvers<ContextType>;
@@ -5433,6 +6157,8 @@ export type Resolvers<ContextType = any> = ResolversObject<{
5433
6157
  ProjectPermission?: ProjectPermissionResolvers<ContextType>;
5434
6158
  ProjectResource?: ProjectResourceResolvers<ContextType>;
5435
6159
  ProjectRole?: ProjectRoleResolvers<ContextType>;
6160
+ ProjectSyncJob?: ProjectSyncJobResolvers<ContextType>;
6161
+ ProjectSyncJobPage?: ProjectSyncJobPageResolvers<ContextType>;
5436
6162
  ProjectTag?: ProjectTagResolvers<ContextType>;
5437
6163
  ProjectUser?: ProjectUserResolvers<ContextType>;
5438
6164
  ProjectUserApiKey?: ProjectUserApiKeyResolvers<ContextType>;
@@ -5452,6 +6178,7 @@ export type Resolvers<ContextType = any> = ResolversObject<{
5452
6178
  Searchable?: SearchableResolvers<ContextType>;
5453
6179
  SessionExportData?: SessionExportDataResolvers<ContextType>;
5454
6180
  SigningKey?: SigningKeyResolvers<ContextType>;
6181
+ SyncProjectResult?: SyncProjectResultResolvers<ContextType>;
5455
6182
  Tag?: TagResolvers<ContextType>;
5456
6183
  TagPage?: TagPageResolvers<ContextType>;
5457
6184
  UploadUserPictureResult?: UploadUserPictureResultResolvers<ContextType>;