@burdenoff/microfe-store 2026.1013.3 → 2026.1014.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.
|
@@ -408,6 +408,8 @@ export type Addon = {
|
|
|
408
408
|
isActive?: Maybe<Scalars['Boolean']['output']>;
|
|
409
409
|
/** The name of the addon (e.g., 'Extra Bots', 'Additional Storage'). */
|
|
410
410
|
name?: Maybe<Scalars['String']['output']>;
|
|
411
|
+
/** Apple App Store / Google Play SKU for this addon. */
|
|
412
|
+
nativeProductId?: Maybe<Scalars['String']['output']>;
|
|
411
413
|
/** The price of the addon. */
|
|
412
414
|
price?: Maybe<Scalars['Float']['output']>;
|
|
413
415
|
/** Historical record of price changes for this addon */
|
|
@@ -1361,6 +1363,20 @@ export type AssignedQuota = {
|
|
|
1361
1363
|
scope: QuotaScope;
|
|
1362
1364
|
workspaceId?: Maybe<Scalars['ID']['output']>;
|
|
1363
1365
|
};
|
|
1366
|
+
export type AssistantAccountBudget = {
|
|
1367
|
+
__typename?: 'AssistantAccountBudget';
|
|
1368
|
+
billingAccountId: Scalars['ID']['output'];
|
|
1369
|
+
dailyMicroUsd: Scalars['Int']['output'];
|
|
1370
|
+
dailyTokens: Scalars['Int']['output'];
|
|
1371
|
+
enabled: Scalars['Boolean']['output'];
|
|
1372
|
+
};
|
|
1373
|
+
export type AssistantBudgetReceipt = {
|
|
1374
|
+
__typename?: 'AssistantBudgetReceipt';
|
|
1375
|
+
heldMicroUsd: Scalars['Int']['output'];
|
|
1376
|
+
heldTokens: Scalars['Int']['output'];
|
|
1377
|
+
id: Scalars['ID']['output'];
|
|
1378
|
+
status: Scalars['String']['output'];
|
|
1379
|
+
};
|
|
1364
1380
|
export type AttachMediaToStepInput = {
|
|
1365
1381
|
/** Operation context for scoping (workspaceId, userId, productId, moduleId, etc.) */
|
|
1366
1382
|
context?: InputMaybe<ContextInput>;
|
|
@@ -2921,6 +2937,10 @@ export type ComplianceAuditLogEntry = {
|
|
|
2921
2937
|
/** Input for configuring tenant settings */
|
|
2922
2938
|
export type ConfigureTenantInput = {
|
|
2923
2939
|
complianceRegion?: InputMaybe<Scalars['String']['input']>;
|
|
2940
|
+
/**
|
|
2941
|
+
* Ignored and never stored. Burdenoff does no white-labelling: every product keeps its own brand.
|
|
2942
|
+
* @deprecated No white-labelling — products keep their own brand. This setting is ignored.
|
|
2943
|
+
*/
|
|
2924
2944
|
customBranding?: InputMaybe<Scalars['JSON']['input']>;
|
|
2925
2945
|
dataResidency?: InputMaybe<Scalars['String']['input']>;
|
|
2926
2946
|
features?: InputMaybe<Scalars['JSON']['input']>;
|
|
@@ -3142,6 +3162,10 @@ export type ContextWidgetConversationPayload = {
|
|
|
3142
3162
|
};
|
|
3143
3163
|
export type Coupon = {
|
|
3144
3164
|
__typename?: 'Coupon';
|
|
3165
|
+
/** Purchase flows (PLAN / ADD_ON / STORE) this coupon may be redeemed against. Empty = all entity types. */
|
|
3166
|
+
applicableEntityTypes: Array<CouponEntityType>;
|
|
3167
|
+
/** Product slugs (e.g. "vibecontrols", "fluidgrids") this coupon may be redeemed against. Empty = all products. */
|
|
3168
|
+
applicableProductIds: Array<Scalars['String']['output']>;
|
|
3145
3169
|
applicableProducts: Array<Scalars['String']['output']>;
|
|
3146
3170
|
applicableServices: Array<Scalars['String']['output']>;
|
|
3147
3171
|
campaignId?: Maybe<Scalars['String']['output']>;
|
|
@@ -3172,6 +3196,12 @@ export type Coupon = {
|
|
|
3172
3196
|
validUntil?: Maybe<Scalars['DateTime']['output']>;
|
|
3173
3197
|
value: Scalars['Float']['output'];
|
|
3174
3198
|
};
|
|
3199
|
+
/** Which purchase flow a coupon may be redeemed against (BOFF-7391). */
|
|
3200
|
+
export declare enum CouponEntityType {
|
|
3201
|
+
AddOn = "ADD_ON",
|
|
3202
|
+
Plan = "PLAN",
|
|
3203
|
+
Store = "STORE"
|
|
3204
|
+
}
|
|
3175
3205
|
export type CouponFilterInput = {
|
|
3176
3206
|
campaignId?: InputMaybe<Scalars['String']['input']>;
|
|
3177
3207
|
scope?: InputMaybe<CouponScope>;
|
|
@@ -3457,6 +3487,8 @@ export type CreateContentPageInput = {
|
|
|
3457
3487
|
visibility?: InputMaybe<ContentVisibility>;
|
|
3458
3488
|
};
|
|
3459
3489
|
export type CreateCouponInput = {
|
|
3490
|
+
applicableEntityTypes?: InputMaybe<Array<CouponEntityType>>;
|
|
3491
|
+
applicableProductIds?: InputMaybe<Array<Scalars['String']['input']>>;
|
|
3460
3492
|
applicableProducts?: InputMaybe<Array<Scalars['String']['input']>>;
|
|
3461
3493
|
applicableServices?: InputMaybe<Array<Scalars['String']['input']>>;
|
|
3462
3494
|
campaignId?: InputMaybe<Scalars['String']['input']>;
|
|
@@ -5646,6 +5678,25 @@ export type EraseResult = {
|
|
|
5646
5678
|
retainedForLegalReason?: Maybe<Scalars['String']['output']>;
|
|
5647
5679
|
service: Scalars['String']['output'];
|
|
5648
5680
|
};
|
|
5681
|
+
/** A visitor asking for a human, on a conversation they are already in. Anonymous like the rest of explore: the conversation token is the only proof of ownership, and the only thing we ask the visitor for is where to reply. */
|
|
5682
|
+
export type EscalateExploreConversationInput = {
|
|
5683
|
+
/** Bearer secret for the conversation being handed over. */
|
|
5684
|
+
conversationToken: Scalars['String']['input'];
|
|
5685
|
+
/** Where the reply should go. Validated server-side and stored lower-cased; an address we cannot deliver to is refused with `INVALID_EMAIL` rather than accepted into a ticket nobody can answer. */
|
|
5686
|
+
email: Scalars['String']['input'];
|
|
5687
|
+
/** Anything the visitor wants to add in their own words. Optional — the point of the handover is that the conversation already says what the problem is. Capped server-side; the server truncates rather than rejecting. */
|
|
5688
|
+
note?: InputMaybe<Scalars['String']['input']>;
|
|
5689
|
+
/** `PlatformProduct` id of the site the visitor is on, so the handover reaches that product's support inbox instead of the default one. */
|
|
5690
|
+
productId?: InputMaybe<Scalars['String']['input']>;
|
|
5691
|
+
/** reCAPTCHA v3 token — required only when `exploreCatalog.captchaRequired`, and minted with the SAME action as a chat message. */
|
|
5692
|
+
recaptchaToken?: InputMaybe<Scalars['String']['input']>;
|
|
5693
|
+
};
|
|
5694
|
+
export type EscalateExploreConversationResult = {
|
|
5695
|
+
__typename?: 'EscalateExploreConversationResult';
|
|
5696
|
+
/** False when this submit found a handover that already existed — the double-clicked button, the retried request, the reloaded page. Not an error: the conversation is with a human either way. */
|
|
5697
|
+
created: Scalars['Boolean']['output'];
|
|
5698
|
+
escalation: ExploreEscalation;
|
|
5699
|
+
};
|
|
5649
5700
|
export type EvaluateFeatureFlagsInput = {
|
|
5650
5701
|
/** Specific flag keys to evaluate. If empty, evaluates ALL active flags. */
|
|
5651
5702
|
keys?: InputMaybe<Array<Scalars['String']['input']>>;
|
|
@@ -5653,6 +5704,10 @@ export type EvaluateFeatureFlagsInput = {
|
|
|
5653
5704
|
productSlug?: InputMaybe<Scalars['String']['input']>;
|
|
5654
5705
|
workspaceId: Scalars['String']['input'];
|
|
5655
5706
|
};
|
|
5707
|
+
export type ExchangeOwnDelegationInput = {
|
|
5708
|
+
delegationId: Scalars['ID']['input'];
|
|
5709
|
+
scopes?: InputMaybe<Array<Scalars['String']['input']>>;
|
|
5710
|
+
};
|
|
5656
5711
|
export type ExchangeTokenInput = {
|
|
5657
5712
|
appId: Scalars['String']['input'];
|
|
5658
5713
|
scopes?: InputMaybe<Array<Scalars['String']['input']>>;
|
|
@@ -5715,6 +5770,8 @@ export type ExploreAdminFilter = {
|
|
|
5715
5770
|
from?: InputMaybe<Scalars['DateTime']['input']>;
|
|
5716
5771
|
/** Salted IP hash, to group one visitor's sessions. */
|
|
5717
5772
|
ipHash?: InputMaybe<Scalars['String']['input']>;
|
|
5773
|
+
/** Only conversations containing an answer a visitor marked NOT helpful. */
|
|
5774
|
+
notHelpfulOnly?: InputMaybe<Scalars['Boolean']['input']>;
|
|
5718
5775
|
/** Match conversations that started on this product's website. */
|
|
5719
5776
|
productSlug?: InputMaybe<Scalars['String']['input']>;
|
|
5720
5777
|
/** Free-text match against message content. */
|
|
@@ -5735,6 +5792,8 @@ export type ExploreAdminMessage = {
|
|
|
5735
5792
|
createdAt: Scalars['DateTime']['output'];
|
|
5736
5793
|
ctas: Array<ExploreCta>;
|
|
5737
5794
|
errorCode?: Maybe<Scalars['String']['output']>;
|
|
5795
|
+
/** What the visitor said about this answer — rating, reason and comment — or null when they said nothing, which is the ordinary case. `answered` is our own machine verdict on whether we could ground a reply; this is the visitor's, and it is the only one of the two that can say an answer was confidently wrong. */
|
|
5796
|
+
feedback?: Maybe<ExploreFeedback>;
|
|
5738
5797
|
followUps: Array<Scalars['String']['output']>;
|
|
5739
5798
|
id: Scalars['ID']['output'];
|
|
5740
5799
|
references: Array<ExploreReference>;
|
|
@@ -5761,7 +5820,11 @@ export type ExploreAdminStats = {
|
|
|
5761
5820
|
byProduct: Array<ExploreAdminProductStat>;
|
|
5762
5821
|
clicks: Scalars['Int']['output'];
|
|
5763
5822
|
conversations: Scalars['Int']['output'];
|
|
5823
|
+
/** Answers a visitor marked helpful. */
|
|
5824
|
+
helpful: Scalars['Int']['output'];
|
|
5764
5825
|
messages: Scalars['Int']['output'];
|
|
5826
|
+
/** Answers a visitor marked NOT helpful. Read against `unanswered`: those are the gaps we already know about, these are the ones we thought we had covered. */
|
|
5827
|
+
notHelpful: Scalars['Int']['output'];
|
|
5765
5828
|
/** Assistant answers the corpus could not ground. */
|
|
5766
5829
|
unanswered: Scalars['Int']['output'];
|
|
5767
5830
|
};
|
|
@@ -5774,8 +5837,20 @@ export type ExploreAgentActivity = {
|
|
|
5774
5837
|
export type ExploreAgentCatalog = {
|
|
5775
5838
|
__typename?: 'ExploreAgentCatalog';
|
|
5776
5839
|
builtAt: Scalars['DateTime']['output'];
|
|
5840
|
+
/** At most one highlight per product, product-slug ordered, identical on every replica. Empty when the corpus carries no concept pages — never null, never an error. */
|
|
5841
|
+
conceptHighlights: Array<ExploreAgentConcept>;
|
|
5777
5842
|
products: Array<ExploreAgentProduct>;
|
|
5778
5843
|
};
|
|
5844
|
+
/** One product's concept page and the illustration that stands for it — what `/explore` offers a visitor who has not asked anything yet. `imageUrl` is absolute, on the product's own published origin, and drawn from the same allow-list an answer's images come from; `alt` is the illustration's own published alt text. */
|
|
5845
|
+
export type ExploreAgentConcept = {
|
|
5846
|
+
__typename?: 'ExploreAgentConcept';
|
|
5847
|
+
alt: Scalars['String']['output'];
|
|
5848
|
+
imageUrl: Scalars['String']['output'];
|
|
5849
|
+
product: Scalars['String']['output'];
|
|
5850
|
+
productName: Scalars['String']['output'];
|
|
5851
|
+
title: Scalars['String']['output'];
|
|
5852
|
+
url: Scalars['String']['output'];
|
|
5853
|
+
};
|
|
5779
5854
|
export type ExploreAgentCtaSuggestion = {
|
|
5780
5855
|
__typename?: 'ExploreAgentCtaSuggestion';
|
|
5781
5856
|
label: Scalars['String']['output'];
|
|
@@ -5878,6 +5953,8 @@ export type ExploreAttachmentInput = {
|
|
|
5878
5953
|
export type ExploreCatalog = {
|
|
5879
5954
|
__typename?: 'ExploreCatalog';
|
|
5880
5955
|
captchaRequired: Scalars['Boolean']['output'];
|
|
5956
|
+
/** Illustrations for the welcome screen, at most 8. The focused product's highlight (see `exploreCatalog(productSlug:)`) comes first. Empty is ORDINARY, not an error: these are fetched from the agent in a separate best-effort query precisely so that an agent which does not serve them yet — or at all — costs the catalog nothing. A page must render the rest of the catalog unchanged when this is empty, and must never read it as a signal that explore is unavailable. That is `enabled`. */
|
|
5957
|
+
conceptHighlights: Array<ExploreConceptHighlight>;
|
|
5881
5958
|
enabled: Scalars['Boolean']['output'];
|
|
5882
5959
|
examplePrompts: Array<Scalars['String']['output']>;
|
|
5883
5960
|
limits: ExploreLimits;
|
|
@@ -5886,6 +5963,17 @@ export type ExploreCatalog = {
|
|
|
5886
5963
|
welcomeBody: Scalars['String']['output'];
|
|
5887
5964
|
welcomeTitle: Scalars['String']['output'];
|
|
5888
5965
|
};
|
|
5966
|
+
/** One product's concept illustration, passed through from the agent's concept index so the welcome screen has something to SHOW before the first message. `imageUrl` is a mockup, not a screenshot of a running product — the same illustrations the answer path embeds, and the UI must label them the same way. `url` is the concept page the illustration belongs to, which is where a visitor who clicks it should land. At most one per product upstream, so the list reads as a gallery of the fleet rather than as several views of whichever product happened to sort first. */
|
|
5967
|
+
export type ExploreConceptHighlight = {
|
|
5968
|
+
__typename?: 'ExploreConceptHighlight';
|
|
5969
|
+
alt: Scalars['String']['output'];
|
|
5970
|
+
imageUrl: Scalars['String']['output'];
|
|
5971
|
+
/** Product slug, matching `ExploreProduct.slug`. */
|
|
5972
|
+
product: Scalars['String']['output'];
|
|
5973
|
+
productName: Scalars['String']['output'];
|
|
5974
|
+
title: Scalars['String']['output'];
|
|
5975
|
+
url: Scalars['String']['output'];
|
|
5976
|
+
};
|
|
5889
5977
|
/** An explore conversation. `token` is the bearer secret for every subsequent call and is returned ONLY on the request that minted it (or echoed back to the caller that already holds it) — it is never read back out of storage. */
|
|
5890
5978
|
export type ExploreConversation = {
|
|
5891
5979
|
__typename?: 'ExploreConversation';
|
|
@@ -5903,6 +5991,26 @@ export type ExploreCta = {
|
|
|
5903
5991
|
product?: Maybe<Scalars['String']['output']>;
|
|
5904
5992
|
url: Scalars['String']['output'];
|
|
5905
5993
|
};
|
|
5994
|
+
/** What became of the handover. */
|
|
5995
|
+
export type ExploreEscalation = {
|
|
5996
|
+
__typename?: 'ExploreEscalation';
|
|
5997
|
+
createdAt: Scalars['DateTime']['output'];
|
|
5998
|
+
/** The address a human will reply to, as stored. Echoed back so the UI shows the server's view rather than what was typed — and, on a repeat submit, the address the FIRST handover used, which is where the answer is actually going. */
|
|
5999
|
+
email: Scalars['String']['output'];
|
|
6000
|
+
};
|
|
6001
|
+
/** What one visitor thought of one answer. The signal `/explore` did not have. Every question got an answer, so "we answer 100% of questions" was true and told us nothing; this is the only record that a specific answer was wrong, thin or off-topic. At most one per message — a visitor may change their mind, and the new verdict replaces the old one. */
|
|
6002
|
+
export type ExploreFeedback = {
|
|
6003
|
+
__typename?: 'ExploreFeedback';
|
|
6004
|
+
comment?: Maybe<Scalars['String']['output']>;
|
|
6005
|
+
createdAt: Scalars['DateTime']['output'];
|
|
6006
|
+
rating: ExploreFeedbackRating;
|
|
6007
|
+
/** One of INACCURATE INCOMPLETE OFF_TOPIC HARD_TO_FOLLOW OTHER. Null for HELPFUL. */
|
|
6008
|
+
reason?: Maybe<Scalars['String']['output']>;
|
|
6009
|
+
};
|
|
6010
|
+
export declare enum ExploreFeedbackRating {
|
|
6011
|
+
Helpful = "HELPFUL",
|
|
6012
|
+
NotHelpful = "NOT_HELPFUL"
|
|
6013
|
+
}
|
|
5906
6014
|
/** Server-enforced limits, surfaced so the UI can pre-validate instead of discovering them through an error. */
|
|
5907
6015
|
export type ExploreLimits = {
|
|
5908
6016
|
__typename?: 'ExploreLimits';
|
|
@@ -5927,6 +6035,8 @@ export type ExploreMessage = {
|
|
|
5927
6035
|
createdAt: Scalars['DateTime']['output'];
|
|
5928
6036
|
ctas: Array<ExploreCta>;
|
|
5929
6037
|
errorCode?: Maybe<Scalars['String']['output']>;
|
|
6038
|
+
/** What this visitor said about this answer, or null if they said nothing — which is the ordinary case. Never populated for a USER message or for an answer that has not completed: neither is a thing anyone can rate. */
|
|
6039
|
+
feedback?: Maybe<ExploreFeedback>;
|
|
5930
6040
|
/** Suggested next questions, derived from what this answer actually covered. Empty until the turn completes, and empty when nothing useful can be derived. */
|
|
5931
6041
|
followUps: Array<Scalars['String']['output']>;
|
|
5932
6042
|
id: Scalars['ID']['output'];
|
|
@@ -6384,6 +6494,10 @@ export type GetStoreProductTagsInput = {
|
|
|
6384
6494
|
export type GrantAppDelegationInternalInput = {
|
|
6385
6495
|
/** Client ID of the first-party system app (e.g. burdenoff_integration_core). */
|
|
6386
6496
|
clientId: Scalars['String']['input'];
|
|
6497
|
+
/** Scopes the delegation must keep for other grants that share it (e.g. the user's other integration connections). A retained scope is kept only while the existing delegation is ACTIVE and already holds it, and only while the app still allows it; otherwise it is dropped, never rejected. A grant therefore never restores or adds a scope beyond the requested scopes. */
|
|
6498
|
+
retainedScopes?: InputMaybe<Array<Scalars['String']['input']>>;
|
|
6499
|
+
/** Workspaces the delegation must keep for other grants that share it. Kept only while the existing delegation is ACTIVE and already covers them: restoring a REVOKED or EXPIRED delegation covers only workspaceIds. Ignored when workspaceIds is empty (unrestricted). */
|
|
6500
|
+
retainedWorkspaceIds?: InputMaybe<Array<Scalars['String']['input']>>;
|
|
6387
6501
|
/** Scopes to grant — must be a subset of the app's scopes. */
|
|
6388
6502
|
scopes: Array<Scalars['String']['input']>;
|
|
6389
6503
|
/** The user granting (and target of) the self-delegation. */
|
|
@@ -6393,6 +6507,8 @@ export type GrantAppDelegationInternalInput = {
|
|
|
6393
6507
|
};
|
|
6394
6508
|
export type GrantAppWorkspaceAccessInput = {
|
|
6395
6509
|
appId: Scalars['ID']['input'];
|
|
6510
|
+
/** Restore a REVOKED authorization only if its revokedReason is exactly this value (one conditional write); otherwise behave as create-only. Lets an automated provisioner undo its own withdrawal but never an operator's revocation. Takes precedence over reactivateRevoked. */
|
|
6511
|
+
reactivateIfRevokedReason?: InputMaybe<Scalars['String']['input']>;
|
|
6396
6512
|
/** Whether an existing REVOKED authorization may be restored. Defaults to true for explicit administrative grants. Automated provisioning should pass false so an operator revocation remains durable. */
|
|
6397
6513
|
reactivateRevoked?: InputMaybe<Scalars['Boolean']['input']>;
|
|
6398
6514
|
/** Optional subset of the app's global scopes. Empty array means the authorization inherits the app's full scope list. */
|
|
@@ -7114,6 +7230,8 @@ export type IssueAppAsUserTokenInternalInput = {
|
|
|
7114
7230
|
scopes?: InputMaybe<Array<Scalars['String']['input']>>;
|
|
7115
7231
|
/** The user the app will act on behalf of (must have an active delegation). */
|
|
7116
7232
|
targetUserId: Scalars['String']['input'];
|
|
7233
|
+
/** Bind the token to this one workspace instead of every workspace the delegation covers. The delegation must cover it. Callers minting for a single workspace (an integration connection) should always pass it. */
|
|
7234
|
+
workspaceId?: InputMaybe<Scalars['String']['input']>;
|
|
7117
7235
|
};
|
|
7118
7236
|
export type ItemOrder = {
|
|
7119
7237
|
__typename?: 'ItemOrder';
|
|
@@ -8109,6 +8227,8 @@ export type Mutation = {
|
|
|
8109
8227
|
completeSupportAttachmentUpload: SupportAttachmentFile;
|
|
8110
8228
|
/** Mark a tour as completed for a user */
|
|
8111
8229
|
completeTour: TourUserProgress;
|
|
8230
|
+
configureAssistantAccountBudget: AssistantAccountBudget;
|
|
8231
|
+
configureAssistantModelPrice: AiModelPrice;
|
|
8112
8232
|
configureEntitlementSeats: ProductEntitlement;
|
|
8113
8233
|
/** Configure Kerberos authentication for a tenant */
|
|
8114
8234
|
configureKerberos: KerberosConfig;
|
|
@@ -8463,6 +8583,7 @@ export type Mutation = {
|
|
|
8463
8583
|
/** Detach media from a tour step */
|
|
8464
8584
|
detachMediaFromStep: Scalars['Boolean']['output'];
|
|
8465
8585
|
disableAuthMethod: Scalars['Boolean']['output'];
|
|
8586
|
+
/** Disable every MFA method of the caller. When `code` is given (a current TOTP code, or one of the caller's unused backup codes) it must verify against an enabled method before anything is disabled. */
|
|
8466
8587
|
disableMFA: Scalars['Boolean']['output'];
|
|
8467
8588
|
disableMaintenanceMode: MaintenanceModeStatus;
|
|
8468
8589
|
disableSchedule: ScheduledJob;
|
|
@@ -8478,13 +8599,16 @@ export type Mutation = {
|
|
|
8478
8599
|
enableMFA: Scalars['Boolean']['output'];
|
|
8479
8600
|
enableMaintenanceMode: MaintenanceModeStatus;
|
|
8480
8601
|
enrollSubscriberInAutomation: AutomationSubscriber;
|
|
8481
|
-
/** Idempotently ensure a user is an organization member, primarily for the workspace-invite-accept flow where an invitee gains a workspace inside an org they're not yet a member of. Unlike `addOrganizationMember`: * Returns `OrganizationMember` whether the row was inserted or already existed — no CONFLICT on repeat calls (case 1: already a member). * Does NOT overwrite the existing `role` column on a pre-existing row (case 2: don't demote). * Triggers a real-role assignment in global-rbac-svc at scope = orgId only when the actor has NO existing role assignment at that scope (case 3: real role comes from RBAC, not the data-layer string). The `role` arg defaults to `GUEST` — the most restrictive enum value — because invitees arriving via a workspace invite should not gain first-class org membership. The data-layer string column is a coarse classifier; the authoritative permission decision is evaluated by global-rbac-svc against `actor_role_assignments`. See BOFF-2649 + the RBAC guide at `dev/platform/context/rbac/RBAC_GUIDE_FOR_AI_TOOLS.md`. Called from wspace-workspace-svc::acceptInvitation via service-context (`X-Actor-Type: service`), which bypasses the workspace-admin check inside the resolver. Best-effort from the caller's side — failures must NOT block the upstream invite acceptance. */
|
|
8602
|
+
/** Idempotently ensure a user is an organization member, primarily for the workspace-invite-accept flow where an invitee gains a workspace inside an org they're not yet a member of. Unlike `addOrganizationMember`: * Returns `OrganizationMember` whether the row was inserted or already existed — no CONFLICT on repeat calls (case 1: already a member). * Does NOT overwrite the existing `role` column on a pre-existing row (case 2: don't demote). * Triggers a real-role assignment in global-rbac-svc at scope = orgId only when the actor has NO existing role assignment at that scope (case 3: real role comes from RBAC, not the data-layer string). The `role` arg defaults to `GUEST` — the most restrictive enum value — because invitees arriving via a workspace invite should not gain first-class org membership. The data-layer string column is a coarse classifier; the authoritative permission decision is evaluated by global-rbac-svc against `actor_role_assignments`. See BOFF-2649 + the RBAC guide at `dev/platform/context/identity/rbac/RBAC_GUIDE_FOR_AI_TOOLS.md`. Called from wspace-workspace-svc::acceptInvitation via service-context (`X-Actor-Type: service`), which bypasses the workspace-admin check inside the resolver. Best-effort from the caller's side — failures must NOT block the upstream invite acceptance. */
|
|
8482
8603
|
ensureOrganizationMember: EnsureOrganizationMemberResult;
|
|
8483
8604
|
/** Ensure a billing order exists for a store order. Called from the checkout frontend when no billingOrderId is present (e.g. the buyer had no billing account at order-creation time). Creates the billing order server-side so the correct callbackGraphQL endpoint is registered and the billing service can call back after payment to confirm the store order. */
|
|
8484
8605
|
ensureStoreOrderBillingOrder: EnsureStoreOrderBillingOrderResponse;
|
|
8485
8606
|
/** 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. */
|
|
8486
8607
|
eraseSubject: EraseResult;
|
|
8608
|
+
/** Hand this conversation to a person, with its transcript attached. The agent answers only from a baked corpus, so the questions it cannot answer are exactly the ones worth a person's time. This turns the dead end into a handover: it files the conversation as a contact inquiry — the same record the website contact form writes, in the same console, with the same emails — so nobody has to ask the visitor to type their problem out a second time. Requires the conversation token and nothing else. A token that does not own a conversation is reported as NOT_FOUND, never FORBIDDEN, exactly as every other token-scoped call reports it: FORBIDDEN would confirm the conversation exists. Unlike `submitExploreFeedback` this is NOT fire-and-forget — it throws rather than reporting a handover that did not happen, because the visitor is about to be told that someone will get back to them. Rate-limited on the same per-IP budget as sending a message and gated by the same reCAPTCHA, because it is the same anonymous visitor making another public write. Idempotent: one handover per conversation, so a double-clicked button returns the first one rather than putting a second ticket in front of support. */
|
|
8609
|
+
escalateExploreConversation: EscalateExploreConversationResult;
|
|
8487
8610
|
escalateSupportTicket: SupportTicket;
|
|
8611
|
+
exchangeOwnDelegation: AppAsUserTokenResponse;
|
|
8488
8612
|
/** Exchange app token for app-as-user token (Token Exchange flow) */
|
|
8489
8613
|
exchangeToken: AppAsUserTokenResponse;
|
|
8490
8614
|
executeJobNow: JobExecution;
|
|
@@ -8624,6 +8748,8 @@ export type Mutation = {
|
|
|
8624
8748
|
payInvoice: Invoice;
|
|
8625
8749
|
permanentlyDeleteSchedule: Scalars['Boolean']['output'];
|
|
8626
8750
|
placeLegalHold: LegalHold;
|
|
8751
|
+
/** Internal-only: polls "Deploy Devportal Node" GitHub Actions run history and records the result in NodeSandboxBuildCheck — see services/nodeSandboxBuildPoll.ts. Invoked on a schedule by global-scheduler-svc's INTERNAL_API executor; also callable from the admin build-log UI for an on-demand refresh. Returns `skipped: true` (not an error) when NODE_SANDBOX_DISPATCH_TOKEN is unset OR the GitHub call itself fails (e.g. the token lacks Actions:read) — callers must check `skipped` rather than assume a non-error response means it actually polled. */
|
|
8752
|
+
pollNodeSandboxBuildChecks: NodeSandboxBuildPollResult;
|
|
8627
8753
|
prepareSupportAttachmentUpload: SupportAttachmentUploadSession;
|
|
8628
8754
|
/** Process a refund for an app sale. Privileged financial mutation: reverses money to a buyer and adjusts the org's pending balance. Gated on `devportal-sale:manage` (the same permission as `retrySaleCreditSync`), with an in-resolver org-ADMIN check as defense-in-depth. */
|
|
8629
8755
|
processAppSaleRefund: DeveloperOrgSale;
|
|
@@ -8831,6 +8957,7 @@ export type Mutation = {
|
|
|
8831
8957
|
resendOrganizationInvite: OrganizationInvite;
|
|
8832
8958
|
resendSurvey: CustomerSatisfactionSurvey;
|
|
8833
8959
|
resendVerificationEmail: ResendVerificationResult;
|
|
8960
|
+
reserveAssistantAccountBudget: AssistantBudgetReceipt;
|
|
8834
8961
|
resetCircuitBreaker: CircuitBreakerState;
|
|
8835
8962
|
/** Reset password using token from email */
|
|
8836
8963
|
resetPassword: Scalars['Boolean']['output'];
|
|
@@ -8852,6 +8979,8 @@ export type Mutation = {
|
|
|
8852
8979
|
restoreChannel: Channel;
|
|
8853
8980
|
restoreScheduleVersion: ScheduledJob;
|
|
8854
8981
|
restoreTemplateVersion: NewsletterTemplate;
|
|
8982
|
+
/** Service-trusted internal REDUCTION of a first-party self-delegation, keyed by the app's client id and the user: used when one of several integration connections that share it is deleted or revoked. It never creates, re-enables or widens a delegation: it returns null when there is none (never granted, or erased), a REVOKED or EXPIRED one unchanged, and otherwise the delegation cut down to the requested scopes and workspaces it already held (REVOKED if none are left). Not blocked by a deactivated app: withdrawing access is always permitted. Gated to internal service / super_admin callers and restricted to first-party system apps. */
|
|
8983
|
+
restrictAppDelegationInternal?: Maybe<AppUserDelegation>;
|
|
8855
8984
|
/** Public endpoint — no authentication required. Email is normalized (trimmed, lowercased) and validated in the provider. Returns NOT_FOUND when no matching unsubscribed record exists; does not leak which side of the check failed. */
|
|
8856
8985
|
resubscribe: NewsletterSubscriber;
|
|
8857
8986
|
/** Resume a paused subscription */
|
|
@@ -8869,6 +8998,8 @@ export type Mutation = {
|
|
|
8869
8998
|
/** Retry invoice generation for a successful transaction that never got an invoice recorded (a transient Zoho Books/Stripe Invoicing failure at payment time). transactionId is the transaction that has no invoiceNumber in its metadata yet — surfaced via getTransactionsByBillingAccount / getTransaction, not the invoice list (which only shows transactions that already have an invoice). */
|
|
8870
8999
|
retryInvoiceGeneration: Invoice;
|
|
8871
9000
|
retryJobExecution: JobExecution;
|
|
9001
|
+
/** Platform admin only: re-dispatch the sandbox image build for a NODE version whose build never completed (stuck PENDING) or failed (FAILED / DISPATCH_FAILED / UNSUPPORTED). Calls the exact same dispatch path a fresh publish uses — it does not create a new version or touch review status, it only re-attempts the build for the existing one. */
|
|
9002
|
+
retryNodeSandboxBuild: Scalars['Boolean']['output'];
|
|
8872
9003
|
/** Retry a failed payout */
|
|
8873
9004
|
retryPayout: DeveloperOrgPayout;
|
|
8874
9005
|
/** Retry a failed refund */
|
|
@@ -8881,7 +9012,9 @@ export type Mutation = {
|
|
|
8881
9012
|
revokeAPIKey: Scalars['Boolean']['output'];
|
|
8882
9013
|
/** Revoke all sessions except the current one. Returns the number of sessions that were revoked. */
|
|
8883
9014
|
revokeAllSessions: RevokeAllSessionsResult;
|
|
8884
|
-
/**
|
|
9015
|
+
/** Service-trusted internal revoke of a first-party self-delegation, keyed by the app's client id and the user — the counterpart of grantAppDelegationInternal, used when the last integration connection that needed it is deleted or revoked. Idempotent: returns true when an ACTIVE delegation was revoked and false when there was none (never granted, already revoked or expired). Gated to internal service / super_admin callers and restricted to first-party system apps. */
|
|
9016
|
+
revokeAppDelegationInternal: Scalars['Boolean']['output'];
|
|
9017
|
+
/** Revoke an app's access to a workspace. Returns false if the row was already REVOKED or never existed. An owner or super_admin revoking an already-REVOKED row replaces the revocation on record (reason, actor, time). */
|
|
8885
9018
|
revokeAppWorkspaceAccess: Scalars['Boolean']['output'];
|
|
8886
9019
|
revokeConsent: NewsletterConsent;
|
|
8887
9020
|
revokeDelegation: Scalars['Boolean']['output'];
|
|
@@ -8921,6 +9054,8 @@ export type Mutation = {
|
|
|
8921
9054
|
scheduleNotification: ScheduledNotification;
|
|
8922
9055
|
/** Overwrite the built-in AthleteBridge user-facing tours from the service-owned seed file. */
|
|
8923
9056
|
seedAtheleteBridgeUserTours: SeedAtheleteBridgeUserToursResult;
|
|
9057
|
+
/** Overwrite the service-owned BigConsole onboarding tours. Repeated calls update the same slugs. */
|
|
9058
|
+
seedBigconsoleUserTours: SeedBigconsoleUserToursResult;
|
|
8924
9059
|
/** Overwrite the built-in Buildmyiq user-facing dashboard tour from the service-owned seed file. */
|
|
8925
9060
|
seedBuildmyiqUserTours: SeedBuildmyiqUserToursResult;
|
|
8926
9061
|
/** Overwrite the built-in CollabKin user-facing dashboard tour from the service-owned seed file. */
|
|
@@ -8992,6 +9127,7 @@ export type Mutation = {
|
|
|
8992
9127
|
setUserLanguagePreference: UserLanguagePreference;
|
|
8993
9128
|
/** Set workspace-level override for a feature flag (super admin or workspace admin). RBAC is scoped to the target workspace via `input.workspaceId`. */
|
|
8994
9129
|
setWorkspaceFeatureFlagOverride: WorkspaceFeatureFlagOverride;
|
|
9130
|
+
settleAssistantAccountBudget: AssistantBudgetReceipt;
|
|
8995
9131
|
setupMFA: MfaSetupResult;
|
|
8996
9132
|
/** Share a WORKFLOW-type application as a public link by setting its visibility to UNLISTED. Only the developer who owns the app can call this. The app must have a manifest (workflow definition) set. */
|
|
8997
9133
|
shareWorkflow: Application;
|
|
@@ -9019,6 +9155,8 @@ export type Mutation = {
|
|
|
9019
9155
|
submitAssignmentResponse: SubmitAssignmentResponsePayload;
|
|
9020
9156
|
/** 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. */
|
|
9021
9157
|
submitContactInquiry: SubmitContactInquiryResult;
|
|
9158
|
+
/** Rate one answer. Same fire-and-forget posture as `recordExploreClick`: a rating that cannot be attributed — an unfinished answer, a USER turn, a token that does not own the message — comes back `recorded: false` rather than as an error, and never as FORBIDDEN, which would confirm that a message id exists. Submitting again REPLACES the previous rating for that message, so changing your mind is an ordinary action rather than a duplicate or a failure. */
|
|
9159
|
+
submitExploreFeedback: SubmitExploreFeedbackResult;
|
|
9022
9160
|
/** Submit feedback for an interview round (admin). */
|
|
9023
9161
|
submitInterviewFeedback: InterviewFeedback;
|
|
9024
9162
|
/** Submit a job application from a public website (no authentication required). Validates reCAPTCHA, stores the resume in private storage, and notifies the applicant + careers inbox. */
|
|
@@ -9303,7 +9441,6 @@ export type Mutation = {
|
|
|
9303
9441
|
/** M2M: create or update a ShippingAddress for an EXPLICIT user, on behalf of a calling service. Product backends (e.g. Kadaikodi) call this through the INTERNAL gateway so a user's address lives in the canonical store owner rather than a per-product copy. Pass `input.id` to update an existing row (must belong to `input.userId`); omit it to create. Service-actor only. */
|
|
9304
9442
|
upsertUserShippingAddress: ShippingAddress;
|
|
9305
9443
|
useCannedResponse: CannedResponse;
|
|
9306
|
-
validateApiKey: TokenValidationResponse;
|
|
9307
9444
|
/** Validate an HMAC signature */
|
|
9308
9445
|
validateHMACSignature: HmacValidationResult;
|
|
9309
9446
|
/** Validate a signed cookie */
|
|
@@ -9888,6 +10025,19 @@ export type MutationCompleteTourArgs = {
|
|
|
9888
10025
|
userId: Scalars['ID']['input'];
|
|
9889
10026
|
};
|
|
9890
10027
|
/** Root mutation type */
|
|
10028
|
+
export type MutationConfigureAssistantAccountBudgetArgs = {
|
|
10029
|
+
billingAccountId: Scalars['ID']['input'];
|
|
10030
|
+
dailyMicroUsd: Scalars['Int']['input'];
|
|
10031
|
+
dailyTokens: Scalars['Int']['input'];
|
|
10032
|
+
enabled: Scalars['Boolean']['input'];
|
|
10033
|
+
};
|
|
10034
|
+
/** Root mutation type */
|
|
10035
|
+
export type MutationConfigureAssistantModelPriceArgs = {
|
|
10036
|
+
inputPer1M: Scalars['String']['input'];
|
|
10037
|
+
model: Scalars['String']['input'];
|
|
10038
|
+
outputPer1M: Scalars['String']['input'];
|
|
10039
|
+
};
|
|
10040
|
+
/** Root mutation type */
|
|
9891
10041
|
export type MutationConfigureEntitlementSeatsArgs = {
|
|
9892
10042
|
entitlementId: Scalars['ID']['input'];
|
|
9893
10043
|
maxSeats: Scalars['Int']['input'];
|
|
@@ -10848,6 +10998,10 @@ export type MutationDisableAuthMethodArgs = {
|
|
|
10848
10998
|
authType: AuthType;
|
|
10849
10999
|
};
|
|
10850
11000
|
/** Root mutation type */
|
|
11001
|
+
export type MutationDisableMfaArgs = {
|
|
11002
|
+
code?: InputMaybe<Scalars['String']['input']>;
|
|
11003
|
+
};
|
|
11004
|
+
/** Root mutation type */
|
|
10851
11005
|
export type MutationDisableScheduleArgs = {
|
|
10852
11006
|
id: Scalars['ID']['input'];
|
|
10853
11007
|
reason?: InputMaybe<Scalars['String']['input']>;
|
|
@@ -10913,12 +11067,20 @@ export type MutationEraseSubjectArgs = {
|
|
|
10913
11067
|
subjectId: Scalars['ID']['input'];
|
|
10914
11068
|
};
|
|
10915
11069
|
/** Root mutation type */
|
|
11070
|
+
export type MutationEscalateExploreConversationArgs = {
|
|
11071
|
+
input: EscalateExploreConversationInput;
|
|
11072
|
+
};
|
|
11073
|
+
/** Root mutation type */
|
|
10916
11074
|
export type MutationEscalateSupportTicketArgs = {
|
|
10917
11075
|
escalateTo?: InputMaybe<Scalars['String']['input']>;
|
|
10918
11076
|
id: Scalars['ID']['input'];
|
|
10919
11077
|
reason: Scalars['String']['input'];
|
|
10920
11078
|
};
|
|
10921
11079
|
/** Root mutation type */
|
|
11080
|
+
export type MutationExchangeOwnDelegationArgs = {
|
|
11081
|
+
input: ExchangeOwnDelegationInput;
|
|
11082
|
+
};
|
|
11083
|
+
/** Root mutation type */
|
|
10922
11084
|
export type MutationExchangeTokenArgs = {
|
|
10923
11085
|
input: ExchangeTokenInput;
|
|
10924
11086
|
};
|
|
@@ -11877,6 +12039,10 @@ export type MutationResendVerificationEmailArgs = {
|
|
|
11877
12039
|
email: Scalars['String']['input'];
|
|
11878
12040
|
};
|
|
11879
12041
|
/** Root mutation type */
|
|
12042
|
+
export type MutationReserveAssistantAccountBudgetArgs = {
|
|
12043
|
+
input: ReserveAssistantBudgetInput;
|
|
12044
|
+
};
|
|
12045
|
+
/** Root mutation type */
|
|
11880
12046
|
export type MutationResetCircuitBreakerArgs = {
|
|
11881
12047
|
scope: Scalars['String']['input'];
|
|
11882
12048
|
scopeValue: Scalars['String']['input'];
|
|
@@ -11943,6 +12109,10 @@ export type MutationRestoreTemplateVersionArgs = {
|
|
|
11943
12109
|
version: Scalars['Int']['input'];
|
|
11944
12110
|
};
|
|
11945
12111
|
/** Root mutation type */
|
|
12112
|
+
export type MutationRestrictAppDelegationInternalArgs = {
|
|
12113
|
+
input: RestrictAppDelegationInternalInput;
|
|
12114
|
+
};
|
|
12115
|
+
/** Root mutation type */
|
|
11946
12116
|
export type MutationResubscribeArgs = {
|
|
11947
12117
|
email: Scalars['String']['input'];
|
|
11948
12118
|
platformProductId?: InputMaybe<Scalars['String']['input']>;
|
|
@@ -11992,6 +12162,10 @@ export type MutationRetryJobExecutionArgs = {
|
|
|
11992
12162
|
executionId: Scalars['ID']['input'];
|
|
11993
12163
|
};
|
|
11994
12164
|
/** Root mutation type */
|
|
12165
|
+
export type MutationRetryNodeSandboxBuildArgs = {
|
|
12166
|
+
id: Scalars['ID']['input'];
|
|
12167
|
+
};
|
|
12168
|
+
/** Root mutation type */
|
|
11995
12169
|
export type MutationRetryPayoutArgs = {
|
|
11996
12170
|
id: Scalars['ID']['input'];
|
|
11997
12171
|
};
|
|
@@ -12021,6 +12195,10 @@ export type MutationRevokeApiKeyArgs = {
|
|
|
12021
12195
|
keyId: Scalars['String']['input'];
|
|
12022
12196
|
};
|
|
12023
12197
|
/** Root mutation type */
|
|
12198
|
+
export type MutationRevokeAppDelegationInternalArgs = {
|
|
12199
|
+
input: RevokeAppDelegationInternalInput;
|
|
12200
|
+
};
|
|
12201
|
+
/** Root mutation type */
|
|
12024
12202
|
export type MutationRevokeAppWorkspaceAccessArgs = {
|
|
12025
12203
|
input: RevokeAppWorkspaceAccessInput;
|
|
12026
12204
|
};
|
|
@@ -12263,6 +12441,13 @@ export type MutationSetWorkspaceFeatureFlagOverrideArgs = {
|
|
|
12263
12441
|
input: SetWorkspaceFeatureFlagOverrideInput;
|
|
12264
12442
|
};
|
|
12265
12443
|
/** Root mutation type */
|
|
12444
|
+
export type MutationSettleAssistantAccountBudgetArgs = {
|
|
12445
|
+
id: Scalars['ID']['input'];
|
|
12446
|
+
inputTokens: Scalars['Int']['input'];
|
|
12447
|
+
outputTokens: Scalars['Int']['input'];
|
|
12448
|
+
workspaceId: Scalars['ID']['input'];
|
|
12449
|
+
};
|
|
12450
|
+
/** Root mutation type */
|
|
12266
12451
|
export type MutationSetupMfaArgs = {
|
|
12267
12452
|
method: MfaMethod;
|
|
12268
12453
|
};
|
|
@@ -12340,6 +12525,10 @@ export type MutationSubmitContactInquiryArgs = {
|
|
|
12340
12525
|
input: SubmitContactInquiryInput;
|
|
12341
12526
|
};
|
|
12342
12527
|
/** Root mutation type */
|
|
12528
|
+
export type MutationSubmitExploreFeedbackArgs = {
|
|
12529
|
+
input: SubmitExploreFeedbackInput;
|
|
12530
|
+
};
|
|
12531
|
+
/** Root mutation type */
|
|
12343
12532
|
export type MutationSubmitInterviewFeedbackArgs = {
|
|
12344
12533
|
input: SubmitInterviewFeedbackInput;
|
|
12345
12534
|
};
|
|
@@ -13215,10 +13404,6 @@ export type MutationUseCannedResponseArgs = {
|
|
|
13215
13404
|
id: Scalars['ID']['input'];
|
|
13216
13405
|
};
|
|
13217
13406
|
/** Root mutation type */
|
|
13218
|
-
export type MutationValidateApiKeyArgs = {
|
|
13219
|
-
apiKey: Scalars['String']['input'];
|
|
13220
|
-
};
|
|
13221
|
-
/** Root mutation type */
|
|
13222
13407
|
export type MutationValidateHmacSignatureArgs = {
|
|
13223
13408
|
algorithm?: InputMaybe<Scalars['String']['input']>;
|
|
13224
13409
|
appId: Scalars['ID']['input'];
|
|
@@ -13655,6 +13840,39 @@ export declare enum NewsletterWaitlistStatus {
|
|
|
13655
13840
|
Pending = "PENDING",
|
|
13656
13841
|
Rejected = "REJECTED"
|
|
13657
13842
|
}
|
|
13843
|
+
/** One observed run of the "Deploy Devportal Node" GitHub Actions workflow, polled from run history rather than pushed via callback — see workers/nodeSandboxBuildPoll.ts. applicationVersionId/slug/version are best-effort, parsed from the run's title; null on runs from before the workflow embedded them, or a title that didn't parse. */
|
|
13844
|
+
export type NodeSandboxBuildCheck = {
|
|
13845
|
+
__typename?: 'NodeSandboxBuildCheck';
|
|
13846
|
+
applicationVersionId?: Maybe<Scalars['String']['output']>;
|
|
13847
|
+
checkedAt: Scalars['DateTime']['output'];
|
|
13848
|
+
failureStep?: Maybe<Scalars['String']['output']>;
|
|
13849
|
+
id: Scalars['ID']['output'];
|
|
13850
|
+
runConclusion?: Maybe<Scalars['String']['output']>;
|
|
13851
|
+
runId: Scalars['String']['output'];
|
|
13852
|
+
runStartedAt?: Maybe<Scalars['DateTime']['output']>;
|
|
13853
|
+
runStatus: Scalars['String']['output'];
|
|
13854
|
+
runUpdatedAt?: Maybe<Scalars['DateTime']['output']>;
|
|
13855
|
+
runUrl: Scalars['String']['output'];
|
|
13856
|
+
slug?: Maybe<Scalars['String']['output']>;
|
|
13857
|
+
version?: Maybe<Scalars['String']['output']>;
|
|
13858
|
+
};
|
|
13859
|
+
export type NodeSandboxBuildCheckConnection = {
|
|
13860
|
+
__typename?: 'NodeSandboxBuildCheckConnection';
|
|
13861
|
+
edges: Array<NodeSandboxBuildCheckEdge>;
|
|
13862
|
+
pageInfo: PageInfo;
|
|
13863
|
+
totalCount: Scalars['Int']['output'];
|
|
13864
|
+
};
|
|
13865
|
+
export type NodeSandboxBuildCheckEdge = {
|
|
13866
|
+
__typename?: 'NodeSandboxBuildCheckEdge';
|
|
13867
|
+
cursor: Scalars['String']['output'];
|
|
13868
|
+
node: NodeSandboxBuildCheck;
|
|
13869
|
+
};
|
|
13870
|
+
/** Result of a pollNodeSandboxBuildChecks call. `skipped: true` means no GitHub Actions run history was fetched this call (token unset or the GitHub API call failed) — `recorded` is only meaningful when `skipped` is false. */
|
|
13871
|
+
export type NodeSandboxBuildPollResult = {
|
|
13872
|
+
__typename?: 'NodeSandboxBuildPollResult';
|
|
13873
|
+
recorded: Scalars['Int']['output'];
|
|
13874
|
+
skipped: Scalars['Boolean']['output'];
|
|
13875
|
+
};
|
|
13658
13876
|
export type Notification = {
|
|
13659
13877
|
__typename?: 'Notification';
|
|
13660
13878
|
actions: Array<NotificationAction>;
|
|
@@ -14694,6 +14912,8 @@ export declare enum PaymentMethodType {
|
|
|
14694
14912
|
Crypto = "CRYPTO",
|
|
14695
14913
|
DebitCard = "DEBIT_CARD",
|
|
14696
14914
|
Netbanking = "NETBANKING",
|
|
14915
|
+
/** Zero-total purchases (e.g. a 100%-off coupon) — no gateway/method involved. */
|
|
14916
|
+
None = "NONE",
|
|
14697
14917
|
Paypal = "PAYPAL",
|
|
14698
14918
|
Wallet = "WALLET"
|
|
14699
14919
|
}
|
|
@@ -14985,6 +15205,8 @@ export type Plan = {
|
|
|
14985
15205
|
minSeats?: Maybe<Scalars['Int']['output']>;
|
|
14986
15206
|
/** The name of the plan (e.g., 'Basic', 'Pro', 'Enterprise'). */
|
|
14987
15207
|
name?: Maybe<Scalars['String']['output']>;
|
|
15208
|
+
/** Apple App Store / Google Play SKU for this plan. */
|
|
15209
|
+
nativeProductId?: Maybe<Scalars['String']['output']>;
|
|
14988
15210
|
/** The price of the plan. */
|
|
14989
15211
|
price?: Maybe<Scalars['Float']['output']>;
|
|
14990
15212
|
/** Historical record of price changes for this plan */
|
|
@@ -16504,6 +16726,8 @@ export type Query = {
|
|
|
16504
16726
|
newsletterVariant?: Maybe<NewsletterVariant>;
|
|
16505
16727
|
newsletterVariants: Array<NewsletterVariant>;
|
|
16506
16728
|
newsletters: Array<Newsletter>;
|
|
16729
|
+
/** Platform admin only: recent observed runs of the node-sandbox build workflow, newest first — see workers/nodeSandboxBuildPoll.ts. Optionally filtered to one version's runs. */
|
|
16730
|
+
nodeSandboxBuildChecks: NodeSandboxBuildCheckConnection;
|
|
16507
16731
|
/** Get a single notification by ID */
|
|
16508
16732
|
notification?: Maybe<Notification>;
|
|
16509
16733
|
/** Get notification events/history for a specific notification */
|
|
@@ -18608,6 +18832,12 @@ export type QueryNewslettersArgs = {
|
|
|
18608
18832
|
offset?: InputMaybe<Scalars['Int']['input']>;
|
|
18609
18833
|
};
|
|
18610
18834
|
/** Root query type */
|
|
18835
|
+
export type QueryNodeSandboxBuildChecksArgs = {
|
|
18836
|
+
applicationVersionId?: InputMaybe<Scalars['ID']['input']>;
|
|
18837
|
+
limit?: InputMaybe<Scalars['Int']['input']>;
|
|
18838
|
+
offset?: InputMaybe<Scalars['Int']['input']>;
|
|
18839
|
+
};
|
|
18840
|
+
/** Root query type */
|
|
18611
18841
|
export type QueryNotificationArgs = {
|
|
18612
18842
|
id: Scalars['ID']['input'];
|
|
18613
18843
|
};
|
|
@@ -20448,6 +20678,13 @@ export type ResendVerificationResult = {
|
|
|
20448
20678
|
message: Scalars['String']['output'];
|
|
20449
20679
|
success: Scalars['Boolean']['output'];
|
|
20450
20680
|
};
|
|
20681
|
+
export type ReserveAssistantBudgetInput = {
|
|
20682
|
+
id: Scalars['ID']['input'];
|
|
20683
|
+
inputTokens: Scalars['Int']['input'];
|
|
20684
|
+
model: Scalars['String']['input'];
|
|
20685
|
+
outputTokens: Scalars['Int']['input'];
|
|
20686
|
+
workspaceId: Scalars['ID']['input'];
|
|
20687
|
+
};
|
|
20451
20688
|
/** Input for resolving (or creating) the default billing account for a user/org. At least one of `orgId` or `ownerUserId` MUST be supplied: - `orgId` present → resolve-or-create the org's default billing account. - `ownerUserId` only → resolve an EXISTING billing account already associated with that user's earnings/payout accounts. Creation requires an `orgId` anchor because a billing account is always org-scoped. */
|
|
20452
20689
|
export type ResolveBillingAccountInput = {
|
|
20453
20690
|
/** Opaque org id that anchors the billing account. When present the org's default billing account is resolved-or-created. */
|
|
@@ -20495,6 +20732,17 @@ export type ResourceTypeProductInfo = {
|
|
|
20495
20732
|
products: Array<Scalars['String']['output']>;
|
|
20496
20733
|
resourceType: Scalars['String']['output'];
|
|
20497
20734
|
};
|
|
20735
|
+
/** Input for the service-trusted internal reduction of a first-party self-delegation. */
|
|
20736
|
+
export type RestrictAppDelegationInternalInput = {
|
|
20737
|
+
/** Client ID of the first-party system app (e.g. burdenoff_integration_core). */
|
|
20738
|
+
clientId: Scalars['String']['input'];
|
|
20739
|
+
/** The most the delegation may keep: it keeps only those of these scopes it already holds (and the app still allows), and is revoked if none are left. */
|
|
20740
|
+
scopes: Array<Scalars['String']['input']>;
|
|
20741
|
+
/** The user whose delegation to the app is reduced. */
|
|
20742
|
+
userId: Scalars['String']['input'];
|
|
20743
|
+
/** The most workspaces the delegation may keep: it keeps only those of these it already covers, and is revoked if none are left. Empty = leave the workspaces as they are. */
|
|
20744
|
+
workspaceIds: Array<Scalars['String']['input']>;
|
|
20745
|
+
};
|
|
20498
20746
|
export type RetryBillingOrderCallbackResponse = {
|
|
20499
20747
|
__typename?: 'RetryBillingOrderCallbackResponse';
|
|
20500
20748
|
error?: Maybe<Scalars['String']['output']>;
|
|
@@ -20551,8 +20799,19 @@ export type RevokeAllSessionsResult = {
|
|
|
20551
20799
|
revokedCount: Scalars['Int']['output'];
|
|
20552
20800
|
success: Scalars['Boolean']['output'];
|
|
20553
20801
|
};
|
|
20802
|
+
/** Input for the service-trusted internal revoke of a first-party self-delegation. */
|
|
20803
|
+
export type RevokeAppDelegationInternalInput = {
|
|
20804
|
+
/** Client ID of the first-party system app (e.g. burdenoff_integration_core). */
|
|
20805
|
+
clientId: Scalars['String']['input'];
|
|
20806
|
+
/** Recorded on the delegation and in the audit log. */
|
|
20807
|
+
reason?: InputMaybe<Scalars['String']['input']>;
|
|
20808
|
+
/** The user whose delegation to the app is revoked. */
|
|
20809
|
+
userId: Scalars['String']['input'];
|
|
20810
|
+
};
|
|
20554
20811
|
export type RevokeAppWorkspaceAccessInput = {
|
|
20555
20812
|
appId: Scalars['ID']['input'];
|
|
20813
|
+
/** Withdraw only the calling actor's own grant. The authorization is revoked (true) only when the caller is its sole grantor; when others granted it too, only the caller's share is released and it stays ACTIVE (false); one the caller never granted is left untouched (false). An automated provisioner withdrawing its own grant sets this, so it never revokes access an owner or an app installation gave the app, whichever granted first. */
|
|
20814
|
+
onlyIfGrantedByCaller?: InputMaybe<Scalars['Boolean']['input']>;
|
|
20556
20815
|
reason?: InputMaybe<Scalars['String']['input']>;
|
|
20557
20816
|
workspaceId: Scalars['ID']['input'];
|
|
20558
20817
|
};
|
|
@@ -21089,6 +21348,15 @@ export type SeedAtheleteBridgeUserToursResult = {
|
|
|
21089
21348
|
updatedCount: Scalars['Int']['output'];
|
|
21090
21349
|
workspaceId: Scalars['String']['output'];
|
|
21091
21350
|
};
|
|
21351
|
+
export type SeedBigconsoleUserToursResult = {
|
|
21352
|
+
__typename?: 'SeedBigconsoleUserToursResult';
|
|
21353
|
+
createdCount: Scalars['Int']['output'];
|
|
21354
|
+
productId: Scalars['String']['output'];
|
|
21355
|
+
totalCount: Scalars['Int']['output'];
|
|
21356
|
+
tours: Array<SeededUserTourResult>;
|
|
21357
|
+
updatedCount: Scalars['Int']['output'];
|
|
21358
|
+
workspaceId: Scalars['String']['output'];
|
|
21359
|
+
};
|
|
21092
21360
|
export type SeedBuildmyiqUserToursResult = {
|
|
21093
21361
|
__typename?: 'SeedBuildmyiqUserToursResult';
|
|
21094
21362
|
createdCount: Scalars['Int']['output'];
|
|
@@ -22240,6 +22508,24 @@ export type SubmitContactInquiryResult = {
|
|
|
22240
22508
|
/** Whether the submission was successful */
|
|
22241
22509
|
success: Scalars['Boolean']['output'];
|
|
22242
22510
|
};
|
|
22511
|
+
/** One visitor's verdict on one answer. Anonymous like the rest of explore: the conversation token is the only proof of ownership, and the visitor is recorded as an `ipHash`, never an IP. */
|
|
22512
|
+
export type SubmitExploreFeedbackInput = {
|
|
22513
|
+
/** Optional free text. Capped server-side; the server truncates rather than rejecting, because a rating is never worth failing over its comment. */
|
|
22514
|
+
comment?: InputMaybe<Scalars['String']['input']>;
|
|
22515
|
+
/** Bearer secret for the conversation the answer belongs to. */
|
|
22516
|
+
conversationToken: Scalars['String']['input'];
|
|
22517
|
+
/** The assistant message being rated. Must be COMPLETED. */
|
|
22518
|
+
messageId: Scalars['ID']['input'];
|
|
22519
|
+
rating: ExploreFeedbackRating;
|
|
22520
|
+
/** Why it was not helpful: one of INACCURATE INCOMPLETE OFF_TOPIC HARD_TO_FOLLOW OTHER. Ignored — and stored as null — for HELPFUL, because "what was wrong with it" is not a question a positive rating answers. */
|
|
22521
|
+
reason?: InputMaybe<Scalars['String']['input']>;
|
|
22522
|
+
};
|
|
22523
|
+
export type SubmitExploreFeedbackResult = {
|
|
22524
|
+
__typename?: 'SubmitExploreFeedbackResult';
|
|
22525
|
+
/** What was actually stored — echoed back so the UI renders the server's view rather than assuming its optimistic one was accepted. Null when `recorded` is false. */
|
|
22526
|
+
feedback?: Maybe<ExploreFeedback>;
|
|
22527
|
+
recorded: Scalars['Boolean']['output'];
|
|
22528
|
+
};
|
|
22243
22529
|
export type SubmitInterviewFeedbackInput = {
|
|
22244
22530
|
internalNotes?: InputMaybe<Scalars['String']['input']>;
|
|
22245
22531
|
interviewerId: Scalars['ID']['input'];
|
|
@@ -23161,10 +23447,14 @@ export type Tenant = {
|
|
|
23161
23447
|
/** Workspaces belonging to this tenant */
|
|
23162
23448
|
workspaces: Array<Workspace>;
|
|
23163
23449
|
};
|
|
23164
|
-
/** Tenant configuration for regional settings,
|
|
23450
|
+
/** Tenant configuration for regional settings, data residency, and features */
|
|
23165
23451
|
export type TenantConfig = {
|
|
23166
23452
|
__typename?: 'TenantConfig';
|
|
23167
23453
|
complianceRegion?: Maybe<Scalars['String']['output']>;
|
|
23454
|
+
/**
|
|
23455
|
+
* Always null. Burdenoff does no white-labelling: every product keeps its own brand, so tenants cannot set a custom logo, colour or favicon.
|
|
23456
|
+
* @deprecated No white-labelling — products keep their own brand. This setting is ignored.
|
|
23457
|
+
*/
|
|
23168
23458
|
customBranding?: Maybe<Scalars['JSON']['output']>;
|
|
23169
23459
|
dataResidency?: Maybe<Scalars['String']['output']>;
|
|
23170
23460
|
features?: Maybe<Scalars['JSON']['output']>;
|
|
@@ -25545,12 +25835,16 @@ export type UserWishlist = {
|
|
|
25545
25835
|
userId: Scalars['String']['output'];
|
|
25546
25836
|
};
|
|
25547
25837
|
export type ValidateCouponInput = {
|
|
25838
|
+
/** Addon being purchased — same purpose as planId, for addon purchases. */
|
|
25839
|
+
addonId?: InputMaybe<Scalars['ID']['input']>;
|
|
25548
25840
|
/** Order amount before discount */
|
|
25549
25841
|
amount: Scalars['Float']['input'];
|
|
25550
25842
|
/** Coupon code to validate */
|
|
25551
25843
|
code: Scalars['String']['input'];
|
|
25552
25844
|
/** Currency */
|
|
25553
25845
|
currency: Scalars['String']['input'];
|
|
25846
|
+
/** Plan being purchased — used to resolve product/entity-type scoping (applicableProductIds/applicableEntityTypes) from the Plan record itself, not from a client-asserted product/entity string. */
|
|
25847
|
+
planId?: InputMaybe<Scalars['ID']['input']>;
|
|
25554
25848
|
/** Optional: product IDs being purchased */
|
|
25555
25849
|
productIds?: InputMaybe<Array<Scalars['String']['input']>>;
|
|
25556
25850
|
/** Optional: service IDs being purchased */
|