@burdenoff/microfe-technospam 2026.1102.2 → 2026.1102.4

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 (94) hide show
  1. package/dist/generated/global-types.d.ts +307 -41
  2. package/dist/generated/global-types.d.ts.map +1 -1
  3. package/dist/generated/wspace-types.d.ts +1730 -8
  4. package/dist/generated/wspace-types.d.ts.map +1 -1
  5. package/dist/stories/fixtures/technospamFixtures.d.ts.map +1 -1
  6. package/dist/technospam/TechnoSpamRoot.d.ts.map +1 -1
  7. package/dist/technospam/TechnoSpamRoot.js +187 -178
  8. package/dist/technospam/TechnoSpamRoot.js.map +1 -1
  9. package/dist/technospam/TechnoSpamRoutes.d.ts.map +1 -1
  10. package/dist/technospam/TechnoSpamRoutes.js +32 -28
  11. package/dist/technospam/TechnoSpamRoutes.js.map +1 -1
  12. package/dist/technospam/api/assessmentApi.d.ts +183 -0
  13. package/dist/technospam/api/assessmentApi.d.ts.map +1 -0
  14. package/dist/technospam/api/assessmentApi.js +278 -0
  15. package/dist/technospam/api/assessmentApi.js.map +1 -0
  16. package/dist/technospam/api/technospamApi.js +141 -141
  17. package/dist/technospam/api/technospamApi.js.map +1 -1
  18. package/dist/technospam/components/CourseAssessments.d.ts +9 -0
  19. package/dist/technospam/components/CourseAssessments.d.ts.map +1 -0
  20. package/dist/technospam/components/CourseAssessments.js +66 -0
  21. package/dist/technospam/components/CourseAssessments.js.map +1 -0
  22. package/dist/technospam/components/MediaCover.js +2 -2
  23. package/dist/technospam/components/MediaCover.js.map +1 -1
  24. package/dist/technospam/components/MobileSectionTabs.d.ts +9 -0
  25. package/dist/technospam/components/MobileSectionTabs.d.ts.map +1 -0
  26. package/dist/technospam/components/MobileSectionTabs.js +43 -0
  27. package/dist/technospam/components/MobileSectionTabs.js.map +1 -0
  28. package/dist/technospam/components/PageLayout.d.ts +7 -1
  29. package/dist/technospam/components/PageLayout.d.ts.map +1 -1
  30. package/dist/technospam/components/PageLayout.js +40 -28
  31. package/dist/technospam/components/PageLayout.js.map +1 -1
  32. package/dist/technospam/components/StatusBadge.d.ts.map +1 -1
  33. package/dist/technospam/components/StatusBadge.js +8 -1
  34. package/dist/technospam/components/StatusBadge.js.map +1 -1
  35. package/dist/technospam/components/admin/AssessmentsAdminTab.d.ts +7 -0
  36. package/dist/technospam/components/admin/AssessmentsAdminTab.d.ts.map +1 -0
  37. package/dist/technospam/components/admin/AssessmentsAdminTab.js +421 -0
  38. package/dist/technospam/components/admin/AssessmentsAdminTab.js.map +1 -0
  39. package/dist/technospam/components/lesson/LessonKindFields.d.ts +3 -1
  40. package/dist/technospam/components/lesson/LessonKindFields.d.ts.map +1 -1
  41. package/dist/technospam/components/lesson/LessonKindFields.js +2 -2
  42. package/dist/technospam/components/lesson/LessonKindFields.js.map +1 -1
  43. package/dist/technospam/components/lesson/SaveCourseOffline.js +6 -6
  44. package/dist/technospam/hooks/useAssessmentIntegrity.d.ts +29 -0
  45. package/dist/technospam/hooks/useAssessmentIntegrity.d.ts.map +1 -0
  46. package/dist/technospam/hooks/useAssessmentIntegrity.js +57 -0
  47. package/dist/technospam/hooks/useAssessmentIntegrity.js.map +1 -0
  48. package/dist/technospam/hooks/usePhoneLayout.d.ts +18 -0
  49. package/dist/technospam/hooks/usePhoneLayout.d.ts.map +1 -0
  50. package/dist/technospam/hooks/usePhoneLayout.js +14 -0
  51. package/dist/technospam/hooks/usePhoneLayout.js.map +1 -0
  52. package/dist/technospam/pages/AdminAdminDashboardPagePage.d.ts.map +1 -1
  53. package/dist/technospam/pages/AdminAdminDashboardPagePage.js +365 -360
  54. package/dist/technospam/pages/AdminAdminDashboardPagePage.js.map +1 -1
  55. package/dist/technospam/pages/ApplicationsProblemsPagePage.d.ts.map +1 -1
  56. package/dist/technospam/pages/ApplicationsProblemsPagePage.js +89 -87
  57. package/dist/technospam/pages/ApplicationsProblemsPagePage.js.map +1 -1
  58. package/dist/technospam/pages/CoursesAssessmentPagePage.d.ts +9 -0
  59. package/dist/technospam/pages/CoursesAssessmentPagePage.d.ts.map +1 -0
  60. package/dist/technospam/pages/CoursesAssessmentPagePage.js +464 -0
  61. package/dist/technospam/pages/CoursesAssessmentPagePage.js.map +1 -0
  62. package/dist/technospam/pages/CoursesCourseDetailsPagePage.d.ts.map +1 -1
  63. package/dist/technospam/pages/CoursesCourseDetailsPagePage.js +213 -211
  64. package/dist/technospam/pages/CoursesCourseDetailsPagePage.js.map +1 -1
  65. package/dist/technospam/pages/CoursesCoursesPagePage.d.ts.map +1 -1
  66. package/dist/technospam/pages/CoursesCoursesPagePage.js +117 -81
  67. package/dist/technospam/pages/CoursesCoursesPagePage.js.map +1 -1
  68. package/dist/technospam/pages/CoursesMyLearningPagePage.js +1 -1
  69. package/dist/technospam/pages/CoursesMyLearningPagePage.js.map +1 -1
  70. package/dist/technospam/pages/DashboardDashboardPagePage.d.ts.map +1 -1
  71. package/dist/technospam/pages/DashboardDashboardPagePage.js +21 -17
  72. package/dist/technospam/pages/DashboardDashboardPagePage.js.map +1 -1
  73. package/dist/technospam/pages/HackathonsHackathonDetailsPagePage.js +3 -3
  74. package/dist/technospam/pages/HackathonsHackathonDetailsPagePage.js.map +1 -1
  75. package/dist/technospam/pages/MentorshipMentorProfilePagePage.js +4 -4
  76. package/dist/technospam/pages/MentorshipMentorProfilePagePage.js.map +1 -1
  77. package/dist/technospam/pages/MentorshipMentorsPagePage.d.ts.map +1 -1
  78. package/dist/technospam/pages/MentorshipMentorsPagePage.js +6 -4
  79. package/dist/technospam/pages/MentorshipMentorsPagePage.js.map +1 -1
  80. package/dist/technospam/pages/MentorshipSessionsPagePage.js +1 -1
  81. package/dist/technospam/pages/MentorshipSessionsPagePage.js.map +1 -1
  82. package/dist/technospam/types/index.d.ts +7 -0
  83. package/dist/technospam/types/index.d.ts.map +1 -1
  84. package/dist/technospam/utils/assessment.d.ts +64 -0
  85. package/dist/technospam/utils/assessment.d.ts.map +1 -0
  86. package/dist/technospam/utils/assessment.js +122 -0
  87. package/dist/technospam/utils/assessment.js.map +1 -0
  88. package/dist/technospam/utils/mobileTabs.d.ts +45 -0
  89. package/dist/technospam/utils/mobileTabs.d.ts.map +1 -0
  90. package/dist/technospam/utils/mobileTabs.js +70 -0
  91. package/dist/technospam/utils/mobileTabs.js.map +1 -0
  92. package/dist/test/matchMedia.d.ts +6 -0
  93. package/dist/test/matchMedia.d.ts.map +1 -0
  94. package/package.json +3 -3
