@burdenoff/microfe-devportal 2026.1013.2 → 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']>;
|
|
@@ -3843,6 +3875,7 @@ export type CreatePermissionOverrideInput = {
|
|
|
3843
3875
|
};
|
|
3844
3876
|
export type CreatePhysicalProductInput = {
|
|
3845
3877
|
allowBackorder?: InputMaybe<Scalars['Boolean']['input']>;
|
|
3878
|
+
bannerUrl?: InputMaybe<Scalars['String']['input']>;
|
|
3846
3879
|
brand?: InputMaybe<Scalars['String']['input']>;
|
|
3847
3880
|
category?: InputMaybe<Scalars['String']['input']>;
|
|
3848
3881
|
/** Which platform products this listing is relevant to (e.g. "healthybowl"). Set by the calling seller-portal shell — see DeveloperOrgKind (BOFF-7285). */
|
|
@@ -5645,6 +5678,25 @@ export type EraseResult = {
|
|
|
5645
5678
|
retainedForLegalReason?: Maybe<Scalars['String']['output']>;
|
|
5646
5679
|
service: Scalars['String']['output'];
|
|
5647
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
|
+
};
|
|
5648
5700
|
export type EvaluateFeatureFlagsInput = {
|
|
5649
5701
|
/** Specific flag keys to evaluate. If empty, evaluates ALL active flags. */
|
|
5650
5702
|
keys?: InputMaybe<Array<Scalars['String']['input']>>;
|
|
@@ -5652,6 +5704,10 @@ export type EvaluateFeatureFlagsInput = {
|
|
|
5652
5704
|
productSlug?: InputMaybe<Scalars['String']['input']>;
|
|
5653
5705
|
workspaceId: Scalars['String']['input'];
|
|
5654
5706
|
};
|
|
5707
|
+
export type ExchangeOwnDelegationInput = {
|
|
5708
|
+
delegationId: Scalars['ID']['input'];
|
|
5709
|
+
scopes?: InputMaybe<Array<Scalars['String']['input']>>;
|
|
5710
|
+
};
|
|
5655
5711
|
export type ExchangeTokenInput = {
|
|
5656
5712
|
appId: Scalars['String']['input'];
|
|
5657
5713
|
scopes?: InputMaybe<Array<Scalars['String']['input']>>;
|
|
@@ -5714,6 +5770,8 @@ export type ExploreAdminFilter = {
|
|
|
5714
5770
|
from?: InputMaybe<Scalars['DateTime']['input']>;
|
|
5715
5771
|
/** Salted IP hash, to group one visitor's sessions. */
|
|
5716
5772
|
ipHash?: InputMaybe<Scalars['String']['input']>;
|
|
5773
|
+
/** Only conversations containing an answer a visitor marked NOT helpful. */
|
|
5774
|
+
notHelpfulOnly?: InputMaybe<Scalars['Boolean']['input']>;
|
|
5717
5775
|
/** Match conversations that started on this product's website. */
|
|
5718
5776
|
productSlug?: InputMaybe<Scalars['String']['input']>;
|
|
5719
5777
|
/** Free-text match against message content. */
|
|
@@ -5734,6 +5792,8 @@ export type ExploreAdminMessage = {
|
|
|
5734
5792
|
createdAt: Scalars['DateTime']['output'];
|
|
5735
5793
|
ctas: Array<ExploreCta>;
|
|
5736
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>;
|
|
5737
5797
|
followUps: Array<Scalars['String']['output']>;
|
|
5738
5798
|
id: Scalars['ID']['output'];
|
|
5739
5799
|
references: Array<ExploreReference>;
|
|
@@ -5760,7 +5820,11 @@ export type ExploreAdminStats = {
|
|
|
5760
5820
|
byProduct: Array<ExploreAdminProductStat>;
|
|
5761
5821
|
clicks: Scalars['Int']['output'];
|
|
5762
5822
|
conversations: Scalars['Int']['output'];
|
|
5823
|
+
/** Answers a visitor marked helpful. */
|
|
5824
|
+
helpful: Scalars['Int']['output'];
|
|
5763
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'];
|
|
5764
5828
|
/** Assistant answers the corpus could not ground. */
|
|
5765
5829
|
unanswered: Scalars['Int']['output'];
|
|
5766
5830
|
};
|
|
@@ -5773,8 +5837,20 @@ export type ExploreAgentActivity = {
|
|
|
5773
5837
|
export type ExploreAgentCatalog = {
|
|
5774
5838
|
__typename?: 'ExploreAgentCatalog';
|
|
5775
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>;
|
|
5776
5842
|
products: Array<ExploreAgentProduct>;
|
|
5777
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
|
+
};
|
|
5778
5854
|
export type ExploreAgentCtaSuggestion = {
|
|
5779
5855
|
__typename?: 'ExploreAgentCtaSuggestion';
|
|
5780
5856
|
label: Scalars['String']['output'];
|
|
@@ -5877,6 +5953,8 @@ export type ExploreAttachmentInput = {
|
|
|
5877
5953
|
export type ExploreCatalog = {
|
|
5878
5954
|
__typename?: 'ExploreCatalog';
|
|
5879
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>;
|
|
5880
5958
|
enabled: Scalars['Boolean']['output'];
|
|
5881
5959
|
examplePrompts: Array<Scalars['String']['output']>;
|
|
5882
5960
|
limits: ExploreLimits;
|
|
@@ -5885,6 +5963,17 @@ export type ExploreCatalog = {
|
|
|
5885
5963
|
welcomeBody: Scalars['String']['output'];
|
|
5886
5964
|
welcomeTitle: Scalars['String']['output'];
|
|
5887
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
|
+
};
|
|
5888
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. */
|
|
5889
5978
|
export type ExploreConversation = {
|
|
5890
5979
|
__typename?: 'ExploreConversation';
|
|
@@ -5902,6 +5991,26 @@ export type ExploreCta = {
|
|
|
5902
5991
|
product?: Maybe<Scalars['String']['output']>;
|
|
5903
5992
|
url: Scalars['String']['output'];
|
|
5904
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
|
+
}
|
|
5905
6014
|
/** Server-enforced limits, surfaced so the UI can pre-validate instead of discovering them through an error. */
|
|
5906
6015
|
export type ExploreLimits = {
|
|
5907
6016
|
__typename?: 'ExploreLimits';
|
|
@@ -5926,6 +6035,8 @@ export type ExploreMessage = {
|
|
|
5926
6035
|
createdAt: Scalars['DateTime']['output'];
|
|
5927
6036
|
ctas: Array<ExploreCta>;
|
|
5928
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>;
|
|
5929
6040
|
/** Suggested next questions, derived from what this answer actually covered. Empty until the turn completes, and empty when nothing useful can be derived. */
|
|
5930
6041
|
followUps: Array<Scalars['String']['output']>;
|
|
5931
6042
|
id: Scalars['ID']['output'];
|
|
@@ -6383,6 +6494,10 @@ export type GetStoreProductTagsInput = {
|
|
|
6383
6494
|
export type GrantAppDelegationInternalInput = {
|
|
6384
6495
|
/** Client ID of the first-party system app (e.g. burdenoff_integration_core). */
|
|
6385
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']>>;
|
|
6386
6501
|
/** Scopes to grant — must be a subset of the app's scopes. */
|
|
6387
6502
|
scopes: Array<Scalars['String']['input']>;
|
|
6388
6503
|
/** The user granting (and target of) the self-delegation. */
|
|
@@ -6392,6 +6507,8 @@ export type GrantAppDelegationInternalInput = {
|
|
|
6392
6507
|
};
|
|
6393
6508
|
export type GrantAppWorkspaceAccessInput = {
|
|
6394
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']>;
|
|
6395
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. */
|
|
6396
6513
|
reactivateRevoked?: InputMaybe<Scalars['Boolean']['input']>;
|
|
6397
6514
|
/** Optional subset of the app's global scopes. Empty array means the authorization inherits the app's full scope list. */
|
|
@@ -7113,6 +7230,8 @@ export type IssueAppAsUserTokenInternalInput = {
|
|
|
7113
7230
|
scopes?: InputMaybe<Array<Scalars['String']['input']>>;
|
|
7114
7231
|
/** The user the app will act on behalf of (must have an active delegation). */
|
|
7115
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']>;
|
|
7116
7235
|
};
|
|
7117
7236
|
export type ItemOrder = {
|
|
7118
7237
|
__typename?: 'ItemOrder';
|
|
@@ -8108,6 +8227,8 @@ export type Mutation = {
|
|
|
8108
8227
|
completeSupportAttachmentUpload: SupportAttachmentFile;
|
|
8109
8228
|
/** Mark a tour as completed for a user */
|
|
8110
8229
|
completeTour: TourUserProgress;
|
|
8230
|
+
configureAssistantAccountBudget: AssistantAccountBudget;
|
|
8231
|
+
configureAssistantModelPrice: AiModelPrice;
|
|
8111
8232
|
configureEntitlementSeats: ProductEntitlement;
|
|
8112
8233
|
/** Configure Kerberos authentication for a tenant */
|
|
8113
8234
|
configureKerberos: KerberosConfig;
|
|
@@ -8462,6 +8583,7 @@ export type Mutation = {
|
|
|
8462
8583
|
/** Detach media from a tour step */
|
|
8463
8584
|
detachMediaFromStep: Scalars['Boolean']['output'];
|
|
8464
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. */
|
|
8465
8587
|
disableMFA: Scalars['Boolean']['output'];
|
|
8466
8588
|
disableMaintenanceMode: MaintenanceModeStatus;
|
|
8467
8589
|
disableSchedule: ScheduledJob;
|
|
@@ -8477,13 +8599,16 @@ export type Mutation = {
|
|
|
8477
8599
|
enableMFA: Scalars['Boolean']['output'];
|
|
8478
8600
|
enableMaintenanceMode: MaintenanceModeStatus;
|
|
8479
8601
|
enrollSubscriberInAutomation: AutomationSubscriber;
|
|
8480
|
-
/** 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. */
|
|
8481
8603
|
ensureOrganizationMember: EnsureOrganizationMemberResult;
|
|
8482
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. */
|
|
8483
8605
|
ensureStoreOrderBillingOrder: EnsureStoreOrderBillingOrderResponse;
|
|
8484
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. */
|
|
8485
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;
|
|
8486
8610
|
escalateSupportTicket: SupportTicket;
|
|
8611
|
+
exchangeOwnDelegation: AppAsUserTokenResponse;
|
|
8487
8612
|
/** Exchange app token for app-as-user token (Token Exchange flow) */
|
|
8488
8613
|
exchangeToken: AppAsUserTokenResponse;
|
|
8489
8614
|
executeJobNow: JobExecution;
|
|
@@ -8623,6 +8748,8 @@ export type Mutation = {
|
|
|
8623
8748
|
payInvoice: Invoice;
|
|
8624
8749
|
permanentlyDeleteSchedule: Scalars['Boolean']['output'];
|
|
8625
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;
|
|
8626
8753
|
prepareSupportAttachmentUpload: SupportAttachmentUploadSession;
|
|
8627
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. */
|
|
8628
8755
|
processAppSaleRefund: DeveloperOrgSale;
|
|
@@ -8830,6 +8957,7 @@ export type Mutation = {
|
|
|
8830
8957
|
resendOrganizationInvite: OrganizationInvite;
|
|
8831
8958
|
resendSurvey: CustomerSatisfactionSurvey;
|
|
8832
8959
|
resendVerificationEmail: ResendVerificationResult;
|
|
8960
|
+
reserveAssistantAccountBudget: AssistantBudgetReceipt;
|
|
8833
8961
|
resetCircuitBreaker: CircuitBreakerState;
|
|
8834
8962
|
/** Reset password using token from email */
|
|
8835
8963
|
resetPassword: Scalars['Boolean']['output'];
|
|
@@ -8851,6 +8979,8 @@ export type Mutation = {
|
|
|
8851
8979
|
restoreChannel: Channel;
|
|
8852
8980
|
restoreScheduleVersion: ScheduledJob;
|
|
8853
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>;
|
|
8854
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. */
|
|
8855
8985
|
resubscribe: NewsletterSubscriber;
|
|
8856
8986
|
/** Resume a paused subscription */
|
|
@@ -8868,6 +8998,8 @@ export type Mutation = {
|
|
|
8868
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). */
|
|
8869
8999
|
retryInvoiceGeneration: Invoice;
|
|
8870
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'];
|
|
8871
9003
|
/** Retry a failed payout */
|
|
8872
9004
|
retryPayout: DeveloperOrgPayout;
|
|
8873
9005
|
/** Retry a failed refund */
|
|
@@ -8880,7 +9012,9 @@ export type Mutation = {
|
|
|
8880
9012
|
revokeAPIKey: Scalars['Boolean']['output'];
|
|
8881
9013
|
/** Revoke all sessions except the current one. Returns the number of sessions that were revoked. */
|
|
8882
9014
|
revokeAllSessions: RevokeAllSessionsResult;
|
|
8883
|
-
/**
|
|
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). */
|
|
8884
9018
|
revokeAppWorkspaceAccess: Scalars['Boolean']['output'];
|
|
8885
9019
|
revokeConsent: NewsletterConsent;
|
|
8886
9020
|
revokeDelegation: Scalars['Boolean']['output'];
|
|
@@ -8920,6 +9054,8 @@ export type Mutation = {
|
|
|
8920
9054
|
scheduleNotification: ScheduledNotification;
|
|
8921
9055
|
/** Overwrite the built-in AthleteBridge user-facing tours from the service-owned seed file. */
|
|
8922
9056
|
seedAtheleteBridgeUserTours: SeedAtheleteBridgeUserToursResult;
|
|
9057
|
+
/** Overwrite the service-owned BigConsole onboarding tours. Repeated calls update the same slugs. */
|
|
9058
|
+
seedBigconsoleUserTours: SeedBigconsoleUserToursResult;
|
|
8923
9059
|
/** Overwrite the built-in Buildmyiq user-facing dashboard tour from the service-owned seed file. */
|
|
8924
9060
|
seedBuildmyiqUserTours: SeedBuildmyiqUserToursResult;
|
|
8925
9061
|
/** Overwrite the built-in CollabKin user-facing dashboard tour from the service-owned seed file. */
|
|
@@ -8991,6 +9127,7 @@ export type Mutation = {
|
|
|
8991
9127
|
setUserLanguagePreference: UserLanguagePreference;
|
|
8992
9128
|
/** Set workspace-level override for a feature flag (super admin or workspace admin). RBAC is scoped to the target workspace via `input.workspaceId`. */
|
|
8993
9129
|
setWorkspaceFeatureFlagOverride: WorkspaceFeatureFlagOverride;
|
|
9130
|
+
settleAssistantAccountBudget: AssistantBudgetReceipt;
|
|
8994
9131
|
setupMFA: MfaSetupResult;
|
|
8995
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. */
|
|
8996
9133
|
shareWorkflow: Application;
|
|
@@ -9018,6 +9155,8 @@ export type Mutation = {
|
|
|
9018
9155
|
submitAssignmentResponse: SubmitAssignmentResponsePayload;
|
|
9019
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. */
|
|
9020
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;
|
|
9021
9160
|
/** Submit feedback for an interview round (admin). */
|
|
9022
9161
|
submitInterviewFeedback: InterviewFeedback;
|
|
9023
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. */
|
|
@@ -9302,7 +9441,6 @@ export type Mutation = {
|
|
|
9302
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. */
|
|
9303
9442
|
upsertUserShippingAddress: ShippingAddress;
|
|
9304
9443
|
useCannedResponse: CannedResponse;
|
|
9305
|
-
validateApiKey: TokenValidationResponse;
|
|
9306
9444
|
/** Validate an HMAC signature */
|
|
9307
9445
|
validateHMACSignature: HmacValidationResult;
|
|
9308
9446
|
/** Validate a signed cookie */
|
|
@@ -9887,6 +10025,19 @@ export type MutationCompleteTourArgs = {
|
|
|
9887
10025
|
userId: Scalars['ID']['input'];
|
|
9888
10026
|
};
|
|
9889
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 */
|
|
9890
10041
|
export type MutationConfigureEntitlementSeatsArgs = {
|
|
9891
10042
|
entitlementId: Scalars['ID']['input'];
|
|
9892
10043
|
maxSeats: Scalars['Int']['input'];
|
|
@@ -10847,6 +10998,10 @@ export type MutationDisableAuthMethodArgs = {
|
|
|
10847
10998
|
authType: AuthType;
|
|
10848
10999
|
};
|
|
10849
11000
|
/** Root mutation type */
|
|
11001
|
+
export type MutationDisableMfaArgs = {
|
|
11002
|
+
code?: InputMaybe<Scalars['String']['input']>;
|
|
11003
|
+
};
|
|
11004
|
+
/** Root mutation type */
|
|
10850
11005
|
export type MutationDisableScheduleArgs = {
|
|
10851
11006
|
id: Scalars['ID']['input'];
|
|
10852
11007
|
reason?: InputMaybe<Scalars['String']['input']>;
|
|
@@ -10912,12 +11067,20 @@ export type MutationEraseSubjectArgs = {
|
|
|
10912
11067
|
subjectId: Scalars['ID']['input'];
|
|
10913
11068
|
};
|
|
10914
11069
|
/** Root mutation type */
|
|
11070
|
+
export type MutationEscalateExploreConversationArgs = {
|
|
11071
|
+
input: EscalateExploreConversationInput;
|
|
11072
|
+
};
|
|
11073
|
+
/** Root mutation type */
|
|
10915
11074
|
export type MutationEscalateSupportTicketArgs = {
|
|
10916
11075
|
escalateTo?: InputMaybe<Scalars['String']['input']>;
|
|
10917
11076
|
id: Scalars['ID']['input'];
|
|
10918
11077
|
reason: Scalars['String']['input'];
|
|
10919
11078
|
};
|
|
10920
11079
|
/** Root mutation type */
|
|
11080
|
+
export type MutationExchangeOwnDelegationArgs = {
|
|
11081
|
+
input: ExchangeOwnDelegationInput;
|
|
11082
|
+
};
|
|
11083
|
+
/** Root mutation type */
|
|
10921
11084
|
export type MutationExchangeTokenArgs = {
|
|
10922
11085
|
input: ExchangeTokenInput;
|
|
10923
11086
|
};
|
|
@@ -11876,6 +12039,10 @@ export type MutationResendVerificationEmailArgs = {
|
|
|
11876
12039
|
email: Scalars['String']['input'];
|
|
11877
12040
|
};
|
|
11878
12041
|
/** Root mutation type */
|
|
12042
|
+
export type MutationReserveAssistantAccountBudgetArgs = {
|
|
12043
|
+
input: ReserveAssistantBudgetInput;
|
|
12044
|
+
};
|
|
12045
|
+
/** Root mutation type */
|
|
11879
12046
|
export type MutationResetCircuitBreakerArgs = {
|
|
11880
12047
|
scope: Scalars['String']['input'];
|
|
11881
12048
|
scopeValue: Scalars['String']['input'];
|
|
@@ -11942,6 +12109,10 @@ export type MutationRestoreTemplateVersionArgs = {
|
|
|
11942
12109
|
version: Scalars['Int']['input'];
|
|
11943
12110
|
};
|
|
11944
12111
|
/** Root mutation type */
|
|
12112
|
+
export type MutationRestrictAppDelegationInternalArgs = {
|
|
12113
|
+
input: RestrictAppDelegationInternalInput;
|
|
12114
|
+
};
|
|
12115
|
+
/** Root mutation type */
|
|
11945
12116
|
export type MutationResubscribeArgs = {
|
|
11946
12117
|
email: Scalars['String']['input'];
|
|
11947
12118
|
platformProductId?: InputMaybe<Scalars['String']['input']>;
|
|
@@ -11991,6 +12162,10 @@ export type MutationRetryJobExecutionArgs = {
|
|
|
11991
12162
|
executionId: Scalars['ID']['input'];
|
|
11992
12163
|
};
|
|
11993
12164
|
/** Root mutation type */
|
|
12165
|
+
export type MutationRetryNodeSandboxBuildArgs = {
|
|
12166
|
+
id: Scalars['ID']['input'];
|
|
12167
|
+
};
|
|
12168
|
+
/** Root mutation type */
|
|
11994
12169
|
export type MutationRetryPayoutArgs = {
|
|
11995
12170
|
id: Scalars['ID']['input'];
|
|
11996
12171
|
};
|
|
@@ -12020,6 +12195,10 @@ export type MutationRevokeApiKeyArgs = {
|
|
|
12020
12195
|
keyId: Scalars['String']['input'];
|
|
12021
12196
|
};
|
|
12022
12197
|
/** Root mutation type */
|
|
12198
|
+
export type MutationRevokeAppDelegationInternalArgs = {
|
|
12199
|
+
input: RevokeAppDelegationInternalInput;
|
|
12200
|
+
};
|
|
12201
|
+
/** Root mutation type */
|
|
12023
12202
|
export type MutationRevokeAppWorkspaceAccessArgs = {
|
|
12024
12203
|
input: RevokeAppWorkspaceAccessInput;
|
|
12025
12204
|
};
|
|
@@ -12262,6 +12441,13 @@ export type MutationSetWorkspaceFeatureFlagOverrideArgs = {
|
|
|
12262
12441
|
input: SetWorkspaceFeatureFlagOverrideInput;
|
|
12263
12442
|
};
|
|
12264
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 */
|
|
12265
12451
|
export type MutationSetupMfaArgs = {
|
|
12266
12452
|
method: MfaMethod;
|
|
12267
12453
|
};
|
|
@@ -12339,6 +12525,10 @@ export type MutationSubmitContactInquiryArgs = {
|
|
|
12339
12525
|
input: SubmitContactInquiryInput;
|
|
12340
12526
|
};
|
|
12341
12527
|
/** Root mutation type */
|
|
12528
|
+
export type MutationSubmitExploreFeedbackArgs = {
|
|
12529
|
+
input: SubmitExploreFeedbackInput;
|
|
12530
|
+
};
|
|
12531
|
+
/** Root mutation type */
|
|
12342
12532
|
export type MutationSubmitInterviewFeedbackArgs = {
|
|
12343
12533
|
input: SubmitInterviewFeedbackInput;
|
|
12344
12534
|
};
|
|
@@ -13214,10 +13404,6 @@ export type MutationUseCannedResponseArgs = {
|
|
|
13214
13404
|
id: Scalars['ID']['input'];
|
|
13215
13405
|
};
|
|
13216
13406
|
/** Root mutation type */
|
|
13217
|
-
export type MutationValidateApiKeyArgs = {
|
|
13218
|
-
apiKey: Scalars['String']['input'];
|
|
13219
|
-
};
|
|
13220
|
-
/** Root mutation type */
|
|
13221
13407
|
export type MutationValidateHmacSignatureArgs = {
|
|
13222
13408
|
algorithm?: InputMaybe<Scalars['String']['input']>;
|
|
13223
13409
|
appId: Scalars['ID']['input'];
|
|
@@ -13654,6 +13840,39 @@ export declare enum NewsletterWaitlistStatus {
|
|
|
13654
13840
|
Pending = "PENDING",
|
|
13655
13841
|
Rejected = "REJECTED"
|
|
13656
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
|
+
};
|
|
13657
13876
|
export type Notification = {
|
|
13658
13877
|
__typename?: 'Notification';
|
|
13659
13878
|
actions: Array<NotificationAction>;
|
|
@@ -14141,6 +14360,8 @@ export type OrderEstimateInput = {
|
|
|
14141
14360
|
/** Order fulfillment tracking for physical orders */
|
|
14142
14361
|
export type OrderFulfillment = {
|
|
14143
14362
|
__typename?: 'OrderFulfillment';
|
|
14363
|
+
/** Carrier shipment-creation attempt history (every retry, not just the last failure) — for admin debugging of "what happened, why, and how to fix it". */
|
|
14364
|
+
attempts: Array<OrderFulfillmentAttempt>;
|
|
14144
14365
|
/** When order was cancelled */
|
|
14145
14366
|
cancelledAt?: Maybe<Scalars['DateTime']['output']>;
|
|
14146
14367
|
/** Shipping carrier name */
|
|
@@ -14201,6 +14422,26 @@ export type OrderFulfillment = {
|
|
|
14201
14422
|
trackingUrl?: Maybe<Scalars['String']['output']>;
|
|
14202
14423
|
updatedAt: Scalars['DateTime']['output'];
|
|
14203
14424
|
};
|
|
14425
|
+
/** One carrier shipment-creation attempt — Temporal retries this up to 5 times; this is the full history behind OrderFulfillment.failureReason (which only ever holds the last attempt's message). */
|
|
14426
|
+
export type OrderFulfillmentAttempt = {
|
|
14427
|
+
__typename?: 'OrderFulfillmentAttempt';
|
|
14428
|
+
attemptNumber: Scalars['Int']['output'];
|
|
14429
|
+
carrier: Scalars['String']['output'];
|
|
14430
|
+
/** How long this attempt took */
|
|
14431
|
+
durationMs?: Maybe<Scalars['Int']['output']>;
|
|
14432
|
+
/** Error message, when this attempt failed */
|
|
14433
|
+
errorMessage?: Maybe<Scalars['String']['output']>;
|
|
14434
|
+
/** Carrier's HTTP status code, when available */
|
|
14435
|
+
errorStatusCode?: Maybe<Scalars['Int']['output']>;
|
|
14436
|
+
id: Scalars['ID']['output'];
|
|
14437
|
+
occurredAt: Scalars['DateTime']['output'];
|
|
14438
|
+
succeeded: Scalars['Boolean']['output'];
|
|
14439
|
+
};
|
|
14440
|
+
export type OrderFulfillmentAttemptsPage = {
|
|
14441
|
+
__typename?: 'OrderFulfillmentAttemptsPage';
|
|
14442
|
+
attempts: Array<OrderFulfillmentAttempt>;
|
|
14443
|
+
totalCount: Scalars['Int']['output'];
|
|
14444
|
+
};
|
|
14204
14445
|
/** Category of a seller-reported problem fulfilling an order. */
|
|
14205
14446
|
export declare enum OrderIssueCategory {
|
|
14206
14447
|
CannotFulfill = "CANNOT_FULFILL",
|
|
@@ -14671,6 +14912,8 @@ export declare enum PaymentMethodType {
|
|
|
14671
14912
|
Crypto = "CRYPTO",
|
|
14672
14913
|
DebitCard = "DEBIT_CARD",
|
|
14673
14914
|
Netbanking = "NETBANKING",
|
|
14915
|
+
/** Zero-total purchases (e.g. a 100%-off coupon) — no gateway/method involved. */
|
|
14916
|
+
None = "NONE",
|
|
14674
14917
|
Paypal = "PAYPAL",
|
|
14675
14918
|
Wallet = "WALLET"
|
|
14676
14919
|
}
|
|
@@ -14962,6 +15205,8 @@ export type Plan = {
|
|
|
14962
15205
|
minSeats?: Maybe<Scalars['Int']['output']>;
|
|
14963
15206
|
/** The name of the plan (e.g., 'Basic', 'Pro', 'Enterprise'). */
|
|
14964
15207
|
name?: Maybe<Scalars['String']['output']>;
|
|
15208
|
+
/** Apple App Store / Google Play SKU for this plan. */
|
|
15209
|
+
nativeProductId?: Maybe<Scalars['String']['output']>;
|
|
14965
15210
|
/** The price of the plan. */
|
|
14966
15211
|
price?: Maybe<Scalars['Float']['output']>;
|
|
14967
15212
|
/** Historical record of price changes for this plan */
|
|
@@ -16481,6 +16726,8 @@ export type Query = {
|
|
|
16481
16726
|
newsletterVariant?: Maybe<NewsletterVariant>;
|
|
16482
16727
|
newsletterVariants: Array<NewsletterVariant>;
|
|
16483
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;
|
|
16484
16731
|
/** Get a single notification by ID */
|
|
16485
16732
|
notification?: Maybe<Notification>;
|
|
16486
16733
|
/** Get notification events/history for a specific notification */
|
|
@@ -16513,6 +16760,8 @@ export type Query = {
|
|
|
16513
16760
|
orderEstimate?: Maybe<OrderEstimate>;
|
|
16514
16761
|
/** Get fulfillment details for an order */
|
|
16515
16762
|
orderFulfillment?: Maybe<OrderFulfillment>;
|
|
16763
|
+
/** Admin-only: paginated log of carrier shipment-creation attempts across all orders (every Temporal retry, not just the last failure), so ops can debug fulfillment failures without direct DB/log access. */
|
|
16764
|
+
orderFulfillmentAttempts: OrderFulfillmentAttemptsPage;
|
|
16516
16765
|
/** Get seller-reported issue flags for an order */
|
|
16517
16766
|
orderIssueFlags: Array<OrderIssueFlag>;
|
|
16518
16767
|
/** Get a single organization by ID */
|
|
@@ -18583,6 +18832,12 @@ export type QueryNewslettersArgs = {
|
|
|
18583
18832
|
offset?: InputMaybe<Scalars['Int']['input']>;
|
|
18584
18833
|
};
|
|
18585
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 */
|
|
18586
18841
|
export type QueryNotificationArgs = {
|
|
18587
18842
|
id: Scalars['ID']['input'];
|
|
18588
18843
|
};
|
|
@@ -18661,6 +18916,14 @@ export type QueryOrderFulfillmentArgs = {
|
|
|
18661
18916
|
orderId: Scalars['ID']['input'];
|
|
18662
18917
|
};
|
|
18663
18918
|
/** Root query type */
|
|
18919
|
+
export type QueryOrderFulfillmentAttemptsArgs = {
|
|
18920
|
+
carrier?: InputMaybe<Scalars['String']['input']>;
|
|
18921
|
+
limit?: InputMaybe<Scalars['Int']['input']>;
|
|
18922
|
+
offset?: InputMaybe<Scalars['Int']['input']>;
|
|
18923
|
+
orderId?: InputMaybe<Scalars['ID']['input']>;
|
|
18924
|
+
succeeded?: InputMaybe<Scalars['Boolean']['input']>;
|
|
18925
|
+
};
|
|
18926
|
+
/** Root query type */
|
|
18664
18927
|
export type QueryOrderIssueFlagsArgs = {
|
|
18665
18928
|
orderId: Scalars['ID']['input'];
|
|
18666
18929
|
};
|
|
@@ -20415,6 +20678,13 @@ export type ResendVerificationResult = {
|
|
|
20415
20678
|
message: Scalars['String']['output'];
|
|
20416
20679
|
success: Scalars['Boolean']['output'];
|
|
20417
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
|
+
};
|
|
20418
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. */
|
|
20419
20689
|
export type ResolveBillingAccountInput = {
|
|
20420
20690
|
/** Opaque org id that anchors the billing account. When present the org's default billing account is resolved-or-created. */
|
|
@@ -20462,6 +20732,17 @@ export type ResourceTypeProductInfo = {
|
|
|
20462
20732
|
products: Array<Scalars['String']['output']>;
|
|
20463
20733
|
resourceType: Scalars['String']['output'];
|
|
20464
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
|
+
};
|
|
20465
20746
|
export type RetryBillingOrderCallbackResponse = {
|
|
20466
20747
|
__typename?: 'RetryBillingOrderCallbackResponse';
|
|
20467
20748
|
error?: Maybe<Scalars['String']['output']>;
|
|
@@ -20518,8 +20799,19 @@ export type RevokeAllSessionsResult = {
|
|
|
20518
20799
|
revokedCount: Scalars['Int']['output'];
|
|
20519
20800
|
success: Scalars['Boolean']['output'];
|
|
20520
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
|
+
};
|
|
20521
20811
|
export type RevokeAppWorkspaceAccessInput = {
|
|
20522
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']>;
|
|
20523
20815
|
reason?: InputMaybe<Scalars['String']['input']>;
|
|
20524
20816
|
workspaceId: Scalars['ID']['input'];
|
|
20525
20817
|
};
|
|
@@ -21056,6 +21348,15 @@ export type SeedAtheleteBridgeUserToursResult = {
|
|
|
21056
21348
|
updatedCount: Scalars['Int']['output'];
|
|
21057
21349
|
workspaceId: Scalars['String']['output'];
|
|
21058
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
|
+
};
|
|
21059
21360
|
export type SeedBuildmyiqUserToursResult = {
|
|
21060
21361
|
__typename?: 'SeedBuildmyiqUserToursResult';
|
|
21061
21362
|
createdCount: Scalars['Int']['output'];
|
|
@@ -22001,6 +22302,8 @@ export type StoreProduct = {
|
|
|
22001
22302
|
publishedAt?: Maybe<Scalars['DateTime']['output']>;
|
|
22002
22303
|
publisher?: Maybe<Publisher>;
|
|
22003
22304
|
publisherId: Scalars['String']['output'];
|
|
22305
|
+
/** Number of PHYSICAL orders this product has been fulfilled in at least once — incremented alongside OrderFulfillment's first creation for the order (see OrderService.ensurePhysicalFulfillmentRecord), the physical counterpart to how `downloads` counts first-install events for digital products. Always 0 for DIGITAL nature. */
|
|
22306
|
+
purchaseCount: Scalars['Int']['output'];
|
|
22004
22307
|
rating?: Maybe<Scalars['Float']['output']>;
|
|
22005
22308
|
rejectedReason?: Maybe<Scalars['String']['output']>;
|
|
22006
22309
|
repositoryUrl?: Maybe<Scalars['String']['output']>;
|
|
@@ -22205,6 +22508,24 @@ export type SubmitContactInquiryResult = {
|
|
|
22205
22508
|
/** Whether the submission was successful */
|
|
22206
22509
|
success: Scalars['Boolean']['output'];
|
|
22207
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
|
+
};
|
|
22208
22529
|
export type SubmitInterviewFeedbackInput = {
|
|
22209
22530
|
internalNotes?: InputMaybe<Scalars['String']['input']>;
|
|
22210
22531
|
interviewerId: Scalars['ID']['input'];
|
|
@@ -23126,10 +23447,14 @@ export type Tenant = {
|
|
|
23126
23447
|
/** Workspaces belonging to this tenant */
|
|
23127
23448
|
workspaces: Array<Workspace>;
|
|
23128
23449
|
};
|
|
23129
|
-
/** Tenant configuration for regional settings,
|
|
23450
|
+
/** Tenant configuration for regional settings, data residency, and features */
|
|
23130
23451
|
export type TenantConfig = {
|
|
23131
23452
|
__typename?: 'TenantConfig';
|
|
23132
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
|
+
*/
|
|
23133
23458
|
customBranding?: Maybe<Scalars['JSON']['output']>;
|
|
23134
23459
|
dataResidency?: Maybe<Scalars['String']['output']>;
|
|
23135
23460
|
features?: Maybe<Scalars['JSON']['output']>;
|
|
@@ -24501,6 +24826,7 @@ export type UpdatePayoutAccountInput = {
|
|
|
24501
24826
|
};
|
|
24502
24827
|
export type UpdatePhysicalProductInput = {
|
|
24503
24828
|
allowBackorder?: InputMaybe<Scalars['Boolean']['input']>;
|
|
24829
|
+
bannerUrl?: InputMaybe<Scalars['String']['input']>;
|
|
24504
24830
|
brand?: InputMaybe<Scalars['String']['input']>;
|
|
24505
24831
|
category?: InputMaybe<Scalars['String']['input']>;
|
|
24506
24832
|
countryOfOrigin?: InputMaybe<Scalars['String']['input']>;
|
|
@@ -25509,12 +25835,16 @@ export type UserWishlist = {
|
|
|
25509
25835
|
userId: Scalars['String']['output'];
|
|
25510
25836
|
};
|
|
25511
25837
|
export type ValidateCouponInput = {
|
|
25838
|
+
/** Addon being purchased — same purpose as planId, for addon purchases. */
|
|
25839
|
+
addonId?: InputMaybe<Scalars['ID']['input']>;
|
|
25512
25840
|
/** Order amount before discount */
|
|
25513
25841
|
amount: Scalars['Float']['input'];
|
|
25514
25842
|
/** Coupon code to validate */
|
|
25515
25843
|
code: Scalars['String']['input'];
|
|
25516
25844
|
/** Currency */
|
|
25517
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']>;
|
|
25518
25848
|
/** Optional: product IDs being purchased */
|
|
25519
25849
|
productIds?: InputMaybe<Array<Scalars['String']['input']>>;
|
|
25520
25850
|
/** Optional: service IDs being purchased */
|