@burdenoff/microfe-devportal 2026.1026.2 → 2026.1026.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -748,6 +748,8 @@ export declare enum AgentStatus {
748
748
  /** Per-model LLM token prices (USD per 1M tokens) used to weight AI-credit charges. */
749
749
  export type AiModelPrice = {
750
750
  __typename?: 'AiModelPrice';
751
+ cacheReadMultiplier: Scalars['Float']['output'];
752
+ cacheWriteMultiplier: Scalars['Float']['output'];
751
753
  inputPer1M: Scalars['Float']['output'];
752
754
  isActive: Scalars['Boolean']['output'];
753
755
  model: Scalars['String']['output'];
@@ -1566,6 +1568,82 @@ export type AutomationSubscriber = {
1566
1568
  status: AutomationStatus;
1567
1569
  subscriberId: Scalars['String']['output'];
1568
1570
  };
1571
+ /** A workspace's avatar credits, in one person's view when actorId is given (contract v2). Whole credits, 0 or more. */
1572
+ export type AvatarMinutesBalance = {
1573
+ __typename?: 'AvatarMinutesBalance';
1574
+ /** Credits left for this person now: carried + free within the person's ceiling + plan. */
1575
+ availableMinutes: Scalars['Int']['output'];
1576
+ /** Carried credits left. */
1577
+ carriedRemaining: Scalars['Int']['output'];
1578
+ /** Always 2. */
1579
+ contractVersion: Scalars['Int']['output'];
1580
+ /** The counted free row's amount; 0 without one. */
1581
+ freeMinutesPerMonth: Scalars['Int']['output'];
1582
+ /** Free credits left in this workspace this month, before the person's ceiling. */
1583
+ freeRemaining: Scalars['Int']['output'];
1584
+ /** This person's own open holds that block them; null without actorId. */
1585
+ heldByActorMinutes?: Maybe<Scalars['Int']['output']>;
1586
+ /** Credits reserved by open sessions in this workspace. */
1587
+ heldMinutes: Scalars['Int']['output'];
1588
+ /** Whether a plan with more credits exists for the product. Display only, never an entitlement. */
1589
+ morePlanCreditsAvailable: Scalars['Boolean']['output'];
1590
+ /** The per-person free ceiling; null when off. */
1591
+ personFreeCeiling?: Maybe<Scalars['Int']['output']>;
1592
+ /** The person's free credits left this UTC month; null when the ceiling is off or without actorId. */
1593
+ personFreeRemaining?: Maybe<Scalars['Int']['output']>;
1594
+ /** The counted plans' amounts, summed. */
1595
+ planMinutesPerMonth: Scalars['Int']['output'];
1596
+ /** Plan credits left in this workspace this month. */
1597
+ planRemaining: Scalars['Int']['output'];
1598
+ reason?: Maybe<AvatarMinutesReason>;
1599
+ /** The next 1st, 00:00 UTC (ISO-8601 with milliseconds). */
1600
+ resetsAt: Scalars['String']['output'];
1601
+ state: AvatarMinutesState;
1602
+ };
1603
+ export declare enum AvatarMinutesEndClass {
1604
+ Exact = "EXACT",
1605
+ None = "NONE",
1606
+ Uncertain = "UNCERTAIN"
1607
+ }
1608
+ export declare enum AvatarMinutesMode {
1609
+ Enforce = "ENFORCE",
1610
+ Observe = "OBSERVE"
1611
+ }
1612
+ export declare enum AvatarMinutesReason {
1613
+ FreeCeiling = "FREE_CEILING",
1614
+ NotIncluded = "NOT_INCLUDED",
1615
+ OwnSession = "OWN_SESSION",
1616
+ ZeroSessionLimit = "ZERO_SESSION_LIMIT"
1617
+ }
1618
+ export type AvatarMinutesReservation = {
1619
+ __typename?: 'AvatarMinutesReservation';
1620
+ chargedMinutes?: Maybe<Scalars['Int']['output']>;
1621
+ /** AVATAR, SWEEPER or SUPERSEDE. */
1622
+ closedBy?: Maybe<Scalars['String']['output']>;
1623
+ reservedMinutes: Scalars['Int']['output'];
1624
+ sessionId: Scalars['ID']['output'];
1625
+ /** RESERVED, ACTIVE, SETTLED, RELEASED or EXPIRED. */
1626
+ state: Scalars['String']['output'];
1627
+ };
1628
+ /** HMAC-SHA256 envelope of a signed avatar-minutes call (DESIGN 3.7): the key id (environment-prefixed), the signing instant (strict ISO-8601 UTC with milliseconds) and the MAC (64 lowercase hex). */
1629
+ export type AvatarMinutesSignature = {
1630
+ issuedAt: Scalars['String']['input'];
1631
+ kid: Scalars['String']['input'];
1632
+ value: Scalars['String']['input'];
1633
+ };
1634
+ export declare enum AvatarMinutesState {
1635
+ Available = "AVAILABLE",
1636
+ Exhausted = "EXHAUSTED",
1637
+ InUse = "IN_USE"
1638
+ }
1639
+ /** The provider's session status at settle, noted once on the SETTLED reservation (P-27). */
1640
+ export declare enum AvatarProviderSessionStatus {
1641
+ Canceled = "CANCELED",
1642
+ Ended = "ENDED",
1643
+ Ending = "ENDING",
1644
+ Failed = "FAILED",
1645
+ Other = "OTHER"
1646
+ }
1569
1647
  export declare enum BackoffStrategy {
1570
1648
  Exponential = "EXPONENTIAL",
1571
1649
  ExponentialWithJitter = "EXPONENTIAL_WITH_JITTER",
@@ -2920,6 +2998,20 @@ export declare enum CircuitState {
2920
2998
  HalfOpen = "HALF_OPEN",
2921
2999
  Open = "OPEN"
2922
3000
  }
3001
+ export type CloseAvatarMinutesInput = {
3002
+ /** The decider's wall-clock time; audit only. */
3003
+ decidedAt: Scalars['String']['input'];
3004
+ endClass: AvatarMinutesEndClass;
3005
+ /** Sets the rounding by the exhaustive table in DESIGN 3.1. */
3006
+ endReason: Scalars['String']['input'];
3007
+ ownerDecided: Scalars['Boolean']['input'];
3008
+ /** Anchors the lease; absent for a failed start. */
3009
+ readyAt?: InputMaybe<Scalars['String']['input']>;
3010
+ sessionId: Scalars['ID']['input'];
3011
+ /** The decision's span (DESIGN 3.1), whole milliseconds; 0 when not confirmed. */
3012
+ spanMs: Scalars['Int']['input'];
3013
+ workspaceId: Scalars['ID']['input'];
3014
+ };
2923
3015
  export type ComplaintStats = {
2924
3016
  __typename?: 'ComplaintStats';
2925
3017
  complaintRate: Scalars['Float']['output'];
@@ -8041,6 +8133,8 @@ export type Mutation = {
8041
8133
  /** Accept an organization invite (must be logged in as the invited user) */
8042
8134
  acceptOrganizationInvite: OrganizationMember;
8043
8135
  acceptSourcingOffer: SourcingOrderSummary;
8136
+ /** Signed (DESIGN 3.7). The provider is ready: RESERVED to ACTIVE. */
8137
+ activateAvatarMinutes: AvatarMinutesReservation;
8044
8138
  /** Activate a channel */
8045
8139
  activateChannel: Channel;
8046
8140
  /** Activate a connection */
@@ -8217,6 +8311,8 @@ export type Mutation = {
8217
8311
  /** Clear all items from the cart */
8218
8312
  clearCart: CartPayload;
8219
8313
  cloneSchedule: ScheduledJob;
8314
+ /** Signed (DESIGN 3.7). The avatar's end decision: SETTLED with the charge, or RELEASED. */
8315
+ closeAvatarMinutes: AvatarMinutesReservation;
8220
8316
  closeSupportTicket: SupportTicket;
8221
8317
  /** Complete the OAuth flow after the user returns from the developer's OAuth page. Exchanges the authorization code for tokens and activates the integration connection. */
8222
8318
  completeAppOAuth: AppInstallation;
@@ -8429,6 +8525,8 @@ export type Mutation = {
8429
8525
  deactivateResource: Scalars['Boolean']['output'];
8430
8526
  /** Deactivate a tour schedule */
8431
8527
  deactivateTourSchedule: TourSchedule;
8528
+ /** Stops a subject from firing webhooks. The row is kept so a later registration reactivates it. Same ownership rule as registration. */
8529
+ deactivateWebhookEventSubject: WebhookEventSubject;
8432
8530
  /** Pure quota decrement — called by wspace-activity-svc after writing a UsageRecord. Only decrements QuotaAssignment.limits.value. Does NOT write back to activity-svc. Requires the quotaAssignmentId already resolved by checkQuotaExhausted. */
8433
8531
  decrementQuota: Scalars['Boolean']['output'];
8434
8532
  /** Delete current user's account permanently Requires password confirmation */
@@ -8737,6 +8835,8 @@ export type Mutation = {
8737
8835
  newsletterEraseSubject: NewsletterEraseResult;
8738
8836
  /** Export the subject's newsletter data: subscriber rows, per-list memberships, consent ledger entries, automation enrolments, waitlist entries. */
8739
8837
  newsletterExportSubject: Scalars['JSON']['output'];
8838
+ /** Signed (P-27). The settle owner's provider-status note for the fault list; writes no credits. */
8839
+ noteAvatarSessionProviderStatus: Scalars['Boolean']['output'];
8740
8840
  /** Notify candidates who have more than one application on file (and so may have received more than one take-home assignment email as a result of a since-fixed missing duplicate-email check) that they only need to complete ONE of the assignments they received (admin). Grouped by email address — sends exactly one notice per unique candidate email, never one per duplicate application/round, and re-running this is safe: an email already notified is skipped unless `force` is set. */
8741
8841
  notifyDuplicateApplicants: DuplicateNoticeResult;
8742
8842
  openCircuitBreaker: CircuitBreakerState;
@@ -8769,6 +8869,8 @@ export type Mutation = {
8769
8869
  publishApplication: Application;
8770
8870
  /** Developer action: submit a draft (or rejected) version for platform review. Status becomes pending_review. The store is NOT updated until an admin approves. */
8771
8871
  publishApplicationVersion: ApplicationVersion;
8872
+ /** Developer-organization admin action (BOFF-9657): publish a draft (or rejected) version of a PRIVATE NODE application straight to the workspaces of your organization, without platform review. The version must carry a package whose validation passed, a READY sandbox image and no failed or running operation smoke test. `workspaceId` is a workspace you administer; its organization becomes the node's owning organization on the first publish, and every later publish must come from that organization. The version is never listed in the public Node Store; it is installable only into workspaces of the owning organization. Authorization is enforced in the resolver: the caller must be an OWNER or ADMIN of the application's developer organization (or own a personal application) and an admin of `workspaceId`. The gateway's organization scope cannot evaluate this today because user sessions carry no verified organization claim, so the directive declares the permission and authenticates the caller. */
8873
+ publishApplicationVersionToOrganization: ApplicationVersion;
8772
8874
  /** Publish ONE curated catalog node version (from the fluidgrids-nodes repo) to every enabled sandbox provider — the same PublishOrchestrator the devportal path uses, so the two cannot drift. That drift is not hypothetical: the catalog previously had no publish trigger at all, so nodes were built and pinned by hand and 14 of 31 prod-bound nodes ended up running code older than fluidgrids-nodes main. One entrypoint, two triggers (devportal publish, catalog CI) is the fix. NOT actor-authenticated: the caller is CI, not a platform user or app, so this verifies a shared secret in the resolver (checked against DEVPORTAL_CALLBACK_SECRET, or CALLBACK_SECRET as shipped by the Secrets Manager bundle) exactly as reportNodeSandboxBuildStatus does. Sent as an argument rather than a header because global-public-gateway forwards only a fixed header allowlist to subgraphs. `zipUrl` must be fetchable by this service — CI uploads the packaged node and passes a presigned URL. `isFirstPublish` tells the orchestrator whether this node type has ever been built before, which is what lets it annotate a provider that cannot self-onboard (Cloudflare) instead of reporting a mystery failure. Defaults to false: a catalog node already running on Cloudflare has a Durable Object class, so only a genuinely new node should pass true. Returns a JSON array of per-provider outcomes so CI can log them and fail the job when nothing could build. */
8773
8875
  publishCatalogNodeVersion: Scalars['JSON']['output'];
8774
8876
  publishFAQ: Faq;
@@ -8840,6 +8942,8 @@ export type Mutation = {
8840
8942
  /** Register a resource with custom RBAC configurations. */
8841
8943
  registerResource: Resource;
8842
8944
  registerSupportAttachmentPart: Scalars['Boolean']['output'];
8945
+ /** Creates or updates subject mappings for a product. Idempotent: a product's service can call it on every deploy. An existing mapping can only be changed by the actor that registered it, or by a super admin. */
8946
+ registerWebhookEventSubjects: Array<WebhookEventSubject>;
8843
8947
  reinstatePublisher: Publisher;
8844
8948
  rejectApplication: Application;
8845
8949
  /** Platform admin only: reject a pending_review version with a reason. The developer can fix their submission and re-submit. */
@@ -8958,6 +9062,8 @@ export type Mutation = {
8958
9062
  resendSurvey: CustomerSatisfactionSurvey;
8959
9063
  resendVerificationEmail: ResendVerificationResult;
8960
9064
  reserveAssistantAccountBudget: AssistantBudgetReceipt;
9065
+ /** Signed (DESIGN 3.7). Reserves credits for a session (ENFORCE) or records its shadow (OBSERVE). */
9066
+ reserveAvatarMinutes: AvatarMinutesReservation;
8961
9067
  resetCircuitBreaker: CircuitBreakerState;
8962
9068
  /** Reset password using token from email */
8963
9069
  resetPassword: Scalars['Boolean']['output'];
@@ -9098,6 +9204,8 @@ export type Mutation = {
9098
9204
  serviceResolvePayoutAccount: PayoutAccount;
9099
9205
  /** Mirror a billing PayoutRequest status change back onto the DeveloperOrgPayout it originated from (BOFF-7192). Billing owns the payout system-of-record and is where admins approve/reject/mark-paid; this keeps devportal's own payout history in sync so it doesn't stay stuck showing a stale status forever. Looked up by sourceIdempotencyKey ("devportal:payout:<id>", set when the request was originally mirrored to billing) — a no-op if the key isn't a devportal-originated one, or no matching local payout exists. Service/super_admin only — internal gateway. */
9100
9206
  serviceSyncPayoutStatus?: Maybe<DeveloperOrgPayout>;
9207
+ /** M2M: create or update the calling service's catalogue listing for an item that service sells through its own checkout (BOFF-3430), for cross-product discovery. Idempotent on (calling service identity, input.externalId): call it on every change of the source item. The owning service is always the verified service identity of the caller, never an input field. Set status ARCHIVED to take the listing down. A listing an admin has delisted or rejected stays off display until an admin restores it. Service-actor only. */
9208
+ serviceUpsertExternalListing: StoreProduct;
9101
9209
  setAgentAway: AgentProfile;
9102
9210
  setAgentOffline: AgentProfile;
9103
9211
  setAgentOnline: AgentProfile;
@@ -9187,6 +9295,8 @@ export type Mutation = {
9187
9295
  syncStoreSubmissionStatus: Scalars['Boolean']['output'];
9188
9296
  /** Sync tour steps (smart update in ONE call) Send all desired steps, backend handles: update existing, create new, delete removed */
9189
9297
  syncTourSteps: Array<TourStep>;
9298
+ /** Mirror a workspace deletion from the workspace layer to the global layer. Called by wspace-workspace-svc after its deleteWorkspace soft-deletes the workspace, so the global registry (myWorkspaces, the context switcher, routing) stops listing it as ACTIVE. Marks the global row DELETED and keeps it for audit. Idempotent: an unknown or already-deleted workspace succeeds without changes. */
9299
+ syncWorkspaceDeletionFromWspace: SyncWorkspaceFromWspaceResponse;
9190
9300
  /** Sync workspace metadata from workspace layer to global layer. Called by wspace-workspace-svc when a workspace is created directly via workspace layer. This is the reverse of syncFromGlobal - it syncs global ← wspace. Creates workspace metadata + owner membership in global-tenant-svc. */
9191
9301
  syncWorkspaceFromWspace: SyncWorkspaceFromWspaceResponse;
9192
9302
  tagChannel: ChannelTagAssignment;
@@ -9481,6 +9591,13 @@ export type MutationAcceptSourcingOfferArgs = {
9481
9591
  offerId: Scalars['ID']['input'];
9482
9592
  };
9483
9593
  /** Root mutation type */
9594
+ export type MutationActivateAvatarMinutesArgs = {
9595
+ readyAt: Scalars['String']['input'];
9596
+ sessionId: Scalars['ID']['input'];
9597
+ signature: AvatarMinutesSignature;
9598
+ workspaceId: Scalars['ID']['input'];
9599
+ };
9600
+ /** Root mutation type */
9484
9601
  export type MutationActivateChannelArgs = {
9485
9602
  id: Scalars['ID']['input'];
9486
9603
  };
@@ -9992,6 +10109,11 @@ export type MutationCloneScheduleArgs = {
9992
10109
  sourceId: Scalars['ID']['input'];
9993
10110
  };
9994
10111
  /** Root mutation type */
10112
+ export type MutationCloseAvatarMinutesArgs = {
10113
+ input: CloseAvatarMinutesInput;
10114
+ signature: AvatarMinutesSignature;
10115
+ };
10116
+ /** Root mutation type */
9995
10117
  export type MutationCloseSupportTicketArgs = {
9996
10118
  id: Scalars['ID']['input'];
9997
10119
  };
@@ -10600,6 +10722,10 @@ export type MutationDeactivateTourScheduleArgs = {
10600
10722
  id: Scalars['ID']['input'];
10601
10723
  };
10602
10724
  /** Root mutation type */
10725
+ export type MutationDeactivateWebhookEventSubjectArgs = {
10726
+ subject: Scalars['String']['input'];
10727
+ };
10728
+ /** Root mutation type */
10603
10729
  export type MutationDecrementQuotaArgs = {
10604
10730
  amount: Scalars['Int']['input'];
10605
10731
  billingAccountId: Scalars['ID']['input'];
@@ -11416,6 +11542,12 @@ export type MutationNewsletterExportSubjectArgs = {
11416
11542
  subjectId: Scalars['ID']['input'];
11417
11543
  };
11418
11544
  /** Root mutation type */
11545
+ export type MutationNoteAvatarSessionProviderStatusArgs = {
11546
+ sessionId: Scalars['ID']['input'];
11547
+ signature: AvatarMinutesSignature;
11548
+ status: AvatarProviderSessionStatus;
11549
+ };
11550
+ /** Root mutation type */
11419
11551
  export type MutationNotifyDuplicateApplicantsArgs = {
11420
11552
  input: NotifyDuplicateApplicantsInput;
11421
11553
  };
@@ -11500,6 +11632,11 @@ export type MutationPublishApplicationVersionArgs = {
11500
11632
  id: Scalars['ID']['input'];
11501
11633
  };
11502
11634
  /** Root mutation type */
11635
+ export type MutationPublishApplicationVersionToOrganizationArgs = {
11636
+ id: Scalars['ID']['input'];
11637
+ workspaceId: Scalars['ID']['input'];
11638
+ };
11639
+ /** Root mutation type */
11503
11640
  export type MutationPublishCatalogNodeVersionArgs = {
11504
11641
  isFirstPublish?: InputMaybe<Scalars['Boolean']['input']>;
11505
11642
  nodeType: Scalars['String']['input'];
@@ -11718,6 +11855,10 @@ export type MutationRegisterSupportAttachmentPartArgs = {
11718
11855
  input: RegisterSupportAttachmentPartInput;
11719
11856
  };
11720
11857
  /** Root mutation type */
11858
+ export type MutationRegisterWebhookEventSubjectsArgs = {
11859
+ input: RegisterWebhookEventSubjectsInput;
11860
+ };
11861
+ /** Root mutation type */
11721
11862
  export type MutationReinstatePublisherArgs = {
11722
11863
  id: Scalars['ID']['input'];
11723
11864
  };
@@ -12043,6 +12184,11 @@ export type MutationReserveAssistantAccountBudgetArgs = {
12043
12184
  input: ReserveAssistantBudgetInput;
12044
12185
  };
12045
12186
  /** Root mutation type */
12187
+ export type MutationReserveAvatarMinutesArgs = {
12188
+ input: ReserveAvatarMinutesInput;
12189
+ signature: AvatarMinutesSignature;
12190
+ };
12191
+ /** Root mutation type */
12046
12192
  export type MutationResetCircuitBreakerArgs = {
12047
12193
  scope: Scalars['String']['input'];
12048
12194
  scopeValue: Scalars['String']['input'];
@@ -12373,6 +12519,10 @@ export type MutationServiceSyncPayoutStatusArgs = {
12373
12519
  input: ServiceSyncPayoutStatusInput;
12374
12520
  };
12375
12521
  /** Root mutation type */
12522
+ export type MutationServiceUpsertExternalListingArgs = {
12523
+ input: ServiceUpsertExternalListingInput;
12524
+ };
12525
+ /** Root mutation type */
12376
12526
  export type MutationSetAgentAwayArgs = {
12377
12527
  message?: InputMaybe<Scalars['String']['input']>;
12378
12528
  };
@@ -12607,6 +12757,10 @@ export type MutationSyncTourStepsArgs = {
12607
12757
  tourId: Scalars['ID']['input'];
12608
12758
  };
12609
12759
  /** Root mutation type */
12760
+ export type MutationSyncWorkspaceDeletionFromWspaceArgs = {
12761
+ workspaceId: Scalars['ID']['input'];
12762
+ };
12763
+ /** Root mutation type */
12610
12764
  export type MutationSyncWorkspaceFromWspaceArgs = {
12611
12765
  input: SyncWorkspaceFromWspaceInput;
12612
12766
  };
@@ -14157,6 +14311,14 @@ export type NotificationReadFilterInput = {
14157
14311
  type?: InputMaybe<NotificationType>;
14158
14312
  userId: Scalars['ID']['input'];
14159
14313
  };
14314
+ /** Sender-owned processing status only; provider acknowledgement is not delivery certification. */
14315
+ export type NotificationSendStatus = {
14316
+ __typename?: 'NotificationSendStatus';
14317
+ deliveryStatus?: Maybe<NotificationDeliveryStatus>;
14318
+ id: Scalars['ID']['output'];
14319
+ status: NotificationStatus;
14320
+ triggerStatus: TriggerStatus;
14321
+ };
14160
14322
  export type NotificationStats = {
14161
14323
  __typename?: 'NotificationStats';
14162
14324
  byChannel: Scalars['JSON']['output'];
@@ -16136,6 +16298,8 @@ export type Query = {
16136
16298
  agentProfile?: Maybe<AgentProfile>;
16137
16299
  agentProfileByUserId?: Maybe<AgentProfile>;
16138
16300
  agentProfiles: AgentProfileConnection;
16301
+ /** Schema capability for optional cache counts. Older callers keep input/output-only pricing. */
16302
+ aiCacheTokenPricingSupported: Scalars['Boolean']['output'];
16139
16303
  /** Active per-model LLM token prices (USD per 1M tokens) used for AI-credit weighting. */
16140
16304
  aiModelPrices: Array<AiModelPrice>;
16141
16305
  /** Admin query: list all organizations in the platform (optionally filtered). Requires global 'organization:read' permission — super admins and platform admins only. For end-user "my orgs" access use myOrganizations instead. */
@@ -16185,6 +16349,8 @@ export type Query = {
16185
16349
  availableAuthMethods: Array<AuthMethod>;
16186
16350
  /** Get available preview features the user can opt-in to within a workspace. Returns only flags that are previewable, active, and allowed by workspace admin. When `productSlug` is provided (each product app shell passes its own slug), the result is scoped to that product's previewable flags PLUS platform-wide previewable flags — so a product's Feature Previews page never surfaces other products' flags. Omit `productSlug` to get every available preview. Bounded by limit/offset to avoid unbounded fetches. */
16187
16351
  availableFeaturePreviews: Array<FeatureFlag>;
16352
+ /** Signed (DESIGN 3.7). The workspace's balance, in the person's view when actorId is given. */
16353
+ avatarMinutesForService: AvatarMinutesBalance;
16188
16354
  bounceStats: BounceStats;
16189
16355
  /** Browse store products with unified filtering, sorting, and pagination. Search is treated as a filter - all filters combine with AND logic. Example usage: ```graphql query { browseStore(input: { filter: { search: "ai notification" type: NODE pricingModel: FREE minRating: 4.0 compatibleWith: "workspaces" } sortBy: RELEVANCE pagination: { limit: 20, offset: 0 } }) { products { id name rating downloads } totalCount hasMore facets { categories { value count } } } } ``` */
16190
16356
  browseStore: BrowseStoreResult;
@@ -16663,6 +16829,8 @@ export type Query = {
16663
16829
  myNotificationCountsByApp: Scalars['JSON']['output'];
16664
16830
  /** Get notification counts by channel for authenticated user */
16665
16831
  myNotificationCountsByChannel: NotificationChannelCounts;
16832
+ /** Status of a notification created by the authenticated sender in the current tenant. */
16833
+ myNotificationSendStatus: NotificationSendStatus;
16666
16834
  /** Get all orders for the authenticated user */
16667
16835
  myOrders: Array<StoreOrder>;
16668
16836
  /** Get a SINGLE invite addressed to the current authenticated user, by id. Backs the per-invite acceptance page reached from the invite email link. Self-scoped: the resolver only returns an invite addressed to the caller's own email (or already resolved to their userId); otherwise it returns NOT_FOUND (existence of another account's invite is never revealed). */
@@ -17046,6 +17214,10 @@ export type Query = {
17046
17214
  webhook?: Maybe<Webhook>;
17047
17215
  webhookDeliveries: WebhookDeliveryConnection;
17048
17216
  webhookDelivery?: Maybe<WebhookDelivery>;
17217
+ /** Every webhook event type currently deliverable, for the webhook event picker. Optionally narrowed to one product. */
17218
+ webhookEventCatalog: Array<WebhookEventCatalogEntry>;
17219
+ /** Registered subject mappings. Platform services and super admins only. */
17220
+ webhookEventSubjects: Array<WebhookEventSubject>;
17049
17221
  webhooks: Array<Webhook>;
17050
17222
  /** Get a single workspace by ID */
17051
17223
  workspace?: Maybe<Workspace>;
@@ -17348,6 +17520,13 @@ export type QueryAvailableFeaturePreviewsArgs = {
17348
17520
  workspaceId: Scalars['String']['input'];
17349
17521
  };
17350
17522
  /** Root query type */
17523
+ export type QueryAvatarMinutesForServiceArgs = {
17524
+ actorId?: InputMaybe<Scalars['ID']['input']>;
17525
+ productId: Scalars['String']['input'];
17526
+ signature: AvatarMinutesSignature;
17527
+ workspaceId: Scalars['ID']['input'];
17528
+ };
17529
+ /** Root query type */
17351
17530
  export type QueryBounceStatsArgs = {
17352
17531
  campaignId: Scalars['ID']['input'];
17353
17532
  };
@@ -18659,6 +18838,10 @@ export type QueryMyEntitlementsArgs = {
18659
18838
  offset?: InputMaybe<Scalars['Int']['input']>;
18660
18839
  };
18661
18840
  /** Root query type */
18841
+ export type QueryMyNotificationSendStatusArgs = {
18842
+ id: Scalars['ID']['input'];
18843
+ };
18844
+ /** Root query type */
18662
18845
  export type QueryMyOrdersArgs = {
18663
18846
  limit?: InputMaybe<Scalars['Int']['input']>;
18664
18847
  offset?: InputMaybe<Scalars['Int']['input']>;
@@ -19200,6 +19383,8 @@ export type QueryPushDevicesForUserInternalArgs = {
19200
19383
  };
19201
19384
  /** Root query type */
19202
19385
  export type QueryQuoteAiCreditsArgs = {
19386
+ cacheReadTokens?: InputMaybe<Scalars['Int']['input']>;
19387
+ cacheWriteTokens?: InputMaybe<Scalars['Int']['input']>;
19203
19388
  inputTokens: Scalars['Int']['input'];
19204
19389
  model: Scalars['String']['input'];
19205
19390
  outputTokens: Scalars['Int']['input'];
@@ -19783,6 +19968,15 @@ export type QueryWebhookDeliveryArgs = {
19783
19968
  id: Scalars['ID']['input'];
19784
19969
  };
19785
19970
  /** Root query type */
19971
+ export type QueryWebhookEventCatalogArgs = {
19972
+ productSlug?: InputMaybe<Scalars['String']['input']>;
19973
+ };
19974
+ /** Root query type */
19975
+ export type QueryWebhookEventSubjectsArgs = {
19976
+ includeInactive?: InputMaybe<Scalars['Boolean']['input']>;
19977
+ productSlug?: InputMaybe<Scalars['String']['input']>;
19978
+ };
19979
+ /** Root query type */
19786
19980
  export type QueryWebhooksArgs = {
19787
19981
  applicationId: Scalars['ID']['input'];
19788
19982
  };
@@ -20587,6 +20781,12 @@ export type RegisterSupportAttachmentPartInput = {
20587
20781
  sessionId: Scalars['ID']['input'];
20588
20782
  ticketId: Scalars['ID']['input'];
20589
20783
  };
20784
+ export type RegisterWebhookEventSubjectsInput = {
20785
+ /** Product slug that owns the subjects (e.g. `vibecontrols`, `fluidgrids`). */
20786
+ productSlug: Scalars['String']['input'];
20787
+ /** Mappings to create or update (at most 100 per call). */
20788
+ subjects: Array<WebhookEventSubjectInput>;
20789
+ };
20590
20790
  export type RejectWaitlistInput = {
20591
20791
  id: Scalars['ID']['input'];
20592
20792
  reason?: InputMaybe<Scalars['String']['input']>;
@@ -20685,6 +20885,17 @@ export type ReserveAssistantBudgetInput = {
20685
20885
  outputTokens: Scalars['Int']['input'];
20686
20886
  workspaceId: Scalars['ID']['input'];
20687
20887
  };
20888
+ export type ReserveAvatarMinutesInput = {
20889
+ actorId: Scalars['ID']['input'];
20890
+ mode: AvatarMinutesMode;
20891
+ productId: Scalars['String']['input'];
20892
+ /** 1 to 60; billing reserves min(available, requested, AVATAR_MINUTES_MAX_PER_SESSION). */
20893
+ requestedMinutes: Scalars['Int']['input'];
20894
+ sessionId: Scalars['ID']['input'];
20895
+ supersedesSessionId?: InputMaybe<Scalars['ID']['input']>;
20896
+ surface: Scalars['String']['input'];
20897
+ workspaceId: Scalars['ID']['input'];
20898
+ };
20688
20899
  /** 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. */
20689
20900
  export type ResolveBillingAccountInput = {
20690
20901
  /** Opaque org id that anchors the billing account. When present the org's default billing account is resolved-or-created. */
@@ -21569,6 +21780,31 @@ export type ServiceSyncPayoutStatusInput = {
21569
21780
  /** The billing PayoutRequestStatus after the change (e.g. APPROVED, REJECTED, PAID, FAILED). */
21570
21781
  status: Scalars['String']['input'];
21571
21782
  };
21783
+ /** Input for serviceUpsertExternalListing (BOFF-3430). */
21784
+ export type ServiceUpsertExternalListingInput = {
21785
+ /** Brand or maker shown on the listing. */
21786
+ brand?: InputMaybe<Scalars['String']['input']>;
21787
+ category?: InputMaybe<Scalars['String']['input']>;
21788
+ /** ISO 4217 currency code, upper case. */
21789
+ currency: Scalars['String']['input'];
21790
+ description?: InputMaybe<Scalars['String']['input']>;
21791
+ /** The item's id in the calling service. Together with the caller's service identity it identifies the listing. */
21792
+ externalId: Scalars['String']['input'];
21793
+ /** Absolute https URL of the item's page in the owning product. */
21794
+ externalUrl: Scalars['String']['input'];
21795
+ metadata?: InputMaybe<Scalars['JSON']['input']>;
21796
+ name: Scalars['String']['input'];
21797
+ price: Scalars['Float']['input'];
21798
+ /** Platform product key of the caller (for example "coolandlovely"). Used as the listing's compatible product and as its slug prefix. */
21799
+ productKey: Scalars['String']['input'];
21800
+ /** Display name for the caller's publisher profile, created on its first listing. */
21801
+ publisherName: Scalars['String']['input'];
21802
+ /** PUBLISHED (shown in discovery), UNLISTED (kept but hidden) or ARCHIVED (taken down). */
21803
+ status: ProductStatus;
21804
+ tags?: InputMaybe<Array<Scalars['String']['input']>>;
21805
+ /** A physical product type (MERCHANDISE, HARDWARE, ACCESSORY, BOOK, EQUIPMENT, APPAREL, COLLECTIBLE or CONSUMABLE). */
21806
+ type: ProductType;
21807
+ };
21572
21808
  /** An active user session (login instance) */
21573
21809
  export type Session = {
21574
21810
  __typename?: 'Session';
@@ -22267,6 +22503,12 @@ export type StoreProduct = {
22267
22503
  documentationUrl?: Maybe<Scalars['String']['output']>;
22268
22504
  downloads: Scalars['Int']['output'];
22269
22505
  entitlements: Array<ProductEntitlement>;
22506
+ /** The item's id in the owning product backend (only set with externalService). */
22507
+ externalId?: Maybe<Scalars['String']['output']>;
22508
+ /** Service identity of the product backend that owns this listing when the item is sold by that product's own checkout (for example wspace-coolandlovely-svc). Null for products the store sells itself. Such a listing cannot be added to a store cart or ordered here; send buyers to externalUrl instead. */
22509
+ externalService?: Maybe<Scalars['String']['output']>;
22510
+ /** Page in the owning product where the item can be viewed and bought (only set with externalService). */
22511
+ externalUrl?: Maybe<Scalars['String']['output']>;
22270
22512
  featured: Scalars['Boolean']['output'];
22271
22513
  /** Product height (physical products) */
22272
22514
  height?: Maybe<Scalars['Float']['output']>;
@@ -26120,6 +26362,16 @@ export type WebhookEvent = {
26120
26362
  /** Last update timestamp */
26121
26363
  updatedAt: Scalars['DateTime']['output'];
26122
26364
  };
26365
+ /** A webhook event type a developer application can subscribe a webhook to. */
26366
+ export type WebhookEventCatalogEntry = {
26367
+ __typename?: 'WebhookEventCatalogEntry';
26368
+ description?: Maybe<Scalars['String']['output']>;
26369
+ /** Event type, sent as the X-Event-Type header and the payload `event` field. */
26370
+ eventType: Scalars['String']['output'];
26371
+ /** Product that emits the event (`devportal` for portal lifecycle events). */
26372
+ productSlug: Scalars['String']['output'];
26373
+ source: WebhookEventSource;
26374
+ };
26123
26375
  /** Paginated list of webhook events with cursor support. Pass `nextCursor` from a previous response as `cursor` in the next call. */
26124
26376
  export type WebhookEventList = {
26125
26377
  __typename?: 'WebhookEventList';
@@ -26128,6 +26380,33 @@ export type WebhookEventList = {
26128
26380
  nextCursor?: Maybe<Scalars['String']['output']>;
26129
26381
  total: Scalars['Int']['output'];
26130
26382
  };
26383
+ /** Where a webhook event type originates. */
26384
+ export declare enum WebhookEventSource {
26385
+ /** Fired by the developer portal itself (application and installation lifecycle). */
26386
+ Devportal = "DEVPORTAL",
26387
+ /** Fired from a workspace entity change, through a registered subject mapping. */
26388
+ Workspace = "WORKSPACE"
26389
+ }
26390
+ /** Maps a workspace graph-event subject to the webhook event type it fires. */
26391
+ export type WebhookEventSubject = {
26392
+ __typename?: 'WebhookEventSubject';
26393
+ createdAt: Scalars['DateTime']['output'];
26394
+ description?: Maybe<Scalars['String']['output']>;
26395
+ eventType: Scalars['String']['output'];
26396
+ id: Scalars['ID']['output'];
26397
+ isActive: Scalars['Boolean']['output'];
26398
+ productSlug: Scalars['String']['output'];
26399
+ /** Graph-event subject, `graph.<module>.<Entity>.<action>`. */
26400
+ subject: Scalars['String']['output'];
26401
+ updatedAt: Scalars['DateTime']['output'];
26402
+ };
26403
+ export type WebhookEventSubjectInput = {
26404
+ description?: InputMaybe<Scalars['String']['input']>;
26405
+ /** Dotted lower-case event type, e.g. `vibe.created`. The `application.` and `installation.` namespaces are reserved for the developer portal. */
26406
+ eventType: Scalars['String']['input'];
26407
+ /** Graph-event subject, `graph.<module>.<Entity>.<action>`. */
26408
+ subject: Scalars['String']['input'];
26409
+ };
26131
26410
  /** Webhook processing result */
26132
26411
  export type WebhookProcessingResult = {
26133
26412
  __typename?: 'WebhookProcessingResult';