@@ -5596,6 +5596,19 @@ export declare enum DimensionUnit {
5596
5596
  Inch = "INCH",
5597
5597
  Meter = "METER"
5598
5598
  }
5599
+ /** Input for the M2M dispatchWebhookEvent mutation */
5600
+ export type DispatchWebhookEventInput = {
5601
+ /** Caller-supplied event ID; enables idempotent redispatch per subscription */
5602
+ eventId?: InputMaybe<Scalars['String']['input']>;
5603
+ /** Event type being dispatched */
5604
+ eventType: Scalars['String']['input'];
5605
+ /** Owner identifier of the event stream (e.g. platform product id) */
5606
+ ownerId: Scalars['String']['input'];
5607
+ /** Owner namespace of the event stream (e.g. "newsletter-product") */
5608
+ ownerType: Scalars['String']['input'];
5609
+ /** Event payload; wrapped in the signed envelope as `data` */
5610
+ payload: Scalars['JSON']['input'];
5611
+ };
5599
5612
  /** DSAR mode — GDPR Art. 15 (access/export) or Art. 17 (erasure). */
5600
5613
  export declare enum DsarMode {
5601
5614
  Erase = "ERASE",
@@ -8299,6 +8312,8 @@ export type Mutation = {
8299
8312
  approveReview: ProductReview;
8300
8313
  approveTranslation: Translation;
8301
8314
  approveWaitlist: NewsletterWaitlist;
8315
+ /** Admin approves a pending template revision: it becomes the live version of the template (the version goes up) and the revision is removed. */
8316
+ approveWorkflowTemplateRevision: WorkflowTemplateSubmission;
8302
8317
  /** Soft archive a billing account. Financial history is preserved and the account is removed from active billing operations. */
8303
8318
  archiveBillingAccount: BillingAccount;
8304
8319
  /** Archive a channel */
@@ -8764,6 +8779,8 @@ export type Mutation = {
8764
8779
  /** M2M: delete a ShippingAddress owned by an explicit user, on behalf of a calling service. Returns false when no matching row exists for that user. Service-actor only. */
8765
8780
  deleteUserShippingAddress: Scalars['Boolean']['output'];
8766
8781
  deleteWebhook: Scalars['Boolean']['output'];
8782
+ /** Delete a webhook subscription and its delivery log */
8783
+ deleteWebhookSubscription: Scalars['Boolean']['output'];
8767
8784
  /** Admin delists a published product — removes it from store discovery for new users while preserving access for anyone who already installed it. */
8768
8785
  delistProduct: StoreProduct;
8769
8786
  /** Deliver the same notification to multiple recipients in bulk. More efficient than multiple single calls for broadcast scenarios. */
@@ -8786,6 +8803,8 @@ export type Mutation = {
8786
8803
  discardDLQEntry: Scalars['Boolean']['output'];
8787
8804
  /** Dismiss a tour for a user (with option to dismiss permanently) */
8788
8805
  dismissTour: TourUserProgress;
8806
+ /** Dispatch an event to every matching webhook subscription of an owner. M2M only — service / super_admin actors; called by the owning service over the internal gateway. Delivery is HMAC-SHA256 signed with retry/backoff and idempotent per caller-supplied eventId. */
8807
+ dispatchWebhookEvent: WebhookDispatchSummary;
8789
8808
  duplicateNewsletter: Newsletter;
8790
8809
  /** Duplicate a tour with all its steps */
8791
8810
  duplicateTour: Tour;
@@ -9054,6 +9073,8 @@ export type Mutation = {
9054
9073
  registerSupportAttachmentPart: Scalars['Boolean']['output'];
9055
9074
  /** Creates or updates subject mappings for a product. Idempotent: a product's service can call it on every deploy. An existing mapping can only be changed by the actor that registered it, or by a super admin. */
9056
9075
  registerWebhookEventSubjects: Array<WebhookEventSubject>;
9076
+ /** Register an outbound webhook endpoint for an owner */
9077
+ registerWebhookSubscription: WebhookSubscription;
9057
9078
  reinstatePublisher: Publisher;
9058
9079
  rejectApplication: Application;
9059
9080
  /** Platform admin only: reject a pending_review version with a reason. The developer can fix their submission and re-submit. */
@@ -9069,6 +9090,8 @@ export type Mutation = {
9069
9090
  rejectPublisher: Publisher;
9070
9091
  rejectReview: ProductReview;
9071
9092
  rejectWaitlist: NewsletterWaitlist;
9093
+ /** Admin rejects a pending template revision with a reason the author sees. The live version stays listed unchanged. */
9094
+ rejectWorkflowTemplateRevision: WorkflowTemplateRevision;
9072
9095
  releaseLegalHold: LegalHold;
9073
9096
  releaseSuppression: SuppressionEntry;
9074
9097
  removeAgentSkills: AgentProfile;
@@ -9434,6 +9457,8 @@ export type Mutation = {
9434
9457
  /** Test RADIUS connection */
9435
9458
  testRADIUSConnection: Scalars['Boolean']['output'];
9436
9459
  testWebhook: WebhookTestResult;
9460
+ /** Send a synthetic test event to a webhook subscription and report the result */
9461
+ testWebhookSubscription: WebhookDispatchResult;
9437
9462
  toggleAddOn: Scalars['Boolean']['output'];
9438
9463
  /** Toggle the featured state of a store product (admin) */
9439
9464
  toggleFeatured: Scalars['Boolean']['output'];
@@ -9602,8 +9627,6 @@ export type Mutation = {
9602
9627
  updatePromotion: Promotion;
9603
9628
  updatePublisher: Publisher;
9604
9629
  updateQuota: Scalars['Boolean']['output'];
9605
- /** Update RBAC configuration for a scope */
9606
- updateRbacConfig: RbacConfig;
9607
9630
  updateRecurringBillingPlan: RecurringBillingPlan;
9608
9631
  /** Update a registered resource */
9609
9632
  updateResource: Resource;
@@ -9654,6 +9677,8 @@ export type Mutation = {
9654
9677
  updateUserPlatformConnectionNotifications: UserPlatformConnection;
9655
9678
  updateVariantStats: NewsletterVariant;
9656
9679
  updateWebhook: Webhook;
9680
+ /** Update a webhook subscription (URL, secret, events, enabled, description) */
9681
+ updateWebhookSubscription: WebhookSubscription;
9657
9682
  /** Update an existing workspace */
9658
9683
  updateWorkspace: Workspace;
9659
9684
  /** Update a workspace member's role */
@@ -9700,6 +9725,8 @@ export type Mutation = {
9700
9725
  /** Vote on a review (helpful/not helpful) */
9701
9726
  voteOnAppReview: AppReviewVote;
9702
9727
  withdrawConsent: ConsentRecord;
9728
+ /** Withdraw the pending (or rejected) new version of one of your published templates. The live version is not affected. Takes the template's product id. */
9729
+ withdrawWorkflowTemplateRevision: WorkflowTemplateSubmission;
9703
9730
  /** Withdraw one of your templates. A published template is taken off the store first; anything not live is deleted. */
9704
9731
  withdrawWorkflowTemplateSubmission: WithdrawWorkflowTemplateSubmissionResult;
9705
9732
  };
@@ -9928,6 +9955,11 @@ export type MutationApproveWaitlistArgs = {
9928
9955
  input: ApproveWaitlistInput;
9929
9956
  };
9930
9957
  /** Root mutation type */
9958
+ export type MutationApproveWorkflowTemplateRevisionArgs = {
9959
+ id: Scalars['ID']['input'];
9960
+ notes?: InputMaybe<Scalars['String']['input']>;
9961
+ };
9962
+ /** Root mutation type */
9931
9963
  export type MutationArchiveBillingAccountArgs = {
9932
9964
  id: Scalars['ID']['input'];
9933
9965
  reason?: InputMaybe<Scalars['String']['input']>;
@@ -11213,6 +11245,10 @@ export type MutationDeleteWebhookArgs = {
11213
11245
  id: Scalars['ID']['input'];
11214
11246
  };
11215
11247
  /** Root mutation type */
11248
+ export type MutationDeleteWebhookSubscriptionArgs = {
11249
+ id: Scalars['ID']['input'];
11250
+ };
11251
+ /** Root mutation type */
11216
11252
  export type MutationDelistProductArgs = {
11217
11253
  id: Scalars['ID']['input'];
11218
11254
  reason?: InputMaybe<Scalars['String']['input']>;
@@ -11272,6 +11308,10 @@ export type MutationDismissTourArgs = {
11272
11308
  userId: Scalars['ID']['input'];
11273
11309
  };
11274
11310
  /** Root mutation type */
11311
+ export type MutationDispatchWebhookEventArgs = {
11312
+ input: DispatchWebhookEventInput;
11313
+ };
11314
+ /** Root mutation type */
11275
11315
  export type MutationDuplicateNewsletterArgs = {
11276
11316
  id: Scalars['ID']['input'];
11277
11317
  newSlug: Scalars['String']['input'];
@@ -12014,6 +12054,10 @@ export type MutationRegisterWebhookEventSubjectsArgs = {
12014
12054
  input: RegisterWebhookEventSubjectsInput;
12015
12055
  };
12016
12056
  /** Root mutation type */
12057
+ export type MutationRegisterWebhookSubscriptionArgs = {
12058
+ input: RegisterWebhookSubscriptionInput;
12059
+ };
12060
+ /** Root mutation type */
12017
12061
  export type MutationReinstatePublisherArgs = {
12018
12062
  id: Scalars['ID']['input'];
12019
12063
  };
@@ -12065,6 +12109,11 @@ export type MutationRejectWaitlistArgs = {
12065
12109
  input: RejectWaitlistInput;
12066
12110
  };
12067
12111
  /** Root mutation type */
12112
+ export type MutationRejectWorkflowTemplateRevisionArgs = {
12113
+ id: Scalars['ID']['input'];
12114
+ reason: Scalars['String']['input'];
12115
+ };
12116
+ /** Root mutation type */
12068
12117
  export type MutationReleaseLegalHoldArgs = {
12069
12118
  id: Scalars['ID']['input'];
12070
12119
  };
@@ -12973,6 +13022,10 @@ export type MutationTestWebhookArgs = {
12973
13022
  id: Scalars['ID']['input'];
12974
13023
  };
12975
13024
  /** Root mutation type */
13025
+ export type MutationTestWebhookSubscriptionArgs = {
13026
+ id: Scalars['ID']['input'];
13027
+ };
13028
+ /** Root mutation type */
12976
13029
  export type MutationToggleAddOnArgs = {
12977
13030
  id: Scalars['ID']['input'];
12978
13031
  status: Scalars['Boolean']['input'];
@@ -13485,10 +13538,6 @@ export type MutationUpdateQuotaArgs = {
13485
13538
  input: UpdateQuotaInput;
13486
13539
  };
13487
13540
  /** Root mutation type */
13488
- export type MutationUpdateRbacConfigArgs = {
13489
- input: UpdateRbacConfigInput;
13490
- };
13491
- /** Root mutation type */
13492
13541
  export type MutationUpdateRecurringBillingPlanArgs = {
13493
13542
  input: UpdateRecurringBillingInput;
13494
13543
  };
@@ -13680,6 +13729,11 @@ export type MutationUpdateWebhookArgs = {
13680
13729
  input: UpdateWebhookInput;
13681
13730
  };
13682
13731
  /** Root mutation type */
13732
+ export type MutationUpdateWebhookSubscriptionArgs = {
13733
+ id: Scalars['ID']['input'];
13734
+ input: UpdateWebhookSubscriptionInput;
13735
+ };
13736
+ /** Root mutation type */
13683
13737
  export type MutationUpdateWorkspaceArgs = {
13684
13738
  id: Scalars['ID']['input'];
13685
13739
  input: UpdateWorkspaceInput;
@@ -13815,6 +13869,10 @@ export type MutationWithdrawConsentArgs = {
13815
13869
  input: WithdrawConsentInput;
13816
13870
  };
13817
13871
  /** Root mutation type */
13872
+ export type MutationWithdrawWorkflowTemplateRevisionArgs = {
13873
+ productId: Scalars['ID']['input'];
13874
+ };
13875
+ /** Root mutation type */
13818
13876
  export type MutationWithdrawWorkflowTemplateSubmissionArgs = {
13819
13877
  id: Scalars['ID']['input'];
13820
13878
  };
@@ -16769,6 +16827,7 @@ export type Query = {
16769
16827
  /** Browse the plan catalog (e.g. the upgrade-subscription flow). Self-scoped — any authenticated actor may read it; the catalog itself isn't actor-owned data, so there's nothing further to scope. Previously scopeType "global", which no regular user role is ever assigned at (only Authenticated User — billing:NONE — and Platform Superadmin hold a global-scoped role), so this field was unreachable for every non-superadmin user (BOFF-6512). */
16770
16828
  getAllPlans: Array<Plan>;
16771
16829
  getAllQuotas: Array<Quota>;
16830
+ /** List account quotas. Date bounds are inclusive on assignment createdAt; amount bounds are inclusive on activity-backed currentUsageSum, before pagination. Status uses remaining limits (WARNING >=75%, CRITICAL >=90%, EXHAUSTED <=0); expired assignments are INACTIVE and non-numeric unlimited quotas are HEALTHY. Both number and legacy numeric limit types are finite. Percentage thresholds use originalValue; when absent, the remaining value is the fallback baseline. Empty status lists apply no status filter. Pages are capped at 100 rows. Amount-filtered requests fail explicitly above 1000 usage lookups; narrow searchQuery or createdAt bounds rather than relying on partial counts. Derived-filter scans also fail above 10000 assignments, without partial counts. */
16772
16831
  getAllQuotasAssignment: PaginatedQuotaAssignments;
16773
16832
  getAllQuotasOfSub: Array<QuotaAssignment>;
16774
16833
  getAllRecurringBillingPlans: Array<RecurringBillingPlan>;
@@ -16903,7 +16962,7 @@ export type Query = {
16903
16962
  getPromotion?: Maybe<Promotion>;
16904
16963
  /** Get usage analytics for a specific quota assignment */
16905
16964
  getQuotaAnalytics: QuotaUsageAnalytics;
16906
- /** Enhanced quota assignment query with analytics, pagination and filtering */
16965
+ /** The same status, inclusive createdAt and currentUsageSum filters as getAllQuotasAssignment, with analytics for the filtered page. */
16907
16966
  getQuotaAssignmentsWithAnalytics: PaginatedQuotaAssignmentsWithAnalytics;
16908
16967
  getQuotaUsageAndLimit: QuotaUsageAndLimit;
16909
16968
  getQuotaUsageDetails?: Maybe<PaginatedUsages>;
@@ -17205,6 +17264,8 @@ export type Query = {
17205
17264
  /** Get pending scheduled notifications that are due for triggering */
17206
17265
  pendingScheduledNotifications: Array<ScheduledNotification>;
17207
17266
  pendingSurveys: CustomerSatisfactionSurveyConnection;
17267
+ /** Admin queue: new versions of published templates, oldest first. */
17268
+ pendingWorkflowTemplateRevisions: WorkflowTemplateRevisionList;
17208
17269
  /** Get permission check audit log */
17209
17270
  permissionAuditLog: Array<PermissionAuditLog>;
17210
17271
  /** Get a single platform product by ID (admin/catalog read). Returns the full PlatformProduct including DRAFT products and internal operational metrics, so it is gated as a global-scope catalog read. Unauthenticated/marketing callers must use publicProduct(slug), which filters to ACTIVE/WAITLIST/COMING_SOON and strips internal fields. */
@@ -17275,10 +17336,6 @@ export type Query = {
17275
17336
  rbacAnalytics: RbacAnalytics;
17276
17337
  /** Get RBAC configuration change history */
17277
17338
  rbacChangeHistory: Array<RbacChangeLog>;
17278
- /** Get RBAC configuration for a scope */
17279
- rbacConfig: Array<RbacConfig>;
17280
- /** Get a specific RBAC configuration value */
17281
- rbacConfigValue?: Maybe<RbacConfig>;
17282
17339
  recentArticles: Array<KnowledgeBaseArticle>;
17283
17340
  releaseAuditEvents: Array<ProductReleaseAuditEvent>;
17284
17341
  releaseTracks: Array<ReleaseTrack>;
@@ -17465,6 +17522,10 @@ export type Query = {
17465
17522
  webhookEventCatalog: Array<WebhookEventCatalogEntry>;
17466
17523
  /** Registered subject mappings. Platform services and super admins only. */
17467
17524
  webhookEventSubjects: Array<WebhookEventSubject>;
17525
+ /** Fetch a single webhook subscription by ID */
17526
+ webhookSubscription?: Maybe<WebhookSubscription>;
17527
+ /** List webhook subscriptions for an owner (newest first) */
17528
+ webhookSubscriptions: Array<WebhookSubscription>;
17468
17529
  webhooks: Array<Webhook>;
17469
17530
  /** Get a single workspace by ID */
17470
17531
  workspace?: Maybe<Workspace>;
@@ -19460,6 +19521,12 @@ export type QueryPendingSurveysArgs = {
19460
19521
  offset?: InputMaybe<Scalars['Int']['input']>;
19461
19522
  };
19462
19523
  /** Root query type */
19524
+ export type QueryPendingWorkflowTemplateRevisionsArgs = {
19525
+ limit?: InputMaybe<Scalars['Int']['input']>;
19526
+ offset?: InputMaybe<Scalars['Int']['input']>;
19527
+ status?: InputMaybe<WorkflowTemplateRevisionStatus>;
19528
+ };
19529
+ /** Root query type */
19463
19530
  export type QueryPermissionAuditLogArgs = {
19464
19531
  filter?: InputMaybe<AuditLogFilterInput>;
19465
19532
  pagination?: InputMaybe<PaginationInput>;
@@ -19681,15 +19748,6 @@ export type QueryRbacChangeHistoryArgs = {
19681
19748
  scopeId: Scalars['String']['input'];
19682
19749
  };
19683
19750
  /** Root query type */
19684
- export type QueryRbacConfigArgs = {
19685
- scopeId: Scalars['String']['input'];
19686
- };
19687
- /** Root query type */
19688
- export type QueryRbacConfigValueArgs = {
19689
- key: Scalars['String']['input'];
19690
- scopeId: Scalars['String']['input'];
19691
- };
19692
- /** Root query type */
19693
19751
  export type QueryRecentArticlesArgs = {
19694
19752
  limit?: InputMaybe<Scalars['Int']['input']>;
19695
19753
  offset?: InputMaybe<Scalars['Int']['input']>;
@@ -20257,6 +20315,15 @@ export type QueryWebhookEventSubjectsArgs = {
20257
20315
  productSlug?: InputMaybe<Scalars['String']['input']>;
20258
20316
  };
20259
20317
  /** Root query type */
20318
+ export type QueryWebhookSubscriptionArgs = {
20319
+ id: Scalars['ID']['input'];
20320
+ };
20321
+ /** Root query type */
20322
+ export type QueryWebhookSubscriptionsArgs = {
20323
+ ownerId?: InputMaybe<Scalars['String']['input']>;
20324
+ ownerType: Scalars['String']['input'];
20325
+ };
20326
+ /** Root query type */
20260
20327
  export type QueryWebhooksArgs = {
20261
20328
  applicationId: Scalars['ID']['input'];
20262
20329
  };
@@ -20578,18 +20645,6 @@ export declare enum RbacChangeType {
20578
20645
  VisibilityRuleRemoved = "VISIBILITY_RULE_REMOVED",
20579
20646
  VisibilityRuleUpdated = "VISIBILITY_RULE_UPDATED"
20580
20647
  }
20581
- /** RBAC configuration key-value pair */
20582
- export type RbacConfig = {
20583
- __typename?: 'RbacConfig';
20584
- createdAt: Scalars['DateTime']['output'];
20585
- description?: Maybe<Scalars['String']['output']>;
20586
- id: Scalars['ID']['output'];
20587
- key: Scalars['String']['output'];
20588
- scopeId: Scalars['String']['output'];
20589
- updatedAt: Scalars['DateTime']['output'];
20590
- value: Scalars['String']['output'];
20591
- valueType: Scalars['String']['output'];
20592
- };
20593
20648
  /** Delivery result for a single recipient within a platform delivery */
20594
20649
  export type RecipientDeliveryResult = {
20595
20650
  __typename?: 'RecipientDeliveryResult';
@@ -21082,6 +21137,23 @@ export type RegisterWebhookEventSubjectsInput = {
21082
21137
  /** Mappings to create or update (at most 100 per call). */
21083
21138
  subjects: Array<WebhookEventSubjectInput>;
21084
21139
  };
21140
+ /** Input for registerWebhookSubscription */
21141
+ export type RegisterWebhookSubscriptionInput = {
21142
+ /** Operator-facing description */
21143
+ description?: InputMaybe<Scalars['String']['input']>;
21144
+ /** Whether delivery is active (default true) */
21145
+ enabled?: InputMaybe<Scalars['Boolean']['input']>;
21146
+ /** Event types to receive; empty = all events for the owner */
21147
+ events: Array<Scalars['String']['input']>;
21148
+ /** Owner identifier of the event stream (e.g. platform product id) */
21149
+ ownerId: Scalars['String']['input'];
21150
+ /** Owner namespace of the event stream (e.g. "newsletter-product") */
21151
+ ownerType: Scalars['String']['input'];
21152
+ /** HMAC-SHA256 signing secret (write-only, never returned) */
21153
+ secret: Scalars['String']['input'];
21154
+ /** Delivery URL (HTTPS in production) */
21155
+ url: Scalars['String']['input'];
21156
+ };
21085
21157
  export type RejectWaitlistInput = {
21086
21158
  id: Scalars['ID']['input'];
21087
21159
  reason?: InputMaybe<Scalars['String']['input']>;
@@ -22955,6 +23027,8 @@ export type StoreProduct = {
22955
23027
  weightUnit?: Maybe<WeightUnit>;
22956
23028
  /** Product width (physical products) */
22957
23029
  width?: Maybe<Scalars['Float']['output']>;
23030
+ /** For a WORKFLOW template: its nodes, required inputs and credentials and the cleaning report recorded at submission. Null for other products. */
23031
+ workflowTemplatePreview?: Maybe<WorkflowTemplatePreview>;
22958
23032
  zipFileUrl?: Maybe<Scalars['String']['output']>;
22959
23033
  };
22960
23034
  /** Input for fetching store product details */
@@ -23208,7 +23282,7 @@ export type SubmitWorkflowTemplateInput = {
23208
23282
  name: Scalars['String']['input'];
23209
23283
  /** A note for the store reviewer. */
23210
23284
  notes?: InputMaybe<Scalars['String']['input']>;
23211
- /** Resubmit one of your own DRAFT, REJECTED or UNLISTED templates instead of creating a new one. The template keeps its id and slug and its version goes up by one. */
23285
+ /** Resubmit one of your own templates instead of creating a new one. A DRAFT, REJECTED or UNLISTED template is replaced and goes back into review. A PUBLISHED template stays listed unchanged: the submission is kept as its pending revision and replaces the live version only when a reviewer approves it. Either way the template keeps its id and slug and its version goes up by one. */
23212
23286
  productId?: InputMaybe<Scalars['ID']['input']>;
23213
23287
  /** Workflow key the template was published from (lineage). */
23214
23288
  sourceWorkflowKey?: InputMaybe<Scalars['String']['input']>;
@@ -25743,14 +25817,6 @@ export type UpdatePublisherInput = {
25743
25817
  organizationId?: InputMaybe<Scalars['ID']['input']>;
25744
25818
  websiteUrl?: InputMaybe<Scalars['String']['input']>;
25745
25819
  };
25746
- /** Input for updating RBAC configuration */
25747
- export type UpdateRbacConfigInput = {
25748
- description?: InputMaybe<Scalars['String']['input']>;
25749
- key: Scalars['String']['input'];
25750
- scopeId: Scalars['String']['input'];
25751
- value: Scalars['String']['input'];
25752
- valueType?: InputMaybe<Scalars['String']['input']>;
25753
- };
25754
25820
  export type UpdateRecurringBillingInput = {
25755
25821
  description?: InputMaybe<Scalars['String']['input']>;
25756
25822
  id: Scalars['ID']['input'];
@@ -26091,6 +26157,19 @@ export type UpdateWebhookInput = {
26091
26157
  retryEnabled?: InputMaybe<Scalars['Boolean']['input']>;
26092
26158
  url?: InputMaybe<Scalars['String']['input']>;
26093
26159
  };
26160
+ /** Input for updateWebhookSubscription — all fields optional, omitted fields unchanged */
26161
+ export type UpdateWebhookSubscriptionInput = {
26162
+ /** Operator-facing description */
26163
+ description?: InputMaybe<Scalars['String']['input']>;
26164
+ /** Whether delivery is active */
26165
+ enabled?: InputMaybe<Scalars['Boolean']['input']>;
26166
+ /** Event types to receive; empty = all events for the owner */
26167
+ events?: InputMaybe<Array<Scalars['String']['input']>>;
26168
+ /** HMAC-SHA256 signing secret (write-only, never returned) */
26169
+ secret?: InputMaybe<Scalars['String']['input']>;
26170
+ /** Delivery URL (HTTPS in production) */
26171
+ url?: InputMaybe<Scalars['String']['input']>;
26172
+ };
26094
26173
  /** Input for updating an existing workspace */
26095
26174
  export type UpdateWorkspaceInput = {
26096
26175
  metadata?: InputMaybe<Scalars['JSON']['input']>;
@@ -26835,6 +26914,30 @@ export type WebhookDeliveryEdge = {
26835
26914
  cursor: Scalars['String']['output'];
26836
26915
  node: WebhookDelivery;
26837
26916
  };
26917
+ /** One delivery attempt recorded for a WebhookSubscription. At most one row exists per (subscription, eventId) — a redispatched event updates the row instead of double-delivering. */
26918
+ export type WebhookDeliveryLog = {
26919
+ __typename?: 'WebhookDeliveryLog';
26920
+ /** Number of attempts made */
26921
+ attemptCount: Scalars['Int']['output'];
26922
+ /** When the final attempt finished */
26923
+ deliveredAt: Scalars['DateTime']['output'];
26924
+ /** Error message of the final attempt (null on success) */
26925
+ error?: Maybe<Scalars['String']['output']>;
26926
+ /** Caller-supplied event ID (idempotency key) */
26927
+ eventId: Scalars['String']['output'];
26928
+ /** Event type that was dispatched */
26929
+ eventType: Scalars['String']['output'];
26930
+ /** Unique log row ID */
26931
+ id: Scalars['ID']['output'];
26932
+ /** Envelope payload that was signed and posted */
26933
+ payload: Scalars['JSON']['output'];
26934
+ /** HTTP status code of the final attempt (null on transport error) */
26935
+ statusCode?: Maybe<Scalars['Int']['output']>;
26936
+ /** Owning subscription ID */
26937
+ subscriptionId: Scalars['ID']['output'];
26938
+ /** Whether the final attempt succeeded */
26939
+ success: Scalars['Boolean']['output'];
26940
+ };
26838
26941
  export declare enum WebhookDeliveryStatus {
26839
26942
  Delivered = "DELIVERED",
26840
26943
  Delivering = "DELIVERING",
@@ -26842,6 +26945,30 @@ export declare enum WebhookDeliveryStatus {
26842
26945
  Pending = "PENDING",
26843
26946
  Retrying = "RETRYING"
26844
26947
  }
26948
+ /** Result of a single test delivery */
26949
+ export type WebhookDispatchResult = {
26950
+ __typename?: 'WebhookDispatchResult';
26951
+ /** Number of attempts made */
26952
+ attemptCount: Scalars['Int']['output'];
26953
+ /** Error message of the final attempt (null on success) */
26954
+ error?: Maybe<Scalars['String']['output']>;
26955
+ /** HTTP status code of the final attempt (null on transport error) */
26956
+ statusCode?: Maybe<Scalars['Int']['output']>;
26957
+ /** Whether the delivery succeeded */
26958
+ success: Scalars['Boolean']['output'];
26959
+ };
26960
+ /** Summary returned by the M2M dispatchWebhookEvent mutation */
26961
+ export type WebhookDispatchSummary = {
26962
+ __typename?: 'WebhookDispatchSummary';
26963
+ /** Subscriptions skipped because the event was already delivered (idempotent redispatch) */
26964
+ deduplicated: Scalars['Int']['output'];
26965
+ /** Subscriptions delivered successfully */
26966
+ delivered: Scalars['Int']['output'];
26967
+ /** Subscriptions that failed after all retry attempts */
26968
+ failed: Scalars['Int']['output'];
26969
+ /** Enabled subscriptions matched for the owner + event type */
26970
+ matched: Scalars['Int']['output'];
26971
+ };
26845
26972
  /** WebhookEvent represents a received webhook (transient, 7-day TTL) Used for debugging and monitoring only */
26846
26973
  export type WebhookEvent = {
26847
26974
  __typename?: 'WebhookEvent';
@@ -26988,6 +27115,34 @@ export declare enum WebhookStatus {
26988
27115
  Failed = "FAILED",
26989
27116
  Paused = "PAUSED"
26990
27117
  }
27118
+ /** A registered outbound webhook endpoint owned by a product or operator. `ownerType` namespaces the event stream (e.g. "newsletter-product"); `ownerId` scopes it (e.g. the platform product id). An empty `events` list means the endpoint receives every event dispatched for the owner. */
27119
+ export type WebhookSubscription = {
27120
+ __typename?: 'WebhookSubscription';
27121
+ /** Creation timestamp */
27122
+ createdAt: Scalars['DateTime']['output'];
27123
+ /** Delivery audit trail (most recent first) */
27124
+ deliveries: Array<WebhookDeliveryLog>;
27125
+ /** Operator-facing description */
27126
+ description?: Maybe<Scalars['String']['output']>;
27127
+ /** Whether delivery is active */
27128
+ enabled: Scalars['Boolean']['output'];
27129
+ /** Event types this endpoint receives; empty = all events for the owner */
27130
+ events: Array<Scalars['String']['output']>;
27131
+ /** Unique subscription ID */
27132
+ id: Scalars['ID']['output'];
27133
+ /** Owner identifier of the event stream (e.g. platform product id) */
27134
+ ownerId: Scalars['String']['output'];
27135
+ /** Owner namespace of the event stream (e.g. "newsletter-product") */
27136
+ ownerType: Scalars['String']['output'];
27137
+ /** Last update timestamp */
27138
+ updatedAt: Scalars['DateTime']['output'];
27139
+ /** Delivery URL (HTTPS in production) */
27140
+ url: Scalars['String']['output'];
27141
+ };
27142
+ /** A registered outbound webhook endpoint owned by a product or operator. `ownerType` namespaces the event stream (e.g. "newsletter-product"); `ownerId` scopes it (e.g. the platform product id). An empty `events` list means the endpoint receives every event dispatched for the owner. */
27143
+ export type WebhookSubscriptionDeliveriesArgs = {
27144
+ limit?: InputMaybe<Scalars['Int']['input']>;
27145
+ };
26991
27146
  export type WebhookTestResult = {
26992
27147
  __typename?: 'WebhookTestResult';
26993
27148
  error?: Maybe<Scalars['String']['output']>;
@@ -27039,6 +27194,115 @@ export type WithdrawWorkflowTemplateSubmissionResult = {
27039
27194
  /** The template's status when it was kept (UNLISTED), null when removed. */
27040
27195
  status?: Maybe<ProductStatus>;
27041
27196
  };
27197
+ /** What was removed from the author's workflow before it was stored. */
27198
+ export type WorkflowTemplateCleaningReport = {
27199
+ __typename?: 'WorkflowTemplateCleaningReport';
27200
+ /** Where each cleared connection was (up to 200). */
27201
+ clearedConnections: Array<WorkflowTemplateFieldRef>;
27202
+ connectionsCleared: Scalars['Int']['output'];
27203
+ pinnedDataRemoved: Scalars['Boolean']['output'];
27204
+ /** Where each removed secret was (up to 200). */
27205
+ removedSecrets: Array<WorkflowTemplateFieldRef>;
27206
+ secretsRemoved: Scalars['Int']['output'];
27207
+ };
27208
+ /** Where in a template a cleared connection or removed secret was. */
27209
+ export type WorkflowTemplateFieldRef = {
27210
+ __typename?: 'WorkflowTemplateFieldRef';
27211
+ /** Path of the field inside the node, for example data.parameters.apiKey. */
27212
+ field: Scalars['String']['output'];
27213
+ nodeId?: Maybe<Scalars['String']['output']>;
27214
+ nodeLabel?: Maybe<Scalars['String']['output']>;
27215
+ nodeType?: Maybe<Scalars['String']['output']>;
27216
+ };
27217
+ /** A node type a template uses. */
27218
+ export type WorkflowTemplateNodeType = {
27219
+ __typename?: 'WorkflowTemplateNodeType';
27220
+ displayName: Scalars['String']['output'];
27221
+ nodeType: Scalars['String']['output'];
27222
+ nodeVersion: Scalars['String']['output'];
27223
+ /** BUILTIN or STORE. */
27224
+ publishType: Scalars['String']['output'];
27225
+ };
27226
+ /** What a reviewer sees about a workflow template before approving it. */
27227
+ export type WorkflowTemplatePreview = {
27228
+ __typename?: 'WorkflowTemplatePreview';
27229
+ /** Recorded at submission; null for templates stored before reports were kept. */
27230
+ cleaningReport?: Maybe<WorkflowTemplateCleaningReport>;
27231
+ /** The cleaned definition importers receive. */
27232
+ definitionJson?: Maybe<Scalars['JSON']['output']>;
27233
+ edgeCount: Scalars['Int']['output'];
27234
+ /** Nodes in the definition (all of them, not just distinct types). */
27235
+ nodeCount: Scalars['Int']['output'];
27236
+ nodeTypes: Array<WorkflowTemplateNodeType>;
27237
+ requiredCredentials: Array<WorkflowTemplateRequiredCredential>;
27238
+ requiredInputs: Array<WorkflowTemplateRequiredInput>;
27239
+ };
27240
+ /** A credential someone importing the template must connect. */
27241
+ export type WorkflowTemplateRequiredCredential = {
27242
+ __typename?: 'WorkflowTemplateRequiredCredential';
27243
+ /** connection: the node was bound to the author's saved connection, which was cleared at submission. reference: the template reads ${credentials.<name>}. */
27244
+ kind: Scalars['String']['output'];
27245
+ name: Scalars['String']['output'];
27246
+ nodeId?: Maybe<Scalars['String']['output']>;
27247
+ nodeLabel?: Maybe<Scalars['String']['output']>;
27248
+ nodeType?: Maybe<Scalars['String']['output']>;
27249
+ };
27250
+ /** A value someone importing the template must supply (a ${name} variable it reads). */
27251
+ export type WorkflowTemplateRequiredInput = {
27252
+ __typename?: 'WorkflowTemplateRequiredInput';
27253
+ label: Scalars['String']['output'];
27254
+ name: Scalars['String']['output'];
27255
+ required: Scalars['Boolean']['output'];
27256
+ /** secret when it fills a secret field (API key, token, ...), else string. */
27257
+ type: Scalars['String']['output'];
27258
+ /** Nodes that read it. */
27259
+ usedBy: Array<Scalars['String']['output']>;
27260
+ };
27261
+ /** A new version of a PUBLISHED template, kept apart from the live version while it is reviewed. Approval makes it the live version; rejection leaves the live version untouched. */
27262
+ export type WorkflowTemplateRevision = {
27263
+ __typename?: 'WorkflowTemplateRevision';
27264
+ authorName?: Maybe<Scalars['String']['output']>;
27265
+ category: Scalars['String']['output'];
27266
+ createdAt: Scalars['DateTime']['output'];
27267
+ description: Scalars['String']['output'];
27268
+ icon?: Maybe<Scalars['String']['output']>;
27269
+ id: Scalars['ID']['output'];
27270
+ /** Version currently live in the store. */
27271
+ liveVersion: Scalars['String']['output'];
27272
+ name: Scalars['String']['output'];
27273
+ /** Number of distinct node types the revision uses. */
27274
+ nodeCount: Scalars['Int']['output'];
27275
+ /** The author's note for the reviewer. */
27276
+ notes?: Maybe<Scalars['String']['output']>;
27277
+ /** What the revision does: nodes, required inputs and credentials, cleaning report. */
27278
+ preview?: Maybe<WorkflowTemplatePreview>;
27279
+ /** Store product id of the template it revises. */
27280
+ productId: Scalars['ID']['output'];
27281
+ productSlug: Scalars['String']['output'];
27282
+ /** Publisher profile name of the author. */
27283
+ publisherName?: Maybe<Scalars['String']['output']>;
27284
+ rejectedReason?: Maybe<Scalars['String']['output']>;
27285
+ reviewedAt?: Maybe<Scalars['DateTime']['output']>;
27286
+ revision: Scalars['Int']['output'];
27287
+ status: WorkflowTemplateRevisionStatus;
27288
+ submittedAt: Scalars['DateTime']['output'];
27289
+ /** Actor id of the author who submitted it. */
27290
+ submittedBy: Scalars['String']['output'];
27291
+ tags: Array<Scalars['String']['output']>;
27292
+ updatedAt: Scalars['DateTime']['output'];
27293
+ /** Version this revision becomes when approved. */
27294
+ version: Scalars['String']['output'];
27295
+ };
27296
+ export type WorkflowTemplateRevisionList = {
27297
+ __typename?: 'WorkflowTemplateRevisionList';
27298
+ items: Array<WorkflowTemplateRevision>;
27299
+ totalCount: Scalars['Int']['output'];
27300
+ };
27301
+ /** PENDING_REVIEW while a store admin reviews it; REJECTED with a reason. */
27302
+ export declare enum WorkflowTemplateRevisionStatus {
27303
+ PendingReview = "PENDING_REVIEW",
27304
+ Rejected = "REJECTED"
27305
+ }
27042
27306
  /** One of your community workflow templates and where it is in review. */
27043
27307
  export type WorkflowTemplateSubmission = {
27044
27308
  __typename?: 'WorkflowTemplateSubmission';
@@ -27054,6 +27318,8 @@ export type WorkflowTemplateSubmission = {
27054
27318
  name: Scalars['String']['output'];
27055
27319
  /** Number of distinct node types the template uses. */
27056
27320
  nodeCount: Scalars['Int']['output'];
27321
+ /** The new version of this published template that is waiting for review, or that a reviewer rejected (with the reason). Null when there is none. */
27322
+ pendingRevision?: Maybe<WorkflowTemplateRevision>;
27057
27323
  publishedAt?: Maybe<Scalars['DateTime']['output']>;
27058
27324
  rejectedReason?: Maybe<Scalars['String']['output']>;
27059
27325
  reviewNotes?: Maybe<Scalars['String']['output']>;