@burdenoff/microfe-housingvista 2026.1024.1 → 2026.1027.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.
Files changed (36) hide show
  1. package/dist/generated/global-types.d.ts +321 -1
  2. package/dist/generated/global-types.d.ts.map +1 -1
  3. package/dist/generated/wspace-types.d.ts +4340 -95
  4. package/dist/generated/wspace-types.d.ts.map +1 -1
  5. package/dist/housingvista/components/FileUploader.d.ts +6 -0
  6. package/dist/housingvista/components/FileUploader.d.ts.map +1 -1
  7. package/dist/housingvista/components/FileUploader.js +19 -15
  8. package/dist/housingvista/components/FileUploader.js.map +1 -1
  9. package/dist/housingvista/hooks/index.d.ts +16 -3
  10. package/dist/housingvista/hooks/index.d.ts.map +1 -1
  11. package/dist/housingvista/hooks/index.js +7 -0
  12. package/dist/housingvista/hooks/index.js.map +1 -1
  13. package/dist/housingvista/hooks/platform.d.ts +8 -0
  14. package/dist/housingvista/hooks/platform.d.ts.map +1 -1
  15. package/dist/housingvista/hooks/platform.js +17 -4
  16. package/dist/housingvista/hooks/platform.js.map +1 -1
  17. package/dist/housingvista/pages/amc/AMCManagementPage.d.ts.map +1 -1
  18. package/dist/housingvista/pages/amc/AMCManagementPage.js +36 -22
  19. package/dist/housingvista/pages/amc/AMCManagementPage.js.map +1 -1
  20. package/dist/housingvista/pages/amc/AmcContractFormDialog.d.ts +4 -0
  21. package/dist/housingvista/pages/amc/AmcContractFormDialog.d.ts.map +1 -1
  22. package/dist/housingvista/pages/amc/AmcContractFormDialog.js +80 -89
  23. package/dist/housingvista/pages/amc/AmcContractFormDialog.js.map +1 -1
  24. package/dist/housingvista/pages/amc/AmcLinkFields.d.ts +11 -0
  25. package/dist/housingvista/pages/amc/AmcLinkFields.d.ts.map +1 -0
  26. package/dist/housingvista/pages/amc/AmcLinkFields.js +112 -0
  27. package/dist/housingvista/pages/amc/AmcLinkFields.js.map +1 -0
  28. package/dist/housingvista/pages/properties/PropertyDetailPage.d.ts.map +1 -1
  29. package/dist/housingvista/pages/properties/PropertyDetailPage.js +757 -716
  30. package/dist/housingvista/pages/properties/PropertyDetailPage.js.map +1 -1
  31. package/dist/housingvista/pages/rental/RentalManagementPage.d.ts.map +1 -1
  32. package/dist/housingvista/pages/rental/RentalManagementPage.js +37 -16
  33. package/dist/housingvista/pages/rental/RentalManagementPage.js.map +1 -1
  34. package/dist/housingvista/types/index.d.ts +3 -1
  35. package/dist/housingvista/types/index.d.ts.map +1 -1
  36. package/package.json +1 -1
@@ -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",
@@ -1797,13 +1875,17 @@ export type BillingSubscription = {
1797
1875
  };
1798
1876
  export type BillingWebhookLog = {
1799
1877
  __typename?: 'BillingWebhookLog';
1878
+ attemptCount: Scalars['Int']['output'];
1800
1879
  context?: Maybe<Scalars['JSON']['output']>;
1801
1880
  createdAt: Scalars['DateTime']['output'];
1881
+ deadLetteredAt?: Maybe<Scalars['DateTime']['output']>;
1802
1882
  error?: Maybe<Scalars['String']['output']>;
1803
1883
  event: Scalars['String']['output'];
1804
1884
  id: Scalars['ID']['output'];
1885
+ nextAttemptAt?: Maybe<Scalars['DateTime']['output']>;
1805
1886
  payload: Scalars['JSON']['output'];
1806
1887
  processed: Scalars['Boolean']['output'];
1888
+ processingStartedAt?: Maybe<Scalars['DateTime']['output']>;
1807
1889
  provider: Scalars['String']['output'];
1808
1890
  };
1809
1891
  /** Paginated page of BillingWebhookLog rows, for the admin webhook-log viewer — unlike getUnprocessedFailedWebhooks, not restricted to the payment-succeeded event types eligible for refund creation. */
@@ -2920,6 +3002,20 @@ export declare enum CircuitState {
2920
3002
  HalfOpen = "HALF_OPEN",
2921
3003
  Open = "OPEN"
2922
3004
  }
