@burdenoff/microfe-billing 2026.511.1 → 2026.513.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -85,6 +85,13 @@ export type ApiKey = {
85
85
  prefix: Scalars['String']['output'];
86
86
  scopes: Array<Scalars['String']['output']>;
87
87
  };
88
+ /** Paginated list of API keys */
89
+ export type ApiKeyConnection = {
90
+ __typename?: 'APIKeyConnection';
91
+ apiKeys: Array<ApiKey>;
92
+ hasMore: Scalars['Boolean']['output'];
93
+ totalCount: Scalars['Int']['output'];
94
+ };
88
95
  export type ApiKeyInput = {
89
96
  apiKey: Scalars['String']['input'];
90
97
  apiSecret: Scalars['String']['input'];
@@ -242,7 +249,22 @@ export declare enum ActorType {
242
249
  /** Human user */
243
250
  User = "USER"
244
251
  }
245
- /** Specific adapter/provider type for each ChannelPlatform. ChannelPlatform = High-level category (EMAIL, SMS, PUSH, etc.) AdapterType = Specific provider implementation Currently supported adapters (must match Prisma schema): EMAIL: AWS_SES, AZURE_ACS SMS: AWS_SNS, TWILIO_SMS WHATSAPP: WHATSAPP_CLOUD, WHATSAPP_TWILIO SLACK: SLACK_BOT TEAMS: TEAMS_BOT DISCORD: DISCORD_BOT PUSH: FCM INAPP: INAPP_NATIVE WEBHOOK: WEBHOOK_HTTP */
252
+ /**
253
+ * Specific adapter/provider type for each ChannelPlatform.
254
+ * ChannelPlatform = High-level category (EMAIL, SMS, PUSH, etc.)
255
+ * AdapterType = Specific provider implementation
256
+ *
257
+ * Currently supported adapters (must match Prisma schema):
258
+ * EMAIL: AWS_SES, AZURE_ACS
259
+ * SMS: AWS_SNS, TWILIO_SMS
260
+ * WHATSAPP: WHATSAPP_CLOUD, WHATSAPP_TWILIO
261
+ * SLACK: SLACK_BOT
262
+ * TEAMS: TEAMS_BOT
263
+ * DISCORD: DISCORD_BOT
264
+ * PUSH: FCM
265
+ * INAPP: INAPP_NATIVE
266
+ * WEBHOOK: WEBHOOK_HTTP
267
+ */
246
268
  export declare enum AdapterType {
247
269
  /** Amazon Simple Email Service */
248
270
  AwsSes = "AWS_SES",
@@ -367,13 +389,19 @@ export type Addon = {
367
389
  createdAt?: Maybe<Scalars['DateTime']['output']>;
368
390
  /** The currency in which the addon is priced. Defaults to 'USD'. */
369
391
  currency?: Maybe<Scalars['String']['output']>;
370
- /** Prices for all supported currencies with beautiful rounding. Example: { "USD": 2.00, "INR": 199, "EUR": 1.99, "GBP": 1.79 } */
392
+ /**
393
+ * Prices for all supported currencies with beautiful rounding.
394
+ * Example: { "USD": 2.00, "INR": 199, "EUR": 1.99, "GBP": 1.79 }
395
+ */
371
396
  currencyPrices?: Maybe<Scalars['JSON']['output']>;
372
397
  /** The duration for which the addon is valid (e.g., monthly, yearly). Defaults to 'monthly'. */
373
398
  duration?: Maybe<PlanDuration>;
374
399
  /** A list of features provided by this addon, such as extra quotas or special services. */
375
400
  features?: Maybe<Array<Maybe<SubscriptionFeatures>>>;
376
- /** Geography-specific price overrides. The billing account's country/state/region plus currency decide whether one of these overrides applies. */
401
+ /**
402
+ * Geography-specific price overrides. The billing account's country/state/region plus
403
+ * currency decide whether one of these overrides applies.
404
+ */
377
405
  geoPricingOverrides: Array<GeoPricingOverride>;
378
406
  /** The unique identifier for the Addon, automatically generated as a UUID. */
379
407
  id?: Maybe<Scalars['ID']['output']>;
@@ -390,7 +418,10 @@ export type Addon = {
390
418
  /** The timestamp when the addon was last updated. */
391
419
  updatedAt?: Maybe<Scalars['DateTime']['output']>;
392
420
  };
393
- /** Tracks historical price changes for an Addon. A new record is created whenever an addon's price is updated. */
421
+ /**
422
+ * Tracks historical price changes for an Addon.
423
+ * A new record is created whenever an addon's price is updated.
424
+ */
394
425
  export type AddonPriceHistory = {
395
426
  __typename?: 'AddonPriceHistory';
396
427
  /** The addon this price change belongs to */
@@ -436,7 +467,11 @@ export type AddonSubscription = {
436
467
  updatedAt?: Maybe<Scalars['DateTime']['output']>;
437
468
  };
438
469
  export type AddonsFilter = {
439
- /** Include free addons (price = 0) in the response. Defaults to true. Set to false on user-facing browse pages since free addons are auto-assigned and cannot be purchased. */
470
+ /**
471
+ * Include free addons (price = 0) in the response.
472
+ * Defaults to true. Set to false on user-facing browse pages
473
+ * since free addons are auto-assigned and cannot be purchased.
474
+ */
440
475
  includeFree?: InputMaybe<Scalars['Boolean']['input']>;
441
476
  /** Filter addons by product ID. When set, only addons with this productID are returned. */
442
477
  productId?: InputMaybe<Scalars['String']['input']>;
@@ -655,7 +690,11 @@ export type AgentProfile = {
655
690
  createdAt: Scalars['DateTime']['output'];
656
691
  currentChats: Scalars['Int']['output'];
657
692
  currentTickets: Scalars['Int']['output'];
658
- /** Anonymized display alias surfaced to end-users in support conversations. Stable per agent (deterministic-on-first-use) so the same agent always shows the same alias to a given user. Real userId / user are admin-only. */
693
+ /**
694
+ * Anonymized display alias surfaced to end-users in support conversations.
695
+ * Stable per agent (deterministic-on-first-use) so the same agent always shows
696
+ * the same alias to a given user. Real userId / user are admin-only.
697
+ */
659
698
  displayAlias?: Maybe<Scalars['String']['output']>;
660
699
  id: Scalars['ID']['output'];
661
700
  isAvailable: Scalars['Boolean']['output'];
@@ -793,6 +832,12 @@ export type AppCollectionEdge = {
793
832
  cursor: Scalars['String']['output'];
794
833
  node: AppCollection;
795
834
  };
835
+ export type AppConnection = {
836
+ __typename?: 'AppConnection';
837
+ apps: Array<App>;
838
+ hasMore: Scalars['Boolean']['output'];
839
+ totalCount: Scalars['Int']['output'];
840
+ };
796
841
  export type AppCreateResponse = {
797
842
  __typename?: 'AppCreateResponse';
798
843
  app: App;
@@ -1016,6 +1061,12 @@ export type AppUserDelegation = {
1016
1061
  userId: Scalars['String']['output'];
1017
1062
  workspaceIds: Array<Scalars['String']['output']>;
1018
1063
  };
1064
+ export type AppUserDelegationConnection = {
1065
+ __typename?: 'AppUserDelegationConnection';
1066
+ delegations: Array<AppUserDelegation>;
1067
+ hasMore: Scalars['Boolean']['output'];
1068
+ totalCount: Scalars['Int']['output'];
1069
+ };
1019
1070
  export declare enum AppVisibility {
1020
1071
  Internal = "INTERNAL",
1021
1072
  Private = "PRIVATE",
@@ -1093,7 +1144,10 @@ export type Application = {
1093
1144
  /** Structured tag assignments via wspace-tags-svc. Resource type: APPLICATION. */
1094
1145
  tagAssignments: Array<ApplicationTagAssignment>;
1095
1146
  /**
1096
- * Legacy free-text tag list. Maintained for backwards compatibility while consumers migrate to `tagAssignments`. New writes should use the `addTagToApplication` / `removeTagFromApplication` mutations and consume `tagAssignments` (resolved via wspace-tags-svc).
1147
+ * Legacy free-text tag list. Maintained for backwards compatibility while
1148
+ * consumers migrate to `tagAssignments`. New writes should use the
1149
+ * `addTagToApplication` / `removeTagFromApplication` mutations and consume
1150
+ * `tagAssignments` (resolved via wspace-tags-svc).
1097
1151
  * @deprecated Use tagAssignments for structured tag data via wspace-tags-svc
1098
1152
  */
1099
1153
  tags: Array<Scalars['String']['output']>;
@@ -1154,7 +1208,10 @@ export type ApplicationScope = {
1154
1208
  metadata?: Maybe<Scalars['JSON']['output']>;
1155
1209
  scope: Scalars['String']['output'];
1156
1210
  };
1157
- /** Tag assignment binding a UniversalTag to an Application. Mirrors the universal tag-assignment shape from wspace-tags-svc.UniversalTagAssignment. */
1211
+ /**
1212
+ * Tag assignment binding a UniversalTag to an Application. Mirrors the universal
1213
+ * tag-assignment shape from wspace-tags-svc.UniversalTagAssignment.
1214
+ */
1158
1215
  export type ApplicationTagAssignment = {
1159
1216
  __typename?: 'ApplicationTagAssignment';
1160
1217
  assignedAt?: Maybe<Scalars['DateTime']['output']>;
@@ -1311,6 +1368,13 @@ export type AuthAuditLog = {
1311
1368
  resourceType?: Maybe<Scalars['String']['output']>;
1312
1369
  userAgent?: Maybe<Scalars['String']['output']>;
1313
1370
  };
1371
+ /** Paginated list of auth audit logs */
1372
+ export type AuthAuditLogConnection = {
1373
+ __typename?: 'AuthAuditLogConnection';
1374
+ auditLogs: Array<AuthAuditLog>;
1375
+ hasMore: Scalars['Boolean']['output'];
1376
+ totalCount: Scalars['Int']['output'];
1377
+ };
1314
1378
  export type AuthContext = {
1315
1379
  deviceId?: InputMaybe<Scalars['String']['input']>;
1316
1380
  ipAddress?: InputMaybe<Scalars['String']['input']>;
@@ -1352,7 +1416,10 @@ export type AuthMethodConfigInput = {
1352
1416
  samlEntityId?: InputMaybe<Scalars['String']['input']>;
1353
1417
  samlSsoUrl?: InputMaybe<Scalars['String']['input']>;
1354
1418
  };
1355
- /** Authentication response with optional MFA challenge support When requiresMFA is true, user/tokens will be null until MFA verification */
1419
+ /**
1420
+ * Authentication response with optional MFA challenge support
1421
+ * When requiresMFA is true, user/tokens will be null until MFA verification
1422
+ */
1356
1423
  export type AuthPayload = {
1357
1424
  __typename?: 'AuthPayload';
1358
1425
  accessToken?: Maybe<Scalars['String']['output']>;
@@ -1454,7 +1521,10 @@ export type BatchOperationResult = {
1454
1521
  failedIds?: Maybe<Array<Scalars['ID']['output']>>;
1455
1522
  success: Scalars['Boolean']['output'];
1456
1523
  };
1457
- /** BillingAccount entity - resolvable via Federation Gateway. Other services (e.g., store-svc) can reference BillingAccount by id. */
1524
+ /**
1525
+ * BillingAccount entity - resolvable via Federation Gateway.
1526
+ * Other services (e.g., store-svc) can reference BillingAccount by id.
1527
+ */
1458
1528
  export type BillingAccount = {
1459
1529
  __typename?: 'BillingAccount';
1460
1530
  /** The billing addresses associated with this billing account */
@@ -1585,7 +1655,10 @@ export type BillingOrder = {
1585
1655
  /** External order ID from the service (e.g., "store-order-12345") */
1586
1656
  id: Scalars['ID']['output'];
1587
1657
  items: Scalars['JSON']['output'];
1588
- /** Tax is calculated at payment time and stored in Transaction/Payment, not BillingOrder. Tax info can be found in metadata.paymentTaxAmount, metadata.paymentTaxRate, metadata.paymentTotal */
1658
+ /**
1659
+ * Tax is calculated at payment time and stored in Transaction/Payment, not BillingOrder.
1660
+ * Tax info can be found in metadata.paymentTaxAmount, metadata.paymentTaxRate, metadata.paymentTotal
1661
+ */
1589
1662
  metadata?: Maybe<Scalars['JSON']['output']>;
1590
1663
  orgId: Scalars['String']['output'];
1591
1664
  status: BillingOrderStatus;
@@ -1975,15 +2048,28 @@ export type ChangePasswordInput = {
1975
2048
  /** Channel represents a configured connection to a communication platform */
1976
2049
  export type Channel = {
1977
2050
  __typename?: 'Channel';
1978
- /** Specific adapter type (SENDGRID, AWS_SES, TWILIO, etc.) Used for priority-based fallback delivery. */
2051
+ /**
2052
+ * Specific adapter type (SENDGRID, AWS_SES, TWILIO, etc.)
2053
+ * Used for priority-based fallback delivery.
2054
+ */
1979
2055
  adapterType?: Maybe<AdapterType>;
1980
- /** Channel type discriminator — determines delivery behaviour. NOTIFICATION (EMAIL, SMS): outbound-only, adapter failover supported. COMMUNICATION (SLACK, TEAMS, DISCORD, WHATSAPP, WEBCHAT, INAPP, WEBHOOK): bi-directional. */
2056
+ /**
2057
+ * Channel type discriminator — determines delivery behaviour.
2058
+ * NOTIFICATION (EMAIL, SMS): outbound-only, adapter failover supported.
2059
+ * COMMUNICATION (SLACK, TEAMS, DISCORD, WHATSAPP, WEBCHAT, INAPP, WEBHOOK): bi-directional.
2060
+ */
1981
2061
  channelType: ChannelType;
1982
- /** Typed channel configuration. Returns structured configuration with defaults applied. */
2062
+ /**
2063
+ * Typed channel configuration.
2064
+ * Returns structured configuration with defaults applied.
2065
+ */
1983
2066
  config: ChannelConfig;
1984
2067
  /** Channel connection (authenticated credentials) */
1985
2068
  connection?: Maybe<ChannelConnection>;
1986
- /** Real-time connection health (system-monitored: HEALTHY, DEGRADED, UNHEALTHY). Updated automatically based on API calls and health checks. */
2069
+ /**
2070
+ * Real-time connection health (system-monitored: HEALTHY, DEGRADED, UNHEALTHY).
2071
+ * Updated automatically based on API calls and health checks.
2072
+ */
1987
2073
  connectionHealth: ConnectionHealth;
1988
2074
  /** Number of consecutive API failures (resets to 0 on success) */
1989
2075
  consecutiveFailures: Scalars['Int']['output'];
@@ -2015,9 +2101,16 @@ export type Channel = {
2015
2101
  organizationId: Scalars['ID']['output'];
2016
2102
  /** Communication platform (Slack, Teams, Discord, etc.) */
2017
2103
  platform: ChannelPlatform;
2018
- /** Platform-specific configuration (webhook URLs, channel IDs, etc.) Raw JSON for backward compatibility. */
2104
+ /**
2105
+ * Platform-specific configuration (webhook URLs, channel IDs, etc.)
2106
+ * Raw JSON for backward compatibility.
2107
+ */
2019
2108
  platformConfig?: Maybe<Scalars['JSON']['output']>;
2020
- /** Priority for fallback ordering (lower = higher priority, tried first). Example: SendGrid(1) → AWS SES(2) → Azure ACS(3) All ACTIVE channels are included in the failover chain. */
2109
+ /**
2110
+ * Priority for fallback ordering (lower = higher priority, tried first).
2111
+ * Example: SendGrid(1) → AWS SES(2) → Azure ACS(3)
2112
+ * All ACTIVE channels are included in the failover chain.
2113
+ */
2021
2114
  priority: Scalars['Int']['output'];
2022
2115
  /** Current channel status (admin-controlled: ACTIVE, INACTIVE, etc.) */
2023
2116
  status: ChannelStatus;
@@ -2043,7 +2136,10 @@ export declare enum ChannelAuthType {
2043
2136
  /** Webhook-only (no authentication) */
2044
2137
  Webhook = "WEBHOOK"
2045
2138
  }
2046
- /** Channel configuration settings. Strongly-typed configuration instead of generic JSON. */
2139
+ /**
2140
+ * Channel configuration settings.
2141
+ * Strongly-typed configuration instead of generic JSON.
2142
+ */
2047
2143
  export type ChannelConfig = {
2048
2144
  __typename?: 'ChannelConfig';
2049
2145
  /** Default workflow ID to execute for incoming messages (if any) */
@@ -2060,7 +2156,10 @@ export type ChannelConfig = {
2060
2156
  platformSettings?: Maybe<Scalars['JSON']['output']>;
2061
2157
  /** Rate limit: maximum messages per hour for this channel. */
2062
2158
  rateLimitPerHour?: Maybe<Scalars['Int']['output']>;
2063
- /** Rate limit: maximum messages per minute for this channel. Platform-specific limits apply (e.g., Slack: 60/min, WhatsApp: varies). */
2159
+ /**
2160
+ * Rate limit: maximum messages per minute for this channel.
2161
+ * Platform-specific limits apply (e.g., Slack: 60/min, WhatsApp: varies).
2162
+ */
2064
2163
  rateLimitPerMinute?: Maybe<Scalars['Int']['output']>;
2065
2164
  /** Webhook URL for receiving platform events */
2066
2165
  webhookUrl?: Maybe<Scalars['String']['output']>;
@@ -2086,7 +2185,10 @@ export type ChannelConfigInput = {
2086
2185
  /** Webhook URL */
2087
2186
  webhookUrl?: InputMaybe<Scalars['String']['input']>;
2088
2187
  };
2089
- /** ChannelConnection represents an authenticated connection to a platform All credentials are encrypted with AES-256-GCM */
2188
+ /**
2189
+ * ChannelConnection represents an authenticated connection to a platform
2190
+ * All credentials are encrypted with AES-256-GCM
2191
+ */
2090
2192
  export type ChannelConnection = {
2091
2193
  __typename?: 'ChannelConnection';
2092
2194
  /** Authentication type used */
@@ -2113,7 +2215,10 @@ export type ChannelConnection = {
2113
2215
  lastTestedAt?: Maybe<Scalars['DateTime']['output']>;
2114
2216
  /** Whether OAuth tokens need refresh (within 24h of expiry) */
2115
2217
  needsTokenRefresh: Scalars['Boolean']['output'];
2116
- /** Platform-specific metadata (channel IDs, team info, etc.) NOTE: Non-sensitive data only */
2218
+ /**
2219
+ * Platform-specific metadata (channel IDs, team info, etc.)
2220
+ * NOTE: Non-sensitive data only
2221
+ */
2117
2222
  platformMetadata?: Maybe<Scalars['JSON']['output']>;
2118
2223
  /** Tag assignments for this connection (stub — returns empty until wspace-tags-svc supports org-scoped assignments) */
2119
2224
  tagAssignments: Array<ChannelConnectionTagAssignment>;
@@ -2124,7 +2229,10 @@ export type ChannelConnection = {
2124
2229
  /** Last update timestamp */
2125
2230
  updatedAt: Scalars['DateTime']['output'];
2126
2231
  };
2127
- /** Paginated list of channel connections with cursor support. Pass `nextCursor` from a previous response as `cursor` in the next call. */
2232
+ /**
2233
+ * Paginated list of channel connections with cursor support.
2234
+ * Pass `nextCursor` from a previous response as `cursor` in the next call.
2235
+ */
2128
2236
  export type ChannelConnectionList = {
2129
2237
  __typename?: 'ChannelConnectionList';
2130
2238
  hasMore: Scalars['Boolean']['output'];
@@ -2208,7 +2316,14 @@ export type ChannelDeliveryInput = {
2208
2316
  connectionId?: InputMaybe<Scalars['ID']['input']>;
2209
2317
  /** Notification content */
2210
2318
  content: ChannelDeliveryContentInput;
2211
- /** Internal Botlit user ID. When provided, the service automatically resolves the user's DM conversation ID from their UserPlatformConnection record and uses it as the delivery recipient. Requires the user to have connected via OAuth (dmAllowed=true) with notificationsEnabled=true. Either `recipient` or `internalUserId` must be provided. */
2319
+ /**
2320
+ * Internal Botlit user ID. When provided, the service automatically resolves
2321
+ * the user's DM conversation ID from their UserPlatformConnection record and
2322
+ * uses it as the delivery recipient. Requires the user to have connected via
2323
+ * OAuth (dmAllowed=true) with notificationsEnabled=true.
2324
+ *
2325
+ * Either `recipient` or `internalUserId` must be provided.
2326
+ */
2212
2327
  internalUserId?: InputMaybe<Scalars['ID']['input']>;
2213
2328
  /** Optional reference to originating notification in notification-svc */
2214
2329
  notificationId?: InputMaybe<Scalars['ID']['input']>;
@@ -2218,7 +2333,18 @@ export type ChannelDeliveryInput = {
2218
2333
  organizationId: Scalars['ID']['input'];
2219
2334
  /** Target delivery platform (EMAIL, SMS, PUSH, SLACK, TEAMS, etc.) */
2220
2335
  platform: ChannelPlatform;
2221
- /** Recipient identifier based on platform: - EMAIL: email address - SMS: phone number (E.164 format) - PUSH: device token - SLACK/TEAMS/DISCORD: user ID or channel ID - WHATSAPP: phone number - WEBHOOK: webhook URL - INAPP: user ID Either `recipient` or `internalUserId` must be provided. */
2336
+ /**
2337
+ * Recipient identifier based on platform:
2338
+ * - EMAIL: email address
2339
+ * - SMS: phone number (E.164 format)
2340
+ * - PUSH: device token
2341
+ * - SLACK/TEAMS/DISCORD: user ID or channel ID
2342
+ * - WHATSAPP: phone number
2343
+ * - WEBHOOK: webhook URL
2344
+ * - INAPP: user ID
2345
+ *
2346
+ * Either `recipient` or `internalUserId` must be provided.
2347
+ */
2222
2348
  recipient?: InputMaybe<Scalars['String']['input']>;
2223
2349
  };
2224
2350
  /** Delivery options for channel delivery */
@@ -2289,7 +2415,10 @@ export declare enum ChannelExportFormat {
2289
2415
  /** JSON-Lines; one row per line (streaming-friendly). */
2290
2416
  Jsonl = "JSONL"
2291
2417
  }
2292
- /** Export job descriptor returned by channel export mutations. Poll `channelExportJob(id:)` until status=COMPLETED, then GET downloadUrl. */
2418
+ /**
2419
+ * Export job descriptor returned by channel export mutations.
2420
+ * Poll `channelExportJob(id:)` until status=COMPLETED, then GET downloadUrl.
2421
+ */
2293
2422
  export type ChannelExportJob = {
2294
2423
  __typename?: 'ChannelExportJob';
2295
2424
  byteSize?: Maybe<Scalars['Int']['output']>;
@@ -2378,11 +2507,54 @@ export type ChannelList = {
2378
2507
  hasMore: Scalars['Boolean']['output'];
2379
2508
  /** List of channels */
2380
2509
  items: Array<Channel>;
2381
- /** Opaque cursor for fetching the next page (base64 last-id with stable id-tiebreaker). Pass via `pagination.cursor` on the next call. Null when no more results. Non-breaking: offset pagination still works for existing clients. */
2510
+ /**
2511
+ * Opaque cursor for fetching the next page (base64 last-id with stable id-tiebreaker).
2512
+ * Pass via `pagination.cursor` on the next call. Null when no more results.
2513
+ * Non-breaking: offset pagination still works for existing clients.
2514
+ */
2382
2515
  nextCursor?: Maybe<Scalars['String']['output']>;
2383
2516
  /** Total count (for pagination) */
2384
2517
  total: Scalars['Int']['output'];
2385
2518
  };
2519
+ /** Organization-level channel settings */
2520
+ export type ChannelOrgSettings = {
2521
+ __typename?: 'ChannelOrgSettings';
2522
+ /** Default priority for new channels (0=lowest … 4=highest) */
2523
+ defaultPriority: Scalars['Int']['output'];
2524
+ /** Persist an audit log entry for every channel operation */
2525
+ enableAuditLogging: Scalars['Boolean']['output'];
2526
+ /** Verify HMAC signatures on all incoming webhooks */
2527
+ enableWebhookVerification: Scalars['Boolean']['output'];
2528
+ /** How often to run scheduled connection health checks (minutes) */
2529
+ healthCheckIntervalMinutes: Scalars['Int']['output'];
2530
+ /** Organization ID these settings belong to */
2531
+ organizationId: Scalars['ID']['output'];
2532
+ /** Global rate limit: maximum messages per hour across all channels */
2533
+ rateLimitPerHour: Scalars['Int']['output'];
2534
+ /** Global rate limit: maximum messages per minute across all channels */
2535
+ rateLimitPerMinute: Scalars['Int']['output'];
2536
+ /** Idle session timeout for the channel UI (minutes) */
2537
+ sessionTimeoutMinutes: Scalars['Int']['output'];
2538
+ /** Last updated timestamp */
2539
+ updatedAt: Scalars['DateTime']['output'];
2540
+ };
2541
+ /** Input for updating organization-level channel settings */
2542
+ export type ChannelOrgSettingsInput = {
2543
+ /** Default priority for new channels (0–4) */
2544
+ defaultPriority?: InputMaybe<Scalars['Int']['input']>;
2545
+ /** Enable audit logging */
2546
+ enableAuditLogging?: InputMaybe<Scalars['Boolean']['input']>;
2547
+ /** Enable webhook signature verification */
2548
+ enableWebhookVerification?: InputMaybe<Scalars['Boolean']['input']>;
2549
+ /** Health check interval in minutes */
2550
+ healthCheckIntervalMinutes?: InputMaybe<Scalars['Int']['input']>;
2551
+ /** Rate limit per hour */
2552
+ rateLimitPerHour?: InputMaybe<Scalars['Int']['input']>;
2553
+ /** Rate limit per minute */
2554
+ rateLimitPerMinute?: InputMaybe<Scalars['Int']['input']>;
2555
+ /** Session timeout in minutes */
2556
+ sessionTimeoutMinutes?: InputMaybe<Scalars['Int']['input']>;
2557
+ };
2386
2558
  export type ChannelPaginationInput = {
2387
2559
  cursor?: InputMaybe<Scalars['String']['input']>;
2388
2560
  limit?: InputMaybe<Scalars['Int']['input']>;
@@ -2483,11 +2655,32 @@ export type ChannelTagAssignment = {
2483
2655
  tag?: Maybe<UniversalTag>;
2484
2656
  tagId: Scalars['ID']['output'];
2485
2657
  };
2486
- /** Channel type discriminator — determines delivery behaviour and webhook handling. NOTIFICATION channels (EMAIL, SMS) are outbound-only: - Support priority-based failover across adapters. - No inbound webhook processing. - No DM conversations. - Recipient resolved via externalEmail (email) or externalUserId (phone). COMMUNICATION channels (SLACK, TEAMS, DISCORD, WHATSAPP, WEBCHAT, INAPP, WEBHOOK) are bi-directional: - Inbound webhooks processed and forwarded to conversations-svc. - DM conversations tracked via dmConversationId. - Recipient resolved via dmConversationId set during OAuth / pairing. */
2658
+ /**
2659
+ * Channel type discriminator — determines delivery behaviour and webhook handling.
2660
+ *
2661
+ * NOTIFICATION channels (EMAIL, SMS) are outbound-only:
2662
+ * - Support priority-based failover across adapters.
2663
+ * - No inbound webhook processing.
2664
+ * - No DM conversations.
2665
+ * - Recipient resolved via externalEmail (email) or externalUserId (phone).
2666
+ *
2667
+ * COMMUNICATION channels (SLACK, TEAMS, DISCORD, WHATSAPP, WEBCHAT, INAPP, WEBHOOK)
2668
+ * are bi-directional:
2669
+ * - Inbound webhooks processed and forwarded to conversations-svc.
2670
+ * - DM conversations tracked via dmConversationId.
2671
+ * - Recipient resolved via dmConversationId set during OAuth / pairing.
2672
+ */
2487
2673
  export declare enum ChannelType {
2488
- /** Bi-directional platform channels: SLACK, TEAMS, DISCORD, WHATSAPP, WEBCHAT, INAPP, WEBHOOK. Processes inbound webhooks and supports DM conversations. */
2674
+ /**
2675
+ * Bi-directional platform channels: SLACK, TEAMS, DISCORD,
2676
+ * WHATSAPP, WEBCHAT, INAPP, WEBHOOK.
2677
+ * Processes inbound webhooks and supports DM conversations.
2678
+ */
2489
2679
  Communication = "COMMUNICATION",
2490
- /** Outbound-only delivery channels: EMAIL, SMS. Supports adapter-level failover (e.g. AWS SES → Azure ACS). */
2680
+ /**
2681
+ * Outbound-only delivery channels: EMAIL, SMS.
2682
+ * Supports adapter-level failover (e.g. AWS SES → Azure ACS).
2683
+ */
2491
2684
  Notification = "NOTIFICATION"
2492
2685
  }
2493
2686
  export type Charge = {
@@ -2607,7 +2800,16 @@ export type ConfigureWorkspaceInput = {
2607
2800
  endpoint?: InputMaybe<Scalars['String']['input']>;
2608
2801
  region?: InputMaybe<Scalars['String']['input']>;
2609
2802
  };
2610
- /** Real-time health status of a channel's connection. Monitored by the system based on API calls and health checks. - `status` = Admin-controlled (ACTIVE, INACTIVE, ARCHIVED) - `connectionHealth` = System-monitored (HEALTHY, DEGRADED, UNHEALTHY) Example: Channel status = ACTIVE but connectionHealth = UNHEALTHY means admin enabled the channel but the API is down. */
2803
+ /**
2804
+ * Real-time health status of a channel's connection.
2805
+ * Monitored by the system based on API calls and health checks.
2806
+ *
2807
+ * - `status` = Admin-controlled (ACTIVE, INACTIVE, ARCHIVED)
2808
+ * - `connectionHealth` = System-monitored (HEALTHY, DEGRADED, UNHEALTHY)
2809
+ *
2810
+ * Example: Channel status = ACTIVE but connectionHealth = UNHEALTHY
2811
+ * means admin enabled the channel but the API is down.
2812
+ */
2611
2813
  export declare enum ConnectionHealth {
2612
2814
  /** Partial failures, high latency, or rate limiting */
2613
2815
  Degraded = "DEGRADED",
@@ -2769,7 +2971,10 @@ export declare enum ContentVisibility {
2769
2971
  Internal = "INTERNAL",
2770
2972
  Public = "PUBLIC"
2771
2973
  }
2772
- /** Context filter input for querying records by context. Supports exact match filtering on context fields. */
2974
+ /**
2975
+ * Context filter input for querying records by context.
2976
+ * Supports exact match filtering on context fields.
2977
+ */
2773
2978
  export type ContextFilterInput = {
2774
2979
  /** Filter by organization ID */
2775
2980
  organizationId?: InputMaybe<Scalars['ID']['input']>;
@@ -2780,7 +2985,10 @@ export type ContextFilterInput = {
2780
2985
  /** Filter by workspace ID */
2781
2986
  workspaceId?: InputMaybe<Scalars['ID']['input']>;
2782
2987
  };
2783
- /** Operation context for filtering and scoping data. All fields are optional and can be extended as needed. */
2988
+ /**
2989
+ * Operation context for filtering and scoping data.
2990
+ * All fields are optional and can be extended as needed.
2991
+ */
2784
2992
  export type ContextInput = {
2785
2993
  /** Additional custom context as JSON */
2786
2994
  custom?: InputMaybe<Scalars['JSON']['input']>;
@@ -3054,7 +3262,12 @@ export type CreateCategoryInput = {
3054
3262
  export type CreateChannelInput = {
3055
3263
  /** Specific adapter type (SENDGRID, AWS_SES, TWILIO, etc.) */
3056
3264
  adapterType?: InputMaybe<AdapterType>;
3057
- /** Channel type: NOTIFICATION (EMAIL/SMS) or COMMUNICATION (SLACK/TEAMS/etc). If omitted, defaults based on platform: EMAIL, SMS → NOTIFICATION All others → COMMUNICATION */
3265
+ /**
3266
+ * Channel type: NOTIFICATION (EMAIL/SMS) or COMMUNICATION (SLACK/TEAMS/etc).
3267
+ * If omitted, defaults based on platform:
3268
+ * EMAIL, SMS → NOTIFICATION
3269
+ * All others → COMMUNICATION
3270
+ */
3058
3271
  channelType?: InputMaybe<ChannelType>;
3059
3272
  /** Operation context for scoping */
3060
3273
  context?: InputMaybe<ContextInput>;
@@ -3068,7 +3281,11 @@ export type CreateChannelInput = {
3068
3281
  platform: ChannelPlatform;
3069
3282
  /** Platform-specific configuration (webhook URLs, etc.) */
3070
3283
  platformConfig?: InputMaybe<Scalars['JSON']['input']>;
3071
- /** Priority for fallback ordering (lower = higher priority). Default is 100. Use 1 for highest priority. All ACTIVE channels are included in the failover chain. */
3284
+ /**
3285
+ * Priority for fallback ordering (lower = higher priority).
3286
+ * Default is 100. Use 1 for highest priority.
3287
+ * All ACTIVE channels are included in the failover chain.
3288
+ */
3072
3289
  priority?: InputMaybe<Scalars['Int']['input']>;
3073
3290
  /** Channel status (default: ACTIVE) */
3074
3291
  status?: InputMaybe<ChannelStatus>;
@@ -3367,6 +3584,8 @@ export type CreateOrganizationInput = {
3367
3584
  logo?: InputMaybe<Scalars['String']['input']>;
3368
3585
  metadata?: InputMaybe<Scalars['JSON']['input']>;
3369
3586
  name: Scalars['String']['input'];
3587
+ /** reCAPTCHA token required when CAPTCHA_ENABLED=true. */
3588
+ recaptchaToken?: InputMaybe<Scalars['String']['input']>;
3370
3589
  settings?: InputMaybe<Scalars['JSON']['input']>;
3371
3590
  slug: Scalars['String']['input'];
3372
3591
  status?: InputMaybe<Scalars['String']['input']>;
@@ -3557,6 +3776,8 @@ export type CreatePublicSupportTicketInput = {
3557
3776
  customFields?: InputMaybe<Scalars['JSON']['input']>;
3558
3777
  description: Scalars['String']['input'];
3559
3778
  metadata?: InputMaybe<Scalars['JSON']['input']>;
3779
+ /** reCAPTCHA token required when CAPTCHA_ENABLED=true. */
3780
+ recaptchaToken?: InputMaybe<Scalars['String']['input']>;
3560
3781
  source?: InputMaybe<TicketSource>;
3561
3782
  subject: Scalars['String']['input'];
3562
3783
  };
@@ -3772,7 +3993,10 @@ export type CreateStoreOrderInput = {
3772
3993
  lineItems: Array<StoreLineItemInput>;
3773
3994
  /** Additional metadata */
3774
3995
  metadata?: InputMaybe<Scalars['JSON']['input']>;
3775
- /** Total product cost (sum of all line items) Note: Currency, tax, and final billing amount calculated by billing service */
3996
+ /**
3997
+ * Total product cost (sum of all line items)
3998
+ * Note: Currency, tax, and final billing amount calculated by billing service
3999
+ */
3776
4000
  total: Scalars['Float']['input'];
3777
4001
  };
3778
4002
  export type CreateSubscriptionInput = {
@@ -3835,6 +4059,8 @@ export type CreateTenantInput = {
3835
4059
  customDomain?: InputMaybe<Scalars['String']['input']>;
3836
4060
  metadata?: InputMaybe<Scalars['JSON']['input']>;
3837
4061
  name: Scalars['String']['input'];
4062
+ /** reCAPTCHA token required when CAPTCHA_ENABLED=true. */
4063
+ recaptchaToken?: InputMaybe<Scalars['String']['input']>;
3838
4064
  slug: Scalars['String']['input'];
3839
4065
  type?: InputMaybe<TenantType>;
3840
4066
  };
@@ -4058,7 +4284,10 @@ export type CreditRate = {
4058
4284
  rateUSD: Scalars['Float']['output'];
4059
4285
  updatedAt: Scalars['DateTime']['output'];
4060
4286
  };
4061
- /** CreditTransaction entity - resolvable via Federation Gateway. Other services (e.g., store-svc) can reference CreditTransaction by id. */
4287
+ /**
4288
+ * CreditTransaction entity - resolvable via Federation Gateway.
4289
+ * Other services (e.g., store-svc) can reference CreditTransaction by id.
4290
+ */
4062
4291
  export type CreditTransaction = {
4063
4292
  __typename?: 'CreditTransaction';
4064
4293
  amount: Scalars['Float']['output'];
@@ -4265,7 +4494,10 @@ export type DeleteUserResult = {
4265
4494
  message: Scalars['String']['output'];
4266
4495
  success: Scalars['Boolean']['output'];
4267
4496
  };
4268
- /** Paginated list of delivery attempts with cursor support. Pass `nextCursor` from a previous response as `cursor` in the next call. */
4497
+ /**
4498
+ * Paginated list of delivery attempts with cursor support.
4499
+ * Pass `nextCursor` from a previous response as `cursor` in the next call.
4500
+ */
4269
4501
  export type DeliveryAttemptList = {
4270
4502
  __typename?: 'DeliveryAttemptList';
4271
4503
  hasMore: Scalars['Boolean']['output'];
@@ -4784,13 +5016,22 @@ export declare enum DevportalExportFormat {
4784
5016
  /** JSON-Lines; one row per line (good for streaming consumers). */
4785
5017
  Jsonl = "JSONL"
4786
5018
  }
4787
- /** Export job descriptor returned from any of the entity-specific export mutations. For small exports the job typically transitions to COMPLETED synchronously (within the request); larger exports may return CREATED and require the caller to poll `devportalExportJob(id:)`. */
5019
+ /**
5020
+ * Export job descriptor returned from any of the entity-specific export
5021
+ * mutations. For small exports the job typically transitions to COMPLETED
5022
+ * synchronously (within the request); larger exports may return CREATED and
5023
+ * require the caller to poll `devportalExportJob(id:)`.
5024
+ */
4788
5025
  export type DevportalExportJob = {
4789
5026
  __typename?: 'DevportalExportJob';
4790
5027
  byteSize?: Maybe<Scalars['Int']['output']>;
4791
5028
  completedAt?: Maybe<Scalars['DateTime']['output']>;
4792
5029
  createdAt: Scalars['DateTime']['output'];
4793
- /** Stable URL the caller can GET to retrieve the full payload. Today this is a presigned-style URL hosted by devportal-svc itself; once the platform S3 wiring lands it will be a true presigned S3 URL with TTL. */
5030
+ /**
5031
+ * Stable URL the caller can GET to retrieve the full payload. Today this is
5032
+ * a presigned-style URL hosted by devportal-svc itself; once the platform
5033
+ * S3 wiring lands it will be a true presigned S3 URL with TTL.
5034
+ */
4794
5035
  downloadUrl?: Maybe<Scalars['String']['output']>;
4795
5036
  /** ISO timestamp when downloadUrl expires (24h default). */
4796
5037
  downloadUrlExpiresAt?: Maybe<Scalars['DateTime']['output']>;
@@ -4920,9 +5161,16 @@ export type EffectivePermissions = {
4920
5161
  actorId: Scalars['String']['output'];
4921
5162
  /** Cache key for debugging and invalidation */
4922
5163
  cacheKey?: Maybe<Scalars['String']['output']>;
4923
- /** When this permission set should be considered stale. Frontend should refresh after this time. */
5164
+ /**
5165
+ * When this permission set should be considered stale.
5166
+ * Frontend should refresh after this time.
5167
+ */
4924
5168
  expiresAt: Scalars['DateTime']['output'];
4925
- /** Flat permission strings for easy frontend matching. Format: "{resourceType}:{action}" e.g., ["project:read", "project:write", "task:*"] Includes wildcards for ADMIN level (e.g., "project:*") */
5169
+ /**
5170
+ * Flat permission strings for easy frontend matching.
5171
+ * Format: "{resourceType}:{action}" e.g., ["project:read", "project:write", "task:*"]
5172
+ * Includes wildcards for ADMIN level (e.g., "project:*")
5173
+ */
4926
5174
  permissionStrings: Array<Scalars['String']['output']>;
4927
5175
  /** Resource types and their effective levels */
4928
5176
  permissions: Array<EffectiveResourcePermission>;
@@ -5227,7 +5475,10 @@ export type FailedBillingOrderCallbacksResponse = {
5227
5475
  orders: Array<BillingOrder>;
5228
5476
  totalCount: Scalars['Int']['output'];
5229
5477
  };
5230
- /** Platform-wide feature flag definition. Managed by super admins. Can be scoped to a product and category. */
5478
+ /**
5479
+ * Platform-wide feature flag definition.
5480
+ * Managed by super admins. Can be scoped to a product and category.
5481
+ */
5231
5482
  export type FeatureFlag = {
5232
5483
  __typename?: 'FeatureFlag';
5233
5484
  category?: Maybe<Scalars['String']['output']>;
@@ -5255,7 +5506,10 @@ export type FeatureFlagBulkEvaluation = {
5255
5506
  __typename?: 'FeatureFlagBulkEvaluation';
5256
5507
  evaluations: Array<FeatureFlagEvaluation>;
5257
5508
  };
5258
- /** Result of evaluating a single feature flag for a specific context. Compatible with OpenFeature ResolutionDetails. */
5509
+ /**
5510
+ * Result of evaluating a single feature flag for a specific context.
5511
+ * Compatible with OpenFeature ResolutionDetails.
5512
+ */
5259
5513
  export type FeatureFlagEvaluation = {
5260
5514
  __typename?: 'FeatureFlagEvaluation';
5261
5515
  errorCode?: Maybe<Scalars['String']['output']>;
@@ -5358,6 +5612,7 @@ export type GenerateApiKeyInput = {
5358
5612
  appId: Scalars['String']['input'];
5359
5613
  expiresAt?: InputMaybe<Scalars['String']['input']>;
5360
5614
  name: Scalars['String']['input'];
5615
+ recaptchaToken?: InputMaybe<Scalars['String']['input']>;
5361
5616
  scope: Array<Scalars['String']['input']>;
5362
5617
  };
5363
5618
  export type GenerateAppAsUserTokenInput = {
@@ -5400,7 +5655,10 @@ export type GetStoreProductTagsInput = {
5400
5655
  };
5401
5656
  export type GrantAppWorkspaceAccessInput = {
5402
5657
  appId: Scalars['ID']['input'];
5403
- /** Optional subset of the app's global scopes. Empty array means the authorization inherits the app's full scope list. */
5658
+ /**
5659
+ * Optional subset of the app's global scopes. Empty array means the
5660
+ * authorization inherits the app's full scope list.
5661
+ */
5404
5662
  scopes?: InputMaybe<Array<Scalars['String']['input']>>;
5405
5663
  tenantId: Scalars['ID']['input'];
5406
5664
  workspaceId: Scalars['ID']['input'];
@@ -5431,13 +5689,31 @@ export type GrantDelegationInput = {
5431
5689
  userId?: InputMaybe<Scalars['String']['input']>;
5432
5690
  workspaceIds?: InputMaybe<Array<Scalars['String']['input']>>;
5433
5691
  };
5434
- /** GraphQL callback configuration for external service notifications Supports two authentication methods (controlled by CALLBACK_AUTH_METHOD env var): 1. token (default): Direct HTTP with authToken 2. internal-gateway: Service credentials via internal gateway */
5692
+ /**
5693
+ * GraphQL callback configuration for external service notifications
5694
+ * Supports two authentication methods (controlled by CALLBACK_AUTH_METHOD env var):
5695
+ * 1. token (default): Direct HTTP with authToken
5696
+ * 2. internal-gateway: Service credentials via internal gateway
5697
+ */
5435
5698
  export type GraphQlCallbackInput = {
5436
- /** Authentication token for callback (optional) Required only when CALLBACK_AUTH_METHOD=token (default) Not needed when CALLBACK_AUTH_METHOD=internal-gateway Example: Bearer store-service-webhook-secret-xyz */
5699
+ /**
5700
+ * Authentication token for callback (optional)
5701
+ * Required only when CALLBACK_AUTH_METHOD=token (default)
5702
+ * Not needed when CALLBACK_AUTH_METHOD=internal-gateway
5703
+ * Example: Bearer store-service-webhook-secret-xyz
5704
+ */
5437
5705
  authToken?: InputMaybe<Scalars['String']['input']>;
5438
- /** GraphQL endpoint URL of the external service Must be HTTPS and match BILLING_CALLBACK_ALLOWED_ENDPOINTS/HOSTS/SUFFIXES. Localhost is allowed only outside production for local development. Example: https://graphqlworkspaces.burdenoff.com/workspaces/graphql */
5706
+ /**
5707
+ * GraphQL endpoint URL of the external service
5708
+ * Must be HTTPS and match BILLING_CALLBACK_ALLOWED_ENDPOINTS/HOSTS/SUFFIXES.
5709
+ * Localhost is allowed only outside production for local development.
5710
+ * Example: https://graphqlworkspaces.burdenoff.com/workspaces/graphql
5711
+ */
5439
5712
  endpoint: Scalars['String']['input'];
5440
- /** Name of the GraphQL mutation to call on payment completion Example: updateOrderPaymentStatus */
5713
+ /**
5714
+ * Name of the GraphQL mutation to call on payment completion
5715
+ * Example: updateOrderPaymentStatus
5716
+ */
5441
5717
  mutationName: Scalars['String']['input'];
5442
5718
  };
5443
5719
  export type Group = {
@@ -5687,7 +5963,10 @@ export type InitiatePaymentInput = {
5687
5963
  amount: Scalars['Float']['input'];
5688
5964
  /** For PLAN purchase: enable automatic renewal when subscription expires */
5689
5965
  autoRenew?: InputMaybe<Scalars['Boolean']['input']>;
5690
- /** For PLAN purchase with autoRenew: payment method ID to use for auto-renewal Must be a verified saved payment method. Required if autoRenew is true. */
5966
+ /**
5967
+ * For PLAN purchase with autoRenew: payment method ID to use for auto-renewal
5968
+ * Must be a verified saved payment method. Required if autoRenew is true.
5969
+ */
5691
5970
  autoRenewPaymentMethodId?: InputMaybe<Scalars['ID']['input']>;
5692
5971
  /** Billing account ID (required for tax calculation) */
5693
5972
  billingAccountId: Scalars['ID']['input'];
@@ -5695,7 +5974,11 @@ export type InitiatePaymentInput = {
5695
5974
  creditAmount?: InputMaybe<Scalars['Int']['input']>;
5696
5975
  /** Currency code (e.g., INR, USD) */
5697
5976
  currency: Scalars['String']['input'];
5698
- /** For PLAN downgrade: the active higher-tier subscription ID being replaced. Old subscription is left active until natural expiry — no cancellation, no refund. User retains old plan quotas during overlap; continues on new plan after expiry. */
5977
+ /**
5978
+ * For PLAN downgrade: the active higher-tier subscription ID being replaced.
5979
+ * Old subscription is left active until natural expiry — no cancellation, no refund.
5980
+ * User retains old plan quotas during overlap; continues on new plan after expiry.
5981
+ */
5699
5982
  downgradeFromSubscriptionId?: InputMaybe<Scalars['ID']['input']>;
5700
5983
  /** For PLAN purchase: whether this is an annual subscription (12 months with discount) */
5701
5984
  isAnnual?: InputMaybe<Scalars['Boolean']['input']>;
@@ -5721,9 +6004,16 @@ export type InitiatePaymentInput = {
5721
6004
  quantity?: InputMaybe<Scalars['Int']['input']>;
5722
6005
  /** Whether to save the card for future purchases (only for new card payments) */
5723
6006
  saveCard?: InputMaybe<Scalars['Boolean']['input']>;
5724
- /** For ADDON purchase: subscription ID to attach addon to. Required if billing account has multiple active subscriptions. If only one active subscription exists, it will be auto-selected. */
6007
+ /**
6008
+ * For ADDON purchase: subscription ID to attach addon to.
6009
+ * Required if billing account has multiple active subscriptions.
6010
+ * If only one active subscription exists, it will be auto-selected.
6011
+ */
5725
6012
  subscriptionId?: InputMaybe<Scalars['ID']['input']>;
5726
- /** For PLAN upgrade: the subscription ID being upgraded from. If provided, this is an upgrade - old quotas will be moved to new subscription. */
6013
+ /**
6014
+ * For PLAN upgrade: the subscription ID being upgraded from.
6015
+ * If provided, this is an upgrade - old quotas will be moved to new subscription.
6016
+ */
5727
6017
  upgradeFromSubscriptionId?: InputMaybe<Scalars['ID']['input']>;
5728
6018
  };
5729
6019
  /** Response from initiatePayment mutation */
@@ -6102,7 +6392,10 @@ export type KerberosConfigInput = {
6102
6392
  realm: Scalars['String']['input'];
6103
6393
  servicePrincipal: Scalars['String']['input'];
6104
6394
  };
6105
- /** KeyboardShortcut entity - defines a keyboard shortcut action. Shortcuts can be global (all products) or product-specific. */
6395
+ /**
6396
+ * KeyboardShortcut entity - defines a keyboard shortcut action.
6397
+ * Shortcuts can be global (all products) or product-specific.
6398
+ */
6106
6399
  export type KeyboardShortcut = {
6107
6400
  __typename?: 'KeyboardShortcut';
6108
6401
  /** Category for grouping (e.g., "Navigation", "Actions", "UI", "Help") */
@@ -6403,6 +6696,13 @@ export type MfaMethodStatus = {
6403
6696
  status: Scalars['String']['output'];
6404
6697
  updatedAt: Scalars['DateTime']['output'];
6405
6698
  };
6699
+ /** Paginated list of MFA method statuses */
6700
+ export type MfaMethodStatusConnection = {
6701
+ __typename?: 'MFAMethodStatusConnection';
6702
+ hasMore: Scalars['Boolean']['output'];
6703
+ methods: Array<MfaMethodStatus>;
6704
+ totalCount: Scalars['Int']['output'];
6705
+ };
6406
6706
  export type MfaSetupResult = {
6407
6707
  __typename?: 'MFASetupResult';
6408
6708
  backupCodes?: Maybe<Array<Scalars['String']['output']>>;
@@ -6445,7 +6745,10 @@ export type MessageAttachmentInput = {
6445
6745
  /** Attachment URL */
6446
6746
  url: Scalars['String']['input'];
6447
6747
  };
6448
- /** MessageDeliveryAttempt represents a single delivery attempt (transient, 7-day TTL) Used for debugging and monitoring only */
6748
+ /**
6749
+ * MessageDeliveryAttempt represents a single delivery attempt (transient, 7-day TTL)
6750
+ * Used for debugging and monitoring only
6751
+ */
6449
6752
  export type MessageDeliveryAttempt = {
6450
6753
  __typename?: 'MessageDeliveryAttempt';
6451
6754
  /** Associated channel */
@@ -6519,7 +6822,10 @@ export type MonthlyEarning = {
6519
6822
  orders: Scalars['Int']['output'];
6520
6823
  year: Scalars['Int']['output'];
6521
6824
  };
6522
- /** Input for delivering a notification across multiple platforms and recipients simultaneously. The service fans out per-platform in parallel with independent failover per platform. */
6825
+ /**
6826
+ * Input for delivering a notification across multiple platforms and recipients simultaneously.
6827
+ * The service fans out per-platform in parallel with independent failover per platform.
6828
+ */
6523
6829
  export type MultiPlatformDeliveryInput = {
6524
6830
  /** Notification content (same content sent to all platforms/recipients) */
6525
6831
  content: ChannelDeliveryContentInput;
@@ -6548,7 +6854,10 @@ export type MultiPlatformDeliveryResult = {
6548
6854
  /** Total number of recipients across all platforms */
6549
6855
  totalRecipients: Scalars['Int']['output'];
6550
6856
  };
6551
- /** Per-recipient addresses for multi-platform delivery. Populate the field that matches each target platform. */
6857
+ /**
6858
+ * Per-recipient addresses for multi-platform delivery.
6859
+ * Populate the field that matches each target platform.
6860
+ */
6552
6861
  export type MultiPlatformRecipientInput = {
6553
6862
  /** Email address (for EMAIL platform) */
6554
6863
  email?: InputMaybe<Scalars['String']['input']>;
@@ -6570,9 +6879,15 @@ export type MultiPlatformRecipientInput = {
6570
6879
  /** Root mutation type */
6571
6880
  export type Mutation = {
6572
6881
  __typename?: 'Mutation';
6573
- /** Placeholder field to allow empty Mutation type extension. Must be @shareable since it exists in multiple subgraphs. */
6882
+ /**
6883
+ * Placeholder field to allow empty Mutation type extension.
6884
+ * Must be @shareable since it exists in multiple subgraphs.
6885
+ */
6574
6886
  _empty?: Maybe<Scalars['String']['output']>;
6575
- /** Placeholder mutation (extended by modules) @rbac(public: true, scopeType: "global") */
6887
+ /**
6888
+ * Placeholder mutation (extended by modules)
6889
+ * @rbac(public: true, scopeType: "global")
6890
+ */
6576
6891
  _placeholder?: Maybe<Scalars['String']['output']>;
6577
6892
  _privacyEcho?: Maybe<Scalars['String']['output']>;
6578
6893
  /** Accept an organization invitation */
@@ -6608,7 +6923,11 @@ export type Mutation = {
6608
6923
  addReleaseTesters: Array<ReleaseTrackUser>;
6609
6924
  addSubscribersToList: NewsletterList;
6610
6925
  addSuppression: NewsletterSuppression;
6611
- /** Bind a tag to an Application. The tag must already exist in wspace-tags-svc. Currently a stub-adapter no-op until the global-layer integration with wspace-tags-svc lands (see tracker). */
6926
+ /**
6927
+ * Bind a tag to an Application. The tag must already exist in wspace-tags-svc.
6928
+ * Currently a stub-adapter no-op until the global-layer integration with
6929
+ * wspace-tags-svc lands (see tracker).
6930
+ */
6612
6931
  addTagToApplication: ApplicationTagAssignment;
6613
6932
  addTicketTags: SupportTicket;
6614
6933
  /** Add an item to the cart (creates cart if needed) */
@@ -6636,7 +6955,10 @@ export type Mutation = {
6636
6955
  approveReview: ProductReview;
6637
6956
  approveTranslation: Translation;
6638
6957
  approveWaitlist: NewsletterWaitlist;
6639
- /** Soft archive a billing account. Financial history is preserved and the account is removed from active billing operations. */
6958
+ /**
6959
+ * Soft archive a billing account. Financial history is preserved and the account is removed
6960
+ * from active billing operations.
6961
+ */
6640
6962
  archiveBillingAccount: BillingAccount;
6641
6963
  /** Archive a channel */
6642
6964
  archiveChannel: Channel;
@@ -6651,18 +6973,36 @@ export type Mutation = {
6651
6973
  archiveTour: Tour;
6652
6974
  /** Archive a workspace */
6653
6975
  archiveWorkspace: Workspace;
6654
- /** Assign the "Authenticated User" role to a user at the global scope. This should be called when a new user signs up to give them basic platform access. This mutation is idempotent - calling it multiple times for the same user is safe. SECURITY: This mutation is restricted to service and super_admin actors only. It should be called by global-auth-svc when a user signs up, not directly by users. */
6976
+ /**
6977
+ * Assign the "Authenticated User" role to a user at the global scope.
6978
+ * This should be called when a new user signs up to give them basic platform access.
6979
+ * This mutation is idempotent - calling it multiple times for the same user is safe.
6980
+ *
6981
+ * SECURITY: This mutation is restricted to service and super_admin actors only.
6982
+ * It should be called by global-auth-svc when a user signs up, not directly by users.
6983
+ */
6655
6984
  assignAuthenticatedUserRole: AssignAuthenticatedUserRoleResult;
6656
6985
  assignEntitlementSeat: ProductEntitlement;
6657
6986
  /** Assign a role to an actor */
6658
6987
  assignRoleToActor: ActorRoleAssignment;
6659
6988
  assignSeat: LicenseSeat;
6660
6989
  assignSupportTicket: SupportTicket;
6990
+ /** Assign a tag to a user */
6991
+ assignTagToUser: UserTagAssignment;
6661
6992
  /** Attach media to a tour step */
6662
6993
  attachMediaToStep: TourStepMedia;
6663
- /** Erase the subject's auth-layer data. With dryRun=true, returns counts without mutating. Sessions and refresh tokens are always purged; the User row is anonymised (email/name nulled, status=DEACTIVATED) rather than deleted to preserve referential integrity for audit logs. */
6994
+ /**
6995
+ * Erase the subject's auth-layer data. With dryRun=true, returns counts
6996
+ * without mutating. Sessions and refresh tokens are always purged; the
6997
+ * User row is anonymised (email/name nulled, status=DEACTIVATED) rather
6998
+ * than deleted to preserve referential integrity for audit logs.
6999
+ */
6664
7000
  authEraseSubject: AuthEraseResult;
6665
- /** Export the subject's auth-layer data (account, sessions, MFA settings, OAuth accounts, app delegations, audit log entries owned by the user). Idempotent — repeated calls return identical bundles. */
7001
+ /**
7002
+ * Export the subject's auth-layer data (account, sessions, MFA settings,
7003
+ * OAuth accounts, app delegations, audit log entries owned by the user).
7004
+ * Idempotent — repeated calls return identical bundles.
7005
+ */
6666
7006
  authExportSubject: Scalars['JSON']['output'];
6667
7007
  authenticate: AuthResult;
6668
7008
  authenticateAPIKey: AuthResult;
@@ -6697,7 +7037,10 @@ export type Mutation = {
6697
7037
  bulkDeleteActivityLogs: Scalars['Int']['output'];
6698
7038
  bulkPauseSchedules: SchedulerBulkOperationResult;
6699
7039
  bulkResumeSchedules: SchedulerBulkOperationResult;
6700
- /** Bulk set user's opt-in/out preference for multiple feature flags. RBAC is scoped to the target workspace via `input.workspaceId`. */
7040
+ /**
7041
+ * Bulk set user's opt-in/out preference for multiple feature flags.
7042
+ * RBAC is scoped to the target workspace via `input.workspaceId`.
7043
+ */
6701
7044
  bulkSetUserFeatureFlagPreferences: Array<UserFeatureFlagPreference>;
6702
7045
  bulkUpdateSchedules: SchedulerBulkOperationResult;
6703
7046
  bulkUpdateTranslations: BulkOperationResult;
@@ -6716,12 +7059,24 @@ export type Mutation = {
6716
7059
  cancelPayout: DeveloperOrgPayout;
6717
7060
  /** Cancel a scheduled notification */
6718
7061
  cancelScheduledNotification: Scalars['Boolean']['output'];
6719
- /** Cancel a subscription - disables auto-renewal but keeps subscription active until endDate. The subscription will not renew when it expires. */
7062
+ /**
7063
+ * Cancel a subscription - disables auto-renewal but keeps subscription active until endDate.
7064
+ * The subscription will not renew when it expires.
7065
+ */
6720
7066
  cancelSubscription: BillingSubscription;
6721
7067
  changePassword: Scalars['Boolean']['output'];
6722
- /** Erase channel-layer subject data. With dryRun=true returns counts. Per-user platform connections are PURGED (OAuth tokens etc). Delivery / webhook / suppression rows are anonymised but retained for spam-complaint / abuse forensics (`retainedForLegalReason: "abuse-2yr"`). */
7068
+ /**
7069
+ * Erase channel-layer subject data. With dryRun=true returns counts.
7070
+ * Per-user platform connections are PURGED (OAuth tokens etc).
7071
+ * Delivery / webhook / suppression rows are anonymised but retained for
7072
+ * spam-complaint / abuse forensics (`retainedForLegalReason: "abuse-2yr"`).
7073
+ */
6723
7074
  channelEraseSubject: ChannelEraseResult;
6724
- /** Export the subject's channel-layer data: per-user platform connections, delivery attempts addressed to the subject, webhook events, and any channel rows the subject created. */
7075
+ /**
7076
+ * Export the subject's channel-layer data: per-user platform connections,
7077
+ * delivery attempts addressed to the subject, webhook events, and any
7078
+ * channel rows the subject created.
7079
+ */
6725
7080
  channelExportSubject: Scalars['JSON']['output'];
6726
7081
  /** Check push MFA challenge status (polling) */
6727
7082
  checkPushMFAStatus: PushMfaStatus;
@@ -6762,7 +7117,10 @@ export type Mutation = {
6762
7117
  createAutomationStep: AutomationStep;
6763
7118
  /** Create a new billing account for the current org (from context) */
6764
7119
  createBillingAccount: BillingAccount;
6765
- /** Create a billing order for external service (e.g., store) Stores order details + GraphQL callback endpoint for payment notifications */
7120
+ /**
7121
+ * Create a billing order for external service (e.g., store)
7122
+ * Stores order details + GraphQL callback endpoint for payment notifications
7123
+ */
6766
7124
  createBillingOrder: CreateBillingOrderResponse;
6767
7125
  createCampaign: NewsletterCampaign;
6768
7126
  createCannedResponse: CannedResponse;
@@ -6828,7 +7186,10 @@ export type Mutation = {
6828
7186
  createProduct: StoreProduct;
6829
7187
  createProductEntitlement: ProductEntitlement;
6830
7188
  createPromoCode: PromoCode;
6831
- /** Create a support ticket from a public/unauthenticated source (e.g. website contact form). Does not require authentication. */
7189
+ /**
7190
+ * Create a support ticket from a public/unauthenticated source (e.g. website contact form).
7191
+ * Does not require authentication.
7192
+ */
6832
7193
  createPublicSupportTicket: SupportTicket;
6833
7194
  createQuota: Scalars['Boolean']['output'];
6834
7195
  createRecurringBillingPlan: RecurringBillingPlan;
@@ -6879,9 +7240,15 @@ export type Mutation = {
6879
7240
  createTourTemplate: TourTemplate;
6880
7241
  createTranslation: Translation;
6881
7242
  createTranslationKey: TranslationKey;
6882
- /** Create complete tenant structure for a new user (tenant, org, workspace) This is typically called after user email verification */
7243
+ /**
7244
+ * Create complete tenant structure for a new user (tenant, org, workspace)
7245
+ * This is typically called after user email verification
7246
+ */
6883
7247
  createUserTenantStructure: CreateUserTenantStructureResponse;
6884
- /** Create a visibility rule for a resource. Auto-registers the resource if not already registered. */
7248
+ /**
7249
+ * Create a visibility rule for a resource.
7250
+ * Auto-registers the resource if not already registered.
7251
+ */
6885
7252
  createVisibilityRule: VisibilityRule;
6886
7253
  createWebhook: Webhook;
6887
7254
  /** Create a new workspace */
@@ -6903,13 +7270,21 @@ export type Mutation = {
6903
7270
  deactivateResource: Scalars['Boolean']['output'];
6904
7271
  /** Deactivate a tour schedule */
6905
7272
  deactivateTourSchedule: TourSchedule;
6906
- /** Pure quota decrement — called by wspace-activity-svc after writing a UsageRecord. Only decrements QuotaAssignment.limits.value. Does NOT write back to activity-svc. Requires the quotaAssignmentId already resolved by checkQuotaExhausted. */
7273
+ /**
7274
+ * Pure quota decrement — called by wspace-activity-svc after writing a UsageRecord.
7275
+ * Only decrements QuotaAssignment.limits.value. Does NOT write back to activity-svc.
7276
+ * Requires the quotaAssignmentId already resolved by checkQuotaExhausted.
7277
+ */
6907
7278
  decrementQuota: Scalars['Boolean']['output'];
6908
- /** Delete current user's account permanently Requires password confirmation */
7279
+ /**
7280
+ * Delete current user's account permanently
7281
+ * Requires password confirmation
7282
+ */
6909
7283
  deleteAccount: AccountActionResult;
6910
7284
  deleteActivityLog: Scalars['Boolean']['output'];
6911
7285
  deleteAffiliateCode: Scalars['Boolean']['output'];
6912
7286
  deleteAgentProfile: Scalars['Boolean']['output'];
7287
+ deleteApp: AccountActionResult;
6913
7288
  /** Delete an app collection */
6914
7289
  deleteAppCollection: Scalars['Boolean']['output'];
6915
7290
  /** Delete a review */
@@ -6932,7 +7307,10 @@ export type Mutation = {
6932
7307
  deleteDiscount: Scalars['Boolean']['output'];
6933
7308
  /** Delete an entitlement */
6934
7309
  deleteEntitlement: Scalars['Boolean']['output'];
6935
- /** Delete external OIDC configuration Admin only */
7310
+ /**
7311
+ * Delete external OIDC configuration
7312
+ * Admin only
7313
+ */
6936
7314
  deleteExternalOIDCConfig: AccountActionResult;
6937
7315
  deleteFAQ: Scalars['Boolean']['output'];
6938
7316
  /** Delete a feature flag (super admin only) */
@@ -7023,11 +7401,21 @@ export type Mutation = {
7023
7401
  /** Soft-delete a user platform connection */
7024
7402
  deleteUserPlatformConnection: Scalars['Boolean']['output'];
7025
7403
  deleteWebhook: Scalars['Boolean']['output'];
7026
- /** Deliver the same notification to multiple recipients in bulk. More efficient than multiple single calls for broadcast scenarios. */
7404
+ /**
7405
+ * Deliver the same notification to multiple recipients in bulk.
7406
+ * More efficient than multiple single calls for broadcast scenarios.
7407
+ */
7027
7408
  deliverBulkNotification: BulkChannelDeliveryResult;
7028
- /** Deliver a notification across multiple platforms and multiple recipients in one call. Fans out per-platform in parallel (Promise.allSettled) with independent failover per platform. Adapters that natively support multi-recipient (SES, ACS) send one API call; others loop concurrently. */
7409
+ /**
7410
+ * Deliver a notification across multiple platforms and multiple recipients in one call.
7411
+ * Fans out per-platform in parallel (Promise.allSettled) with independent failover per platform.
7412
+ * Adapters that natively support multi-recipient (SES, ACS) send one API call; others loop concurrently.
7413
+ */
7029
7414
  deliverMultiPlatformNotification: MultiPlatformDeliveryResult;
7030
- /** Deliver a notification to a single recipient via Channel service. Called by global-notification-svc to deliver through platform adapters. */
7415
+ /**
7416
+ * Deliver a notification to a single recipient via Channel service.
7417
+ * Called by global-notification-svc to deliver through platform adapters.
7418
+ */
7031
7419
  deliverNotification: ChannelDeliveryResult;
7032
7420
  deprecateApplicationVersion: ApplicationVersion;
7033
7421
  deprecateProduct: StoreProduct;
@@ -7049,7 +7437,11 @@ export type Mutation = {
7049
7437
  enableMFA: Scalars['Boolean']['output'];
7050
7438
  enableMaintenanceMode: MaintenanceModeStatus;
7051
7439
  enrollSubscriberInAutomation: AutomationSubscriber;
7052
- /** Anonymise the subject on the billing layer. With dryRun=true, returns what would change without mutating. Financial records (Transaction, Invoice, Payment) are RETAINED for the statutory 7-year window. */
7440
+ /**
7441
+ * Anonymise the subject on the billing layer. With dryRun=true, returns
7442
+ * what would change without mutating. Financial records (Transaction,
7443
+ * Invoice, Payment) are RETAINED for the statutory 7-year window.
7444
+ */
7053
7445
  eraseSubject: EraseResult;
7054
7446
  escalateSupportTicket: SupportTicket;
7055
7447
  /** Exchange app token for app-as-user token (Token Exchange flow) */
@@ -7069,7 +7461,11 @@ export type Mutation = {
7069
7461
  exportDeveloperOrganizations: DevportalExportJob;
7070
7462
  /** Export per-organization revenue rows matching the optional filter. */
7071
7463
  exportRevenue: DevportalExportJob;
7072
- /** Export the subject's billing-layer data (billing accounts, subscriptions, invoices, payment methods on file, transaction history, credits, usage). Idempotent. */
7464
+ /**
7465
+ * Export the subject's billing-layer data (billing accounts, subscriptions,
7466
+ * invoices, payment methods on file, transaction history, credits, usage).
7467
+ * Idempotent.
7468
+ */
7073
7469
  exportSubject: Scalars['JSON']['output'];
7074
7470
  /** Export webhook event records matching the filter. */
7075
7471
  exportWebhookEvents: ChannelExportJob;
@@ -7086,7 +7482,10 @@ export type Mutation = {
7086
7482
  generateHMACSecret: HmacCredentialResult;
7087
7483
  /** Generate an invoice for a subscription */
7088
7484
  generateInvoice: Invoice;
7089
- /** Generate OIDC authorization URL for SSO login Returns URL to redirect user to the IdP */
7485
+ /**
7486
+ * Generate OIDC authorization URL for SSO login
7487
+ * Returns URL to redirect user to the IdP
7488
+ */
7090
7489
  generateOIDCAuthUrl: OidcAuthUrlResult;
7091
7490
  /** Generate passkey authentication options (for login) */
7092
7491
  generatePasskeyAuthenticationOptions: PasskeyAuthenticationOptions;
@@ -7101,7 +7500,11 @@ export type Mutation = {
7101
7500
  /** Generate challenge message for wallet signature */
7102
7501
  generateWalletChallenge: WalletChallengeResult;
7103
7502
  getSupportAttachmentPartUploadUrls: Array<SupportAttachmentPresignedPart>;
7104
- /** Grant an app access to act on a specific workspace. Idempotent: re-granting an ACTIVE authorization updates its scopes; re-granting a REVOKED one flips it back to ACTIVE and clears the revoke fields. */
7503
+ /**
7504
+ * Grant an app access to act on a specific workspace. Idempotent: re-granting
7505
+ * an ACTIVE authorization updates its scopes; re-granting a REVOKED one flips
7506
+ * it back to ACTIVE and clears the revoke fields.
7507
+ */
7105
7508
  grantAppWorkspaceAccess: AppWorkspaceAuthorization;
7106
7509
  grantConsent: ConsentRecord;
7107
7510
  grantCredits: CreditTransaction;
@@ -7115,29 +7518,63 @@ export type Mutation = {
7115
7518
  /** Mark webhook as ignored */
7116
7519
  ignoreWebhook: Scalars['Boolean']['output'];
7117
7520
  importSubscribers: ImportSubscribersResult;
7118
- /** Initialize billing roles for a billing account by cloning billing role templates. Use this when a new billing account is created. Returns the number of roles created (0 if roles already exist). */
7521
+ /**
7522
+ * Initialize billing roles for a billing account by cloning billing role templates.
7523
+ * Use this when a new billing account is created.
7524
+ *
7525
+ * Returns the number of roles created (0 if roles already exist).
7526
+ */
7119
7527
  initializeBillingRoles: InitializeBillingRolesResult;
7120
- /** Initialize organization roles by cloning organization role templates. Use this when a new organization is created. The creator will be assigned the Owner role. Returns the number of roles created (0 if roles already exist). SECURITY: This mutation is restricted to service and super_admin actors only. It should be called by global-tenant-svc when an organization is created, not directly by users. */
7528
+ /**
7529
+ * Initialize organization roles by cloning organization role templates.
7530
+ * Use this when a new organization is created. The creator will be assigned the Owner role.
7531
+ *
7532
+ * Returns the number of roles created (0 if roles already exist).
7533
+ *
7534
+ * SECURITY: This mutation is restricted to service and super_admin actors only.
7535
+ * It should be called by global-tenant-svc when an organization is created, not directly by users.
7536
+ */
7121
7537
  initializeOrganizationRoles: InitializeOrganizationRolesResult;
7122
7538
  /** Initiate Kerberos SPNEGO authentication */
7123
7539
  initiateKerberosAuth: KerberosChallengeResult;
7124
7540
  /** Initiate NTLM authentication (returns Type 2 challenge) */
7125
7541
  initiateNTLMChallenge: NtlmChallengeResult;
7126
- /** Initiate a payment for credits, plans, or addons This creates a Stripe PaymentIntent or Razorpay Order with tax included Returns client secret (Stripe) or order ID (Razorpay) for frontend to complete payment */
7542
+ /**
7543
+ * Initiate a payment for credits, plans, or addons
7544
+ * This creates a Stripe PaymentIntent or Razorpay Order with tax included
7545
+ * Returns client secret (Stripe) or order ID (Razorpay) for frontend to complete payment
7546
+ */
7127
7547
  initiatePayment: InitiatePaymentResponse;
7128
7548
  /** Install an application */
7129
7549
  installApp: AppInstallation;
7130
- /** Install a purchased app to a workspace. Validates that the product was purchased before allowing installation. If orderId is not provided, will find the most recent processed order for this product. */
7550
+ /**
7551
+ * Install a purchased app to a workspace.
7552
+ * Validates that the product was purchased before allowing installation.
7553
+ * If orderId is not provided, will find the most recent processed order for this product.
7554
+ */
7131
7555
  installPurchasedApp: InstallPurchasedAppResult;
7132
7556
  /** Invite a user to join an organization */
7133
7557
  inviteDeveloperOrgMember: DeveloperOrgInvitation;
7134
7558
  /** Invite a user to an organization by email */
7135
7559
  inviteOrganizationMember: OrganizationInvite;
7136
- /** Public endpoint — no authentication required. Email is normalized (trimmed, lowercased). Must be protected by API gateway rate limiting (recommended: 5 req/min per IP). */
7560
+ /**
7561
+ * Public endpoint — no authentication required. Email is normalized (trimmed, lowercased).
7562
+ * Must be protected by API gateway rate limiting (recommended: 5 req/min per IP).
7563
+ */
7137
7564
  joinWaitlist: NewsletterWaitlist;
7138
7565
  /** Leave an organization */
7139
7566
  leaveDeveloperOrganization: Scalars['Boolean']['output'];
7140
- /** Link a personal integration connection (from wspace-integrations-svc) to a bot channel. Called by microfe-botlit after the user completes OAuth in microfe-integrations. Steps performed internally: 1. Fetch IntegrationConnection data from wspace-integrations-svc via internal GQL 2. Extract platform identity (slackUserId / msUserId / discordUserId / phone) from metadata 3. Open a DM conversation using the bot token from ChannelConnection 4. Upsert UserPlatformConnection (source=OAUTH, dmAllowed=true, dmConversationId set) 5. Send welcome DM (Slack / Teams / Discord where supported) */
7567
+ /**
7568
+ * Link a personal integration connection (from wspace-integrations-svc) to a bot channel.
7569
+ * Called by microfe-botlit after the user completes OAuth in microfe-integrations.
7570
+ *
7571
+ * Steps performed internally:
7572
+ * 1. Fetch IntegrationConnection data from wspace-integrations-svc via internal GQL
7573
+ * 2. Extract platform identity (slackUserId / msUserId / discordUserId / phone) from metadata
7574
+ * 3. Open a DM conversation using the bot token from ChannelConnection
7575
+ * 4. Upsert UserPlatformConnection (source=OAUTH, dmAllowed=true, dmConversationId set)
7576
+ * 5. Send welcome DM (Slack / Teams / Discord where supported)
7577
+ */
7141
7578
  linkIntegrationConnection: UserPlatformConnection;
7142
7579
  linkTickets: TicketLink;
7143
7580
  /** Link wallet to existing user account */
@@ -7160,9 +7597,18 @@ export type Mutation = {
7160
7597
  mergeTickets: SupportTicket;
7161
7598
  /** Moderate a review (admin) */
7162
7599
  moderateAppReview: AppReview;
7163
- /** Erase newsletter subscriber data. With dryRun=true returns counts. Subscriber + per-list rows + automation enrolments PURGED. Suppression entry ANONYMISED (email hashed) — kept to honour CAN-SPAM unsubscribe permanence. Bounce/complaint/consent-audit rows anonymised but retained for deliverability forensics. */
7600
+ /**
7601
+ * Erase newsletter subscriber data. With dryRun=true returns counts.
7602
+ * Subscriber + per-list rows + automation enrolments PURGED.
7603
+ * Suppression entry ANONYMISED (email hashed) — kept to honour CAN-SPAM
7604
+ * unsubscribe permanence. Bounce/complaint/consent-audit rows anonymised
7605
+ * but retained for deliverability forensics.
7606
+ */
7164
7607
  newsletterEraseSubject: NewsletterEraseResult;
7165
- /** Export the subject's newsletter data: subscriber rows, per-list memberships, consent ledger entries, automation enrolments, waitlist entries. */
7608
+ /**
7609
+ * Export the subject's newsletter data: subscriber rows, per-list memberships,
7610
+ * consent ledger entries, automation enrolments, waitlist entries.
7611
+ */
7166
7612
  newsletterExportSubject: Scalars['JSON']['output'];
7167
7613
  openCircuitBreaker: CircuitBreakerState;
7168
7614
  /** Pause a subscription */
@@ -7182,7 +7628,11 @@ export type Mutation = {
7182
7628
  processScheduledNotifications: Scalars['Int']['output'];
7183
7629
  /** Process a webhook manually (for retry) */
7184
7630
  processWebhook: WebhookProcessingResult;
7185
- /** Switch a tenant to DEDICATED mode and begin provisioning. Sets status to PROVISIONING until endpoint is set. If endpoint is provided, sets status directly to ACTIVE. */
7631
+ /**
7632
+ * Switch a tenant to DEDICATED mode and begin provisioning.
7633
+ * Sets status to PROVISIONING until endpoint is set.
7634
+ * If endpoint is provided, sets status directly to ACTIVE.
7635
+ */
7186
7636
  provisionDedicatedTenant: Tenant;
7187
7637
  /** Public unsubscribe via HMAC-signed token from email link. No authentication required. */
7188
7638
  publicUnsubscribeByToken: Scalars['Boolean']['output'];
@@ -7242,7 +7692,10 @@ export type Mutation = {
7242
7692
  /** Reject an organization invite (must be logged in as the invited user) */
7243
7693
  rejectOrganizationInvite: OrganizationInvite;
7244
7694
  rejectPayoutRequest: PayoutRequest;
7245
- /** Admin rejects a submitted product with a mandatory reason. Publisher can edit and resubmit afterwards. */
7695
+ /**
7696
+ * Admin rejects a submitted product with a mandatory reason. Publisher can
7697
+ * edit and resubmit afterwards.
7698
+ */
7246
7699
  rejectProduct: StoreProduct;
7247
7700
  rejectPublisher: Publisher;
7248
7701
  rejectReview: ProductReview;
@@ -7276,16 +7729,27 @@ export type Mutation = {
7276
7729
  removeSuppression: Scalars['Boolean']['output'];
7277
7730
  /** Remove a single tag binding from an Application. */
7278
7731
  removeTagFromApplication: Scalars['Boolean']['output'];
7732
+ /** Remove a tag from a user */
7733
+ removeTagFromUser: AccountActionResult;
7279
7734
  removeTicketTags: SupportTicket;
7280
- /** Remove user's preference for a feature flag (reverts to default). RBAC is scoped to the target workspace. */
7735
+ /**
7736
+ * Remove user's preference for a feature flag (reverts to default).
7737
+ * RBAC is scoped to the target workspace.
7738
+ */
7281
7739
  removeUserFeatureFlagPreference: Scalars['Boolean']['output'];
7282
7740
  /** Remove a visibility rule */
7283
7741
  removeVisibilityRule: Scalars['Boolean']['output'];
7284
- /** Remove a workspace override, reverting to the platform default. RBAC is scoped to the target workspace. */
7742
+ /**
7743
+ * Remove a workspace override, reverting to the platform default.
7744
+ * RBAC is scoped to the target workspace.
7745
+ */
7285
7746
  removeWorkspaceFeatureFlagOverride: Scalars['Boolean']['output'];
7286
7747
  /** Remove a member from a workspace */
7287
7748
  removeWorkspaceMember: Scalars['Boolean']['output'];
7288
- /** Remove workspace metadata (membership and routing) Note: This only removes metadata. Use workspaces service to delete actual workspace content. */
7749
+ /**
7750
+ * Remove workspace metadata (membership and routing)
7751
+ * Note: This only removes metadata. Use workspaces service to delete actual workspace content.
7752
+ */
7289
7753
  removeWorkspaceMetadata: Scalars['Boolean']['output'];
7290
7754
  /** Rename a passkey */
7291
7755
  renamePasskey: PasskeyInfo;
@@ -7303,7 +7767,10 @@ export type Mutation = {
7303
7767
  replaceChannelTags: Array<ChannelTagAssignment>;
7304
7768
  /** Replace all tags on a store product */
7305
7769
  replaceStoreProductTags: Array<StoreProductTagAssignment>;
7306
- /** Send an email reply to a contact inquiry. The reply is sent via the notification pipeline (notification-svc → channel-svc → email provider). Auto-updates status to REVIEWED. */
7770
+ /**
7771
+ * Send an email reply to a contact inquiry. The reply is sent via the notification
7772
+ * pipeline (notification-svc → channel-svc → email provider). Auto-updates status to REVIEWED.
7773
+ */
7307
7774
  replyToContactInquiry: ContactInquiryReplyResult;
7308
7775
  replyToReview: ProductReviewReply;
7309
7776
  /** Report a review */
@@ -7311,7 +7778,10 @@ export type Mutation = {
7311
7778
  /** Reprocess a failed webhook event */
7312
7779
  reprocessWebhook: WebhookProcessingResult;
7313
7780
  requestBillingPayout: PayoutRequest;
7314
- /** Request a credit withdrawal. Converts purchased + earned credits to a PayoutRequest denominated in USD at the current credit rate. Uses the specified payout account for payment. */
7781
+ /**
7782
+ * Request a credit withdrawal. Converts purchased + earned credits to a PayoutRequest
7783
+ * denominated in USD at the current credit rate. Uses the specified payout account for payment.
7784
+ */
7315
7785
  requestCreditWithdrawal: PayoutRequest;
7316
7786
  /** Request a manual payout (devportal legacy alias) */
7317
7787
  requestDeveloperOrgPayout: DeveloperOrgPayout;
@@ -7355,7 +7825,10 @@ export type Mutation = {
7355
7825
  resumeSLA: SupportTicket;
7356
7826
  resumeScheduledJob: ScheduledJob;
7357
7827
  retireSubprocessor: Subprocessor;
7358
- /** Manually retry GraphQL callback for a failed billing order (admin only) Useful for retrying after fixing issues in external service */
7828
+ /**
7829
+ * Manually retry GraphQL callback for a failed billing order (admin only)
7830
+ * Useful for retrying after fixing issues in external service
7831
+ */
7359
7832
  retryBillingOrderCallback: RetryBillingOrderCallbackResponse;
7360
7833
  /** Retry a failed delivery attempt */
7361
7834
  retryDelivery: MessageDeliveryResult;
@@ -7368,9 +7841,15 @@ export type Mutation = {
7368
7841
  revertTranslation: Translation;
7369
7842
  reviewTranslation: Translation;
7370
7843
  revokeAPIKey: Scalars['Boolean']['output'];
7371
- /** Revoke all sessions except the current one. Returns the number of sessions that were revoked. */
7844
+ /**
7845
+ * Revoke all sessions except the current one.
7846
+ * Returns the number of sessions that were revoked.
7847
+ */
7372
7848
  revokeAllSessions: RevokeAllSessionsResult;
7373
- /** Revoke an app's access to a workspace. Returns false if the row was already REVOKED or never existed. */
7849
+ /**
7850
+ * Revoke an app's access to a workspace. Returns false if the row was already
7851
+ * REVOKED or never existed.
7852
+ */
7374
7853
  revokeAppWorkspaceAccess: Scalars['Boolean']['output'];
7375
7854
  revokeConsent: NewsletterConsent;
7376
7855
  revokeDelegation: Scalars['Boolean']['output'];
@@ -7379,11 +7858,17 @@ export type Mutation = {
7379
7858
  revokeHMACCredential: Scalars['Boolean']['output'];
7380
7859
  revokeLicense: ProductEntitlement;
7381
7860
  revokeSeat: LicenseSeat;
7382
- /** Revoke (log out) a specific session by ID. Returns true if the session was successfully revoked. */
7861
+ /**
7862
+ * Revoke (log out) a specific session by ID.
7863
+ * Returns true if the session was successfully revoked.
7864
+ */
7383
7865
  revokeSession: Scalars['Boolean']['output'];
7384
7866
  /** Revoke a signed cookie session */
7385
7867
  revokeSignedCookieSession: Scalars['Boolean']['output'];
7386
- /** Revoke a user's platform connection (sets dmAllowed = false, clears tokens). Does NOT delete the record — keeps presence history intact. */
7868
+ /**
7869
+ * Revoke a user's platform connection (sets dmAllowed = false, clears tokens).
7870
+ * Does NOT delete the record — keeps presence history intact.
7871
+ */
7387
7872
  revokeUserPlatformConnection: UserPlatformConnection;
7388
7873
  rollbackRelease: ProductRelease;
7389
7874
  rotateAPIKey: ApiKeyRotateResult;
@@ -7400,7 +7885,11 @@ export type Mutation = {
7400
7885
  scheduleNewsletter: Newsletter;
7401
7886
  /** Schedule a notification for future delivery */
7402
7887
  scheduleNotification: ScheduledNotification;
7403
- /** Seed default feature flags across all products. Creates all default flags if they don't already exist. Returns the count of newly created flags. Skips flags that already exist (by key uniqueness). */
7888
+ /**
7889
+ * Seed default feature flags across all products.
7890
+ * Creates all default flags if they don't already exist. Returns the count of newly created flags.
7891
+ * Skips flags that already exist (by key uniqueness).
7892
+ */
7404
7893
  seedDefaultFeatureFlags: Scalars['Int']['output'];
7405
7894
  /** Bulk create default shortcuts for a product */
7406
7895
  seedDefaultShortcuts: Scalars['Int']['output'];
@@ -7419,7 +7908,11 @@ export type Mutation = {
7419
7908
  setAgentOnline: AgentProfile;
7420
7909
  /** Set or update billing address for a billing account */
7421
7910
  setBillingAddress: BillingAddress;
7422
- /** Set a billing account as the default for an org. Only one billing account can be default per org. If another account is currently default, it will be unset. */
7911
+ /**
7912
+ * Set a billing account as the default for an org.
7913
+ * Only one billing account can be default per org.
7914
+ * If another account is currently default, it will be unset.
7915
+ */
7423
7916
  setDefaultBillingAccount: BillingAccount;
7424
7917
  setDefaultLanguage: Language;
7425
7918
  /** Set a payment method as default */
@@ -7430,12 +7923,21 @@ export type Mutation = {
7430
7923
  setNotificationTopicSubscription: NotificationTopicSubscription;
7431
7924
  /** Set default permission level for a role on a resource type */
7432
7925
  setRoleDefaultPermission: Role;
7433
- /** Set or update the endpoint URL for a DEDICATED tenant. Transitions PROVISIONING → ACTIVE when endpoint is set. */
7926
+ /**
7927
+ * Set or update the endpoint URL for a DEDICATED tenant.
7928
+ * Transitions PROVISIONING → ACTIVE when endpoint is set.
7929
+ */
7434
7930
  setTenantEndpoint: Tenant;
7435
- /** Set user's opt-in/out preference for a previewable feature flag. RBAC is scoped to the target workspace via `input.workspaceId`. */
7931
+ /**
7932
+ * Set user's opt-in/out preference for a previewable feature flag.
7933
+ * RBAC is scoped to the target workspace via `input.workspaceId`.
7934
+ */
7436
7935
  setUserFeatureFlagPreference: UserFeatureFlagPreference;
7437
7936
  setUserLanguagePreference: UserLanguagePreference;
7438
- /** Set workspace-level override for a feature flag (super admin or workspace admin). RBAC is scoped to the target workspace via `input.workspaceId`. */
7937
+ /**
7938
+ * Set workspace-level override for a feature flag (super admin or workspace admin).
7939
+ * RBAC is scoped to the target workspace via `input.workspaceId`.
7940
+ */
7439
7941
  setWorkspaceFeatureFlagOverride: WorkspaceFeatureFlagOverride;
7440
7942
  setupMFA: MfaSetupResult;
7441
7943
  sideloadApp: StoreAppInstallation;
@@ -7456,19 +7958,42 @@ export type Mutation = {
7456
7958
  /** Mark a tour as started for a user */
7457
7959
  startTour: TourUserProgress;
7458
7960
  submitApplication: Application;
7459
- /** Submit an application to the store for review. Awaits the store-svc submit call and returns the application with the resulting store submission metadata attached to `metadata.storeSubmissionStatus`. The target store's requiresApproval flag decides whether the submission lands in PENDING_REVIEW (public default) or is auto-published (private registries that trust their publishers). */
7961
+ /**
7962
+ * Submit an application to the store for review. Awaits the store-svc
7963
+ * submit call and returns the application with the resulting store
7964
+ * submission metadata attached to `metadata.storeSubmissionStatus`.
7965
+ *
7966
+ * The target store's requiresApproval flag decides whether the submission
7967
+ * lands in PENDING_REVIEW (public default) or is auto-published (private
7968
+ * registries that trust their publishers).
7969
+ */
7460
7970
  submitApplicationForReview: Application;
7461
- /** Submit a contact inquiry from a public website (no authentication required). Validates reCAPTCHA token server-side using the product's secret key fetched from the tenant service via internal gateway. */
7971
+ /**
7972
+ * Submit a contact inquiry from a public website (no authentication required).
7973
+ * Validates reCAPTCHA token server-side using the product's secret key
7974
+ * fetched from the tenant service via internal gateway.
7975
+ */
7462
7976
  submitContactInquiry: SubmitContactInquiryResult;
7463
- /** Submit a product to its target store for review. The store's requiresApproval flag decides whether the product goes to PENDING_REVIEW or is auto-published. */
7977
+ /**
7978
+ * Submit a product to its target store for review. The store's
7979
+ * requiresApproval flag decides whether the product goes to PENDING_REVIEW
7980
+ * or is auto-published.
7981
+ */
7464
7982
  submitProduct: StoreProduct;
7465
7983
  submitPublisherVerification: Publisher;
7466
7984
  submitSatisfactionSurvey: CustomerSatisfactionSurvey;
7467
7985
  subscribe: NewsletterSubscriber;
7468
7986
  subscribeToStore: UserStoreSubscription;
7469
- /** Anonymise the subject across support records. With dryRun=true returns counts without mutating. Ticket bodies and agent resolution history are retained for legal-claims defence (`retainedForLegalReason: "claims-3yr"`). */
7987
+ /**
7988
+ * Anonymise the subject across support records. With dryRun=true returns
7989
+ * counts without mutating. Ticket bodies and agent resolution history are
7990
+ * retained for legal-claims defence (`retainedForLegalReason: "claims-3yr"`).
7991
+ */
7470
7992
  supportEraseSubject: SupportEraseResult;
7471
- /** Export the subject's support data: tickets they raised, messages they authored, contact inquiries, CSAT surveys submitted. */
7993
+ /**
7994
+ * Export the subject's support data: tickets they raised, messages they
7995
+ * authored, contact inquiries, CSAT surveys submitted.
7996
+ */
7472
7997
  supportExportSubject: Scalars['JSON']['output'];
7473
7998
  suppressIdentifier: SuppressionEntry;
7474
7999
  /** Suspend an installation (admin) */
@@ -7481,9 +8006,17 @@ export type Mutation = {
7481
8006
  suspendTenant: Tenant;
7482
8007
  /** Suspend a workspace */
7483
8008
  suspendWorkspace: Workspace;
7484
- /** Sync tour steps (smart update in ONE call) Send all desired steps, backend handles: update existing, create new, delete removed */
8009
+ /**
8010
+ * Sync tour steps (smart update in ONE call)
8011
+ * Send all desired steps, backend handles: update existing, create new, delete removed
8012
+ */
7485
8013
  syncTourSteps: Array<TourStep>;
7486
- /** Sync workspace metadata from workspace layer to global layer. Called by wspace-workspace-svc when a workspace is created directly via workspace layer. This is the reverse of syncFromGlobal - it syncs global ← wspace. Creates workspace metadata + owner membership in global-tenant-svc. */
8014
+ /**
8015
+ * Sync workspace metadata from workspace layer to global layer.
8016
+ * Called by wspace-workspace-svc when a workspace is created directly via workspace layer.
8017
+ * This is the reverse of syncFromGlobal - it syncs global ← wspace.
8018
+ * Creates workspace metadata + owner membership in global-tenant-svc.
8019
+ */
7487
8020
  syncWorkspaceFromWspace: SyncWorkspaceFromWspaceResponse;
7488
8021
  tagChannel: ChannelTagAssignment;
7489
8022
  tagChannelConnection: ChannelConnectionTagAssignment;
@@ -7561,6 +8094,8 @@ export type Mutation = {
7561
8094
  updateCategory: ProductCategory;
7562
8095
  /** Update an existing channel */
7563
8096
  updateChannel: Channel;
8097
+ /** Save (upsert) organization-level channel settings. */
8098
+ updateChannelOrgSettings: ChannelOrgSettings;
7564
8099
  /** Update connection metadata (not credentials) */
7565
8100
  updateConnection: ChannelConnection;
7566
8101
  /** Update the status of a contact inquiry (authenticated, for superadmins) */
@@ -7597,9 +8132,15 @@ export type Mutation = {
7597
8132
  updateKeyboardShortcut: KeyboardShortcut;
7598
8133
  updateKnowledgeBaseArticle: KnowledgeBaseArticle;
7599
8134
  updateLanguage: Language;
7600
- /** Update the current user's dashboard widget layout preferences. Replaces the dashboard.widgets array within preferences. */
8135
+ /**
8136
+ * Update the current user's dashboard widget layout preferences.
8137
+ * Replaces the dashboard.widgets array within preferences.
8138
+ */
7601
8139
  updateMyDashboardPreferences: Scalars['JSON']['output'];
7602
- /** Update the current user's general preferences. Merges the provided JSON into the existing preferences field. */
8140
+ /**
8141
+ * Update the current user's general preferences.
8142
+ * Merges the provided JSON into the existing preferences field.
8143
+ */
7603
8144
  updateMyPreferences: UserPreference;
7604
8145
  updateNewsletter: Newsletter;
7605
8146
  updateNewsletterAutomation: NewsletterAutomation;
@@ -7648,11 +8189,18 @@ export type Mutation = {
7648
8189
  updateScheduleTemplate: ScheduleTemplate;
7649
8190
  updateScheduledJob: ScheduledJob;
7650
8191
  updateStore: Store;
7651
- /** Update order payment status (called by billing service callback) This is a PUBLIC mutation called by the billing service after payment completion */
8192
+ /**
8193
+ * Update order payment status (called by billing service callback)
8194
+ *
8195
+ * This is a PUBLIC mutation called by the billing service after payment completion
8196
+ */
7652
8197
  updateStoreOrderPaymentStatus: UpdateStoreOrderPaymentStatusResponse;
7653
8198
  updateSubprocessor: Subprocessor;
7654
8199
  updateSubscriber: NewsletterSubscriber;
7655
- /** Update the seat count on an active PER_SEAT subscription. Syncs quantity to the payment gateway and updates the seat quota ceiling. */
8200
+ /**
8201
+ * Update the seat count on an active PER_SEAT subscription.
8202
+ * Syncs quantity to the payment gateway and updates the seat quota ceiling.
8203
+ */
7656
8204
  updateSubscriptionSeats: BillingSubscription;
7657
8205
  updateSupportMessage: SupportMessage;
7658
8206
  updateSupportTicket: SupportTicket;
@@ -7694,11 +8242,17 @@ export type Mutation = {
7694
8242
  /** Upload tour media */
7695
8243
  uploadTourMedia: TourMedia;
7696
8244
  upsertComplianceSettings: NewsletterComplianceSettings;
7697
- /** Create or update external OIDC configuration (Google, Microsoft, etc.) Admin only */
8245
+ /**
8246
+ * Create or update external OIDC configuration (Google, Microsoft, etc.)
8247
+ * Admin only
8248
+ */
7698
8249
  upsertExternalOIDCConfig: ExternalOidcConfiguration;
7699
8250
  /** Create or update fulfillment details for an order (admin) */
7700
8251
  upsertOrderFulfillment: OrderFulfillment;
7701
- /** Upsert a platform connection from a passively-observed webhook event (source = SEEN). Used by WebhookProcessor to track users without granting DM access. */
8252
+ /**
8253
+ * Upsert a platform connection from a passively-observed webhook event (source = SEEN).
8254
+ * Used by WebhookProcessor to track users without granting DM access.
8255
+ */
7702
8256
  upsertSeenUser: UserPlatformConnection;
7703
8257
  useCannedResponse: CannedResponse;
7704
8258
  validateApiKey: TokenValidationResponse;
@@ -7719,7 +8273,17 @@ export type Mutation = {
7719
8273
  /** Verify a payment method (micro-deposits) */
7720
8274
  verifyPaymentMethod: DeveloperOrgPaymentMethod;
7721
8275
  verifyPublisherPayoutMethod: PublisherPayoutMethod;
7722
- /** Verify a WhatsApp pairing code entered by the user in the dashboard. Called by wspace-integrations-svc during its CUSTOM auth step. Looks up the UserPlatformConnection (source=SEEN) for the channel + phone number, checks the pairing code matches and has not expired, then: - Sets pairingStatus = APPROVED - Sets dmAllowed = true - Sets dmConversationId to the WhatsApp JID format Returns true on success, throws on failure. */
8276
+ /**
8277
+ * Verify a WhatsApp pairing code entered by the user in the dashboard.
8278
+ * Called by wspace-integrations-svc during its CUSTOM auth step.
8279
+ *
8280
+ * Looks up the UserPlatformConnection (source=SEEN) for the channel + phone number,
8281
+ * checks the pairing code matches and has not expired, then:
8282
+ * - Sets pairingStatus = APPROVED
8283
+ * - Sets dmAllowed = true
8284
+ * - Sets dmConversationId to the WhatsApp JID format
8285
+ * Returns true on success, throws on failure.
8286
+ */
7723
8287
  verifyWhatsAppPairingCode: Scalars['Boolean']['output'];
7724
8288
  /** Void an invoice */
7725
8289
  voidInvoice: Invoice;
@@ -7738,6 +8302,7 @@ export type MutationAcceptDeveloperOrgInvitationArgs = {
7738
8302
  /** Root mutation type */
7739
8303
  export type MutationAcceptOrganizationInviteArgs = {
7740
8304
  inviteId: Scalars['ID']['input'];
8305
+ recaptchaToken?: InputMaybe<Scalars['String']['input']>;
7741
8306
  };
7742
8307
  /** Root mutation type */
7743
8308
  export type MutationActivateChannelArgs = {
@@ -7978,6 +8543,11 @@ export type MutationAssignSupportTicketArgs = {
7978
8543
  id: Scalars['ID']['input'];
7979
8544
  };
7980
8545
  /** Root mutation type */
8546
+ export type MutationAssignTagToUserArgs = {
8547
+ tagId: Scalars['ID']['input'];
8548
+ userId: Scalars['ID']['input'];
8549
+ };
8550
+ /** Root mutation type */
7981
8551
  export type MutationAttachMediaToStepArgs = {
7982
8552
  input: AttachMediaToStepInput;
7983
8553
  };
@@ -8712,6 +9282,10 @@ export type MutationDeleteAgentProfileArgs = {
8712
9282
  id: Scalars['ID']['input'];
8713
9283
  };
8714
9284
  /** Root mutation type */
9285
+ export type MutationDeleteAppArgs = {
9286
+ id: Scalars['ID']['input'];
9287
+ };
9288
+ /** Root mutation type */
8715
9289
  export type MutationDeleteAppCollectionArgs = {
8716
9290
  id: Scalars['ID']['input'];
8717
9291
  };
@@ -9730,6 +10304,11 @@ export type MutationRemoveTagFromApplicationArgs = {
9730
10304
  input: RemoveTagFromApplicationInput;
9731
10305
  };
9732
10306
  /** Root mutation type */
10307
+ export type MutationRemoveTagFromUserArgs = {
10308
+ tagId: Scalars['ID']['input'];
10309
+ userId: Scalars['ID']['input'];
10310
+ };
10311
+ /** Root mutation type */
9733
10312
  export type MutationRemoveTicketTagsArgs = {
9734
10313
  id: Scalars['ID']['input'];
9735
10314
  tags: Array<Scalars['String']['input']>;
@@ -10550,6 +11129,11 @@ export type MutationUpdateChannelArgs = {
10550
11129
  input: UpdateChannelInput;
10551
11130
  };
10552
11131
  /** Root mutation type */
11132
+ export type MutationUpdateChannelOrgSettingsArgs = {
11133
+ input: ChannelOrgSettingsInput;
11134
+ organizationId: Scalars['ID']['input'];
11135
+ };
11136
+ /** Root mutation type */
10553
11137
  export type MutationUpdateConnectionArgs = {
10554
11138
  id: Scalars['ID']['input'];
10555
11139
  input: UpdateConnectionInput;
@@ -11091,7 +11675,12 @@ export type MutationVoteOnAppReviewArgs = {
11091
11675
  export type MutationWithdrawConsentArgs = {
11092
11676
  input: WithdrawConsentInput;
11093
11677
  };
11094
- /** Filter inputs for `myContactInquiries`. Search and email-filter are deliberately not exposed — the query is already scoped to the caller's email, so a full-text search across `name`/`subject` would only surface inquiries the caller already owns. */
11678
+ /**
11679
+ * Filter inputs for `myContactInquiries`.
11680
+ * Search and email-filter are deliberately not exposed — the query is already
11681
+ * scoped to the caller's email, so a full-text search across `name`/`subject`
11682
+ * would only surface inquiries the caller already owns.
11683
+ */
11095
11684
  export type MyContactInquiryFilterInput = {
11096
11685
  /** Filter by product ID */
11097
11686
  productId?: InputMaybe<Scalars['String']['input']>;
@@ -11212,7 +11801,11 @@ export type NewsletterConsent = {
11212
11801
  subscriberId: Scalars['String']['output'];
11213
11802
  userAgent?: Maybe<Scalars['String']['output']>;
11214
11803
  };
11215
- /** Newsletter-specific context output type. Returns the stored context for each record. Module-specific to avoid federation conflicts with OperationContext in other subgraphs. */
11804
+ /**
11805
+ * Newsletter-specific context output type.
11806
+ * Returns the stored context for each record.
11807
+ * Module-specific to avoid federation conflicts with OperationContext in other subgraphs.
11808
+ */
11216
11809
  export type NewsletterContext = {
11217
11810
  __typename?: 'NewsletterContext';
11218
11811
  /** Additional custom context as JSON */
@@ -11230,7 +11823,10 @@ export type NewsletterContext = {
11230
11823
  /** Workspace ID for workspace-level scoping */
11231
11824
  workspaceId?: Maybe<Scalars['ID']['output']>;
11232
11825
  };
11233
- /** Newsletter context filter input for querying records by context. Supports exact match filtering on context fields. */
11826
+ /**
11827
+ * Newsletter context filter input for querying records by context.
11828
+ * Supports exact match filtering on context fields.
11829
+ */
11234
11830
  export type NewsletterContextFilterInput = {
11235
11831
  /** Filter by organization ID */
11236
11832
  organizationId?: InputMaybe<Scalars['ID']['input']>;
@@ -11245,7 +11841,10 @@ export type NewsletterContextFilterInput = {
11245
11841
  /** Filter by workspace ID */
11246
11842
  workspaceId?: InputMaybe<Scalars['ID']['input']>;
11247
11843
  };
11248
- /** Newsletter context input for filtering and scoping data. All fields are optional and can be extended as needed. */
11844
+ /**
11845
+ * Newsletter context input for filtering and scoping data.
11846
+ * All fields are optional and can be extended as needed.
11847
+ */
11249
11848
  export type NewsletterContextInput = {
11250
11849
  /** Additional custom context as JSON */
11251
11850
  custom?: InputMaybe<Scalars['JSON']['input']>;
@@ -11892,7 +12491,10 @@ export type OidcHybridConfig = {
11892
12491
  supportedGrantTypes: Array<Scalars['String']['output']>;
11893
12492
  supportedResponseTypes: Array<Scalars['String']['output']>;
11894
12493
  };
11895
- /** Operation context output type. Returns the stored context for each record. */
12494
+ /**
12495
+ * Operation context output type.
12496
+ * Returns the stored context for each record.
12497
+ */
11896
12498
  export type OperationContext = {
11897
12499
  __typename?: 'OperationContext';
11898
12500
  /** App ID for app-level scoping */
@@ -12042,7 +12644,10 @@ export type OrderStatusUpdatedEvent = {
12042
12644
  updatedAt: Scalars['String']['output'];
12043
12645
  workspaceId?: Maybe<Scalars['ID']['output']>;
12044
12646
  };
12045
- /** Organization type stub - represents an organization entity from another service This service doesn't own the Organization model, but references it */
12647
+ /**
12648
+ * Organization type stub - represents an organization entity from another service
12649
+ * This service doesn't own the Organization model, but references it
12650
+ */
12046
12651
  export type Organization = {
12047
12652
  __typename?: 'Organization';
12048
12653
  createdAt: Scalars['DateTime']['output'];
@@ -12072,6 +12677,51 @@ export type Organization = {
12072
12677
  /** Workspaces belonging to this organization */
12073
12678
  workspaces: Array<Workspace>;
12074
12679
  };
12680
+ /** A single persistent organization audit log entry. */
12681
+ export type OrganizationAuditLog = {
12682
+ __typename?: 'OrganizationAuditLog';
12683
+ action: Scalars['String']['output'];
12684
+ actorId: Scalars['ID']['output'];
12685
+ actorType: Scalars['String']['output'];
12686
+ createdAt: Scalars['DateTime']['output'];
12687
+ id: Scalars['ID']['output'];
12688
+ metadata?: Maybe<Scalars['JSON']['output']>;
12689
+ organizationId: Scalars['ID']['output'];
12690
+ targetId?: Maybe<Scalars['ID']['output']>;
12691
+ targetType: Scalars['String']['output'];
12692
+ };
12693
+ /** Paginated connection of OrganizationAuditLog entries. */
12694
+ export type OrganizationAuditLogConnection = {
12695
+ __typename?: 'OrganizationAuditLogConnection';
12696
+ edges: Array<OrganizationAuditLogEdge>;
12697
+ pageInfo: OrganizationAuditLogPageInfo;
12698
+ totalCount: Scalars['Int']['output'];
12699
+ };
12700
+ /** Edge wrapper for keyset pagination over OrganizationAuditLog. */
12701
+ export type OrganizationAuditLogEdge = {
12702
+ __typename?: 'OrganizationAuditLogEdge';
12703
+ cursor: Scalars['String']['output'];
12704
+ node: OrganizationAuditLog;
12705
+ };
12706
+ /** Page info for relay-style cursor pagination. */
12707
+ export type OrganizationAuditLogPageInfo = {
12708
+ __typename?: 'OrganizationAuditLogPageInfo';
12709
+ endCursor?: Maybe<Scalars['String']['output']>;
12710
+ hasNextPage: Scalars['Boolean']['output'];
12711
+ };
12712
+ /**
12713
+ * Inline export payload for `exportOrganizationsCsv`. Returns CSV text along
12714
+ * with a count of rows and a flag if the result was capped at the requested
12715
+ * limit. Pattern mirrors `TenantExport` from the tenant module.
12716
+ */
12717
+ export type OrganizationCsvExport = {
12718
+ __typename?: 'OrganizationCsvExport';
12719
+ csv: Scalars['String']['output'];
12720
+ format: Scalars['String']['output'];
12721
+ generatedAt: Scalars['DateTime']['output'];
12722
+ rowCount: Scalars['Int']['output'];
12723
+ truncated: Scalars['Boolean']['output'];
12724
+ };
12075
12725
  /** Filter input for querying organizations */
12076
12726
  export type OrganizationFilterInput = {
12077
12727
  search?: InputMaybe<Scalars['String']['input']>;
@@ -12159,7 +12809,10 @@ export type PageInfo = {
12159
12809
  hasPreviousPage: Scalars['Boolean']['output'];
12160
12810
  startCursor?: Maybe<Scalars['String']['output']>;
12161
12811
  };
12162
- /** Response type for getTransactionsByBillingAccount query Contains basic billing account info and paginated transactions */
12812
+ /**
12813
+ * Response type for getTransactionsByBillingAccount query
12814
+ * Contains basic billing account info and paginated transactions
12815
+ */
12163
12816
  export type PaginatedBillingAccountTransactions = {
12164
12817
  __typename?: 'PaginatedBillingAccountTransactions';
12165
12818
  /** Billing-specific email (for invoices) */
@@ -12398,7 +13051,10 @@ export declare enum PaymentMethodType {
12398
13051
  Paypal = "PAYPAL",
12399
13052
  Wallet = "WALLET"
12400
13053
  }
12401
- /** Payment provider configuration for frontend integration Contains only public keys safe to expose to the client */
13054
+ /**
13055
+ * Payment provider configuration for frontend integration
13056
+ * Contains only public keys safe to expose to the client
13057
+ */
12402
13058
  export type PaymentProviderConfig = {
12403
13059
  __typename?: 'PaymentProviderConfig';
12404
13060
  /** Whether Razorpay is configured and available */
@@ -12412,7 +13068,9 @@ export type PaymentProviderConfig = {
12412
13068
  };
12413
13069
  /** Preferred payment provider */
12414
13070
  export declare enum PaymentProviderPreference {
13071
+ AppleIap = "APPLE_IAP",
12415
13072
  Auto = "AUTO",
13073
+ GooglePlay = "GOOGLE_PLAY",
12416
13074
  Razorpay = "RAZORPAY",
12417
13075
  Stripe = "STRIPE"
12418
13076
  }
@@ -12646,13 +13304,19 @@ export type Plan = {
12646
13304
  createdAt?: Maybe<Scalars['DateTime']['output']>;
12647
13305
  /** The currency in which the plan is priced. Defaults to 'USD'. */
12648
13306
  currency?: Maybe<Scalars['String']['output']>;
12649
- /** Prices for all supported currencies with beautiful rounding. Example: { "USD": 2.00, "INR": 199, "EUR": 1.99, "GBP": 1.79 } */
13307
+ /**
13308
+ * Prices for all supported currencies with beautiful rounding.
13309
+ * Example: { "USD": 2.00, "INR": 199, "EUR": 1.99, "GBP": 1.79 }
13310
+ */
12650
13311
  currencyPrices?: Maybe<Scalars['JSON']['output']>;
12651
13312
  /** The duration for which the plan is valid (e.g., monthly, yearly). Defaults to 'monthly'. */
12652
13313
  duration?: Maybe<PlanDuration>;
12653
13314
  /** A list of features provided by this plan, such as quotas or special services. */
12654
13315
  features?: Maybe<Array<Maybe<SubscriptionFeatures>>>;
12655
- /** Geography-specific price overrides. The billing account's country/state/region plus currency decide whether one of these overrides applies. */
13316
+ /**
13317
+ * Geography-specific price overrides. The billing account's country/state/region plus
13318
+ * currency decide whether one of these overrides applies.
13319
+ */
12656
13320
  geoPricingOverrides: Array<GeoPricingOverride>;
12657
13321
  /** The unique identifier for the Plan, automatically generated as a UUID. */
12658
13322
  id?: Maybe<Scalars['ID']['output']>;
@@ -12670,10 +13334,16 @@ export type Plan = {
12670
13334
  price?: Maybe<Scalars['Float']['output']>;
12671
13335
  /** Historical record of price changes for this plan */
12672
13336
  priceHistory: Array<PlanPriceHistory>;
12673
- /** Per-seat rate used when pricingModel is PER_SEAT. Total charge = pricePerSeat × seatCount. */
13337
+ /**
13338
+ * Per-seat rate used when pricingModel is PER_SEAT.
13339
+ * Total charge = pricePerSeat × seatCount.
13340
+ */
12674
13341
  pricePerSeat?: Maybe<Scalars['Float']['output']>;
12675
- /** Whether this plan bills at a flat rate or per seat. PER_SEAT plans pass seatCount as quantity to Stripe/Razorpay. */
12676
- pricingModel?: Maybe<PlanPricingModel>;
13342
+ /**
13343
+ * Whether this plan bills at a flat rate or per seat.
13344
+ * PER_SEAT plans pass seatCount as quantity to Stripe/Razorpay.
13345
+ */
13346
+ pricingModel?: Maybe<PlanPricingModel>;
12677
13347
  /** Which product the plan belongs to (reference to product microservice) */
12678
13348
  productID?: Maybe<Scalars['String']['output']>;
12679
13349
  /** The list of subscriptions associated with this plan. */
@@ -12685,7 +13355,10 @@ export declare enum PlanDuration {
12685
13355
  Monthly = "monthly",
12686
13356
  Yearly = "yearly"
12687
13357
  }
12688
- /** Tracks historical price changes for a Plan. A new record is created whenever a plan's price is updated. */
13358
+ /**
13359
+ * Tracks historical price changes for a Plan.
13360
+ * A new record is created whenever a plan's price is updated.
13361
+ */
12689
13362
  export type PlanPriceHistory = {
12690
13363
  __typename?: 'PlanPriceHistory';
12691
13364
  /** Who made the price change (actor ID) */
@@ -12717,7 +13390,11 @@ export type PlanQuotaInput = {
12717
13390
  quotaId: Scalars['ID']['input'];
12718
13391
  };
12719
13392
  export type PlansFilter = {
12720
- /** Include free plans (price = 0) in the response. Defaults to true. Set to false on user-facing browse pages since free plans are auto-assigned and cannot be purchased. */
13393
+ /**
13394
+ * Include free plans (price = 0) in the response.
13395
+ * Defaults to true. Set to false on user-facing browse pages
13396
+ * since free plans are auto-assigned and cannot be purchased.
13397
+ */
12721
13398
  includeFree?: InputMaybe<Scalars['Boolean']['input']>;
12722
13399
  /** Filter plans by product ID. When set, only plans with this productID are returned. */
12723
13400
  productId?: InputMaybe<Scalars['String']['input']>;
@@ -12734,7 +13411,10 @@ export type PlatformDeliveryResult = {
12734
13411
  /** Whether at least one recipient was delivered successfully */
12735
13412
  success: Scalars['Boolean']['output'];
12736
13413
  };
12737
- /** PlatformProduct entity - resolvable via Federation Gateway. Other services can reference PlatformProduct by id or slug. */
13414
+ /**
13415
+ * PlatformProduct entity - resolvable via Federation Gateway.
13416
+ * Other services can reference PlatformProduct by id or slug.
13417
+ */
12738
13418
  export type PlatformProduct = {
12739
13419
  __typename?: 'PlatformProduct';
12740
13420
  /** Number of active users */
@@ -12775,7 +13455,11 @@ export type PlatformProduct = {
12775
13455
  ogImage?: Maybe<Scalars['String']['output']>;
12776
13456
  /** Google Play Store URL */
12777
13457
  playStoreUrl?: Maybe<Scalars['String']['output']>;
12778
- /** reCAPTCHA secret key (server-side) for backend verification. Only accessible via internal gateway (platformProduct query requires auth). The publicProduct query does NOT resolve this field. */
13458
+ /**
13459
+ * reCAPTCHA secret key (server-side) for backend verification.
13460
+ * Only accessible via internal gateway (platformProduct query requires auth).
13461
+ * The publicProduct query does NOT resolve this field.
13462
+ */
12779
13463
  recaptchaSecretKey?: Maybe<Scalars['String']['output']>;
12780
13464
  /** reCAPTCHA site key (public) for frontend verification */
12781
13465
  recaptchaSiteKey?: Maybe<Scalars['String']['output']>;
@@ -12978,7 +13662,10 @@ export type ProductChartSnapshot = {
12978
13662
  storeId?: Maybe<Scalars['ID']['output']>;
12979
13663
  window: Scalars['String']['output'];
12980
13664
  };
12981
- /** A content page (privacy policy, terms of service, etc.) stored in markdown format. Supports global defaults (productId = null) and per-product overrides. */
13665
+ /**
13666
+ * A content page (privacy policy, terms of service, etc.) stored in markdown format.
13667
+ * Supports global defaults (productId = null) and per-product overrides.
13668
+ */
12982
13669
  export type ProductContentPage = {
12983
13670
  __typename?: 'ProductContentPage';
12984
13671
  content: Scalars['String']['output'];
@@ -13371,9 +14058,15 @@ export type PushMfaStatus = {
13371
14058
  /** Root query type */
13372
14059
  export type Query = {
13373
14060
  __typename?: 'Query';
13374
- /** Placeholder field to allow empty Query type extension. Must be @shareable since it exists in multiple subgraphs. */
14061
+ /**
14062
+ * Placeholder field to allow empty Query type extension.
14063
+ * Must be @shareable since it exists in multiple subgraphs.
14064
+ */
13375
14065
  _empty?: Maybe<Scalars['String']['output']>;
13376
- /** Health check for the service @rbac(public: true, scopeType: "global") */
14066
+ /**
14067
+ * Health check for the service
14068
+ * @rbac(public: true, scopeType: "global")
14069
+ */
13377
14070
  _health: Scalars['String']['output'];
13378
14071
  _newsletterSubscriptionsPlaceholder?: Maybe<Scalars['String']['output']>;
13379
14072
  _privacyHealth?: Maybe<Scalars['String']['output']>;
@@ -13381,8 +14074,11 @@ export type Query = {
13381
14074
  actionDefinitions: Array<ActionDefinition>;
13382
14075
  /** Get all active schedules (for background processing) */
13383
14076
  activeSchedules: Array<TourSchedule>;
13384
- /** Get all active sessions for the current user. The `isCurrent` field indicates which session belongs to this request. */
13385
- activeSessions: Array<Session>;
14077
+ /**
14078
+ * Get all active sessions for the current user.
14079
+ * The `isCurrent` field indicates which session belongs to this request.
14080
+ */
14081
+ activeSessions: SessionConnection;
13386
14082
  activityLog?: Maybe<ActivityLog>;
13387
14083
  activityLogs: ActivityLogConnection;
13388
14084
  /** Get permission overrides for an actor in a scope */
@@ -13408,7 +14104,7 @@ export type Query = {
13408
14104
  agentProfiles: AgentProfileConnection;
13409
14105
  app?: Maybe<App>;
13410
14106
  /** List API keys for a specific app */
13411
- appApiKeys: Array<ApiKey>;
14107
+ appApiKeys: ApiKeyConnection;
13412
14108
  /** Get a collection by ID */
13413
14109
  appCollection?: Maybe<AppCollection>;
13414
14110
  /** Get a collection by slug */
@@ -13430,24 +14126,59 @@ export type Query = {
13430
14126
  application?: Maybe<Application>;
13431
14127
  applicationAnalytics: Array<ApplicationAnalytics>;
13432
14128
  applications: ApplicationConnection;
13433
- /** Internal: get all approved waitlist entries for an email. Used by tenant-svc for product access checks. */
14129
+ /**
14130
+ * Internal: get all approved waitlist entries for an email.
14131
+ * Used by tenant-svc for product access checks.
14132
+ */
13434
14133
  approvedWaitlistProducts: Array<NewsletterWaitlist>;
13435
- appsActingAsCurrentUser: Array<App>;
14134
+ appsActingAsCurrentUser: AppConnection;
13436
14135
  auditLogs: AuditLogConnection;
13437
14136
  /** List auth audit events visible to the current user. */
13438
- authAuditLogs: Array<AuthAuditLog>;
14137
+ authAuditLogs: AuthAuditLogConnection;
13439
14138
  authMethodConfig?: Maybe<AuthMethodConfig>;
13440
14139
  authStrategiesHealth: Array<AuthStrategyHealth>;
13441
14140
  automationSteps: Array<AutomationStep>;
13442
14141
  automationSubscribers: Array<AutomationSubscriber>;
13443
14142
  availableAgents: Array<AgentProfile>;
13444
14143
  availableAuthMethods: Array<AuthMethod>;
13445
- /** Get available preview features the user can opt-in to within a workspace. Returns only flags that are previewable, active, and allowed by workspace admin. Bounded by limit/offset to avoid unbounded fetches. */
14144
+ /**
14145
+ * Get available preview features the user can opt-in to within a workspace.
14146
+ * Returns only flags that are previewable, active, and allowed by workspace admin.
14147
+ * Bounded by limit/offset to avoid unbounded fetches.
14148
+ */
13446
14149
  availableFeaturePreviews: Array<FeatureFlag>;
13447
14150
  bounceStats: BounceStats;
13448
- /** Browse store products with unified filtering, sorting, and pagination. Search is treated as a filter - all filters combine with AND logic. Example usage: ```graphql query { browseStore(input: { filter: { search: "ai notification" type: NODE pricingModel: FREE minRating: 4.0 compatibleWith: "workspaces" } sortBy: RELEVANCE pagination: { limit: 20, offset: 0 } }) { products { id name rating downloads } totalCount hasMore facets { categories { value count } } } } ``` */
14151
+ /**
14152
+ * Browse store products with unified filtering, sorting, and pagination.
14153
+ * Search is treated as a filter - all filters combine with AND logic.
14154
+ *
14155
+ * Example usage:
14156
+ * ```graphql
14157
+ * query {
14158
+ * browseStore(input: {
14159
+ * filter: {
14160
+ * search: "ai notification"
14161
+ * type: NODE
14162
+ * pricingModel: FREE
14163
+ * minRating: 4.0
14164
+ * compatibleWith: "workspaces"
14165
+ * }
14166
+ * sortBy: RELEVANCE
14167
+ * pagination: { limit: 20, offset: 0 }
14168
+ * }) {
14169
+ * products { id name rating downloads }
14170
+ * totalCount
14171
+ * hasMore
14172
+ * facets { categories { value count } }
14173
+ * }
14174
+ * }
14175
+ * ```
14176
+ */
13449
14177
  browseStore: BrowseStoreResult;
13450
- /** Calculate tax for a purchase (preview without creating payment) Used by checkout to show tax breakdown before payment */
14178
+ /**
14179
+ * Calculate tax for a purchase (preview without creating payment)
14180
+ * Used by checkout to show tax breakdown before payment
14181
+ */
13451
14182
  calculateTax: TaxCalculationResult;
13452
14183
  campaign?: Maybe<NewsletterCampaign>;
13453
14184
  campaignBounces: Array<NewsletterBounce>;
@@ -13474,7 +14205,10 @@ export type Query = {
13474
14205
  checkPermissions: Array<PermissionCheckResult>;
13475
14206
  /** Check if a plan has an entitlement for a specific store item */
13476
14207
  checkPlanEntitlement?: Maybe<SubscriptionEntitlement>;
13477
- /** Check if the current user can access a specific product. Returns access status and reason. */
14208
+ /**
14209
+ * Check if the current user can access a specific product.
14210
+ * Returns access status and reason.
14211
+ */
13478
14212
  checkProductAccess: ProductAccessResult;
13479
14213
  checkQuotaExhausted: QuotaCheckResult;
13480
14214
  /** Check if an actor can see a resource */
@@ -13484,7 +14218,10 @@ export type Query = {
13484
14218
  circuitBreakerStatus?: Maybe<CircuitBreakerState>;
13485
14219
  compareVariants: VariantComparisonResult;
13486
14220
  complaintStats: ComplaintStats;
13487
- /** Returns compliance-related audit events (consent changes, suppressions, bounces, complaints) for a given platform product, sorted by most recent first. */
14221
+ /**
14222
+ * Returns compliance-related audit events (consent changes, suppressions, bounces, complaints)
14223
+ * for a given platform product, sorted by most recent first.
14224
+ */
13488
14225
  complianceAuditLog: Array<ComplianceAuditLogEntry>;
13489
14226
  complianceSettings?: Maybe<NewsletterComplianceSettings>;
13490
14227
  consentLedger: ConsentRecordConnection;
@@ -13495,19 +14232,25 @@ export type Query = {
13495
14232
  contactInquiry?: Maybe<ContactInquiry>;
13496
14233
  /** Get a single content page by ID */
13497
14234
  contentPage?: Maybe<ProductContentPage>;
13498
- /** Get a content page by slug and optional product ID. If productId is null, returns the global default page. */
14235
+ /**
14236
+ * Get a content page by slug and optional product ID.
14237
+ * If productId is null, returns the global default page.
14238
+ */
13499
14239
  contentPageBySlug?: Maybe<ProductContentPage>;
13500
14240
  /** List content pages with optional filtering by product */
13501
14241
  contentPages: ProductContentPageList;
13502
- /** Convert an amount from one currency to another (uses live exchange rates) Default fromCurrency is USD */
14242
+ /**
14243
+ * Convert an amount from one currency to another (uses live exchange rates)
14244
+ * Default fromCurrency is USD
14245
+ */
13503
14246
  convertCurrency: CurrencyConversion;
13504
14247
  currentUser?: Maybe<User>;
13505
- currentUserApps: Array<App>;
13506
- currentUserDelegations: Array<AppUserDelegation>;
14248
+ currentUserApps: AppConnection;
14249
+ currentUserDelegations: AppUserDelegationConnection;
13507
14250
  /** List delegations where current user granted access to apps */
13508
- currentUserGrantedDelegations: Array<AppUserDelegation>;
14251
+ currentUserGrantedDelegations: AppUserDelegationConnection;
13509
14252
  /** List MFA methods configured for the current user. */
13510
- currentUserMFAMethods: Array<MfaMethodStatus>;
14253
+ currentUserMFAMethods: MfaMethodStatusConnection;
13511
14254
  customerSatisfactionSurvey?: Maybe<CustomerSatisfactionSurvey>;
13512
14255
  customerSatisfactionSurveys: CustomerSatisfactionSurveyConnection;
13513
14256
  deadLetterQueueEntries: DeadLetterQueueConnection;
@@ -13572,9 +14315,27 @@ export type Query = {
13572
14315
  estimateNewsletterRecipients: NewsletterRecipientEstimate;
13573
14316
  /** Estimate shipping for an order with a specific method */
13574
14317
  estimateOrderShipping: OrderShippingEstimate;
13575
- /** Evaluate feature flags for the current actor in a workspace context. Used by frontend providers for bulk flag evaluation. Returns OpenFeature-compatible ResolutionDetails for each flag. RBAC is scoped to the target workspace via `input.workspaceId`. */
14318
+ /**
14319
+ * Evaluate feature flags for the current actor in a workspace context.
14320
+ * Used by frontend providers for bulk flag evaluation.
14321
+ * Returns OpenFeature-compatible ResolutionDetails for each flag.
14322
+ * RBAC is scoped to the target workspace via `input.workspaceId`.
14323
+ */
13576
14324
  evaluateFeatureFlags: FeatureFlagBulkEvaluation;
14325
+ /**
14326
+ * Synchronous super_admin export of organizations as a CSV string. Returns
14327
+ * inline CSV (RFC-4180 with CWE-1236 protection) plus row count and a
14328
+ * truncated flag indicating the result was capped at the requested limit.
14329
+ */
14330
+ exportOrganizationsCsv: OrganizationCsvExport;
13577
14331
  exportSubscribers: Array<ExportSubscriber>;
14332
+ /**
14333
+ * Synchronous superadmin export of tenants as a CSV string. The wspace-export-svc
14334
+ * pipeline is workspace-scoped (every entity needs `workspace_id`) and therefore
14335
+ * cannot host a global tenant export. Returning the data inline keeps the surface
14336
+ * small; switch to a global-export-svc when the row volume warrants async jobs.
14337
+ */
14338
+ exportTenantsCsv: TenantExport;
13578
14339
  exportTranslations: TranslationsExport;
13579
14340
  faq?: Maybe<Faq>;
13580
14341
  faqs: FaqConnection;
@@ -13586,9 +14347,15 @@ export type Query = {
13586
14347
  /** List feature flags with optional filtering (super admin only) */
13587
14348
  featureFlags: FeatureFlagList;
13588
14349
  featuredProducts: Array<StoreProduct>;
13589
- /** Get available filter options for a given context. Useful for populating filter dropdowns in UI. */
14350
+ /**
14351
+ * Get available filter options for a given context.
14352
+ * Useful for populating filter dropdowns in UI.
14353
+ */
13590
14354
  filterOptions: FilterOptionsResult;
13591
- /** Get active subscriptions for a billing account (optimized for dashboard) Only returns subscriptions with status = 'active' */
14355
+ /**
14356
+ * Get active subscriptions for a billing account (optimized for dashboard)
14357
+ * Only returns subscriptions with status = 'active'
14358
+ */
13592
14359
  getActiveSubscriptions: Array<BillingSubscription>;
13593
14360
  /** Get the price change history for a specific addon */
13594
14361
  getAddonPriceHistory: Array<AddonPriceHistory>;
@@ -13606,7 +14373,11 @@ export type Query = {
13606
14373
  /** Get a billing account by ID */
13607
14374
  getBillingAccount?: Maybe<BillingAccount>;
13608
14375
  getBillingAccountCreditTransactions: PaginatedCreditTransactions;
13609
- /** Get usage summary for all quotas of a billing account. Returns both subscription (PRODUCT_SPECIFIC) and pooled quotas. If productId is provided, filters subscription quotas by that product. */
14376
+ /**
14377
+ * Get usage summary for all quotas of a billing account.
14378
+ * Returns both subscription (PRODUCT_SPECIFIC) and pooled quotas.
14379
+ * If productId is provided, filters subscription quotas by that product.
14380
+ */
13610
14381
  getBillingAccountQuotasSummary: BillingAccountQuotasSummary;
13611
14382
  /** Get all billing accounts for the current org (from context) */
13612
14383
  getBillingAccountsByOrg: Array<BillingAccount>;
@@ -13619,12 +14390,24 @@ export type Query = {
13619
14390
  /** Get a channel by ID */
13620
14391
  getChannel?: Maybe<Channel>;
13621
14392
  getChannelConnectionTags: Array<ChannelConnectionTagAssignment>;
13622
- /** Get recent delivery attempts for a channel. Supports cursor pagination — pass `cursor` from the previous page's `nextCursor`. Falls back to offset when `cursor` is absent. */
14393
+ /**
14394
+ * Get recent delivery attempts for a channel.
14395
+ * Supports cursor pagination — pass `cursor` from the previous page's `nextCursor`.
14396
+ * Falls back to offset when `cursor` is absent.
14397
+ */
13623
14398
  getChannelDeliveryAttempts: DeliveryAttemptList;
14399
+ /**
14400
+ * Get organization-level channel settings.
14401
+ * Returns defaults when no settings have been saved yet.
14402
+ */
14403
+ getChannelOrgSettings: ChannelOrgSettings;
13624
14404
  /** Get channel statistics */
13625
14405
  getChannelStats: ChannelStats;
13626
14406
  getChannelTags: Array<ChannelTagAssignment>;
13627
- /** Get recent webhook events for a channel. Supports cursor pagination — pass `cursor` from the previous page's `nextCursor`. */
14407
+ /**
14408
+ * Get recent webhook events for a channel.
14409
+ * Supports cursor pagination — pass `cursor` from the previous page's `nextCursor`.
14410
+ */
13628
14411
  getChannelWebhookEvents: WebhookEventList;
13629
14412
  /** Get all channels with optional filtering */
13630
14413
  getChannels: ChannelList;
@@ -13632,19 +14415,29 @@ export type Query = {
13632
14415
  getChannelsByOrganization: ChannelList;
13633
14416
  /** Get channels by platform */
13634
14417
  getChannelsByPlatform: ChannelList;
13635
- /** Get channels for failover (sorted by priority, ascending). Returns channels for a platform that are enabled for failover. Used by delivery logic for priority-based fallback. */
14418
+ /**
14419
+ * Get channels for failover (sorted by priority, ascending).
14420
+ * Returns channels for a platform that are enabled for failover.
14421
+ * Used by delivery logic for priority-based fallback.
14422
+ */
13636
14423
  getChannelsForFailover: Array<Channel>;
13637
14424
  /** Get a charge by ID */
13638
14425
  getCharge?: Maybe<Charge>;
13639
14426
  /** Get all charges for the current org (from context), optionally filtered by status */
13640
14427
  getCharges: Array<Charge>;
13641
- /** Get a connection by ID NOTE: Credentials are never returned in queries */
14428
+ /**
14429
+ * Get a connection by ID
14430
+ * NOTE: Credentials are never returned in queries
14431
+ */
13642
14432
  getConnection?: Maybe<ChannelConnection>;
13643
14433
  /** Get connection by channel ID */
13644
14434
  getConnectionByChannel?: Maybe<ChannelConnection>;
13645
14435
  /** Get connection status summary */
13646
14436
  getConnectionStatus: ConnectionStatus;
13647
- /** Get all connections for an organization. Supports cursor pagination — pass `cursor` from the previous page's `nextCursor`. */
14437
+ /**
14438
+ * Get all connections for an organization.
14439
+ * Supports cursor pagination — pass `cursor` from the previous page's `nextCursor`.
14440
+ */
13648
14441
  getConnectionsByOrganization: ChannelConnectionList;
13649
14442
  getCostOfCredits: CreditCost;
13650
14443
  /** Get a coupon by ID */
@@ -13653,14 +14446,22 @@ export type Query = {
13653
14446
  getCouponByCode?: Maybe<Coupon>;
13654
14447
  /** Get coupon usage history */
13655
14448
  getCouponUsageHistory: CouponUsageListResponse;
13656
- /** Get credit balance broken down by type (purchased, earned, granted, withdrawable). Computed from the transaction ledger — use this for withdrawal eligibility checks. */
14449
+ /**
14450
+ * Get credit balance broken down by type (purchased, earned, granted, withdrawable).
14451
+ * Computed from the transaction ledger — use this for withdrawal eligibility checks.
14452
+ */
13657
14453
  getCreditBalanceByType: CreditBalanceByType;
13658
14454
  /** Get credit notes for the current org (from context) */
13659
14455
  getCreditNotes: Array<CreditNote>;
13660
14456
  getCreditTransactionDetails: CreditTransaction;
13661
14457
  /** Get the default/first billing account for the current org (from context) */
13662
14458
  getDefaultBillingAccount?: Maybe<BillingAccount>;
13663
- /** Get the default billing account for a specific organization by orgId. Returns the billing account where isDefault = true for the given orgId. If no default is set, returns the first active billing account. Used by gateway for automatic billing account resolution in usage tracking. */
14459
+ /**
14460
+ * Get the default billing account for a specific organization by orgId.
14461
+ * Returns the billing account where isDefault = true for the given orgId.
14462
+ * If no default is set, returns the first active billing account.
14463
+ * Used by gateway for automatic billing account resolution in usage tracking.
14464
+ */
13664
14465
  getDefaultBillingAccountByOrgId?: Maybe<BillingAccount>;
13665
14466
  /** Get the default payment method for a billing account */
13666
14467
  getDefaultPaymentMethod?: Maybe<PaymentMethod>;
@@ -13678,11 +14479,20 @@ export type Query = {
13678
14479
  getEntitlement?: Maybe<SubscriptionEntitlement>;
13679
14480
  /** Get external OIDC configuration for a tenant (Google, Microsoft, etc.) */
13680
14481
  getExternalOIDCConfig?: Maybe<ExternalOidcConfiguration>;
13681
- /** Get billing orders with failed callbacks (admin only) Useful for monitoring and manual retry */
14482
+ /**
14483
+ * Get billing orders with failed callbacks (admin only)
14484
+ * Useful for monitoring and manual retry
14485
+ */
13682
14486
  getFailedBillingOrderCallbacks: FailedBillingOrderCallbacksResponse;
13683
- /** Get failed delivery attempts for retry. Supports cursor pagination — pass `cursor` from the previous page's `nextCursor`. */
14487
+ /**
14488
+ * Get failed delivery attempts for retry.
14489
+ * Supports cursor pagination — pass `cursor` from the previous page's `nextCursor`.
14490
+ */
13684
14491
  getFailedDeliveryAttempts: DeliveryAttemptList;
13685
- /** Get failed webhook events for retry. Supports cursor pagination — pass `cursor` from the previous page's `nextCursor`. */
14492
+ /**
14493
+ * Get failed webhook events for retry.
14494
+ * Supports cursor pagination — pass `cursor` from the previous page's `nextCursor`.
14495
+ */
13686
14496
  getFailedWebhookEvents: WebhookEventList;
13687
14497
  /** Get an invoice by ID */
13688
14498
  getInvoice?: Maybe<Invoice>;
@@ -13708,7 +14518,10 @@ export type Query = {
13708
14518
  getPaymentFailures: Array<PaymentFailure>;
13709
14519
  /** Get payment methods for a billing account */
13710
14520
  getPaymentMethods: Array<PaymentMethod>;
13711
- /** Get payment provider configuration for frontend integration Returns public keys only (safe to expose to client) */
14521
+ /**
14522
+ * Get payment provider configuration for frontend integration
14523
+ * Returns public keys only (safe to expose to client)
14524
+ */
13712
14525
  getPaymentProviderConfig: PaymentProviderConfig;
13713
14526
  /** Get all payments for the current org (from context), optionally filtered by status */
13714
14527
  getPayments: Array<Payment>;
@@ -13731,7 +14544,10 @@ export type Query = {
13731
14544
  getReferralCodeByCode?: Maybe<ReferralCode>;
13732
14545
  /** Get a single refund record by ID */
13733
14546
  getRefundRecord?: Maybe<RefundRecord>;
13734
- /** Get refund records with filters and pagination (for admin dashboard). Uses orgId from context by default. Super admins can override with orgIdFilter. */
14547
+ /**
14548
+ * Get refund records with filters and pagination (for admin dashboard).
14549
+ * Uses orgId from context by default. Super admins can override with orgIdFilter.
14550
+ */
13735
14551
  getRefundRecords: PaginatedRefundRecords;
13736
14552
  /** Get refund statistics (counts and amounts) */
13737
14553
  getRefundStats: RefundStats;
@@ -13748,7 +14564,12 @@ export type Query = {
13748
14564
  getStoreProductTags: Array<StoreProductTagAssignment>;
13749
14565
  /** Get a subscription by ID */
13750
14566
  getSubscription?: Maybe<BillingSubscription>;
13751
- /** Enhanced subscription overview with better pagination and filtering @param includeExpired - Include past/canceled/expired subscriptions (default: false) @param onlyExpired - Only fetch past subscriptions for lazy loading (default: false) @param searchQuery - Search quotas by name in database (case-insensitive) */
14567
+ /**
14568
+ * Enhanced subscription overview with better pagination and filtering
14569
+ * @param includeExpired - Include past/canceled/expired subscriptions (default: false)
14570
+ * @param onlyExpired - Only fetch past subscriptions for lazy loading (default: false)
14571
+ * @param searchQuery - Search quotas by name in database (case-insensitive)
14572
+ */
13752
14573
  getSubscriptionUsageOverview?: Maybe<Array<SubscriptionWithQuotas>>;
13753
14574
  getSubscriptionUsages: SubscriptionQuotaUsageWithFilter;
13754
14575
  /** Get tax rates */
@@ -13771,7 +14592,10 @@ export type Query = {
13771
14592
  getWebhookStats: WebhookStats;
13772
14593
  /** Health check endpoint */
13773
14594
  health: HealthStatus;
13774
- /** Get grouped products for homepage. Optionally filter by compatible product (e.g., "bigconsole", "fluidgrids"). */
14595
+ /**
14596
+ * Get grouped products for homepage.
14597
+ * Optionally filter by compatible product (e.g., "bigconsole", "fluidgrids").
14598
+ */
13775
14599
  homeGroupedProducts: GroupedStoreProducts;
13776
14600
  homepageSections: Array<HomepageSection>;
13777
14601
  i18nModule?: Maybe<I18nModule>;
@@ -13786,7 +14610,12 @@ export type Query = {
13786
14610
  /** Initiate HTTP Digest auth challenge */
13787
14611
  initiateDigestChallenge: DigestChallengeResult;
13788
14612
  inventoryAdjustments: Array<InventoryAdjustment>;
13789
- /** Fast check for a single (app, workspace) pair. Used by wspace-auth-svc via the internal global gateway before issuing a workspace token to an app actor. Public (no actor RBAC) because the internal gateway is the only caller and it trusts the x-actor-* headers it injects. */
14613
+ /**
14614
+ * Fast check for a single (app, workspace) pair. Used by wspace-auth-svc via
14615
+ * the internal global gateway before issuing a workspace token to an app
14616
+ * actor. Public (no actor RBAC) because the internal gateway is the only
14617
+ * caller and it trusts the x-actor-* headers it injects.
14618
+ */
13790
14619
  isAppAuthorizedForWorkspace: Scalars['Boolean']['output'];
13791
14620
  isAppInstalled?: Maybe<StoreAppInstallation>;
13792
14621
  isEmailSuppressed: Scalars['Boolean']['output'];
@@ -13807,32 +14636,59 @@ export type Query = {
13807
14636
  listCoupons: CouponsListResponse;
13808
14637
  /** List all referral codes (admin) */
13809
14638
  listReferralCodes: ReferralCodesListResponse;
13810
- /** List all platform connections for a channel. Supports cursor pagination — pass `cursor` from the previous page's `nextCursor`. */
14639
+ /**
14640
+ * List all platform connections for a channel.
14641
+ * Supports cursor pagination — pass `cursor` from the previous page's `nextCursor`.
14642
+ */
13811
14643
  listUserPlatformConnectionsByChannel: UserPlatformConnectionList;
13812
- /** List all platform connections for an organization. Supports cursor pagination — pass `cursor` from the previous page's `nextCursor`. */
14644
+ /**
14645
+ * List all platform connections for an organization.
14646
+ * Supports cursor pagination — pass `cursor` from the previous page's `nextCursor`.
14647
+ */
13813
14648
  listUserPlatformConnectionsByOrganization: UserPlatformConnectionList;
13814
- /** List all platform connections for a given internal user. Supports cursor pagination — pass `cursor` from the previous page's `nextCursor`. */
14649
+ /**
14650
+ * List all platform connections for a given internal user.
14651
+ * Supports cursor pagination — pass `cursor` from the previous page's `nextCursor`.
14652
+ */
13815
14653
  listUserPlatformConnectionsByUser: UserPlatformConnectionList;
13816
14654
  lookupAffiliateCode?: Maybe<AffiliateCode>;
13817
14655
  lowStockProducts: Array<LowStockProduct>;
13818
- /** Returns products the current user can access based on their actor type, email domain, and waitlist approval status. Used by app shells for nav. */
14656
+ /**
14657
+ * Returns products the current user can access based on their actor type,
14658
+ * email domain, and waitlist approval status. Used by app shells for nav.
14659
+ */
13819
14660
  myAccessibleProducts: PlatformProductList;
13820
14661
  myActivityLogs: ActivityLogConnection;
13821
14662
  myAffiliateCodes: AffiliateCodeConnection;
13822
14663
  myAgentProfile?: Maybe<AgentProfile>;
13823
14664
  /** List API keys for current user's apps */
13824
- myApiKeys: Array<ApiKey>;
14665
+ myApiKeys: ApiKeyConnection;
13825
14666
  /** Get my installations */
13826
14667
  myAppInstallations: AppInstallationConnection;
13827
14668
  /** Get my review for an application */
13828
14669
  myAppReview?: Maybe<AppReview>;
13829
- /** Get all workspaces the actor is authorized to access Returns list with basic routing details (name, workspaceId, publicUrl) */
14670
+ /**
14671
+ * Get all workspaces the actor is authorized to access
14672
+ * Returns list with basic routing details (name, workspaceId, publicUrl)
14673
+ */
13830
14674
  myAuthorizedWorkspaces: WorkspaceRoutingList;
13831
14675
  /** Get the current user's active cart */
13832
14676
  myCart?: Maybe<Cart>;
13833
- /** Get the authenticated caller's own contact inquiries. Matches by email (case-insensitive). The public `submitContactInquiry` mutation stores submissions with `createdBy = "anonymous"`, so there is no userId to filter on; scoping by the gateway-forwarded email is the only reliable way to link a signed-in user back to their earlier anonymous submissions. */
14677
+ /**
14678
+ * Get the authenticated caller's own contact inquiries.
14679
+ *
14680
+ * Matches by email (case-insensitive). The public `submitContactInquiry`
14681
+ * mutation stores submissions with `createdBy = "anonymous"`, so there is no
14682
+ * userId to filter on; scoping by the gateway-forwarded email is the only
14683
+ * reliable way to link a signed-in user back to their earlier anonymous
14684
+ * submissions.
14685
+ */
13834
14686
  myContactInquiries: ContactInquiryList;
13835
- /** Get the current user's dashboard widget layout preferences. Returns the dashboard configuration JSON from preferences, or null if no customization has been saved (frontend uses defaults). */
14687
+ /**
14688
+ * Get the current user's dashboard widget layout preferences.
14689
+ * Returns the dashboard configuration JSON from preferences,
14690
+ * or null if no customization has been saved (frontend uses defaults).
14691
+ */
13836
14692
  myDashboardPreferences?: Maybe<Scalars['JSON']['output']>;
13837
14693
  /** Get my developer organizations (where I'm a member) */
13838
14694
  myDeveloperOrganizations: Array<DeveloperOrganization>;
@@ -13857,16 +14713,25 @@ export type Query = {
13857
14713
  myPayoutRequests: PayoutRequestConnection;
13858
14714
  /** Get my pending invitations */
13859
14715
  myPendingInvitations: Array<DeveloperOrgInvitation>;
13860
- /** Get current user's permissions in a scope (self-service). Returns full permission details including roles, permission strings, and cache TTL. */
14716
+ /**
14717
+ * Get current user's permissions in a scope (self-service).
14718
+ * Returns full permission details including roles, permission strings, and cache TTL.
14719
+ */
13861
14720
  myPermissions: EffectivePermissions;
13862
- /** Get the current user's full preferences record. Creates a default record if none exists. */
14721
+ /**
14722
+ * Get the current user's full preferences record.
14723
+ * Creates a default record if none exists.
14724
+ */
13863
14725
  myPreferences?: Maybe<UserPreference>;
13864
14726
  /** List user's registered public keys */
13865
14727
  myPublicKeys: Array<PublicKeyInfo>;
13866
14728
  /** Get the current user's publisher profile, or null if none exists yet. */
13867
14729
  myPublisher?: Maybe<Publisher>;
13868
14730
  myReviews: Array<ProductReview>;
13869
- /** Get current user's roles in a scope (lightweight, self-service). Use this for quick role checks without fetching full permissions. */
14731
+ /**
14732
+ * Get current user's roles in a scope (lightweight, self-service).
14733
+ * Use this for quick role checks without fetching full permissions.
14734
+ */
13870
14735
  myRoles: MyRolesResult;
13871
14736
  myStoreAppInstallations: StoreAppInstallationConnection;
13872
14737
  /** Stores the current user is subscribed to (auto-includes public stores). */
@@ -13877,14 +14742,24 @@ export type Query = {
13877
14742
  myTenants: TenantList;
13878
14743
  /** Get unread notification count for authenticated user */
13879
14744
  myUnreadNotificationCount: Scalars['Int']['output'];
13880
- /** Get the current authenticated user's platform connection for a given channel. Uses the actor's internal user ID from request context — no internalUserId argument needed. Returns null if the user has not connected this channel. */
14745
+ /**
14746
+ * Get the current authenticated user's platform connection for a given channel.
14747
+ * Uses the actor's internal user ID from request context — no internalUserId
14748
+ * argument needed. Returns null if the user has not connected this channel.
14749
+ */
13881
14750
  myUserPlatformConnection?: Maybe<UserPlatformConnection>;
13882
- /** Public: check waitlist status by email + product. Returns null if not on waitlist. Rate-limited at API gateway level. */
14751
+ /**
14752
+ * Public: check waitlist status by email + product. Returns null if not on waitlist.
14753
+ * Rate-limited at API gateway level.
14754
+ */
13883
14755
  myWaitlistStatus?: Maybe<NewsletterWaitlist>;
13884
14756
  /** List user's linked wallets */
13885
14757
  myWallets: Array<WalletInfo>;
13886
14758
  myWishlist: Array<UserWishlist>;
13887
- /** Get workspaces where the current user is a member Self-service query - returns only the authenticated user's workspaces */
14759
+ /**
14760
+ * Get workspaces where the current user is a member
14761
+ * Self-service query - returns only the authenticated user's workspaces
14762
+ */
13888
14763
  myWorkspaces: WorkspaceList;
13889
14764
  newsletter?: Maybe<Newsletter>;
13890
14765
  newsletterAutomation?: Maybe<NewsletterAutomation>;
@@ -13934,6 +14809,12 @@ export type Query = {
13934
14809
  orderFulfillment?: Maybe<OrderFulfillment>;
13935
14810
  /** Get a single organization by ID */
13936
14811
  organization?: Maybe<Organization>;
14812
+ /**
14813
+ * Paginated keyset connection over the persistent OrganizationAuditLog table.
14814
+ * Returns audit events for a single organization, newest first. Supports
14815
+ * optional filtering by `action` (event name) and `actorId`.
14816
+ */
14817
+ organizationAuditLogsConnection: OrganizationAuditLogConnection;
13937
14818
  /** Get an organization by slug within a tenant */
13938
14819
  organizationBySlug?: Maybe<Organization>;
13939
14820
  /** Get pending invites for an organization (admin view) */
@@ -13979,25 +14860,52 @@ export type Query = {
13979
14860
  productOrders: ItemOrdersList;
13980
14861
  productReleases: Array<ProductRelease>;
13981
14862
  productReviews: Array<ProductReview>;
13982
- /** Get shortcuts for a specific product (includes global shortcuts). Bounded by limit/offset to avoid unbounded fetches. */
14863
+ /**
14864
+ * Get shortcuts for a specific product (includes global shortcuts).
14865
+ * Bounded by limit/offset to avoid unbounded fetches.
14866
+ */
13983
14867
  productShortcuts: Array<KeyboardShortcut>;
13984
14868
  /** Get product-level tour statistics */
13985
14869
  productTourStatistics: ProductTourStatistics;
13986
14870
  products: Array<StoreProduct>;
13987
14871
  pseudoLocaleStats: PseudoLocaleStats;
13988
- /** Get all active addons for a specific product (public, no authentication required). Used by product website pricing pages. Only returns active addons. */
14872
+ /**
14873
+ * Get all active addons for a specific product (public, no authentication required).
14874
+ * Used by product website pricing pages.
14875
+ * Only returns active addons.
14876
+ */
13989
14877
  publicAddons: Array<Addon>;
13990
- /** Get a public content page by slug and optional product ID. Only returns pages with visibility=PUBLIC and isPublished=true. */
14878
+ /**
14879
+ * Get a public content page by slug and optional product ID.
14880
+ * Only returns pages with visibility=PUBLIC and isPublished=true.
14881
+ */
13991
14882
  publicContentPage?: Maybe<ProductContentPage>;
13992
- /** List public content pages for a product. Only returns pages with visibility=PUBLIC and isPublished=true. */
14883
+ /**
14884
+ * List public content pages for a product.
14885
+ * Only returns pages with visibility=PUBLIC and isPublished=true.
14886
+ */
13993
14887
  publicContentPages: ProductContentPageList;
13994
- /** Get all active plans for a specific product (public, no authentication required). Used by product website pricing pages. Only returns active plans with their features. */
14888
+ /**
14889
+ * Get all active plans for a specific product (public, no authentication required).
14890
+ * Used by product website pricing pages.
14891
+ * Only returns active plans with their features.
14892
+ */
13995
14893
  publicPlans: Array<Plan>;
13996
- /** Get a platform product by slug (public, no auth required). Returns only ACTIVE or WAITLIST products. Does NOT expose sensitive fields like recaptchaSecretKey. */
14894
+ /**
14895
+ * Get a platform product by slug (public, no auth required).
14896
+ * Returns only ACTIVE or WAITLIST products.
14897
+ * Does NOT expose sensitive fields like recaptchaSecretKey.
14898
+ */
13997
14899
  publicProduct?: Maybe<PlatformProduct>;
13998
- /** Get all platform products (public, no auth required). Returns only ACTIVE or WAITLIST products (WAITLIST products are visible for waitlist signup). */
14900
+ /**
14901
+ * Get all platform products (public, no auth required).
14902
+ * Returns only ACTIVE or WAITLIST products (WAITLIST products are visible for waitlist signup).
14903
+ */
13999
14904
  publicProducts: PlatformProductList;
14000
- /** Resolve a public content page for a product with template variable replacement. Only returns pages with visibility=PUBLIC and isPublished=true. */
14905
+ /**
14906
+ * Resolve a public content page for a product with template variable replacement.
14907
+ * Only returns pages with visibility=PUBLIC and isPublished=true.
14908
+ */
14001
14909
  publicResolvedContentPage?: Maybe<ProductContentPage>;
14002
14910
  publicScheduleTemplates: ScheduleTemplateConnection;
14003
14911
  publishedProducts: Array<StoreProduct>;
@@ -14012,7 +14920,11 @@ export type Query = {
14012
14920
  recentArticles: Array<KnowledgeBaseArticle>;
14013
14921
  releaseAuditEvents: Array<ProductReleaseAuditEvent>;
14014
14922
  releaseTracks: Array<ReleaseTrack>;
14015
- /** Resolve the effective content page for a product. Returns the product-specific page if it exists, otherwise the global default. Template variables in content (e.g. {{productName}}) are replaced with product data. */
14923
+ /**
14924
+ * Resolve the effective content page for a product.
14925
+ * Returns the product-specific page if it exists, otherwise the global default.
14926
+ * Template variables in content (e.g. {{productName}}) are replaced with product data.
14927
+ */
14016
14928
  resolvedContentPage?: Maybe<ProductContentPage>;
14017
14929
  /** Get a specific registered resource by ID */
14018
14930
  resource?: Maybe<Resource>;
@@ -14048,7 +14960,11 @@ export type Query = {
14048
14960
  searchFAQs: Array<Faq>;
14049
14961
  searchKnowledgeBase: Array<KnowledgeBaseArticle>;
14050
14962
  searchProducts: Array<StoreProduct>;
14051
- /** Get search suggestions for autocomplete. Returns suggestions from product names, tags, categories, and authors. Uses trigram matching for fuzzy search. */
14963
+ /**
14964
+ * Get search suggestions for autocomplete.
14965
+ * Returns suggestions from product names, tags, categories, and authors.
14966
+ * Uses trigram matching for fuzzy search.
14967
+ */
14052
14968
  searchSuggestions: Array<SearchSuggestion>;
14053
14969
  searchTicketTemplates: Array<TicketTemplate>;
14054
14970
  searchTickets: Array<SupportTicket>;
@@ -14060,7 +14976,26 @@ export type Query = {
14060
14976
  /** Fetch a store by id or slug. */
14061
14977
  store?: Maybe<Store>;
14062
14978
  storeAppInstallation?: Maybe<StoreAppInstallation>;
14063
- /** Get detailed product information for the app details page. Includes product data, reviews, related products, publisher info, and version history. Automatically increments view count. Example usage: ```graphql query { storeProductDetails(input: { id: "product-123" }) { product { id name description manifest rating downloads } reviews { id rating comment } relatedProducts { id name icon } publisher { id name isVerified } versions { id version status } userReview { id rating } isPurchased } } ``` */
14979
+ /**
14980
+ * Get detailed product information for the app details page.
14981
+ * Includes product data, reviews, related products, publisher info, and version history.
14982
+ * Automatically increments view count.
14983
+ *
14984
+ * Example usage:
14985
+ * ```graphql
14986
+ * query {
14987
+ * storeProductDetails(input: { id: "product-123" }) {
14988
+ * product { id name description manifest rating downloads }
14989
+ * reviews { id rating comment }
14990
+ * relatedProducts { id name icon }
14991
+ * publisher { id name isVerified }
14992
+ * versions { id version status }
14993
+ * userReview { id rating }
14994
+ * isPurchased
14995
+ * }
14996
+ * }
14997
+ * ```
14998
+ */
14064
14999
  storeProductDetails: StoreProductDetailsResult;
14065
15000
  /** List all stores the caller can see. */
14066
15001
  stores: Array<Store>;
@@ -14090,7 +15025,11 @@ export type Query = {
14090
15025
  tenant?: Maybe<Tenant>;
14091
15026
  /** Get a tenant by slug */
14092
15027
  tenantBySlug?: Maybe<Tenant>;
14093
- /** Get tenant routing info by ID. Lightweight query for gateway routing decisions. Returns type (SHARED/DEDICATED), endpoint, and status. */
15028
+ /**
15029
+ * Get tenant routing info by ID.
15030
+ * Lightweight query for gateway routing decisions.
15031
+ * Returns type (SHARED/DEDICATED), endpoint, and status.
15032
+ */
14094
15033
  tenantRoutingInfo?: Maybe<TenantRoutingInfo>;
14095
15034
  /** List all tenants with optional filtering and pagination */
14096
15035
  tenants: TenantList;
@@ -14130,7 +15069,12 @@ export type Query = {
14130
15069
  tourUserProgressList: Array<TourUserProgress>;
14131
15070
  /** Get tours with optional filtering and pagination */
14132
15071
  tours: ToursResponse;
14133
- /** Get tours for a specific context (product/module/page). Public endpoint consumed by frontend SDKs without authentication (the resolver returns published, active, in-window tours and uses an anonymous actor id). See spec global-specs/modules/tours/RBAC.md:34. */
15072
+ /**
15073
+ * Get tours for a specific context (product/module/page).
15074
+ * Public endpoint consumed by frontend SDKs without authentication
15075
+ * (the resolver returns published, active, in-window tours and uses an
15076
+ * anonymous actor id). See spec global-specs/modules/tours/RBAC.md:34.
15077
+ */
14134
15078
  toursForContext: Array<Tour>;
14135
15079
  translation?: Maybe<Translation>;
14136
15080
  translationAudit: TranslationAuditList;
@@ -14141,24 +15085,35 @@ export type Query = {
14141
15085
  translationKeys: TranslationKeyList;
14142
15086
  translationStats: Scalars['JSON']['output'];
14143
15087
  translations: TranslationList;
14144
- /** Get popular/trending search terms. Useful for showing suggestions when search input is empty. */
15088
+ /**
15089
+ * Get popular/trending search terms.
15090
+ * Useful for showing suggestions when search input is empty.
15091
+ */
14145
15092
  trendingSearches: Array<Scalars['String']['output']>;
14146
15093
  /** Get a user by ID (admin only) */
14147
15094
  user?: Maybe<User>;
14148
15095
  /** Get total count of users (for analytics) */
14149
15096
  userCount: Scalars['Int']['output'];
14150
- /** Get a user's feature flag preferences in a workspace. Bounded by limit/offset to avoid unbounded fetches. */
15097
+ /**
15098
+ * Get a user's feature flag preferences in a workspace.
15099
+ * Bounded by limit/offset to avoid unbounded fetches.
15100
+ */
14151
15101
  userFeatureFlagPreferences: Array<UserFeatureFlagPreference>;
14152
15102
  userLanguagePreference?: Maybe<UserLanguagePreference>;
14153
15103
  /** Check if the current user has reviewed a specific product */
14154
15104
  userReviewForProduct?: Maybe<ProductReview>;
15105
+ /** Get tags assigned to a user */
15106
+ userTags: Array<UserTagAssignment>;
14155
15107
  /** Get all of a user's progress across tours */
14156
15108
  userTourProgresses: Array<TourUserProgress>;
14157
15109
  /** List users with filtering and pagination (admin only) */
14158
15110
  users: UserConnection;
14159
15111
  /** Validate a coupon code for a specific order */
14160
15112
  validateCoupon: ValidateCouponResponse;
14161
- /** Validate a license key without modifying state. Used by vibecontrols agents + wspace services to check license validity before plugin load. */
15113
+ /**
15114
+ * Validate a license key without modifying state. Used by vibecontrols
15115
+ * agents + wspace services to check license validity before plugin load.
15116
+ */
14162
15117
  validateLicense: LicenseValidationResult;
14163
15118
  validatePromoCode: PromoCodeValidationResult;
14164
15119
  /** Get visibility rules for a resource */
@@ -14176,13 +15131,23 @@ export type Query = {
14176
15131
  workspaceAnalyticsSummary: WorkspaceTourAnalyticsSummary;
14177
15132
  /** Get a workspace by slug within a tenant */
14178
15133
  workspaceBySlug?: Maybe<Workspace>;
14179
- /** Get workspace overrides for a specific workspace. Bounded by limit/offset to avoid unbounded fetches. */
15134
+ /**
15135
+ * Get workspace overrides for a specific workspace.
15136
+ * Bounded by limit/offset to avoid unbounded fetches.
15137
+ */
14180
15138
  workspaceFeatureFlagOverrides: Array<WorkspaceFeatureFlagOverride>;
14181
15139
  /** Get members of a workspace */
14182
15140
  workspaceMembers: WorkspaceMemberList;
14183
- /** Get public details of a workspace by ID Returns public info if actor is authorized */
15141
+ /**
15142
+ * Get public details of a workspace by ID
15143
+ * Returns public info if actor is authorized
15144
+ */
14184
15145
  workspacePublicDetails?: Maybe<WorkspacePublicDetails>;
14185
- /** Get workspace routing info by ID Returns workspace name, endpoint (publicUrl), region for routing purposes Requires actor to be a member of the workspace */
15146
+ /**
15147
+ * Get workspace routing info by ID
15148
+ * Returns workspace name, endpoint (publicUrl), region for routing purposes
15149
+ * Requires actor to be a member of the workspace
15150
+ */
14186
15151
  workspaceRouting?: Maybe<WorkspaceRouting>;
14187
15152
  /** Get workspace store orders with pagination */
14188
15153
  workspaceStoreOrders: StoreOrdersResult;
@@ -14818,11 +15783,21 @@ export type QueryEvaluateFeatureFlagsArgs = {
14818
15783
  input: EvaluateFeatureFlagsInput;
14819
15784
  };
14820
15785
  /** Root query type */
15786
+ export type QueryExportOrganizationsCsvArgs = {
15787
+ filter?: InputMaybe<OrganizationFilterInput>;
15788
+ limit?: InputMaybe<Scalars['Int']['input']>;
15789
+ };
15790
+ /** Root query type */
14821
15791
  export type QueryExportSubscribersArgs = {
14822
15792
  platformProductId?: InputMaybe<Scalars['String']['input']>;
14823
15793
  subscribed?: InputMaybe<Scalars['Boolean']['input']>;
14824
15794
  };
14825
15795
  /** Root query type */
15796
+ export type QueryExportTenantsCsvArgs = {
15797
+ filter?: InputMaybe<TenantFilterInput>;
15798
+ limit?: InputMaybe<Scalars['Int']['input']>;
15799
+ };
15800
+ /** Root query type */
14826
15801
  export type QueryExportTranslationsArgs = {
14827
15802
  format: ImportJobFormat;
14828
15803
  languageCode?: InputMaybe<Scalars['String']['input']>;
@@ -14955,6 +15930,10 @@ export type QueryGetChannelDeliveryAttemptsArgs = {
14955
15930
  limit?: InputMaybe<Scalars['Int']['input']>;
14956
15931
  };
14957
15932
  /** Root query type */
15933
+ export type QueryGetChannelOrgSettingsArgs = {
15934
+ organizationId: Scalars['ID']['input'];
15935
+ };
15936
+ /** Root query type */
14958
15937
  export type QueryGetChannelStatsArgs = {
14959
15938
  id: Scalars['ID']['input'];
14960
15939
  };
@@ -15793,6 +16772,14 @@ export type QueryOrganizationArgs = {
15793
16772
  id: Scalars['ID']['input'];
15794
16773
  };
15795
16774
  /** Root query type */
16775
+ export type QueryOrganizationAuditLogsConnectionArgs = {
16776
+ action?: InputMaybe<Scalars['String']['input']>;
16777
+ actorId?: InputMaybe<Scalars['ID']['input']>;
16778
+ after?: InputMaybe<Scalars['String']['input']>;
16779
+ first?: InputMaybe<Scalars['Int']['input']>;
16780
+ organizationId: Scalars['ID']['input'];
16781
+ };
16782
+ /** Root query type */
15796
16783
  export type QueryOrganizationBySlugArgs = {
15797
16784
  slug: Scalars['String']['input'];
15798
16785
  tenantId: Scalars['String']['input'];
@@ -16473,6 +17460,10 @@ export type QueryUserReviewForProductArgs = {
16473
17460
  productId: Scalars['String']['input'];
16474
17461
  };
16475
17462
  /** Root query type */
17463
+ export type QueryUserTagsArgs = {
17464
+ userId: Scalars['ID']['input'];
17465
+ };
17466
+ /** Root query type */
16476
17467
  export type QueryUserTourProgressesArgs = {
16477
17468
  pagination?: InputMaybe<TourPagination>;
16478
17469
  userId?: InputMaybe<Scalars['ID']['input']>;
@@ -16593,7 +17584,12 @@ export type Quota = {
16593
17584
  name?: Maybe<Scalars['String']['output']>;
16594
17585
  /** Defines whether this quota template is pooled (shared across products) or product-specific. */
16595
17586
  quotaType?: Maybe<QuotaType>;
16596
- /** When does usage reset for assignments of this quota? NEVER = static limit (seats, agents, storage cap) DAILY = resets each day at midnight UTC (API requests/day, AI sessions/day) MONTHLY = resets at the start of each billing cycle */
17587
+ /**
17588
+ * When does usage reset for assignments of this quota?
17589
+ * NEVER = static limit (seats, agents, storage cap)
17590
+ * DAILY = resets each day at midnight UTC (API requests/day, AI sessions/day)
17591
+ * MONTHLY = resets at the start of each billing cycle
17592
+ */
16597
17593
  resetPeriod?: Maybe<QuotaResetPeriod>;
16598
17594
  /** A Quota is reusable or not (e.g., bot,seats). */
16599
17595
  reusable?: Maybe<Scalars['Boolean']['output']>;
@@ -16618,7 +17614,11 @@ export type QuotaAssignment = {
16618
17614
  endtime?: Maybe<Scalars['DateTime']['output']>;
16619
17615
  /** The unique identifier for the QuotaAssignment, automatically generated as a UUID. */
16620
17616
  id?: Maybe<Scalars['ID']['output']>;
16621
- /** When limits were last restored to their original value by the reset job. Null means this assignment has never been reset in-place. The daily QuotaResetWorkflow uses this to find assignments that need resetting. */
17617
+ /**
17618
+ * When limits were last restored to their original value by the reset job.
17619
+ * Null means this assignment has never been reset in-place.
17620
+ * The daily QuotaResetWorkflow uses this to find assignments that need resetting.
17621
+ */
16622
17622
  lastResetAt?: Maybe<Scalars['DateTime']['output']>;
16623
17623
  /** A JSON object defining the limits associated with the assigned quota (e.g., data caps, usage limits). */
16624
17624
  limits?: Maybe<Scalars['JSON']['output']>;
@@ -16626,7 +17626,10 @@ export type QuotaAssignment = {
16626
17626
  name?: Maybe<Scalars['String']['output']>;
16627
17627
  /** The type of quota - POOLED (billing account level) or PRODUCT_SPECIFIC (subscription level). */
16628
17628
  quotaType?: Maybe<QuotaType>;
16629
- /** Copied from parent Quota.resetPeriod at creation. Tells the reset job how often limits.value should be restored. DAILY = restore every midnight UTC. */
17629
+ /**
17630
+ * Copied from parent Quota.resetPeriod at creation. Tells the reset job how often
17631
+ * limits.value should be restored. DAILY = restore every midnight UTC.
17632
+ */
16630
17633
  resetPeriod?: Maybe<QuotaResetPeriod>;
16631
17634
  /** A Quota is reusable or not (e.g., bot,seats). */
16632
17635
  reusable?: Maybe<Scalars['Boolean']['output']>;
@@ -17191,10 +18194,18 @@ export type RegisterProductAssetInput = {
17191
18194
  caption?: InputMaybe<Scalars['String']['input']>;
17192
18195
  fileName?: InputMaybe<Scalars['String']['input']>;
17193
18196
  fileType: ProductAssetType;
17194
- /** File ID returned from wspace-files-svc's completeUpload mutation. The browser uploads the file directly to files-svc, then calls this mutation to link it to the product. */
18197
+ /**
18198
+ * File ID returned from wspace-files-svc's completeUpload mutation.
18199
+ * The browser uploads the file directly to files-svc, then calls this
18200
+ * mutation to link it to the product.
18201
+ */
17195
18202
  filesSvcId: Scalars['ID']['input'];
17196
18203
  locale?: InputMaybe<Scalars['String']['input']>;
17197
- /** If true (default), marks previous assets of the same fileType+locale as no longer current. Set to false to keep multiple live copies (e.g. when building a screenshot gallery). */
18204
+ /**
18205
+ * If true (default), marks previous assets of the same fileType+locale as
18206
+ * no longer current. Set to false to keep multiple live copies (e.g. when
18207
+ * building a screenshot gallery).
18208
+ */
17198
18209
  makeCurrent?: InputMaybe<Scalars['Boolean']['input']>;
17199
18210
  mimeType?: InputMaybe<Scalars['String']['input']>;
17200
18211
  orderIndex?: InputMaybe<Scalars['Int']['input']>;
@@ -17328,7 +18339,11 @@ export type ResolveContextWidgetConversationInput = {
17328
18339
  title?: InputMaybe<Scalars['String']['input']>;
17329
18340
  workspaceId: Scalars['ID']['input'];
17330
18341
  };
17331
- /** Registered resource with custom permission configurations. Resources are only registered when they have non-default permissions (overrides, visibility rules, or scoped assignments). */
18342
+ /**
18343
+ * Registered resource with custom permission configurations.
18344
+ * Resources are only registered when they have non-default permissions
18345
+ * (overrides, visibility rules, or scoped assignments).
18346
+ */
17332
18347
  export type Resource = {
17333
18348
  __typename?: 'Resource';
17334
18349
  children: Array<Resource>;
@@ -17953,6 +18968,13 @@ export type Session = {
17953
18968
  status: SessionStatus;
17954
18969
  userAgent?: Maybe<Scalars['String']['output']>;
17955
18970
  };
18971
+ /** Paginated list of sessions */
18972
+ export type SessionConnection = {
18973
+ __typename?: 'SessionConnection';
18974
+ hasMore: Scalars['Boolean']['output'];
18975
+ sessions: Array<Session>;
18976
+ totalCount: Scalars['Int']['output'];
18977
+ };
17956
18978
  export declare enum SessionStatus {
17957
18979
  Active = "ACTIVE",
17958
18980
  Expired = "EXPIRED",
@@ -18207,17 +19229,32 @@ export type SpendCreditResponse = {
18207
19229
  export type SpendCreditsInput = {
18208
19230
  addOnIds?: InputMaybe<Array<InputMaybe<AddOnInputPayment>>>;
18209
19231
  billingAccountId: Scalars['String']['input'];
18210
- /** For plan downgrades — the active higher-tier subscription ID. Old subscription's auto-renewal is cancelled so it won't charge again; it stays active until natural expiry and then the new plan continues. */
19232
+ /**
19233
+ * For plan downgrades — the active higher-tier subscription ID.
19234
+ * Old subscription's auto-renewal is cancelled so it won't charge again;
19235
+ * it stays active until natural expiry and then the new plan continues.
19236
+ */
18211
19237
  downgradeFromSubscriptionId?: InputMaybe<Scalars['String']['input']>;
18212
19238
  isAnnual?: InputMaybe<Scalars['Boolean']['input']>;
18213
19239
  /** Order ID to purchase using credits (for store orders, etc.) */
18214
19240
  orderId?: InputMaybe<Scalars['String']['input']>;
18215
19241
  planId?: InputMaybe<Scalars['String']['input']>;
18216
- /** Number of seats for PER_SEAT plans. Stored on the created subscription. Credits required = pricePerSeat × seatCount × creditsPerUSD (instead of plan.price). Ignored for FLAT_RATE plans. */
19242
+ /**
19243
+ * Number of seats for PER_SEAT plans. Stored on the created subscription.
19244
+ * Credits required = pricePerSeat × seatCount × creditsPerUSD (instead of plan.price).
19245
+ * Ignored for FLAT_RATE plans.
19246
+ */
18217
19247
  seatCount?: InputMaybe<Scalars['Int']['input']>;
18218
- /** For addon purchases - the subscription ID to attach addons to. Required if billing account has multiple active subscriptions. If only one active subscription exists, it will be auto-selected. */
19248
+ /**
19249
+ * For addon purchases - the subscription ID to attach addons to.
19250
+ * Required if billing account has multiple active subscriptions.
19251
+ * If only one active subscription exists, it will be auto-selected.
19252
+ */
18219
19253
  subscriptionId?: InputMaybe<Scalars['String']['input']>;
18220
- /** For plan upgrades - the subscription ID to upgrade from. Old quotas will be moved to the new subscription. */
19254
+ /**
19255
+ * For plan upgrades - the subscription ID to upgrade from.
19256
+ * Old quotas will be moved to the new subscription.
19257
+ */
18221
19258
  upgradeFromSubscriptionId?: InputMaybe<Scalars['String']['input']>;
18222
19259
  };
18223
19260
  export type Store = {
@@ -18281,7 +19318,10 @@ export type StoreFacets = {
18281
19318
  /** Available types with counts */
18282
19319
  types: Array<FacetCount>;
18283
19320
  };
18284
- /** Unified filter input for browsing/searching store products. All filters combine with AND logic - search is treated as a filter. */
19321
+ /**
19322
+ * Unified filter input for browsing/searching store products.
19323
+ * All filters combine with AND logic - search is treated as a filter.
19324
+ */
18285
19325
  export type StoreFilterInput = {
18286
19326
  /** Filter by author name (partial match) */
18287
19327
  authorName?: InputMaybe<Scalars['String']['input']>;
@@ -18291,7 +19331,10 @@ export type StoreFilterInput = {
18291
19331
  categories?: InputMaybe<Array<Scalars['String']['input']>>;
18292
19332
  /** Filter by exact category match (e.g., "Customer Support", "Notification") */
18293
19333
  category?: InputMaybe<Scalars['String']['input']>;
18294
- /** Filter by compatible product (e.g., "workspaces", "fluidgrids", "bigconsole") Products must be compatible with this product. */
19334
+ /**
19335
+ * Filter by compatible product (e.g., "workspaces", "fluidgrids", "bigconsole")
19336
+ * Products must be compatible with this product.
19337
+ */
18295
19338
  compatibleWith?: InputMaybe<Scalars['String']['input']>;
18296
19339
  /** Filter only featured products */
18297
19340
  featured?: InputMaybe<Scalars['Boolean']['input']>;
@@ -18321,11 +19364,24 @@ export type StoreFilterInput = {
18321
19364
  publisherId?: InputMaybe<Scalars['String']['input']>;
18322
19365
  /** Filter products that require shipping */
18323
19366
  requiresShipping?: InputMaybe<Scalars['Boolean']['input']>;
18324
- /** Full-text search query. Searches across: - name (highest priority) - description - tags - authorName, category (lowest priority) Uses PostgreSQL tsvector with weighted ranking. */
19367
+ /**
19368
+ * Full-text search query. Searches across:
19369
+ * - name (highest priority)
19370
+ * - description
19371
+ * - tags
19372
+ * - authorName, category (lowest priority)
19373
+ * Uses PostgreSQL tsvector with weighted ranking.
19374
+ */
18325
19375
  search?: InputMaybe<Scalars['String']['input']>;
18326
19376
  /** Filter by product status (defaults to PUBLISHED for consumer queries) */
18327
19377
  status?: InputMaybe<ProductStatus>;
18328
- /** Filter by type-specific subtype. Examples: - For AGENT: "task_automation", "conversational", "research" - For NODE: "action", "trigger", "integration", "ai" - For WIDGET: "chart", "metric", "table", "map" */
19378
+ /**
19379
+ * Filter by type-specific subtype.
19380
+ * Examples:
19381
+ * - For AGENT: "task_automation", "conversational", "research"
19382
+ * - For NODE: "action", "trigger", "integration", "ai"
19383
+ * - For WIDGET: "chart", "metric", "table", "map"
19384
+ */
18329
19385
  subType?: InputMaybe<Scalars['String']['input']>;
18330
19386
  /** Filter by multiple subtypes (OR within this filter) */
18331
19387
  subTypes?: InputMaybe<Array<Scalars['String']['input']>>;
@@ -18350,7 +19406,12 @@ export declare enum StoreInstallationStatus {
18350
19406
  Pending = "PENDING",
18351
19407
  Uninstalled = "UNINSTALLED"
18352
19408
  }
18353
- /** StoreItem entity reference. The actual StoreItem is defined in the Store service. In Federation 2 setup, this will be marked with @key directive. For now, this is a reference type that returns the itemId for the Gateway to resolve. */
19409
+ /**
19410
+ * StoreItem entity reference.
19411
+ * The actual StoreItem is defined in the Store service.
19412
+ * In Federation 2 setup, this will be marked with @key directive.
19413
+ * For now, this is a reference type that returns the itemId for the Gateway to resolve.
19414
+ */
18354
19415
  export type StoreItem = {
18355
19416
  __typename?: 'StoreItem';
18356
19417
  /** The unique identifier for the store item */
@@ -18377,7 +19438,11 @@ export type StoreLineItemInput = {
18377
19438
  /** Product version at time of purchase */
18378
19439
  version?: InputMaybe<Scalars['String']['input']>;
18379
19440
  };
18380
- /** External entity stub for StoreOrder from store-svc. Federation gateway will resolve full StoreOrder data from store-svc. Used by: BillingAccount.storeOrders (if extended), Transaction.storeOrder */
19441
+ /**
19442
+ * External entity stub for StoreOrder from store-svc.
19443
+ * Federation gateway will resolve full StoreOrder data from store-svc.
19444
+ * Used by: BillingAccount.storeOrders (if extended), Transaction.storeOrder
19445
+ */
18381
19446
  export type StoreOrder = {
18382
19447
  __typename?: 'StoreOrder';
18383
19448
  appliedEntitlementId?: Maybe<Scalars['String']['output']>;
@@ -18388,7 +19453,11 @@ export type StoreOrder = {
18388
19453
  /** Context JSON (must include workspace_id) */
18389
19454
  context: Scalars['JSON']['output'];
18390
19455
  createdAt: Scalars['DateTime']['output'];
18391
- /** Currency captured when the store order was created. Billing may still convert at payment time, but this is the canonical order currency for checkout display and reconciliation. */
19456
+ /**
19457
+ * Currency captured when the store order was created.
19458
+ * Billing may still convert at payment time, but this is the canonical
19459
+ * order currency for checkout display and reconciliation.
19460
+ */
18392
19461
  currency: Scalars['String']['output'];
18393
19462
  /** Fulfillment tracking for physical orders */
18394
19463
  fulfillment?: Maybe<OrderFulfillment>;
@@ -18401,7 +19470,10 @@ export type StoreOrder = {
18401
19470
  /** When payment was completed (null if still pending) */
18402
19471
  purchasedAt?: Maybe<Scalars['DateTime']['output']>;
18403
19472
  status: OrderStatus;
18404
- /** Total product cost (sum of line items) Note: Currency, tax, and final billing amount handled by billing service */
19473
+ /**
19474
+ * Total product cost (sum of line items)
19475
+ * Note: Currency, tax, and final billing amount handled by billing service
19476
+ */
18405
19477
  total: Scalars['Float']['output'];
18406
19478
  transaction?: Maybe<Transaction>;
18407
19479
  /** Transaction ID from billing service (set after payment) */
@@ -18425,7 +19497,11 @@ export type StorePaginationInput = {
18425
19497
  /** Number of items to skip (for offset pagination) */
18426
19498
  offset?: InputMaybe<Scalars['Int']['input']>;
18427
19499
  };
18428
- /** External entity stub for StoreProduct from store-svc. Federation gateway will resolve full StoreProduct data from store-svc. Used by: SubscriptionEntitlement.storeProduct */
19500
+ /**
19501
+ * External entity stub for StoreProduct from store-svc.
19502
+ * Federation gateway will resolve full StoreProduct data from store-svc.
19503
+ * Used by: SubscriptionEntitlement.storeProduct
19504
+ */
18429
19505
  export type StoreProduct = {
18430
19506
  __typename?: 'StoreProduct';
18431
19507
  /** Allow orders when out of stock (physical products) */
@@ -18435,7 +19511,10 @@ export type StoreProduct = {
18435
19511
  /** Brand name (physical products) */
18436
19512
  brand?: Maybe<Scalars['String']['output']>;
18437
19513
  category?: Maybe<Scalars['String']['output']>;
18438
- /** Compatible products (from manifest.compatibility.products) Examples: ["fluidgrids", "workspaces", "bigconsole", "botlit"] */
19514
+ /**
19515
+ * Compatible products (from manifest.compatibility.products)
19516
+ * Examples: ["fluidgrids", "workspaces", "bigconsole", "botlit"]
19517
+ */
18439
19518
  compatibleProducts: Array<Scalars['String']['output']>;
18440
19519
  content?: Maybe<Scalars['JSON']['output']>;
18441
19520
  context?: Maybe<Scalars['JSON']['output']>;
@@ -18454,9 +19533,15 @@ export type StoreProduct = {
18454
19533
  height?: Maybe<Scalars['Float']['output']>;
18455
19534
  icon?: Maybe<Scalars['String']['output']>;
18456
19535
  id: Scalars['ID']['output'];
18457
- /** Integration dependencies (from manifest.dependencies.integrations) Examples: ["slack", "sendgrid", "zendesk", "salesforce"] */
19536
+ /**
19537
+ * Integration dependencies (from manifest.dependencies.integrations)
19538
+ * Examples: ["slack", "sendgrid", "zendesk", "salesforce"]
19539
+ */
18458
19540
  integrationDeps: Array<Scalars['String']['output']>;
18459
- /** Whether this product is already purchased by the current billing account. Computed field based on billingAccountId context. */
19541
+ /**
19542
+ * Whether this product is already purchased by the current billing account.
19543
+ * Computed field based on billingAccountId context.
19544
+ */
18460
19545
  isPurchased?: Maybe<Scalars['Boolean']['output']>;
18461
19546
  /** Product length (physical products) */
18462
19547
  length?: Maybe<Scalars['Float']['output']>;
@@ -18487,7 +19572,10 @@ export type StoreProduct = {
18487
19572
  rating?: Maybe<Scalars['Float']['output']>;
18488
19573
  rejectedReason?: Maybe<Scalars['String']['output']>;
18489
19574
  repositoryUrl?: Maybe<Scalars['String']['output']>;
18490
- /** Required permissions (from manifest.permissions) Examples: ["network.outbound", "database.write", "notification.email"] */
19575
+ /**
19576
+ * Required permissions (from manifest.permissions)
19577
+ * Examples: ["network.outbound", "database.write", "notification.email"]
19578
+ */
18491
19579
  requiredPermissions: Array<Scalars['String']['output']>;
18492
19580
  /** Whether this product requires shipping (physical products) */
18493
19581
  requiresShipping?: Maybe<Scalars['Boolean']['output']>;
@@ -18506,7 +19594,13 @@ export type StoreProduct = {
18506
19594
  /** Current stock quantity (physical products) */
18507
19595
  stockQuantity?: Maybe<Scalars['Int']['output']>;
18508
19596
  storeId?: Maybe<Scalars['ID']['output']>;
18509
- /** Type-specific subtype from manifest.json. Examples: - Agent: task_automation, conversational, research, code_assistant - Node: action, transform, trigger, logic, integration, data, notification, ai - Widget: chart, metric, table, map, form, text, custom */
19597
+ /**
19598
+ * Type-specific subtype from manifest.json.
19599
+ * Examples:
19600
+ * - Agent: task_automation, conversational, research, code_assistant
19601
+ * - Node: action, transform, trigger, logic, integration, data, notification, ai
19602
+ * - Widget: chart, metric, table, map, form, text, custom
19603
+ */
18510
19604
  subType?: Maybe<Scalars['String']['output']>;
18511
19605
  submittedAt?: Maybe<Scalars['DateTime']['output']>;
18512
19606
  submittedBy?: Maybe<Scalars['String']['output']>;
@@ -18632,7 +19726,10 @@ export type SubmissionStatusUpdatedEvent = {
18632
19726
  submissionId: Scalars['ID']['output'];
18633
19727
  updatedAt: Scalars['String']['output'];
18634
19728
  };
18635
- /** Input for submitting a contact inquiry from a public website. reCAPTCHA token is required for bot protection. */
19729
+ /**
19730
+ * Input for submitting a contact inquiry from a public website.
19731
+ * reCAPTCHA token is required only when CAPTCHA_ENABLED=true.
19732
+ */
18636
19733
  export type SubmitContactInquiryInput = {
18637
19734
  /** Company name (optional) */
18638
19735
  company?: InputMaybe<Scalars['String']['input']>;
@@ -18646,8 +19743,8 @@ export type SubmitContactInquiryInput = {
18646
19743
  name: Scalars['String']['input'];
18647
19744
  /** Platform product ID (identifies which product website the form was submitted from) */
18648
19745
  productId?: InputMaybe<Scalars['String']['input']>;
18649
- /** reCAPTCHA token for bot protection (verified server-side using product's secret key) */
18650
- recaptchaToken: Scalars['String']['input'];
19746
+ /** reCAPTCHA token for bot protection (verified server-side when CAPTCHA_ENABLED=true) */
19747
+ recaptchaToken?: InputMaybe<Scalars['String']['input']>;
18651
19748
  /** Subject of the inquiry */
18652
19749
  subject: Scalars['String']['input'];
18653
19750
  };
@@ -18777,20 +19874,43 @@ export type Subscription = {
18777
19874
  _emptyBilling?: Maybe<Scalars['String']['output']>;
18778
19875
  _emptyDevportal?: Maybe<Scalars['String']['output']>;
18779
19876
  _emptyI18n?: Maybe<Scalars['String']['output']>;
18780
- /** Placeholder field to allow empty Subscription type extension. Each module has a unique placeholder to avoid naming conflicts across subgraphs. */
19877
+ /**
19878
+ * Placeholder field to allow empty Subscription type extension.
19879
+ * Each module has a unique placeholder to avoid naming conflicts across subgraphs.
19880
+ */
18781
19881
  _emptyNewsletter?: Maybe<Scalars['String']['output']>;
18782
19882
  _emptyNotification?: Maybe<Scalars['String']['output']>;
18783
- /** Placeholder field to allow empty Subscription type extension. Each module has a unique placeholder to avoid naming conflicts across subgraphs. */
19883
+ /**
19884
+ * Placeholder field to allow empty Subscription type extension.
19885
+ * Each module has a unique placeholder to avoid naming conflicts across subgraphs.
19886
+ */
18784
19887
  _emptySupport?: Maybe<Scalars['String']['output']>;
18785
19888
  _emptyTours?: Maybe<Scalars['String']['output']>;
18786
- /** Placeholder subscription (extended by modules) @rbac(public: true, scopeType: "global") */
19889
+ /**
19890
+ * Placeholder subscription (extended by modules)
19891
+ * @rbac(public: true, scopeType: "global")
19892
+ */
18787
19893
  _placeholder?: Maybe<Scalars['String']['output']>;
18788
19894
  agentStatusChanged: AgentProfile;
18789
- /** Fires whenever the AppReview lifecycle changes for a given application (submission -> moderation -> publish/reject). */
19895
+ /**
19896
+ * Fires whenever the AppReview lifecycle changes for a given application
19897
+ * (submission -> moderation -> publish/reject).
19898
+ */
18790
19899
  appReviewStatusChanged: AppReview;
18791
- /** Subscribe to channel health changes. Emits when a channel's connectionHealth status changes (HEALTHY → DEGRADED, etc.) Use cases: - Real-time dashboard updates showing channel health - Alerting systems monitoring channel availability - Auto-failover logic reacting to health degradation */
19900
+ /**
19901
+ * Subscribe to channel health changes.
19902
+ * Emits when a channel's connectionHealth status changes (HEALTHY → DEGRADED, etc.)
19903
+ *
19904
+ * Use cases:
19905
+ * - Real-time dashboard updates showing channel health
19906
+ * - Alerting systems monitoring channel availability
19907
+ * - Auto-failover logic reacting to health degradation
19908
+ */
18792
19909
  channelHealthChanged: ChannelHealthUpdate;
18793
- /** Subscribe to connection-status changes for a channel. Emits when isActive or isHealthy flips on the channel's connection. */
19910
+ /**
19911
+ * Subscribe to connection-status changes for a channel.
19912
+ * Emits when isActive or isHealthy flips on the channel's connection.
19913
+ */
18794
19914
  connectionStatusChanged: ConnectionStatusChangedEvent;
18795
19915
  /** Emits the deleted content-page id. */
18796
19916
  contentPageDeleted: Scalars['ID']['output'];
@@ -18799,7 +19919,10 @@ export type Subscription = {
18799
19919
  coverageChanged: CoverageChangeEvent;
18800
19920
  dependencyTriggered: DependencyTriggeredUpdate;
18801
19921
  executionUpdated: ExecutionUpdate;
18802
- /** Notifies clients when a feature flag definition is created or updated. Subscribers can pass `flagKey` to receive only matching events. */
19922
+ /**
19923
+ * Notifies clients when a feature flag definition is created or updated.
19924
+ * Subscribers can pass `flagKey` to receive only matching events.
19925
+ */
18803
19926
  featureFlagChanged: FeatureFlag;
18804
19927
  /** Emits the deleted feature-flag id so clients can drop it from their cache. */
18805
19928
  featureFlagDeleted: Scalars['ID']['output'];
@@ -18807,39 +19930,71 @@ export type Subscription = {
18807
19930
  /** Subscribe to app installation status changes for a workspace. */
18808
19931
  installationStatusUpdated?: Maybe<InstallationStatusUpdatedEvent>;
18809
19932
  jobStatusUpdated: JobStatusUpdate;
18810
- /** Notifies clients when a keyboard shortcut is created, updated, or toggled. Subscribers can pass `productId` to scope the stream to a single product. */
19933
+ /**
19934
+ * Notifies clients when a keyboard shortcut is created, updated, or toggled.
19935
+ * Subscribers can pass `productId` to scope the stream to a single product.
19936
+ */
18811
19937
  keyboardShortcutChanged: KeyboardShortcut;
18812
19938
  /** Emits the deleted shortcut id so clients can drop it from their cache. */
18813
19939
  keyboardShortcutDeleted: Scalars['ID']['output'];
18814
19940
  /** Subscribe to license entitlement status changes. */
18815
19941
  licenseStatusUpdated?: Maybe<LicenseStatusUpdatedEvent>;
18816
19942
  metricsUpdated: SchedulerMetricsUpdate;
18817
- /** Live stream of the authenticated caller's unread notification count. Mirrors the result of `myUnreadNotificationCount` and replaces 30s polling on the FE NotificationCenter — backend publishes on every notification create / read / archive / delete. */
19943
+ /**
19944
+ * Live stream of the authenticated caller's unread notification count.
19945
+ * Mirrors the result of `myUnreadNotificationCount` and replaces 30s
19946
+ * polling on the FE NotificationCenter — backend publishes on every
19947
+ * notification create / read / archive / delete.
19948
+ */
18818
19949
  myUnreadNotificationCountStream: Scalars['Int']['output'];
18819
19950
  newTicketInQueue: SupportTicket;
18820
19951
  /** Subscribe to new notifications for the authenticated user */
18821
19952
  notificationReceived?: Maybe<Notification>;
18822
- /** Subscribe to delivery status updates for a notification. Useful for real-time tracking of delivery progress. */
19953
+ /**
19954
+ * Subscribe to delivery status updates for a notification.
19955
+ * Useful for real-time tracking of delivery progress.
19956
+ */
18823
19957
  onDeliveryStatusUpdate: ChannelDeliveryStatusUpdate;
18824
19958
  /** Subscribe to order status changes for a specific order or workspace. */
18825
19959
  orderStatusUpdated?: Maybe<OrderStatusUpdatedEvent>;
18826
19960
  /** Emits the deleted product id so clients can drop it from their cache. */
18827
19961
  productDeleted: Scalars['ID']['output'];
18828
- /** Notifies clients when a platform product is created or updated. Fires on create + update mutations; deletes are reported via `productDeleted`. */
19962
+ /**
19963
+ * Notifies clients when a platform product is created or updated.
19964
+ * Fires on create + update mutations; deletes are reported via `productDeleted`.
19965
+ */
18829
19966
  productUpdated: PlatformProduct;
18830
- /** Fires when the per-organization revenue rollup recomputes (currently every cron tick or after a settled sale). */
19967
+ /**
19968
+ * Fires when the per-organization revenue rollup recomputes
19969
+ * (currently every cron tick or after a settled sale).
19970
+ */
18831
19971
  revenueUpdated: DeveloperOrgRevenueAnalytics;
18832
19972
  /** Subscribe to publisher submission status changes. */
18833
19973
  submissionStatusUpdated?: Maybe<SubmissionStatusUpdatedEvent>;
19974
+ /** Stream of soft-deleted tenant ids. */
19975
+ tenantDeleted: Scalars['ID']['output'];
19976
+ /**
19977
+ * Stream of tenant lifecycle changes (create/update/configure/suspend/activate/
19978
+ * provision/endpoint-set). Backed by an in-memory pubsub fed by the matching
19979
+ * mutations. Lets the admin tenant list refresh in real time without polling.
19980
+ */
19981
+ tenantUpdated: Tenant;
18834
19982
  ticketMessageAdded: SupportMessage;
18835
19983
  ticketUpdated: SupportTicket;
18836
19984
  translationStatusChanged: TranslationStatusEvent;
18837
19985
  translationUpdated: TranslationUpdateEvent;
18838
19986
  /** Subscribe to unread count changes for the authenticated user */
18839
19987
  unreadCountUpdated?: Maybe<Scalars['Int']['output']>;
18840
- /** Fires on every WebhookDelivery state transition for the given webhook (PENDING -> DELIVERING -> DELIVERED|FAILED|RETRYING). */
19988
+ /**
19989
+ * Fires on every WebhookDelivery state transition for the given webhook
19990
+ * (PENDING -> DELIVERING -> DELIVERED|FAILED|RETRYING).
19991
+ */
18841
19992
  webhookDeliveryUpdated: WebhookDelivery;
18842
- /** Subscribe to webhook events received by a channel. Emits when a new WebhookEvent row is persisted (before downstream processing). Resolver-level filter scopes to the requested channelId. */
19993
+ /**
19994
+ * Subscribe to webhook events received by a channel.
19995
+ * Emits when a new WebhookEvent row is persisted (before downstream processing).
19996
+ * Resolver-level filter scopes to the requested channelId.
19997
+ */
18843
19998
  webhookReceived: WebhookReceivedEvent;
18844
19999
  };
18845
20000
  /** Root subscription type */
@@ -18930,6 +20085,10 @@ export type SubscriptionSubmissionStatusUpdatedArgs = {
18930
20085
  publisherId: Scalars['ID']['input'];
18931
20086
  };
18932
20087
  /** Root subscription type */
20088
+ export type SubscriptionTenantUpdatedArgs = {
20089
+ tenantId?: InputMaybe<Scalars['ID']['input']>;
20090
+ };
20091
+ /** Root subscription type */
18933
20092
  export type SubscriptionTicketMessageAddedArgs = {
18934
20093
  ticketId: Scalars['ID']['input'];
18935
20094
  };
@@ -18960,7 +20119,10 @@ export type SubscriptionWebhookDeliveryUpdatedArgs = {
18960
20119
  export type SubscriptionWebhookReceivedArgs = {
18961
20120
  channelId: Scalars['ID']['input'];
18962
20121
  };
18963
- /** SubscriptionEntitlement defines what store items a plan grants access to. This allows plans to provide discounts or free access to store items. */
20122
+ /**
20123
+ * SubscriptionEntitlement defines what store items a plan grants access to.
20124
+ * This allows plans to provide discounts or free access to store items.
20125
+ */
18964
20126
  export type SubscriptionEntitlement = {
18965
20127
  __typename?: 'SubscriptionEntitlement';
18966
20128
  /** The type of access granted (FREE_ACCESS or DISCOUNT) */
@@ -18975,7 +20137,10 @@ export type SubscriptionEntitlement = {
18975
20137
  id: Scalars['ID']['output'];
18976
20138
  /** Reference to the store item entity (resolved via Federation) */
18977
20139
  item?: Maybe<StoreItem>;
18978
- /** Reference to the store item (external entity from Store service) Resolved via Federation 2 Gateway */
20140
+ /**
20141
+ * Reference to the store item (external entity from Store service)
20142
+ * Resolved via Federation 2 Gateway
20143
+ */
18979
20144
  itemId: Scalars['String']['output'];
18980
20145
  /** The plan that grants this entitlement */
18981
20146
  plan: Plan;
@@ -19073,14 +20238,25 @@ export type SupportAttachmentUploadSession = {
19073
20238
  uploadType: Scalars['String']['output'];
19074
20239
  uploadUrl?: Maybe<Scalars['String']['output']>;
19075
20240
  };
19076
- /** Privacy-preserving author projection for SupportMessage. End-users only ever see the anonymized alias + generated avatar for agent authors; super_admin / service actors (admin app) see the real identity. */
20241
+ /**
20242
+ * Privacy-preserving author projection for SupportMessage. End-users only ever see
20243
+ * the anonymized alias + generated avatar for agent authors; super_admin / service
20244
+ * actors (admin app) see the real identity.
20245
+ */
19077
20246
  export type SupportAuthor = {
19078
20247
  __typename?: 'SupportAuthor';
19079
20248
  avatar: Scalars['String']['output'];
19080
20249
  displayName: Scalars['String']['output'];
19081
- /** Stable opaque identifier safe for both viewer scopes. For agent authors viewed by an end-user this is the AgentProfile id (NOT the underlying userId); for admin viewers and customer authors it is the underlying actor id. */
20250
+ /**
20251
+ * Stable opaque identifier safe for both viewer scopes. For agent authors viewed
20252
+ * by an end-user this is the AgentProfile id (NOT the underlying userId); for
20253
+ * admin viewers and customer authors it is the underlying actor id.
20254
+ */
19082
20255
  id: Scalars['ID']['output'];
19083
- /** True when the viewer was scoped down to the anonymized projection. Admins see this as false; end-users see it as true for agent authors. */
20256
+ /**
20257
+ * True when the viewer was scoped down to the anonymized projection. Admins see
20258
+ * this as false; end-users see it as true for agent authors.
20259
+ */
19084
20260
  isAnonymized: Scalars['Boolean']['output'];
19085
20261
  /** AGENT | CUSTOMER | SYSTEM — drives UI styling without leaking identity. */
19086
20262
  kind: SupportAuthorKind;
@@ -19090,7 +20266,11 @@ export declare enum SupportAuthorKind {
19090
20266
  Customer = "CUSTOMER",
19091
20267
  System = "SYSTEM"
19092
20268
  }
19093
- /** Support-specific context output type. Returns the stored context for each record. Uses a unique type name to avoid federation conflicts with other services. */
20269
+ /**
20270
+ * Support-specific context output type.
20271
+ * Returns the stored context for each record.
20272
+ * Uses a unique type name to avoid federation conflicts with other services.
20273
+ */
19094
20274
  export type SupportContext = {
19095
20275
  __typename?: 'SupportContext';
19096
20276
  custom?: Maybe<Scalars['JSON']['output']>;
@@ -19101,7 +20281,11 @@ export type SupportContext = {
19101
20281
  userId?: Maybe<Scalars['ID']['output']>;
19102
20282
  workspaceId?: Maybe<Scalars['ID']['output']>;
19103
20283
  };
19104
- /** Context filter input for querying records by context. Supports exact match filtering on context fields. Note: tenantId filtering is applied automatically from context.tenant?.id. */
20284
+ /**
20285
+ * Context filter input for querying records by context.
20286
+ * Supports exact match filtering on context fields.
20287
+ * Note: tenantId filtering is applied automatically from context.tenant?.id.
20288
+ */
19105
20289
  export type SupportContextFilterInput = {
19106
20290
  organizationId?: InputMaybe<Scalars['ID']['input']>;
19107
20291
  productId?: InputMaybe<Scalars['ID']['input']>;
@@ -19109,7 +20293,11 @@ export type SupportContextFilterInput = {
19109
20293
  userId?: InputMaybe<Scalars['ID']['input']>;
19110
20294
  workspaceId?: InputMaybe<Scalars['ID']['input']>;
19111
20295
  };
19112
- /** Support context input for filtering and scoping data. All fields are optional and can be extended as needed. Note: tenantId is derived from context.tenant?.id (gateway header), not from client input. */
20296
+ /**
20297
+ * Support context input for filtering and scoping data.
20298
+ * All fields are optional and can be extended as needed.
20299
+ * Note: tenantId is derived from context.tenant?.id (gateway header), not from client input.
20300
+ */
19113
20301
  export type SupportContextInput = {
19114
20302
  custom?: InputMaybe<Scalars['JSON']['input']>;
19115
20303
  organizationId?: InputMaybe<Scalars['ID']['input']>;
@@ -19138,7 +20326,10 @@ export type SupportMessage = {
19138
20326
  __typename?: 'SupportMessage';
19139
20327
  attachmentCount: Scalars['Int']['output'];
19140
20328
  attachments: Array<Scalars['String']['output']>;
19141
- /** Privacy-aware author projection. Returns the anonymized alias + avatar for end-users; admin app (super_admin / service) sees the real identity. */
20329
+ /**
20330
+ * Privacy-aware author projection. Returns the anonymized alias + avatar for
20331
+ * end-users; admin app (super_admin / service) sees the real identity.
20332
+ */
19142
20333
  author: SupportAuthor;
19143
20334
  authorId: Scalars['String']['output'];
19144
20335
  /** Contextual IDs for filtering and scoping (workspaceId, userId, projectId, etc.) */
@@ -19352,7 +20543,10 @@ export type SyncTourStepInput = {
19352
20543
  waitForSelector?: InputMaybe<Scalars['String']['input']>;
19353
20544
  waitForTimeout?: InputMaybe<Scalars['Int']['input']>;
19354
20545
  };
19355
- /** Input for syncing workspace from workspace layer to global layer Called by wspace-workspace-svc after creating a workspace directly */
20546
+ /**
20547
+ * Input for syncing workspace from workspace layer to global layer
20548
+ * Called by wspace-workspace-svc after creating a workspace directly
20549
+ */
19356
20550
  export type SyncWorkspaceFromWspaceInput = {
19357
20551
  /** Workspace name */
19358
20552
  name: Scalars['String']['input'];
@@ -19447,13 +20641,20 @@ export type TemplateNotificationResult = {
19447
20641
  /** Number of notifications successfully triggered */
19448
20642
  totalTriggered: Scalars['Int']['output'];
19449
20643
  };
19450
- /** Tenant type stub - represents a tenant entity from the tenant service This service doesn't own the Tenant model, but references it */
20644
+ /**
20645
+ * Tenant type stub - represents a tenant entity from the tenant service
20646
+ * This service doesn't own the Tenant model, but references it
20647
+ */
19451
20648
  export type Tenant = {
19452
20649
  __typename?: 'Tenant';
19453
20650
  config?: Maybe<TenantConfig>;
19454
20651
  createdAt: Scalars['DateTime']['output'];
19455
20652
  customDomain?: Maybe<Scalars['String']['output']>;
19456
- /** Service routing endpoint for dedicated tenants For SHARED tenants, this is null (uses default service) For DEDICATED tenants, this points to the dedicated service instance */
20653
+ /**
20654
+ * Service routing endpoint for dedicated tenants
20655
+ * For SHARED tenants, this is null (uses default service)
20656
+ * For DEDICATED tenants, this points to the dedicated service instance
20657
+ */
19457
20658
  endpoint?: Maybe<Scalars['String']['output']>;
19458
20659
  id: Scalars['ID']['output'];
19459
20660
  metadata?: Maybe<Scalars['JSON']['output']>;
@@ -19476,6 +20677,18 @@ export type TenantConfig = {
19476
20677
  features?: Maybe<Scalars['JSON']['output']>;
19477
20678
  region?: Maybe<Scalars['String']['output']>;
19478
20679
  };
20680
+ /**
20681
+ * Inline export payload for `exportTenantsCsv`. Returns CSV text along with a
20682
+ * count of rows and a flag if the result was capped at the requested limit.
20683
+ */
20684
+ export type TenantExport = {
20685
+ __typename?: 'TenantExport';
20686
+ csv: Scalars['String']['output'];
20687
+ format: Scalars['String']['output'];
20688
+ generatedAt: Scalars['DateTime']['output'];
20689
+ rowCount: Scalars['Int']['output'];
20690
+ truncated: Scalars['Boolean']['output'];
20691
+ };
19479
20692
  /** Filter input for querying tenants */
19480
20693
  export type TenantFilterInput = {
19481
20694
  search?: InputMaybe<Scalars['String']['input']>;
@@ -19491,7 +20704,10 @@ export type TenantList = {
19491
20704
  offset: Scalars['Int']['output'];
19492
20705
  total: Scalars['Int']['output'];
19493
20706
  };
19494
- /** Lightweight tenant routing info used by gateways to decide whether to proxy requests to a dedicated tenant endpoint. */
20707
+ /**
20708
+ * Lightweight tenant routing info used by gateways to decide
20709
+ * whether to proxy requests to a dedicated tenant endpoint.
20710
+ */
19495
20711
  export type TenantRoutingInfo = {
19496
20712
  __typename?: 'TenantRoutingInfo';
19497
20713
  endpoint?: Maybe<Scalars['String']['output']>;
@@ -19666,7 +20882,13 @@ export type Tour = {
19666
20882
  metadata?: Maybe<Scalars['JSON']['output']>;
19667
20883
  mobileConfig?: Maybe<Scalars['JSON']['output']>;
19668
20884
  moduleId?: Maybe<Scalars['String']['output']>;
19669
- /** The current authenticated user's progress for this tour, or null if the user has not interacted with it yet. Resolves to the most recent TourUserProgress row for the requesting actor. Used by the TourTrigger dropdown to render per-tour status chips (Completed / In progress / Skipped) without requiring a second round-trip. */
20885
+ /**
20886
+ * The current authenticated user's progress for this tour, or null if the
20887
+ * user has not interacted with it yet. Resolves to the most recent
20888
+ * TourUserProgress row for the requesting actor. Used by the TourTrigger
20889
+ * dropdown to render per-tour status chips (Completed / In progress /
20890
+ * Skipped) without requiring a second round-trip.
20891
+ */
19670
20892
  myProgress?: Maybe<TourUserProgress>;
19671
20893
  name: Scalars['String']['output'];
19672
20894
  pageId?: Maybe<Scalars['String']['output']>;
@@ -19939,7 +21161,12 @@ export declare enum TourUserStatus {
19939
21161
  NotStarted = "NOT_STARTED",
19940
21162
  Skipped = "SKIPPED"
19941
21163
  }
19942
- /** Tours-specific context output type. Returns the stored context for each record. Uses a unique type name to avoid federation conflicts with other services. Must be @shareable since context types may exist in multiple subgraphs. */
21164
+ /**
21165
+ * Tours-specific context output type.
21166
+ * Returns the stored context for each record.
21167
+ * Uses a unique type name to avoid federation conflicts with other services.
21168
+ * Must be @shareable since context types may exist in multiple subgraphs.
21169
+ */
19943
21170
  export type ToursContext = {
19944
21171
  __typename?: 'ToursContext';
19945
21172
  /** Additional custom context as JSON */
@@ -19972,7 +21199,10 @@ export type ToursResponse = {
19972
21199
  total: Scalars['Int']['output'];
19973
21200
  tours: Array<Tour>;
19974
21201
  };
19975
- /** Transaction entity - resolvable via Federation Gateway. Other services (e.g., store-svc) can reference Transaction by id. */
21202
+ /**
21203
+ * Transaction entity - resolvable via Federation Gateway.
21204
+ * Other services (e.g., store-svc) can reference Transaction by id.
21205
+ */
19976
21206
  export type Transaction = {
19977
21207
  __typename?: 'Transaction';
19978
21208
  amount: Scalars['Float']['output'];
@@ -20421,7 +21651,10 @@ export type UpdateChannelInput = {
20421
21651
  export type UpdateConnectionInput = {
20422
21652
  /** Operation context for scoping */
20423
21653
  context?: InputMaybe<ContextInput>;
20424
- /** Platform-specific credentials (API keys, tokens, etc.) Will be encrypted before storage. */
21654
+ /**
21655
+ * Platform-specific credentials (API keys, tokens, etc.)
21656
+ * Will be encrypted before storage.
21657
+ */
20425
21658
  credentials?: InputMaybe<Scalars['JSON']['input']>;
20426
21659
  /** Connection status */
20427
21660
  isActive?: InputMaybe<Scalars['Boolean']['input']>;
@@ -21001,7 +22234,10 @@ export type UpdateSubscriptionInput = {
21001
22234
  export type UpdateSubscriptionSeatsInput = {
21002
22235
  /** Billing account that owns this subscription. */
21003
22236
  billingAccountId: Scalars['ID']['input'];
21004
- /** New seat count. Must be >= plan.minSeats. Applied immediately on Stripe (with proration) and at next cycle on Razorpay (proration delta charged as a separate one-time order). */
22237
+ /**
22238
+ * New seat count. Must be >= plan.minSeats. Applied immediately on Stripe (with proration)
22239
+ * and at next cycle on Razorpay (proration delta charged as a separate one-time order).
22240
+ */
21005
22241
  seatCount: Scalars['Int']['input'];
21006
22242
  subscriptionId: Scalars['ID']['input'];
21007
22243
  };
@@ -21339,7 +22575,11 @@ export type UsageTrends = {
21339
22575
  /** Predicted usage for next period */
21340
22576
  predictedUsage?: Maybe<Scalars['Float']['output']>;
21341
22577
  };
21342
- /** User type stub - represents a user entity from the auth/user service This service doesn't own the User model, but references it in usage tracking Federation gateway will resolve full User data from auth/user service. */
22578
+ /**
22579
+ * User type stub - represents a user entity from the auth/user service
22580
+ * This service doesn't own the User model, but references it in usage tracking
22581
+ * Federation gateway will resolve full User data from auth/user service.
22582
+ */
21343
22583
  export type User = {
21344
22584
  __typename?: 'User';
21345
22585
  /** Tickets assigned to this user (if support agent) */
@@ -21367,13 +22607,21 @@ export type User = {
21367
22607
  updatedAt: Scalars['DateTime']['output'];
21368
22608
  username: Scalars['String']['output'];
21369
22609
  };
21370
- /** User type stub - represents a user entity from the auth/user service This service doesn't own the User model, but references it in usage tracking Federation gateway will resolve full User data from auth/user service. */
22610
+ /**
22611
+ * User type stub - represents a user entity from the auth/user service
22612
+ * This service doesn't own the User model, but references it in usage tracking
22613
+ * Federation gateway will resolve full User data from auth/user service.
22614
+ */
21371
22615
  export type UserAssignedTicketsArgs = {
21372
22616
  filter?: InputMaybe<SupportTicketFilterInput>;
21373
22617
  limit?: InputMaybe<Scalars['Int']['input']>;
21374
22618
  offset?: InputMaybe<Scalars['Int']['input']>;
21375
22619
  };
21376
- /** User type stub - represents a user entity from the auth/user service This service doesn't own the User model, but references it in usage tracking Federation gateway will resolve full User data from auth/user service. */
22620
+ /**
22621
+ * User type stub - represents a user entity from the auth/user service
22622
+ * This service doesn't own the User model, but references it in usage tracking
22623
+ * Federation gateway will resolve full User data from auth/user service.
22624
+ */
21377
22625
  export type UserTicketsArgs = {
21378
22626
  filter?: InputMaybe<SupportTicketFilterInput>;
21379
22627
  limit?: InputMaybe<Scalars['Int']['input']>;
@@ -21427,10 +22675,17 @@ export type UserLanguagePreference = {
21427
22675
  updatedAt: Scalars['DateTime']['output'];
21428
22676
  userId: Scalars['String']['output'];
21429
22677
  };
21430
- /** UserPlatformConnection represents a verified user identity on a communication platform. It serves as the DM authorization allowlist and notification delivery target. Replaces the former ChannelUser model. */
22678
+ /**
22679
+ * UserPlatformConnection represents a verified user identity on a communication platform.
22680
+ * It serves as the DM authorization allowlist and notification delivery target.
22681
+ * Replaces the former ChannelUser model.
22682
+ */
21431
22683
  export type UserPlatformConnection = {
21432
22684
  __typename?: 'UserPlatformConnection';
21433
- /** Whether the user has a valid DM conversation target (dmAllowed = true AND dmConversationId is set) */
22685
+ /**
22686
+ * Whether the user has a valid DM conversation target
22687
+ * (dmAllowed = true AND dmConversationId is set)
22688
+ */
21434
22689
  canReceiveDm: Scalars['Boolean']['output'];
21435
22690
  /** Associated channel */
21436
22691
  channel: Channel;
@@ -21446,9 +22701,16 @@ export type UserPlatformConnection = {
21446
22701
  customStatus?: Maybe<Scalars['String']['output']>;
21447
22702
  /** When this record was soft-deleted (null = active) */
21448
22703
  deletedAt?: Maybe<Scalars['DateTime']['output']>;
21449
- /** Whether DMs to/from this user are allowed. Only true when source = OAUTH or PAIRED; never for SEEN. */
22704
+ /**
22705
+ * Whether DMs to/from this user are allowed.
22706
+ * Only true when source = OAUTH or PAIRED; never for SEEN.
22707
+ */
21450
22708
  dmAllowed: Scalars['Boolean']['output'];
21451
- /** Platform-specific DM conversation ID. Slack: D0A1B2C3 | Teams: conversation reference JSON | WhatsApp: JID | Discord: N/A | Google Chat: space name */
22709
+ /**
22710
+ * Platform-specific DM conversation ID.
22711
+ * Slack: D0A1B2C3 | Teams: conversation reference JSON |
22712
+ * WhatsApp: JID | Discord: N/A | Google Chat: space name
22713
+ */
21452
22714
  dmConversationId?: Maybe<Scalars['String']['output']>;
21453
22715
  /** Platform avatar URL */
21454
22716
  externalAvatarUrl?: Maybe<Scalars['String']['output']>;
@@ -21464,7 +22726,12 @@ export type UserPlatformConnection = {
21464
22726
  externalUsername?: Maybe<Scalars['String']['output']>;
21465
22727
  /** Unique connection ID */
21466
22728
  id: Scalars['ID']['output'];
21467
- /** Opaque reference to the IntegrationConnection in wspace-integrations-svc that holds this user's personal OAuth token. Set after the user completes the OAuth flow in microfe-integrations and clicks "Link to bot channel". Null for connections created via the legacy Slack OAuth flow. */
22729
+ /**
22730
+ * Opaque reference to the IntegrationConnection in wspace-integrations-svc
22731
+ * that holds this user's personal OAuth token. Set after the user completes
22732
+ * the OAuth flow in microfe-integrations and clicks "Link to bot channel".
22733
+ * Null for connections created via the legacy Slack OAuth flow.
22734
+ */
21468
22735
  integrationConnectionId?: Maybe<Scalars['ID']['output']>;
21469
22736
  /** Internal Botlit user ID (opaque reference) */
21470
22737
  internalUserId?: Maybe<Scalars['ID']['output']>;
@@ -21482,7 +22749,10 @@ export type UserPlatformConnection = {
21482
22749
  organizationId: Scalars['ID']['output'];
21483
22750
  /** When pairing was approved */
21484
22751
  pairingApprovedAt?: Maybe<Scalars['DateTime']['output']>;
21485
- /** 8-character pairing code (WhatsApp / Discord only). Only present when pairingStatus = PENDING. */
22752
+ /**
22753
+ * 8-character pairing code (WhatsApp / Discord only).
22754
+ * Only present when pairingStatus = PENDING.
22755
+ */
21486
22756
  pairingCode?: Maybe<Scalars['String']['output']>;
21487
22757
  /** When the pairing code expires (1-hour TTL from generation) */
21488
22758
  pairingCodeExpiresAt?: Maybe<Scalars['DateTime']['output']>;
@@ -21500,7 +22770,10 @@ export type UserPlatformConnection = {
21500
22770
  source: UserPlatformSource;
21501
22771
  /** Last update timestamp */
21502
22772
  updatedAt: Scalars['DateTime']['output'];
21503
- /** User's personal OAuth token expiry (AES-256-GCM encrypted at rest) NOTE: The token itself is never returned by queries; only the expiry is exposed. */
22773
+ /**
22774
+ * User's personal OAuth token expiry (AES-256-GCM encrypted at rest)
22775
+ * NOTE: The token itself is never returned by queries; only the expiry is exposed.
22776
+ */
21504
22777
  userTokenExpiresAt?: Maybe<Scalars['DateTime']['output']>;
21505
22778
  /** Scopes granted by the user's personal OAuth token */
21506
22779
  userTokenScope?: Maybe<Scalars['String']['output']>;
@@ -21524,7 +22797,10 @@ export type UserPlatformConnectionFilterInput = {
21524
22797
  /** Filter by connection source */
21525
22798
  source?: InputMaybe<UserPlatformSource>;
21526
22799
  };
21527
- /** Paginated list of user platform connections with cursor support. Pass `nextCursor` from a previous response as `cursor` in the next call. */
22800
+ /**
22801
+ * Paginated list of user platform connections with cursor support.
22802
+ * Pass `nextCursor` from a previous response as `cursor` in the next call.
22803
+ */
21528
22804
  export type UserPlatformConnectionList = {
21529
22805
  __typename?: 'UserPlatformConnectionList';
21530
22806
  hasMore: Scalars['Boolean']['output'];
@@ -21532,20 +22808,35 @@ export type UserPlatformConnectionList = {
21532
22808
  nextCursor?: Maybe<Scalars['String']['output']>;
21533
22809
  total: Scalars['Int']['output'];
21534
22810
  };
21535
- /** How a UserPlatformConnection was established. Controls whether dmAllowed can be set to true. */
22811
+ /**
22812
+ * How a UserPlatformConnection was established.
22813
+ * Controls whether dmAllowed can be set to true.
22814
+ */
21536
22815
  export declare enum UserPlatformSource {
21537
22816
  /** Bulk-imported user record (e.g. from CSV or directory sync). */
21538
22817
  Import = "IMPORT",
21539
22818
  /** Admin manually added the user (back-office operation). */
21540
22819
  Manual = "MANUAL",
21541
- /** Connected via dashboard OAuth flow (Slack, Teams, Google Chat). Grants dmAllowed = true immediately after token exchange. */
22820
+ /**
22821
+ * Connected via dashboard OAuth flow (Slack, Teams, Google Chat).
22822
+ * Grants dmAllowed = true immediately after token exchange.
22823
+ */
21542
22824
  Oauth = "OAUTH",
21543
- /** Connected via pairing code (WhatsApp, Discord). Grants dmAllowed = true once the user approves the pairing code in the dashboard. */
22825
+ /**
22826
+ * Connected via pairing code (WhatsApp, Discord).
22827
+ * Grants dmAllowed = true once the user approves the pairing code in the dashboard.
22828
+ */
21544
22829
  Paired = "PAIRED",
21545
- /** Passively observed from an inbound webhook event. Never grants dmAllowed = true automatically. */
22830
+ /**
22831
+ * Passively observed from an inbound webhook event.
22832
+ * Never grants dmAllowed = true automatically.
22833
+ */
21546
22834
  Seen = "SEEN"
21547
22835
  }
21548
- /** User preference record storing theme, notification settings, dashboard customization, and other user-specific configuration. */
22836
+ /**
22837
+ * User preference record storing theme, notification settings,
22838
+ * dashboard customization, and other user-specific configuration.
22839
+ */
21549
22840
  export type UserPreference = {
21550
22841
  __typename?: 'UserPreference';
21551
22842
  accessibility?: Maybe<Scalars['JSON']['output']>;
@@ -21558,7 +22849,10 @@ export type UserPreference = {
21558
22849
  updatedAt: Scalars['DateTime']['output'];
21559
22850
  userId: Scalars['String']['output'];
21560
22851
  };
21561
- /** User presence status on the communication platform. Synced from platform webhooks or periodic polling. */
22852
+ /**
22853
+ * User presence status on the communication platform.
22854
+ * Synced from platform webhooks or periodic polling.
22855
+ */
21562
22856
  export declare enum UserPresenceStatus {
21563
22857
  /** User is away or idle */
21564
22858
  Away = "AWAY",
@@ -21593,6 +22887,15 @@ export type UserStoreSubscription = {
21593
22887
  subscribedAt: Scalars['DateTime']['output'];
21594
22888
  userId: Scalars['ID']['output'];
21595
22889
  };
22890
+ /** Association between a user and a universal tag */
22891
+ export type UserTagAssignment = {
22892
+ __typename?: 'UserTagAssignment';
22893
+ createdAt: Scalars['DateTime']['output'];
22894
+ id: Scalars['ID']['output'];
22895
+ tag: UniversalTag;
22896
+ tagId: Scalars['String']['output'];
22897
+ userId: Scalars['String']['output'];
22898
+ };
21596
22899
  export type UserWishlist = {
21597
22900
  __typename?: 'UserWishlist';
21598
22901
  addedAt: Scalars['DateTime']['output'];
@@ -21840,7 +23143,10 @@ export declare enum WebhookDeliveryStatus {
21840
23143
  Pending = "PENDING",
21841
23144
  Retrying = "RETRYING"
21842
23145
  }
21843
- /** WebhookEvent represents a received webhook (transient, 7-day TTL) Used for debugging and monitoring only */
23146
+ /**
23147
+ * WebhookEvent represents a received webhook (transient, 7-day TTL)
23148
+ * Used for debugging and monitoring only
23149
+ */
21844
23150
  export type WebhookEvent = {
21845
23151
  __typename?: 'WebhookEvent';
21846
23152
  /** Associated channel */
@@ -21876,7 +23182,10 @@ export type WebhookEvent = {
21876
23182
  /** Last update timestamp */
21877
23183
  updatedAt: Scalars['DateTime']['output'];
21878
23184
  };
21879
- /** Paginated list of webhook events with cursor support. Pass `nextCursor` from a previous response as `cursor` in the next call. */
23185
+ /**
23186
+ * Paginated list of webhook events with cursor support.
23187
+ * Pass `nextCursor` from a previous response as `cursor` in the next call.
23188
+ */
21880
23189
  export type WebhookEventList = {
21881
23190
  __typename?: 'WebhookEventList';
21882
23191
  hasMore: Scalars['Boolean']['output'];
@@ -22004,11 +23313,18 @@ export type WithdrawConsentInput = {
22004
23313
  subjectId: Scalars['ID']['input'];
22005
23314
  subjectType: Scalars['String']['input'];
22006
23315
  };
22007
- /** Workspace type stub - represents a workspace entity from the workspace service This service doesn't own the Workspace model, but references it */
23316
+ /**
23317
+ * Workspace type stub - represents a workspace entity from the workspace service
23318
+ * This service doesn't own the Workspace model, but references it
23319
+ */
22008
23320
  export type Workspace = {
22009
23321
  __typename?: 'Workspace';
22010
23322
  createdAt: Scalars['DateTime']['output'];
22011
- /** Service routing endpoint for dedicated tenants For SHARED tenants, this is null (uses default workspace service) For DEDICATED tenants, this points to the dedicated workspace service instance */
23323
+ /**
23324
+ * Service routing endpoint for dedicated tenants
23325
+ * For SHARED tenants, this is null (uses default workspace service)
23326
+ * For DEDICATED tenants, this points to the dedicated workspace service instance
23327
+ */
22012
23328
  endpoint?: Maybe<Scalars['String']['output']>;
22013
23329
  id: Scalars['ID']['output'];
22014
23330
  /** Member count */
@@ -22029,7 +23345,10 @@ export type Workspace = {
22029
23345
  type: WorkspaceType;
22030
23346
  updatedAt: Scalars['DateTime']['output'];
22031
23347
  };
22032
- /** Workspace-level override for a feature flag. Workspace admins can disable flags or control user opt-in for their workspace. */
23348
+ /**
23349
+ * Workspace-level override for a feature flag.
23350
+ * Workspace admins can disable flags or control user opt-in for their workspace.
23351
+ */
22033
23352
  export type WorkspaceFeatureFlagOverride = {
22034
23353
  __typename?: 'WorkspaceFeatureFlagOverride';
22035
23354
  allowUserOptIn: Scalars['Boolean']['output'];