3005
+ export type CloseAvatarMinutesInput = {
3006
+ /** The decider's wall-clock time; audit only. */
3007
+ decidedAt: Scalars['String']['input'];
3008
+ endClass: AvatarMinutesEndClass;
3009
+ /** Sets the rounding by the exhaustive table in DESIGN 3.1. */
3010
+ endReason: Scalars['String']['input'];
3011
+ ownerDecided: Scalars['Boolean']['input'];
3012
+ /** Anchors the lease; absent for a failed start. */
3013
+ readyAt?: InputMaybe<Scalars['String']['input']>;
3014
+ sessionId: Scalars['ID']['input'];
3015
+ /** The decision's span (DESIGN 3.1), whole milliseconds; 0 when not confirmed. */
3016
+ spanMs: Scalars['Int']['input'];
3017
+ workspaceId: Scalars['ID']['input'];
3018
+ };
2923
3019
  export type ComplaintStats = {
2924
3020
  __typename?: 'ComplaintStats';
2925
3021
  complaintRate: Scalars['Float']['output'];
@@ -6242,6 +6338,12 @@ export type ExternalOidcConfigurationInput = {
6242
6338
  redirectUri?: InputMaybe<Scalars['String']['input']>;
6243
6339
  scopes?: InputMaybe<Array<Scalars['String']['input']>>;
6244
6340
  };
6341
+ export type ExternalRefundResult = {
6342
+ __typename?: 'ExternalRefundResult';
6343
+ alreadyRecorded: Scalars['Boolean']['output'];
6344
+ chargeId: Scalars['ID']['output'];
6345
+ refundId: Scalars['ID']['output'];
6346
+ };
6245
6347
  export type ExternalSettlementResult = {
6246
6348
  __typename?: 'ExternalSettlementResult';
6247
6349
  /** True when the externalRef already had a settlement (idempotent replay). */
@@ -6834,6 +6936,8 @@ export type InitiatePaymentInput = {
6834
6936
  quantity?: InputMaybe<Scalars['Int']['input']>;
6835
6937
  /** Whether to save the card for future purchases (only for new card payments) */
6836
6938
  saveCard?: InputMaybe<Scalars['Boolean']['input']>;
6939
+ /** For PLAN purchase of a PER_SEAT plan: the number of seats to charge for. Clamped server-side to [plan.minSeats, plan.maxSeats]; defaults to plan.minSeats (or 1) when omitted. Ignored for FLAT_RATE plans. */
6940
+ seatCount?: InputMaybe<Scalars['Int']['input']>;
6837
6941
  /** For ADDON purchase: subscription ID to attach addon to. Required if billing account has multiple active subscriptions. If only one active subscription exists, it will be auto-selected. */
6838
6942
  subscriptionId?: InputMaybe<Scalars['ID']['input']>;
6839
6943
  /** For PLAN upgrade: the subscription ID being upgraded from. If provided, this is an upgrade - old quotas will be moved to new subscription. */
@@ -8041,6 +8145,8 @@ export type Mutation = {
8041
8145
  /** Accept an organization invite (must be logged in as the invited user) */
8042
8146
  acceptOrganizationInvite: OrganizationMember;
8043
8147
  acceptSourcingOffer: SourcingOrderSummary;
8148
+ /** Signed (DESIGN 3.7). The provider is ready: RESERVED to ACTIVE. */
8149
+ activateAvatarMinutes: AvatarMinutesReservation;
8044
8150
  /** Activate a channel */
8045
8151
  activateChannel: Channel;
8046
8152
  /** Activate a connection */
@@ -8217,6 +8323,8 @@ export type Mutation = {
8217
8323
  /** Clear all items from the cart */
8218
8324
  clearCart: CartPayload;
8219
8325
  cloneSchedule: ScheduledJob;
8326
+ /** Signed (DESIGN 3.7). The avatar's end decision: SETTLED with the charge, or RELEASED. */
8327
+ closeAvatarMinutes: AvatarMinutesReservation;
8220
8328
  closeSupportTicket: SupportTicket;
8221
8329
  /** 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
8330
  completeAppOAuth: AppInstallation;
@@ -8429,6 +8537,8 @@ export type Mutation = {
8429
8537
  deactivateResource: Scalars['Boolean']['output'];
8430
8538
  /** Deactivate a tour schedule */
8431
8539
  deactivateTourSchedule: TourSchedule;
8540
+ /** Stops a subject from firing webhooks. The row is kept so a later registration reactivates it. Same ownership rule as registration. */
8541
+ deactivateWebhookEventSubject: WebhookEventSubject;
8432
8542
  /** 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
8543
  decrementQuota: Scalars['Boolean']['output'];
8434
8544
  /** Delete current user's account permanently Requires password confirmation */
@@ -8737,6 +8847,8 @@ export type Mutation = {
8737
8847
  newsletterEraseSubject: NewsletterEraseResult;
8738
8848
  /** Export the subject's newsletter data: subscriber rows, per-list memberships, consent ledger entries, automation enrolments, waitlist entries. */
8739
8849
  newsletterExportSubject: Scalars['JSON']['output'];
8850
+ /** Signed (P-27). The settle owner's provider-status note for the fault list; writes no credits. */
8851
+ noteAvatarSessionProviderStatus: Scalars['Boolean']['output'];
8740
8852
  /** 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
8853
  notifyDuplicateApplicants: DuplicateNoticeResult;
8742
8854
  openCircuitBreaker: CircuitBreakerState;
@@ -8769,6 +8881,8 @@ export type Mutation = {
8769
8881
  publishApplication: Application;
8770
8882
  /** 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
8883
  publishApplicationVersion: ApplicationVersion;
8884
+ /** 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. */
8885
+ publishApplicationVersionToOrganization: ApplicationVersion;
8772
8886
  /** 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
8887
  publishCatalogNodeVersion: Scalars['JSON']['output'];
8774
8888
  publishFAQ: Faq;
@@ -8808,6 +8922,8 @@ export type Mutation = {
8808
8922
  recordEarningEntry: EarningsEntry;
8809
8923
  /** Record that a visitor followed a link the answer offered. Fire-and-forget from the browser: a click must never be blocked or delayed by analytics, so this reports `recorded: false` rather than throwing when the click cannot be attributed. */
8810
8924
  recordExploreClick: RecordExploreClickResult;
8925
+ /** Record a completed external refund without invoking a payment provider. */
8926
+ recordExternalRefund: ExternalRefundResult;
8811
8927
  /** Record a SETTLED (or pending/failed) external/manual Charge + Transaction on behalf of a workspace/org by explicit id. Service/super_admin only — routed through the internal gateway. Bypasses the Stripe/Razorpay sync path. */
8812
8928
  recordExternalSettlement: ExternalSettlementResult;
8813
8929
  recordFAQView: Faq;
@@ -8840,6 +8956,8 @@ export type Mutation = {
8840
8956
  /** Register a resource with custom RBAC configurations. */
8841
8957
  registerResource: Resource;
8842
8958
  registerSupportAttachmentPart: Scalars['Boolean']['output'];
8959
+ /** 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. */
8960
+ registerWebhookEventSubjects: Array<WebhookEventSubject>;
8843
8961
  reinstatePublisher: Publisher;
8844
8962
  rejectApplication: Application;
8845
8963
  /** Platform admin only: reject a pending_review version with a reason. The developer can fix their submission and re-submit. */
@@ -8920,6 +9038,8 @@ export type Mutation = {
8920
9038
  replaceChannelTags: Array<ChannelTagAssignment>;
8921
9039
  /** Replace all tags on a store product */
8922
9040
  replaceStoreProductTags: Array<StoreProductTagAssignment>;
9041
+ /** Replay one dead-lettered provider webhook through the durable worker. */
9042
+ replayBillingWebhook?: Maybe<BillingWebhookLog>;
8923
9043
  /** Send an email reply to a contact inquiry. The reply is sent via the notification pipeline (notification-svc → channel-svc → email provider). Auto-updates status to REVIEWED. */
8924
9044
  replyToContactInquiry: ContactInquiryReplyResult;
8925
9045
  /** Send a branded email reply to an applicant (admin). Delivered to the applicant's email via the notification pipeline. Does not change status — the admin controls status explicitly. `message` is rich-text HTML from the admin's editor; it is sanitized to an allowlist before it reaches the email. */
@@ -8958,6 +9078,8 @@ export type Mutation = {
8958
9078
  resendSurvey: CustomerSatisfactionSurvey;
8959
9079
  resendVerificationEmail: ResendVerificationResult;
8960
9080
  reserveAssistantAccountBudget: AssistantBudgetReceipt;
9081
+ /** Signed (DESIGN 3.7). Reserves credits for a session (ENFORCE) or records its shadow (OBSERVE). */
9082
+ reserveAvatarMinutes: AvatarMinutesReservation;
8961
9083
  resetCircuitBreaker: CircuitBreakerState;
8962
9084
  /** Reset password using token from email */
8963
9085
  resetPassword: Scalars['Boolean']['output'];
@@ -9040,7 +9162,7 @@ export type Mutation = {
9040
9162
  rotateConnectionCredentials: ChannelConnection;
9041
9163
  /** Run health check on a channel */
9042
9164
  runChannelHealthCheck: ChannelHealthCheck;
9043
- /** Admin/service-initiated DSAR for an arbitrary subject (e.g. a support-filed or regulator-filed request, or a same-layer service driving the flow on a subject's behalf). Restricted to super_admin and service actors only — never reachable by a regular user for another person's data. */
9165
+ /** Admin/service-initiated DSAR for an arbitrary subject (e.g. a support-filed or regulator-filed request, or a same-layer service driving the flow on a subject's behalf). Restricted to super_admin and service actors only — never reachable by a regular user for another person's data. `subjectEmail` is optional and additive: it lets the fan-out also reach records that are keyed by email only (e.g. a guest contact-inquiry or a newsletter signup with no account), such as `ContactInquiry`, `NewsletterWaitlist`, and `NewsletterSuppression`. Omit it for a subject who only has account-linked records. */
9044
9166
  runDsarRequestForSubject: DsarOrchestrationResult;
9045
9167
  runMonthlyPayouts: PayoutRunLog;
9046
9168
  /** Self-service DSAR: export or erase the CALLING actor's own data across every fan-out target. Self-scoped (Type-A pattern) — subjectId is always the calling actor's own id; there is no identity argument, so this can never be used to act on someone else's data. */
@@ -9098,6 +9220,8 @@ export type Mutation = {
9098
9220
  serviceResolvePayoutAccount: PayoutAccount;
9099
9221
  /** 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
9222
  serviceSyncPayoutStatus?: Maybe<DeveloperOrgPayout>;
9223
+ /** 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. */
9224
+ serviceUpsertExternalListing: StoreProduct;
9101
9225
  setAgentAway: AgentProfile;
9102
9226
  setAgentOffline: AgentProfile;
9103
9227
  setAgentOnline: AgentProfile;
@@ -9187,6 +9311,8 @@ export type Mutation = {
9187
9311
  syncStoreSubmissionStatus: Scalars['Boolean']['output'];
9188
9312
  /** Sync tour steps (smart update in ONE call) Send all desired steps, backend handles: update existing, create new, delete removed */
9189
9313
  syncTourSteps: Array<TourStep>;
9314
+ /** 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. */
9315
+ syncWorkspaceDeletionFromWspace: SyncWorkspaceFromWspaceResponse;
9190
9316
  /** 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
9317
  syncWorkspaceFromWspace: SyncWorkspaceFromWspaceResponse;
9192
9318
  tagChannel: ChannelTagAssignment;
@@ -9481,6 +9607,13 @@ export type MutationAcceptSourcingOfferArgs = {
9481
9607
  offerId: Scalars['ID']['input'];
9482
9608
  };
9483
9609
  /** Root mutation type */
9610
+ export type MutationActivateAvatarMinutesArgs = {
9611
+ readyAt: Scalars['String']['input'];
9612
+ sessionId: Scalars['ID']['input'];
9613
+ signature: AvatarMinutesSignature;
9614
+ workspaceId: Scalars['ID']['input'];
9615
+ };
9616
+ /** Root mutation type */
9484
9617
  export type MutationActivateChannelArgs = {
9485
9618
  id: Scalars['ID']['input'];
9486
9619
  };
@@ -9771,10 +9904,12 @@ export type MutationAttachMediaToStepArgs = {
9771
9904
  /** Root mutation type */
9772
9905
  export type MutationAuthEraseSubjectArgs = {
9773
9906
  dryRun?: InputMaybe<Scalars['Boolean']['input']>;
9907
+ subjectEmail?: InputMaybe<Scalars['String']['input']>;
9774
9908
  subjectId: Scalars['ID']['input'];
9775
9909
  };
9776
9910
  /** Root mutation type */
9777
9911
  export type MutationAuthExportSubjectArgs = {
9912
+ subjectEmail?: InputMaybe<Scalars['String']['input']>;
9778
9913
  subjectId: Scalars['ID']['input'];
9779
9914
  };
9780
9915
  /** Root mutation type */
@@ -9992,6 +10127,11 @@ export type MutationCloneScheduleArgs = {
9992
10127
  sourceId: Scalars['ID']['input'];
9993
10128
  };
9994
10129
  /** Root mutation type */
10130
+ export type MutationCloseAvatarMinutesArgs = {
10131
+ input: CloseAvatarMinutesInput;
10132
+ signature: AvatarMinutesSignature;
10133
+ };
10134
+ /** Root mutation type */
9995
10135
  export type MutationCloseSupportTicketArgs = {
9996
10136
  id: Scalars['ID']['input'];
9997
10137
  };
@@ -10600,6 +10740,10 @@ export type MutationDeactivateTourScheduleArgs = {
10600
10740
  id: Scalars['ID']['input'];
10601
10741
  };
10602
10742
  /** Root mutation type */
10743
+ export type MutationDeactivateWebhookEventSubjectArgs = {
10744
+ subject: Scalars['String']['input'];
10745
+ };
10746
+ /** Root mutation type */
10603
10747
  export type MutationDecrementQuotaArgs = {
10604
10748
  amount: Scalars['Int']['input'];
10605
10749
  billingAccountId: Scalars['ID']['input'];
@@ -11064,6 +11208,7 @@ export type MutationEnsureStoreOrderBillingOrderArgs = {
11064
11208
  /** Root mutation type */
11065
11209
  export type MutationEraseSubjectArgs = {
11066
11210
  dryRun?: InputMaybe<Scalars['Boolean']['input']>;
11211
+ subjectEmail?: InputMaybe<Scalars['String']['input']>;
11067
11212
  subjectId: Scalars['ID']['input'];
11068
11213
  };
11069
11214
  /** Root mutation type */
@@ -11129,6 +11274,7 @@ export type MutationExportRevenueArgs = {
11129
11274
  };
11130
11275
  /** Root mutation type */
11131
11276
  export type MutationExportSubjectArgs = {
11277
+ subjectEmail?: InputMaybe<Scalars['String']['input']>;
11132
11278
  subjectId: Scalars['ID']['input'];
11133
11279
  };
11134
11280
  /** Root mutation type */
@@ -11416,6 +11562,12 @@ export type MutationNewsletterExportSubjectArgs = {
11416
11562
  subjectId: Scalars['ID']['input'];
11417
11563
  };
11418
11564
  /** Root mutation type */
11565
+ export type MutationNoteAvatarSessionProviderStatusArgs = {
11566
+ sessionId: Scalars['ID']['input'];
11567
+ signature: AvatarMinutesSignature;
11568
+ status: AvatarProviderSessionStatus;
11569
+ };
11570
+ /** Root mutation type */
11419
11571
  export type MutationNotifyDuplicateApplicantsArgs = {
11420
11572
  input: NotifyDuplicateApplicantsInput;
11421
11573
  };
@@ -11500,6 +11652,11 @@ export type MutationPublishApplicationVersionArgs = {
11500
11652
  id: Scalars['ID']['input'];
11501
11653
  };
11502
11654
  /** Root mutation type */
11655
+ export type MutationPublishApplicationVersionToOrganizationArgs = {
11656
+ id: Scalars['ID']['input'];
11657
+ workspaceId: Scalars['ID']['input'];
11658
+ };
11659
+ /** Root mutation type */
11503
11660
  export type MutationPublishCatalogNodeVersionArgs = {
11504
11661
  isFirstPublish?: InputMaybe<Scalars['Boolean']['input']>;
11505
11662
  nodeType: Scalars['String']['input'];
@@ -11631,6 +11788,10 @@ export type MutationRecordExploreClickArgs = {
11631
11788
  input: RecordExploreClickInput;
11632
11789
  };
11633
11790
  /** Root mutation type */
11791
+ export type MutationRecordExternalRefundArgs = {
11792
+ input: RecordExternalRefundInput;
11793
+ };
11794
+ /** Root mutation type */
11634
11795
  export type MutationRecordExternalSettlementArgs = {
11635
11796
  input: RecordExternalSettlementInput;
11636
11797
  };
@@ -11718,6 +11879,10 @@ export type MutationRegisterSupportAttachmentPartArgs = {
11718
11879
  input: RegisterSupportAttachmentPartInput;
11719
11880
  };
11720
11881
  /** Root mutation type */
11882
+ export type MutationRegisterWebhookEventSubjectsArgs = {
11883
+ input: RegisterWebhookEventSubjectsInput;
11884
+ };
11885
+ /** Root mutation type */
11721
11886
  export type MutationReinstatePublisherArgs = {
11722
11887
  id: Scalars['ID']['input'];
11723
11888
  };
@@ -11940,6 +12105,10 @@ export type MutationReplaceStoreProductTagsArgs = {
11940
12105
  input: ReplaceStoreProductTagsInput;
11941
12106
  };
11942
12107
  /** Root mutation type */
12108
+ export type MutationReplayBillingWebhookArgs = {
12109
+ logId: Scalars['ID']['input'];
12110
+ };
12111
+ /** Root mutation type */
11943
12112
  export type MutationReplyToContactInquiryArgs = {
11944
12113
  id: Scalars['ID']['input'];
11945
12114
  message: Scalars['String']['input'];
@@ -12043,6 +12212,11 @@ export type MutationReserveAssistantAccountBudgetArgs = {
12043
12212
  input: ReserveAssistantBudgetInput;
12044
12213
  };
12045
12214
  /** Root mutation type */
12215
+ export type MutationReserveAvatarMinutesArgs = {
12216
+ input: ReserveAvatarMinutesInput;
12217
+ signature: AvatarMinutesSignature;
12218
+ };
12219
+ /** Root mutation type */
12046
12220
  export type MutationResetCircuitBreakerArgs = {
12047
12221
  scope: Scalars['String']['input'];
12048
12222
  scopeValue: Scalars['String']['input'];
@@ -12276,6 +12450,7 @@ export type MutationRunChannelHealthCheckArgs = {
12276
12450
  export type MutationRunDsarRequestForSubjectArgs = {
12277
12451
  dryRun?: InputMaybe<Scalars['Boolean']['input']>;
12278
12452
  mode: DsarMode;
12453
+ subjectEmail?: InputMaybe<Scalars['String']['input']>;
12279
12454
  subjectId: Scalars['ID']['input'];
12280
12455
  };
12281
12456
  /** Root mutation type */
@@ -12373,6 +12548,10 @@ export type MutationServiceSyncPayoutStatusArgs = {
12373
12548
  input: ServiceSyncPayoutStatusInput;
12374
12549
  };
12375
12550
  /** Root mutation type */
12551
+ export type MutationServiceUpsertExternalListingArgs = {
12552
+ input: ServiceUpsertExternalListingInput;
12553
+ };
12554
+ /** Root mutation type */
12376
12555
  export type MutationSetAgentAwayArgs = {
12377
12556
  message?: InputMaybe<Scalars['String']['input']>;
12378
12557
  };
@@ -12560,10 +12739,12 @@ export type MutationSubscribeToStoreArgs = {
12560
12739
  /** Root mutation type */
12561
12740
  export type MutationSupportEraseSubjectArgs = {
12562
12741
  dryRun?: InputMaybe<Scalars['Boolean']['input']>;
12742
+ subjectEmail?: InputMaybe<Scalars['String']['input']>;
12563
12743
  subjectId: Scalars['ID']['input'];
12564
12744
  };
12565
12745
  /** Root mutation type */
12566
12746
  export type MutationSupportExportSubjectArgs = {
12747
+ subjectEmail?: InputMaybe<Scalars['String']['input']>;
12567
12748
  subjectId: Scalars['ID']['input'];
12568
12749
  };
12569
12750
  /** Root mutation type */
@@ -12607,6 +12788,10 @@ export type MutationSyncTourStepsArgs = {
12607
12788
  tourId: Scalars['ID']['input'];
12608
12789
  };
12609
12790
  /** Root mutation type */
12791
+ export type MutationSyncWorkspaceDeletionFromWspaceArgs = {
12792
+ workspaceId: Scalars['ID']['input'];
12793
+ };
12794
+ /** Root mutation type */
12610
12795
  export type MutationSyncWorkspaceFromWspaceArgs = {
12611
12796
  input: SyncWorkspaceFromWspaceInput;
12612
12797
  };
@@ -16144,6 +16329,8 @@ export type Query = {
16144
16329
  agentProfile?: Maybe<AgentProfile>;
16145
16330
  agentProfileByUserId?: Maybe<AgentProfile>;
16146
16331
  agentProfiles: AgentProfileConnection;
16332
+ /** Schema capability for optional cache counts. Older callers keep input/output-only pricing. */
16333
+ aiCacheTokenPricingSupported: Scalars['Boolean']['output'];
16147
16334
  /** Active per-model LLM token prices (USD per 1M tokens) used for AI-credit weighting. */
16148
16335
  aiModelPrices: Array<AiModelPrice>;
16149
16336
  /** 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. */
@@ -16193,6 +16380,8 @@ export type Query = {
16193
16380
  availableAuthMethods: Array<AuthMethod>;
16194
16381
  /** 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. */
16195
16382
  availableFeaturePreviews: Array<FeatureFlag>;
16383
+ /** Signed (DESIGN 3.7). The workspace's balance, in the person's view when actorId is given. */
16384
+ avatarMinutesForService: AvatarMinutesBalance;
16196
16385
  bounceStats: BounceStats;
16197
16386
  /** 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 } } } } ``` */
16198
16387
  browseStore: BrowseStoreResult;
@@ -16578,6 +16767,8 @@ export type Query = {
16578
16767
  /** Public listing of an application's installable versions (published or deprecated only — draft/pending_review/rejected versions are never returned here, to avoid exposing unreviewed versions). Used by the Store to let buyers pick a specific version at install time, and by global-store-svc (service actor) to resolve a chosen version's manifest when installing. */
16579
16768
  installableApplicationVersions: Array<ApplicationVersion>;
16580
16769
  installationPermissions?: Maybe<Scalars['JSON']['output']>;
16770
+ /** Runtime routing metadata for an active node installation in the gateway-authenticated workspace. Candidate node types are ordered, with the requested spelling before compatibility aliases. Legacy installation versions are not treated as node runtime versions. */
16771
+ installedStoreNodeRuntime?: Maybe<StoreInstalledNodeRuntime>;
16581
16772
  /** Get a single interview round by ID (admin). */
16582
16773
  interviewRound?: Maybe<InterviewRound>;
16583
16774
  /** Get a single interviewer by ID (admin). */
@@ -17056,6 +17247,10 @@ export type Query = {
17056
17247
  webhook?: Maybe<Webhook>;
17057
17248
  webhookDeliveries: WebhookDeliveryConnection;
17058
17249
  webhookDelivery?: Maybe<WebhookDelivery>;
17250
+ /** Every webhook event type currently deliverable, for the webhook event picker. Optionally narrowed to one product. */
17251
+ webhookEventCatalog: Array<WebhookEventCatalogEntry>;
17252
+ /** Registered subject mappings. Platform services and super admins only. */
17253
+ webhookEventSubjects: Array<WebhookEventSubject>;
17059
17254
  webhooks: Array<Webhook>;
17060
17255
  /** Get a single workspace by ID */
17061
17256
  workspace?: Maybe<Workspace>;
@@ -17358,6 +17553,13 @@ export type QueryAvailableFeaturePreviewsArgs = {
17358
17553
  workspaceId: Scalars['String']['input'];
17359
17554
  };
17360
17555
  /** Root query type */
17556
+ export type QueryAvatarMinutesForServiceArgs = {
17557
+ actorId?: InputMaybe<Scalars['ID']['input']>;
17558
+ productId: Scalars['String']['input'];
17559
+ signature: AvatarMinutesSignature;
17560
+ workspaceId: Scalars['ID']['input'];
17561
+ };
17562
+ /** Root query type */
17361
17563
  export type QueryBounceStatsArgs = {
17362
17564
  campaignId: Scalars['ID']['input'];
17363
17565
  };
@@ -18423,6 +18625,11 @@ export type QueryInstallationPermissionsArgs = {
18423
18625
  installationId: Scalars['ID']['input'];
18424
18626
  };
18425
18627
  /** Root query type */
18628
+ export type QueryInstalledStoreNodeRuntimeArgs = {
18629
+ nodeTypes: Array<Scalars['String']['input']>;
18630
+ nodeVersion?: InputMaybe<Scalars['String']['input']>;
18631
+ };
18632
+ /** Root query type */
18426
18633
  export type QueryInterviewRoundArgs = {
18427
18634
  id: Scalars['ID']['input'];
18428
18635
  };
@@ -19214,6 +19421,8 @@ export type QueryPushDevicesForUserInternalArgs = {
19214
19421
  };
19215
19422
  /** Root query type */
19216
19423
  export type QueryQuoteAiCreditsArgs = {
19424
+ cacheReadTokens?: InputMaybe<Scalars['Int']['input']>;
19425
+ cacheWriteTokens?: InputMaybe<Scalars['Int']['input']>;
19217
19426
  inputTokens: Scalars['Int']['input'];
19218
19427
  model: Scalars['String']['input'];
19219
19428
  outputTokens: Scalars['Int']['input'];
@@ -19797,6 +20006,15 @@ export type QueryWebhookDeliveryArgs = {
19797
20006
  id: Scalars['ID']['input'];
19798
20007
  };
19799
20008
  /** Root query type */
20009
+ export type QueryWebhookEventCatalogArgs = {
20010
+ productSlug?: InputMaybe<Scalars['String']['input']>;
20011
+ };
20012
+ /** Root query type */
20013
+ export type QueryWebhookEventSubjectsArgs = {
20014
+ includeInactive?: InputMaybe<Scalars['Boolean']['input']>;
20015
+ productSlug?: InputMaybe<Scalars['String']['input']>;
20016
+ };
20017
+ /** Root query type */
19800
20018
  export type QueryWebhooksArgs = {
19801
20019
  applicationId: Scalars['ID']['input'];
19802
20020
  };
@@ -20270,6 +20488,15 @@ export type RecordExploreClickResult = {
20270
20488
  __typename?: 'RecordExploreClickResult';
20271
20489
  recorded: Scalars['Boolean']['output'];
20272
20490
  };
20491
+ export type RecordExternalRefundInput = {
20492
+ amount: Scalars['Float']['input'];
20493
+ chargeId: Scalars['ID']['input'];
20494
+ currency: Scalars['String']['input'];
20495
+ externalRef: Scalars['String']['input'];
20496
+ orgId: Scalars['ID']['input'];
20497
+ reason?: InputMaybe<Scalars['String']['input']>;
20498
+ workspaceId?: InputMaybe<Scalars['ID']['input']>;
20499
+ };
20273
20500
  export type RecordExternalSettlementInput = {
20274
20501
  /** Settlement amount in whole currency units (must be > 0). */
20275
20502
  amount: Scalars['Float']['input'];
@@ -20601,6 +20828,12 @@ export type RegisterSupportAttachmentPartInput = {
20601
20828
  sessionId: Scalars['ID']['input'];
20602
20829
  ticketId: Scalars['ID']['input'];
20603
20830
  };
20831
+ export type RegisterWebhookEventSubjectsInput = {
20832
+ /** Product slug that owns the subjects (e.g. `vibecontrols`, `fluidgrids`). */
20833
+ productSlug: Scalars['String']['input'];
20834
+ /** Mappings to create or update (at most 100 per call). */
20835
+ subjects: Array<WebhookEventSubjectInput>;
20836
+ };
20604
20837
  export type RejectWaitlistInput = {
20605
20838
  id: Scalars['ID']['input'];
20606
20839
  reason?: InputMaybe<Scalars['String']['input']>;
@@ -20699,6 +20932,17 @@ export type ReserveAssistantBudgetInput = {
20699
20932
  outputTokens: Scalars['Int']['input'];
20700
20933
  workspaceId: Scalars['ID']['input'];
20701
20934
  };
20935
+ export type ReserveAvatarMinutesInput = {
20936
+ actorId: Scalars['ID']['input'];
20937
+ mode: AvatarMinutesMode;
20938
+ productId: Scalars['String']['input'];
20939
+ /** 1 to 60; billing reserves min(available, requested, AVATAR_MINUTES_MAX_PER_SESSION). */
20940
+ requestedMinutes: Scalars['Int']['input'];
20941
+ sessionId: Scalars['ID']['input'];
20942
+ supersedesSessionId?: InputMaybe<Scalars['ID']['input']>;
20943
+ surface: Scalars['String']['input'];
20944
+ workspaceId: Scalars['ID']['input'];
20945
+ };
20702
20946
  /** 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. */
20703
20947
  export type ResolveBillingAccountInput = {
20704
20948
  /** Opaque org id that anchors the billing account. When present the org's default billing account is resolved-or-created. */
@@ -21583,6 +21827,31 @@ export type ServiceSyncPayoutStatusInput = {
21583
21827
  /** The billing PayoutRequestStatus after the change (e.g. APPROVED, REJECTED, PAID, FAILED). */
21584
21828
  status: Scalars['String']['input'];
21585
21829
  };
21830
+ /** Input for serviceUpsertExternalListing (BOFF-3430). */
21831
+ export type ServiceUpsertExternalListingInput = {
21832
+ /** Brand or maker shown on the listing. */
21833
+ brand?: InputMaybe<Scalars['String']['input']>;
21834
+ category?: InputMaybe<Scalars['String']['input']>;
21835
+ /** ISO 4217 currency code, upper case. */
21836
+ currency: Scalars['String']['input'];
21837
+ description?: InputMaybe<Scalars['String']['input']>;
21838
+ /** The item's id in the calling service. Together with the caller's service identity it identifies the listing. */
21839
+ externalId: Scalars['String']['input'];
21840
+ /** Absolute https URL of the item's page in the owning product. */
21841
+ externalUrl: Scalars['String']['input'];
21842
+ metadata?: InputMaybe<Scalars['JSON']['input']>;
21843
+ name: Scalars['String']['input'];
21844
+ price: Scalars['Float']['input'];
21845
+ /** Platform product key of the caller (for example "coolandlovely"). Used as the listing's compatible product and as its slug prefix. */
21846
+ productKey: Scalars['String']['input'];
21847
+ /** Display name for the caller's publisher profile, created on its first listing. */
21848
+ publisherName: Scalars['String']['input'];
21849
+ /** PUBLISHED (shown in discovery), UNLISTED (kept but hidden) or ARCHIVED (taken down). */
21850
+ status: ProductStatus;
21851
+ tags?: InputMaybe<Array<Scalars['String']['input']>>;
21852
+ /** A physical product type (MERCHANDISE, HARDWARE, ACCESSORY, BOOK, EQUIPMENT, APPAREL, COLLECTIBLE or CONSUMABLE). */
21853
+ type: ProductType;
21854
+ };
21586
21855
  /** An active user session (login instance) */
21587
21856
  export type Session = {
21588
21857
  __typename?: 'Session';
@@ -22150,6 +22419,12 @@ export declare enum StoreInstallationStatus {
22150
22419
  Pending = "PENDING",
22151
22420
  Uninstalled = "UNINSTALLED"
22152
22421
  }
22422
+ export type StoreInstalledNodeRuntime = {
22423
+ __typename?: 'StoreInstalledNodeRuntime';
22424
+ endpointUrl: Scalars['String']['output'];
22425
+ nodeType: Scalars['String']['output'];
22426
+ nodeVersion?: Maybe<Scalars['String']['output']>;
22427
+ };
22153
22428
  /** StoreItem entity reference. The actual StoreItem is defined in the Store service. In Federation 2 setup, this will be marked with @key directive. For now, this is a reference type that returns the itemId for the Gateway to resolve. */
22154
22429
  export type StoreItem = {
22155
22430
  __typename?: 'StoreItem';
@@ -22281,6 +22556,12 @@ export type StoreProduct = {
22281
22556
  documentationUrl?: Maybe<Scalars['String']['output']>;
22282
22557
  downloads: Scalars['Int']['output'];
22283
22558
  entitlements: Array<ProductEntitlement>;
22559
+ /** The item's id in the owning product backend (only set with externalService). */
22560
+ externalId?: Maybe<Scalars['String']['output']>;
22561
+ /** 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. */
22562
+ externalService?: Maybe<Scalars['String']['output']>;
22563
+ /** Page in the owning product where the item can be viewed and bought (only set with externalService). */
22564
+ externalUrl?: Maybe<Scalars['String']['output']>;
22284
22565
  featured: Scalars['Boolean']['output'];
22285
22566
  /** Product height (physical products) */
22286
22567
  height?: Maybe<Scalars['Float']['output']>;
@@ -24514,6 +24795,8 @@ export type UpdateContentPageInput = {
24514
24795
  visibility?: InputMaybe<ContentVisibility>;
24515
24796
  };
24516
24797
  export type UpdateCouponInput = {
24798
+ applicableEntityTypes?: InputMaybe<Array<CouponEntityType>>;
24799
+ applicableProductIds?: InputMaybe<Array<Scalars['String']['input']>>;
24517
24800
  description?: InputMaybe<Scalars['String']['input']>;
24518
24801
  maxTotalUses?: InputMaybe<Scalars['Int']['input']>;
24519
24802
  maxUsesPerUser?: InputMaybe<Scalars['Int']['input']>;
@@ -26134,6 +26417,16 @@ export type WebhookEvent = {
26134
26417
  /** Last update timestamp */
26135
26418
  updatedAt: Scalars['DateTime']['output'];
26136
26419
  };
26420
+ /** A webhook event type a developer application can subscribe a webhook to. */
26421
+ export type WebhookEventCatalogEntry = {
26422
+ __typename?: 'WebhookEventCatalogEntry';
26423
+ description?: Maybe<Scalars['String']['output']>;
26424
+ /** Event type, sent as the X-Event-Type header and the payload `event` field. */
26425
+ eventType: Scalars['String']['output'];
26426
+ /** Product that emits the event (`devportal` for portal lifecycle events). */
26427
+ productSlug: Scalars['String']['output'];
26428
+ source: WebhookEventSource;
26429
+ };
26137
26430
  /** Paginated list of webhook events with cursor support. Pass `nextCursor` from a previous response as `cursor` in the next call. */
26138
26431
  export type WebhookEventList = {
26139
26432
  __typename?: 'WebhookEventList';
@@ -26142,6 +26435,33 @@ export type WebhookEventList = {
26142
26435
  nextCursor?: Maybe<Scalars['String']['output']>;
26143
26436
  total: Scalars['Int']['output'];
26144
26437
  };
26438
+ /** Where a webhook event type originates. */
26439
+ export declare enum WebhookEventSource {
26440
+ /** Fired by the developer portal itself (application and installation lifecycle). */
26441
+ Devportal = "DEVPORTAL",
26442
+ /** Fired from a workspace entity change, through a registered subject mapping. */
26443
+ Workspace = "WORKSPACE"
26444
+ }
26445
+ /** Maps a workspace graph-event subject to the webhook event type it fires. */
26446
+ export type WebhookEventSubject = {
26447
+ __typename?: 'WebhookEventSubject';
26448
+ createdAt: Scalars['DateTime']['output'];
26449
+ description?: Maybe<Scalars['String']['output']>;
26450
+ eventType: Scalars['String']['output'];
26451
+ id: Scalars['ID']['output'];
26452
+ isActive: Scalars['Boolean']['output'];
26453
+ productSlug: Scalars['String']['output'];
26454
+ /** Graph-event subject, `graph.<module>.<Entity>.<action>`. */
26455
+ subject: Scalars['String']['output'];
26456
+ updatedAt: Scalars['DateTime']['output'];
26457
+ };
26458
+ export type WebhookEventSubjectInput = {
26459
+ description?: InputMaybe<Scalars['String']['input']>;
26460
+ /** Dotted lower-case event type, e.g. `vibe.created`. The `application.` and `installation.` namespaces are reserved for the developer portal. */
26461
+ eventType: Scalars['String']['input'];
26462
+ /** Graph-event subject, `graph.<module>.<Entity>.<action>`. */
26463
+ subject: Scalars['String']['input'];
26464
+ };
26145
26465
  /** Webhook processing result */
26146
26466
  export type WebhookProcessingResult = {
26147
26467
  __typename?: 'WebhookProcessingResult';