@crowdedkingdoms/crowdyjs 7.1.1 → 8.0.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 (45) hide show
  1. package/MIGRATION.md +46 -0
  2. package/README.md +51 -14
  3. package/dist/client.d.ts +8 -0
  4. package/dist/client.d.ts.map +1 -1
  5. package/dist/client.js +5 -0
  6. package/dist/crowdy-client.d.ts +7 -0
  7. package/dist/crowdy-client.d.ts.map +1 -1
  8. package/dist/crowdy-client.js +4 -0
  9. package/dist/domains/auth.d.ts +77 -140
  10. package/dist/domains/auth.d.ts.map +1 -1
  11. package/dist/domains/auth.js +81 -178
  12. package/dist/domains/gameModel.d.ts +54 -3
  13. package/dist/domains/gameModel.d.ts.map +1 -1
  14. package/dist/domains/gameModel.js +67 -4
  15. package/dist/domains/host.d.ts +14 -3
  16. package/dist/domains/host.d.ts.map +1 -1
  17. package/dist/domains/host.js +17 -3
  18. package/dist/domains/organizations.d.ts +3 -3
  19. package/dist/domains/organizations.js +3 -3
  20. package/dist/domains/portal.d.ts +43 -1
  21. package/dist/domains/portal.d.ts.map +1 -1
  22. package/dist/domains/portal.js +59 -1
  23. package/dist/domains/quotas.d.ts +1 -1
  24. package/dist/domains/quotas.js +1 -1
  25. package/dist/domains/udp.d.ts +28 -17
  26. package/dist/domains/udp.d.ts.map +1 -1
  27. package/dist/domains/udp.js +28 -17
  28. package/dist/generated/graphql.d.ts +420 -106
  29. package/dist/generated/graphql.d.ts.map +1 -1
  30. package/dist/generated/graphql.js +6 -8
  31. package/dist/index.d.ts +14 -9
  32. package/dist/index.d.ts.map +1 -1
  33. package/dist/index.js +13 -8
  34. package/dist/lb-cookie-store.d.ts +20 -0
  35. package/dist/lb-cookie-store.d.ts.map +1 -0
  36. package/dist/lb-cookie-store.js +73 -0
  37. package/dist/realtime.d.ts +20 -5
  38. package/dist/realtime.d.ts.map +1 -1
  39. package/dist/realtime.js +38 -0
  40. package/dist/types.d.ts +22 -6
  41. package/dist/types.d.ts.map +1 -1
  42. package/dist/world.d.ts +13 -8
  43. package/dist/world.d.ts.map +1 -1
  44. package/dist/world.js +13 -8
  45. package/package.json +6 -4
@@ -185,6 +185,8 @@ export type App = {
185
185
  __typename?: 'App';
186
186
  /** Unique numeric identifier of the app (primary key). */
187
187
  appId: Scalars['BigInt']['output'];
188
+ /** OAuth client type: "public" (browser/PKCE, no secret) or "confidential" (server-side, holds a secret). Defaults to "public". */
189
+ clientType: Scalars['String']['output'];
188
190
  /** Timestamp when the app was created. */
189
191
  createdAt: Scalars['DateTime']['output'];
190
192
  /** Numeric user id of the account that created the app. */
@@ -195,6 +197,10 @@ export type App = {
195
197
  description: Maybe<Scalars['String']['output']>;
196
198
  /** Resolved game-api base URL for SDK/runtime calls: the per-tenant URL for dedicated apps, or the shared platform URL for shared apps. Null for legacy or not-yet-deployed apps. */
197
199
  gameApiUrl: Maybe<Scalars['String']['output']>;
200
+ /** True for first-party/trusted apps: portal entry skips the consent screen. The Overworld (app 1) is trusted. Studio admins cannot set this; it is platform-controlled. */
201
+ isTrusted: Scalars['Boolean']['output'];
202
+ /** Browser destination (origin/URL) a player is redirected to when they portal into this app from the Overworld. Used to route the player and to validate portal redirect URIs. */
203
+ launchUrl: Maybe<Scalars['String']['output']>;
198
204
  /** Opaque JSON-encoded string of marketplace media (cover image URL, screenshots, long description, etc.). Stored internally as JSONB; clients must JSON.parse on read and JSON.stringify on write. Null/"{}" when unset. */
199
205
  metadata: Maybe<Scalars['String']['output']>;
200
206
  /** Human-readable display name of the app. */
@@ -203,6 +209,10 @@ export type App = {
203
209
  org: Maybe<Organization>;
204
210
  /** Numeric id of the organization that owns this app. */
205
211
  orgId: Scalars['BigInt']['output'];
212
+ /** OAuth-style redirect-URI allow-list for the portal handoff. A portal authorization code’s redirect_uri must match one of these by origin; empty disallows browser portal entry to this app. */
213
+ redirectUris: Array<Scalars['String']['output']>;
214
+ /** Reserved sustained egress in bytes/s for shared apps. 0 = free tier; >0 bypasses the ~1 MB/s rate limit and incurs a monthly reservation fee. */
215
+ reservedEgressBytesPerSec: Scalars['BigInt']['output'];
206
216
  /** When runtimeStatus is not "active", why the runtime is gated: "free_allowance", "insufficient_funds", "spend_cap", or "subscription_lapsed". Null when active. */
207
217
  runtimeDenialReason: Maybe<Scalars['String']['output']>;
208
218
  /** Shared-environment runtime gate, mirrored to the game DB and enforced by game-api + Buddy: "active", "grace", "denied", or "suspended". */
@@ -252,6 +262,20 @@ export type AppAccessTier = {
252
262
  /** Timestamp when the tier was last updated. */
253
263
  updatedAt: Scalars['DateTime']['output'];
254
264
  };
265
+ /** A user's standing consent for an app to receive app-scoped tokens via the Overworld portal (the “connected apps” list). */
266
+ export type AppAuthorizationGrant = {
267
+ __typename?: 'AppAuthorizationGrant';
268
+ appId: Scalars['ID']['output'];
269
+ appName: Maybe<Scalars['String']['output']>;
270
+ grantId: Scalars['ID']['output'];
271
+ grantedAt: Scalars['DateTime']['output'];
272
+ revokedAt: Maybe<Scalars['DateTime']['output']>;
273
+ /** The scopes the user approved for this app. */
274
+ scopes: Array<Scalars['String']['output']>;
275
+ /** 'active' | 'revoked'. */
276
+ status: Scalars['String']['output'];
277
+ userId: Scalars['ID']['output'];
278
+ };
255
279
  export type AppAvatarState = {
256
280
  __typename?: 'AppAvatarState';
257
281
  /** App (game) id this state is scoped to. BigInt serialized as a decimal string. */
@@ -387,7 +411,7 @@ export type AppSharedSubscription = {
387
411
  export declare enum AppStatus {
388
412
  /** Soft-deleted via archiveApp: retained but read-only and excluded from the marketplace. Reversible by setting status back to DRAFT or LIVE. */
389
413
  Archived = "ARCHIVED",
390
- /** Work-in-progress: invisible to non-members and never listed in the marketplace. Default for newly created apps. */
414
+ /** Work-in-progress: invisible to non-members and never listed in the marketplace. Selectable manually via updateApp; new apps default to LIVE. */
391
415
  Draft = "DRAFT",
392
416
  /** Published and purchasable/playable; eligible for the public marketplace when visibility=PUBLIC. */
393
417
  Live = "LIVE"
@@ -410,6 +434,26 @@ export type AppTokenResponse = {
410
434
  /** Opaque app-scoped gameplay token. Send to the target app's Game API as `Authorization: Bearer <token>` (and in the realtime `connectionParams`). Do NOT send it to the Management API for anything other than `me`/`refreshAppToken`. */
411
435
  token: Scalars['String']['output'];
412
436
  };
437
+ /** End-of-month egress projection for one shared app from linear extrapolation of calendar-month usage so far. */
438
+ export type AppUsageProjection = {
439
+ __typename?: 'AppUsageProjection';
440
+ /** App id (as a string). */
441
+ appId: Scalars['String']['output'];
442
+ /** Egress bytes recorded so far this calendar month (from app_monthly_egress). */
443
+ currentEgressBytes: Scalars['String']['output'];
444
+ /** Fractional UTC days elapsed since the calendar month started. */
445
+ daysElapsed: Scalars['Float']['output'];
446
+ /** Per-app free monthly egress allowance in bytes (5 decimal GB). */
447
+ freeAllowanceBytes: Scalars['String']['output'];
448
+ /** True when projected egress exceeds the free allowance, or null when insufficient data. */
449
+ onTrackToExceed: Maybe<Scalars['Boolean']['output']>;
450
+ /** Projected end-of-month egress bytes (linear extrapolation), or null when insufficient data. */
451
+ projectedBytes: Maybe<Scalars['String']['output']>;
452
+ /** Projected usage as a percentage of the free allowance, or null when insufficient data. */
453
+ projectedPctOfFree: Maybe<Scalars['Float']['output']>;
454
+ /** True when at least 3 days have elapsed in the month (projection is meaningful). */
455
+ sufficientData: Scalars['Boolean']['output'];
456
+ };
413
457
  /** Aggregate byte totals for one app over the requested window. All *Bytes fields are string counters (may exceed Int range). */
414
458
  export type AppUsageRollupRow = {
415
459
  __typename?: 'AppUsageRollupRow';
@@ -538,6 +582,12 @@ export type AssignGroupToGridInput = {
538
582
  /** Runtime permission key strings to grant to the group/role. Each must be a known key in runtime_permissions, unique, and at most 64 chars. */
539
583
  permissionKeys: Array<Scalars['String']['input']>;
540
584
  };
585
+ /** Whether the account has a password set. Does not reveal whether the email is registered. */
586
+ export type AuthMethodResult = {
587
+ __typename?: 'AuthMethodResult';
588
+ /** True when the account exists and has a password hash; false otherwise (including unknown emails). */
589
+ hasPassword: Scalars['Boolean']['output'];
590
+ };
541
591
  /** Result of a successful login or registration: a session token plus the authenticated user. */
542
592
  export type AuthResponse = {
543
593
  __typename?: 'AuthResponse';
@@ -548,6 +598,13 @@ export type AuthResponse = {
548
598
  /** The authenticated user. */
549
599
  user: User;
550
600
  };
601
+ /** Approve (consent to) an app receiving app-scoped tokens via the Overworld portal. */
602
+ export type AuthorizeAppInput = {
603
+ /** App to authorize. */
604
+ appId: Scalars['BigInt']['input'];
605
+ /** Optional explicit scopes to grant (defaults to the app baseline). */
606
+ scopes?: InputMaybe<Array<Scalars['String']['input']>>;
607
+ };
551
608
  export type Avatar = {
552
609
  __typename?: 'Avatar';
553
610
  /** Avatar id and primary key (auto-increment). Serialized as a GraphQL ID (a numeric string). */
@@ -642,6 +699,11 @@ export type ChannelMessageNotification = {
642
699
  /** The sending actor's UUID. */
643
700
  uuid: Scalars['String']['output'];
644
701
  };
702
+ /** Check whether an account has password sign-in enabled (email-first adaptive login). */
703
+ export type CheckAuthMethodInput = {
704
+ /** Email address to check. */
705
+ email: Scalars['String']['input'];
706
+ };
645
707
  export type Checkout = {
646
708
  __typename?: 'Checkout';
647
709
  /** Charge amount in minor currency units (cents) of `currency`, as a BigInt decimal string; null when the purpose carries no amount. */
@@ -936,6 +998,8 @@ export type CksEnvironment = {
936
998
  graphqlBillingTier: Maybe<Scalars['Int']['output']>;
937
999
  /** Opaque environment UUID (cks_environments.id). */
938
1000
  id: Scalars['String']['output'];
1001
+ /** True for the single platform-owned shared environment (slug 'shared') that hosts the shared game-api serving apps with deploymentTarget='shared'. Customer environments are always false. */
1002
+ isShared: Scalars['Boolean']['output'];
939
1003
  loadBalancerCount: Scalars['Int']['output'];
940
1004
  /** Release version actually observed running. Lags desiredEnvironmentVersion while a deploy is in progress. */
941
1005
  observedEnvironmentVersion: Maybe<Scalars['String']['output']>;
@@ -1275,6 +1339,11 @@ export type ClientTextPacketInput = {
1275
1339
  /** A unique identifier for the text source (typically the player UUID). Must be exactly 32 bytes when encoded as UTF-8. */
1276
1340
  uuid: Scalars['String']['input'];
1277
1341
  };
1342
+ /** Complete a magic-link sign-in with the emailed token. */
1343
+ export type CompleteLoginLinkInput = {
1344
+ /** The one-time token from the magic-link URL. */
1345
+ token: Scalars['String']['input'];
1346
+ };
1278
1347
  /** Relay-style pagination metadata for a connection. */
1279
1348
  export type ConnectionPageInfo = {
1280
1349
  __typename?: 'ConnectionPageInfo';
@@ -1586,7 +1655,7 @@ export type CreateAppInput = {
1586
1655
  orgId: Scalars['BigInt']['input'];
1587
1656
  /** URL-safe slug (1-128 chars, lowercase letters, numbers and dashes only). Must be unique within the org. */
1588
1657
  slug: Scalars['String']['input'];
1589
- /** Optional initial lifecycle status. Defaults to DRAFT when omitted. */
1658
+ /** Optional initial lifecycle status. Defaults to LIVE when omitted. */
1590
1659
  status?: InputMaybe<AppStatus>;
1591
1660
  /** Optional initial visibility. Defaults to PUBLIC when omitted. */
1592
1661
  visibility?: InputMaybe<AppVisibility>;
@@ -1677,6 +1746,8 @@ export type CreateEnvironmentInput = {
1677
1746
  gameApiMinServers?: InputMaybe<Scalars['Int']['input']>;
1678
1747
  /** GraphQL billing tier level from graphqlBillingTiers. Defaults to tier 1 for dedicated environments. */
1679
1748
  graphqlBillingTier?: InputMaybe<Scalars['Int']['input']>;
1749
+ /** Super-admin only: designate this as the single platform-owned shared environment (slug 'shared') that hosts the shared game-api for apps with deploymentTarget='shared'. Must be a dedicated environment. Customers cannot set this; the management API rejects it for non-super-admins. */
1750
+ isShared?: InputMaybe<Scalars['Boolean']['input']>;
1680
1751
  /** Number of Caddy load-balancer VMs in front of the game-api fleet (min 1). Required for dedicated; ignored for dev_single. */
1681
1752
  loadBalancerCount?: InputMaybe<Scalars['Int']['input']>;
1682
1753
  /** Organization id (BigInt) that will own and be billed for the environment. */
@@ -1817,6 +1888,11 @@ export type DestroyEnvironmentInput = {
1817
1888
  /** Slug of the environment to destroy (all cloud resources are torn down). */
1818
1889
  slug: Scalars['String']['input'];
1819
1890
  };
1891
+ /** Dev-only bypass sign-in (active only when DEV_AUTH_BYPASS is enabled; never in production). */
1892
+ export type DevLoginInput = {
1893
+ /** Email of the account to sign in as (created if absent). */
1894
+ email: Scalars['String']['input'];
1895
+ };
1820
1896
  /** Input for environmentQuote. Mirrors CreateEnvironmentInput’s class/flavor shape: dedicated needs the four per-role flavors + counts; dev_single needs only the single flavor. */
1821
1897
  export type EnvironmentQuoteInput = {
1822
1898
  /** Flavor name from environmentFlavors(datacenter) for the Caddy LB VMs in front of the game-api fleet; must have a published hourly price. Required for dedicated. */
@@ -1887,6 +1963,8 @@ export type ExchangePortalCodeInput = {
1887
1963
  /** An org's free shared app slot quota usage. */
1888
1964
  export type FreeAppQuota = {
1889
1965
  __typename?: 'FreeAppQuota';
1966
+ /** Shared apps with free-slot / reserved / paid credit status. */
1967
+ apps: Array<FreeAppQuotaApp>;
1890
1968
  /** Organization id (BigInt). */
1891
1969
  orgId: Scalars['BigInt']['output'];
1892
1970
  /** Apps on a paid subscription (do not consume free slots). */
@@ -1895,9 +1973,29 @@ export type FreeAppQuota = {
1895
1973
  quota: Scalars['Int']['output'];
1896
1974
  /** Free slots still available (quota − usedFree). */
1897
1975
  remainingFree: Scalars['Int']['output'];
1976
+ /** Apps with reserved throughput (premium; do not consume free slots). */
1977
+ reservedApps: Scalars['Int']['output'];
1898
1978
  /** Free slots currently in use. */
1899
1979
  usedFree: Scalars['Int']['output'];
1900
1980
  };
1981
+ /** A shared app row in the org free-slot portfolio (free / reserved / paid credit). */
1982
+ export type FreeAppQuotaApp = {
1983
+ __typename?: 'FreeAppQuotaApp';
1984
+ /** App id (BigInt). */
1985
+ appId: Scalars['BigInt']['output'];
1986
+ /** True when the app consumes a free org slot (shared, not archived, no active subscription, no reserved throughput). */
1987
+ consumesFreeSlot: Scalars['Boolean']['output'];
1988
+ /** How this app is credited: 'free_slot', 'reserved', or 'paid_subscription'. */
1989
+ creditKind: Scalars['String']['output'];
1990
+ /** True when the app has an active legacy shared subscription. */
1991
+ hasActiveSubscription: Scalars['Boolean']['output'];
1992
+ /** App display name. */
1993
+ name: Scalars['String']['output'];
1994
+ /** Reserved egress throughput in bytes/sec (0 when none). */
1995
+ reservedEgressBytesPerSec: Scalars['BigInt']['output'];
1996
+ /** URL slug for the app. */
1997
+ slug: Scalars['String']['output'];
1998
+ };
1901
1999
  /** Status of the recurring free-play window during which gameplay is open without entitlement. */
1902
2000
  export type FreePlayWindowInfo = {
1903
2001
  __typename?: 'FreePlayWindowInfo';
@@ -2851,6 +2949,12 @@ export type LinkAppToEnvironmentInput = {
2851
2949
  /** Organization id (BigInt) that owns both the app and the environment. */
2852
2950
  orgId: Scalars['BigInt']['input'];
2853
2951
  };
2952
+ /** Link an additional federated identity to the signed-in account. */
2953
+ export type LinkIdentityInput = {
2954
+ code: Scalars['String']['input'];
2955
+ provider: Scalars['String']['input'];
2956
+ state: Scalars['String']['input'];
2957
+ };
2854
2958
  /** Arguments for listVoxelUpdatesByDistance: selects recorded voxel edits across chunks within a cubic (Chebyshev) radius of a center chunk, grouped per chunk and ordered by increasing distance. */
2855
2959
  export type ListVoxelUpdatesByDistanceInput = {
2856
2960
  /** Id of the app whose voxel edits to search (decimal string). */
@@ -2915,6 +3019,8 @@ export type Mutation = {
2915
3019
  archiveApp: App;
2916
3020
  /** Grant runtime permission keys to a group (optionally scoped to a single group role) on a grid by writing the `grid_group_grants` input table, then recompute the materialized effective ACL so every affected member gains the keys. Requires app-admin ('manage_apps'). Returns the grid's current group grants for the group. Use `grantGridPermissions` for per-user grants instead. */
2917
3021
  assignGroupToGrid: Array<GridGroupGrant>;
3022
+ /** Record the user's consent for an (untrusted) app to receive app-scoped tokens via the portal. Called from the Overworld consent screen before createPortalAuthorizationCode. Idempotent. Requires a SESSION token. */
3023
+ authorizeApp: AppAuthorizationGrant;
2918
3024
  /** DESTRUCTIVE. Cancels an app's paid shared-environment subscription. The app loses its paid shared slot (typically at currentPeriodEnd) and may be denied runtime once the period lapses unless a free slot covers it. Returns the updated subscription. Requires the 'manage_billing' permission on the app's org. */
2919
3025
  cancelSharedSubscription: AppSharedSubscription;
2920
3026
  /** Captures an approved PayPal order after the hosted checkout redirects back, completes the checkout (wallet credit / access grant), and returns the updated Checkout. PayPal webhooks remain a backup for idempotent reconciliation if they arrive later. Requires an authenticated user who owns the checkout. */
@@ -2923,7 +3029,9 @@ export type Mutation = {
2923
3029
  changePassword: Scalars['Boolean']['output'];
2924
3030
  /** Self-service: the authenticated caller claims access to an app via its free, open-by-default tier. Requires authentication only (no org membership needed). ENTITLEMENT CHANGE: grants the free default tier as a 'system' grant and notifies the game API. Idempotent: returns the existing row if already granted, and never overrides a prior revoke. Errors if the app has no free default tier or is archived. */
2925
3031
  claimFreeAppAccess: AppUserAccess;
2926
- /** Confirms a user email address using the token from the confirmation email. Returns true on success, false if the token is invalid or expired. Public (the token authorizes the call). */
3032
+ /** Complete a magic-link sign-in with the emailed token; returns a session AuthResponse. Public (the token authorizes the call); throws if invalid/expired/used. */
3033
+ completeLoginLink: AuthResponse;
3034
+ /** Confirms a user email address using the token from the confirmation email (also enables password sign-in for the account). Returns true on success, false if the token is invalid or expired. Public (the token authorizes the call). */
2927
3035
  confirmEmail: Scalars['Boolean']['output'];
2928
3036
  /** Open the UDP proxy session for this game token (idempotent: returns the existing status if one is already open). Binds a socket and selects the game server with the fewest clients on first open. Optional: send mutations and udpNotifications also create a session lazily when none exists. To force a fresh socket, call disconnectUdpProxy first. */
2929
3037
  connectUdpProxy: UdpProxyConnectionStatus;
@@ -2983,6 +3091,8 @@ export type Mutation = {
2983
3091
  deleteUserAppState: UserAppState;
2984
3092
  /** DESTRUCTIVE and IRREVERSIBLE. Tears down all cloud resources for the environment (per-tenant Postgres, game-api, Buddy, and load-balancer VMs plus DNS records) and revokes its service tokens; all tenant data is lost. Sets status to 'destroy_requested' and returns the tracking change order — poll orgEnvironment.destroyProgress. Fails if a destroy is already queued. After it reaches 'destroyed', call purgeEnvironment to remove the record. Requires the 'manage_environments' org permission. */
2985
3093
  destroyEnvironment: CksEnvironmentChangeOrder;
3094
+ /** DEV ONLY bypass sign-in: returns a session for the given email without email/social verification. Active only when DEV_AUTH_BYPASS is enabled; throws (FORBIDDEN) otherwise. Never enabled in production. */
3095
+ devLogin: AuthResponse;
2986
3096
  /** Close the UDP proxy session and socket for this game token. Unsubscribing from udpNotifications does not disconnect; use this mutation (or rely on server inactivity timeout). */
2987
3097
  disconnectUdpProxy: Scalars['Boolean']['output'];
2988
3098
  /** Exchange a one-time portal authorization code (with the matching PKCE verifier) for an app-scoped gameplay token. Public (the code + verifier authorize the call); called by the destination game at its own origin so the game never sees the player's session token. */
@@ -3001,8 +3111,16 @@ export type Mutation = {
3001
3111
  gameModelDeleteAutomation: Scalars['Boolean']['output'];
3002
3112
  /** Delete an automation event trigger by id. Requires app-admin ('manage_apps'). Returns true if one was deleted. */
3003
3113
  gameModelDeleteAutomationTrigger: Scalars['Boolean']['output'];
3114
+ /** Delete a container instance. Cascades its instance properties and any edges connected to it. Allowed for an app admin or the container owner. Requires a valid token. DESTRUCTIVE. Returns true if a container was deleted. */
3115
+ gameModelDeleteContainer: Scalars['Boolean']['output'];
3116
+ /** Delete a container type. Also deletes its property definitions. Refuses if live containers of that type exist, or if functions are bound to it — delete those first. Requires app-admin ('manage_apps'). DESTRUCTIVE. Returns true if a type was deleted. */
3117
+ gameModelDeleteContainerType: Scalars['Boolean']['output'];
3118
+ /** Delete a directed relationship edge between two containers. Allowed for an app admin or the owner of the source (from) container. Requires a valid token. DESTRUCTIVE. Returns true if an edge was deleted. */
3119
+ gameModelDeleteEdge: Scalars['Boolean']['output'];
3004
3120
  /** Delete a studio-defined function by name. Requires app-admin ('manage_apps'). DESTRUCTIVE. Returns true if a function was deleted. */
3005
3121
  gameModelDeleteFunction: Scalars['Boolean']['output'];
3122
+ /** Delete a property definition from a container type. Does not remove instance property values already stored on containers. Requires app-admin ('manage_apps'). DESTRUCTIVE. Returns true if a definition was deleted. */
3123
+ gameModelDeletePropertyDef: Scalars['Boolean']['output'];
3006
3124
  /** Grant a feature key to an access tier, so users on that tier satisfy tier_feature authority checks for it. Requires app-admin ('manage_apps'). */
3007
3125
  gameModelGrantTierFeature: GmTierFeature;
3008
3126
  /** Invoke a studio-defined function against a 'self' container with JSON params. The server enforces the function's invoke policy (authority rule tree: owner_of_self / is_host / is_current_turn / is_participant / tier_feature / group_permission / grid_permission / condition), evaluates its expressions, atomically applies its declared property mutations, logs an event, and returns the result (return value + mutations applied, or success=false with an error message). This is the primary, safe way for players to mutate game state. Requires a valid token; only player-scope functions are invocable here. */
@@ -3055,11 +3173,13 @@ export type Mutation = {
3055
3173
  leaveTeam: Scalars['Boolean']['output'];
3056
3174
  /** Links an unlinked app to an existing environment for split-mode routing. Refuses shared apps and apps already linked elsewhere. Requires the 'manage_environments' org permission. */
3057
3175
  linkAppToEnvironment: App;
3058
- /** Authenticates with email + password and starts a new session. Returns an AuthResponse whose `token` must be sent on subsequent requests as `Authorization: Bearer <token>`. Public (no auth required); throws on invalid credentials. */
3176
+ /** Link an additional federated identity (from a socialLoginStart callback) to the signed-in account. Requires a session token; throws if the identity is already linked to another account. */
3177
+ linkIdentity: UserIdentity;
3178
+ /** Authenticates with email + password and starts a new session. Returns an AuthResponse whose `token` must be sent on subsequent requests as `Authorization: Bearer <token>`. Public (no auth required); throws on invalid credentials. If the account also has another verified sign-in method, the password must first be email-confirmed. */
3059
3179
  login: AuthResponse;
3060
3180
  /** Single-device logout: revokes the game token that authenticated this request by deleting its game_tokens row. Returns true if a token was revoked, false if the request had no game token. Other devices/tokens are unaffected (use the Management API to revoke all devices). After this, the bearer token is rejected and any open UDP proxy session will no longer authorize new traffic. */
3061
3181
  logout: Scalars['Boolean']['output'];
3062
- /** Ends every active session for the authenticated user (deletes all their game_tokens and records revocations). Requires a valid session token. Use logout to end only the current session. */
3182
+ /** Ends every active session for the authenticated user (deletes all their game_tokens and records revocations). Requires a valid session token. */
3063
3183
  logoutAllDevices: Scalars['Boolean']['output'];
3064
3184
  /** Mint a short-lived, app-scoped gameplay token for the calling user (native/direct path; no browser redirect). Requires an identity SESSION token (app tokens cannot mint). Free/open apps auto-grant access; paid apps require an existing entitlement (else FORBIDDEN). Side effect: may create an app_user_access row on the app's free default tier. */
3065
3185
  mintAppToken: AppTokenResponse;
@@ -3077,7 +3197,7 @@ export type Mutation = {
3077
3197
  redeployEnvironment: CksEnvironmentChangeOrder;
3078
3198
  /** Rotate the calling app token for a fresh one (same app, extended TTL) and revoke the old. Call before the current token expires to keep playing without bouncing back through the Overworld. Allowed for app-scoped tokens; re-checks entitlement. */
3079
3199
  refreshAppToken: AppTokenResponse;
3080
- /** Creates a new (initially unconfirmed) account, sends a confirmation email, and returns an AuthResponse with a session `token` for immediate login (send as `Authorization: Bearer <token>`). Public; throws if the email already exists. */
3200
+ /** Registers a new email + password account: creates the (initially unconfirmed) account, emails a confirmation link, and returns an AuthResponse with a session `token` for immediate use (send as `Authorization: Bearer <token>`). If an account already exists for the email (e.g. created via magic link/social), the password is attached pending email confirmation and no session is returned (throws CONFLICT). Public. */
3081
3201
  register: AuthResponse;
3082
3202
  /** Remove a member from a channel. Requires the 'manage_members' channel permission, except that any member may remove themselves. Notifies Buddy to stop routing to the removed member. Returns true if a membership was removed. */
3083
3203
  removeChannelMember: Scalars['Boolean']['output'];
@@ -3087,7 +3207,9 @@ export type Mutation = {
3087
3207
  removeSharedPaymentMethod: Scalars['Boolean']['output'];
3088
3208
  /** Remove a member from a team. Requires the 'manage_members' team permission, except that any member may remove themselves. DESTRUCTIVE: drops the membership and its roles. Returns true if a membership was removed. */
3089
3209
  removeTeamMember: Scalars['Boolean']['output'];
3090
- /** Starts the password-reset flow by emailing a reset link to the address. Always returns true regardless of whether the email exists or is confirmed (prevents account enumeration). Public. */
3210
+ /** Passwordless: email a one-time magic sign-in link to the address (creates the account on first sign-in). Always reports sent=true (no account enumeration). Public. */
3211
+ requestLoginLink: RequestLoginLinkResult;
3212
+ /** Starts the password-reset flow by emailing a reset link to the address. Always returns true regardless of whether the email exists (prevents account enumeration). The reset link is also the ownership-proven way an existing passwordless account adds a password. Public. */
3091
3213
  requestPasswordReset: Scalars['Boolean']['output'];
3092
3214
  /** Request to join a request-only channel (creates a pending membership a manager can approve via addChannelMember). Behaves identically to joinChannel; named for request-policy UIs. */
3093
3215
  requestToJoinChannel: GroupMember;
@@ -3103,6 +3225,8 @@ export type Mutation = {
3103
3225
  resumeEnvironment: CksEnvironmentChangeOrder;
3104
3226
  /** Revoke a user's access to an app by setting their app_user_access status to 'revoked', and notifies the game API so the user immediately loses runtime access in Buddy. Requires the 'manage_access_tiers' permission on the app; super admins bypass. The row is retained for audit (not deleted); REVERSIBLE via grantAppAccess. */
3105
3227
  revokeAppAccess: AppUserAccess;
3228
+ /** Revoke a previously-granted app authorization and immediately revoke the user's live app tokens for it. Requires a SESSION token. */
3229
+ revokeAppAuthorization: Scalars['Boolean']['output'];
3106
3230
  /** Revoke a user's direct grants on a grid (deletes from the `grid_user_direct_grants` input table) and recompute their materialized effective ACL. Omit `permissionKeys` to remove ALL of the user's direct grants on the grid; pass a subset to remove only those keys. Does not affect permissions the user receives via group grants. Requires app-admin ('manage_apps'). DESTRUCTIVE for the targeted grants. Returns the user's remaining effective permission keys on the grid. */
3107
3231
  revokeGridPermissions: GridUserPermissions;
3108
3232
  /** Revoke group/role grants on a grid (deletes from the `grid_group_grants` input table) and recompute the materialized effective ACL. Omit `permissionKeys` to revoke ALL of the group/role's grants on the grid; pass a subset to revoke only those keys. Requires app-admin ('manage_apps'). DESTRUCTIVE: removes the granted permissions from every affected member. Returns the group's remaining grants on the grid. */
@@ -3111,7 +3235,7 @@ export type Mutation = {
3111
3235
  revokeOrgToken: Scalars['Boolean']['output'];
3112
3236
  /** Reverts every voxel edit made by `userId` in `appId` between `from` and `to`, returning one RollbackVoxelEventResult per affected voxel (`applied` tells you whether each was actually changed). DEFAULTS to dryRun=true, which only PREVIEWS the planned reversions without writing; pass dryRun=false to actually apply them (DESTRUCTIVE — mutates world state). Requires a valid bearer token AND the `manage_apps` permission on the org that owns `appId` (super admins bypass). */
3113
3237
  rollbackVoxelUpdates: Array<RollbackVoxelEventResult>;
3114
- /** Send an actor (player/NPC) state update for spatial replication to nearby chunks. Requires a bearer game token; opens a UDP proxy session automatically if none exists. Returns Boolean! that is true only when the datagram was ACCEPTED FOR SENDING to the game server — it does NOT confirm the world applied the update. The applied echo (ActorUpdateResponse) and any failure (GenericErrorResponse) arrive ASYNCHRONOUSLY on the udpNotifications subscription, correlated by the request sequenceNumber (correlation only — not an idempotency key; the server does not dedupe replays). Subscribe to udpNotifications before sending so the reply is not missed. */
3238
+ /** Send an actor (player/NPC) state update for spatial replication to nearby chunks. Requires a bearer game token; opens a UDP proxy session automatically if none exists. Returns Boolean! that is true only when the datagram was ACCEPTED FOR SENDING to the game server — it does NOT confirm the world applied the update. There is NO separate per-request success response: the game server fans the update out to every client in the target chunk INCLUDING the sender, so you observe your own applied update as an ActorUpdateNotification carrying the same sequenceNumber (ActorUpdateResponse is legacy and is never emitted). Failures arrive ASYNCHRONOUSLY as a GenericErrorResponse; both are correlated by the request sequenceNumber (correlation only — not an idempotency key; the server does not dedupe replays). Subscribe to udpNotifications before sending so the self-notification/error is not missed. */
3115
3239
  sendActorUpdate: Scalars['Boolean']['output'];
3116
3240
  /** Send a spatial voice/audio packet, fanned out to nearby actors as a ClientAudioNotification. Requires a bearer game token; voice may additionally be gated by a runtime/grid permission for the region — if the caller lacks it the game server responds asynchronously with a GenericErrorResponse (errorCode UNAUTHORIZED). Opens a UDP proxy session automatically if none exists. Returns Boolean! that is true only when the datagram was ACCEPTED FOR SENDING — NOT that it was delivered; the sender receives no echo, only errors (GenericErrorResponse, correlated by sequenceNumber) on udpNotifications. sequenceNumber is correlation only, not an idempotency key. */
3117
3241
  sendAudioPacket: Scalars['Boolean']['output'];
@@ -3123,10 +3247,14 @@ export type Mutation = {
3123
3247
  sendSingleActorMessage: Scalars['Boolean']['output'];
3124
3248
  /** Send a spatial text/chat packet, fanned out to nearby actors as a ClientTextNotification. Requires a bearer game token; opens a UDP proxy session automatically if none exists. Returns Boolean! that is true only when the datagram was ACCEPTED FOR SENDING to the game server — NOT confirmation of delivery. The sender receives no echo; failures arrive ASYNCHRONOUSLY as GenericErrorResponse on udpNotifications, correlated by the request sequenceNumber (correlation only — not an idempotency key; the server does not dedupe replays). */
3125
3249
  sendTextPacket: Scalars['Boolean']['output'];
3126
- /** Send a single voxel (block) update for spatial replication to nearby chunks. Requires a bearer game token; opens a UDP proxy session automatically if none exists. Returns Boolean! that is true only when the datagram was ACCEPTED FOR SENDING to the game server — NOT confirmation that the world applied the change. The applied echo (VoxelUpdateResponse) and any failure (GenericErrorResponse) arrive ASYNCHRONOUSLY on udpNotifications, correlated by the request sequenceNumber (correlation only — not an idempotency key; the server does not dedupe replays). */
3250
+ /** Send a single voxel (block) update for spatial replication to nearby chunks. Requires a bearer game token; opens a UDP proxy session automatically if none exists. Returns Boolean! that is true only when the datagram was ACCEPTED FOR SENDING to the game server — NOT confirmation that the world applied the change. There is NO separate per-request success response: the change fans out to nearby clients (the sender included) as a VoxelUpdateNotification carrying the same sequenceNumber (VoxelUpdateResponse is legacy and is never emitted). Failures arrive ASYNCHRONOUSLY as a GenericErrorResponse; both are correlated by the request sequenceNumber (correlation only — not an idempotency key; the server does not dedupe replays). */
3127
3251
  sendVoxelUpdate: Scalars['Boolean']['output'];
3128
3252
  /** Creates or updates an app's monthly spend cap (idempotent upsert keyed by org + app) and returns the resulting budget. This only records the cap used to monitor/limit overspend; it does not move money, charge a card, or alter the wallet balance. Requires the 'manage_billing' app permission. */
3129
3253
  setAppBudget: AppBudget;
3254
+ /** Register/update an app's portal client settings (redirect_uris, client_type, launch_url). Requires manage_apps on the app and a SESSION token. */
3255
+ setAppClientSettings: PortalConsentState;
3256
+ /** Reserve sustained egress throughput for a shared app (bypasses the ~1 MB/s free-tier rate limit). Billed at $3/MB/s/month from the org wallet; upgrades are prorated for the current month. Requires 'manage_billing' on the app's org. */
3257
+ setAppReservedThroughput: SetAppReservedThroughputResult;
3130
3258
  /** Sets per-app hourly/daily spend caps (in cents) and returns the re-evaluated runtime state. Pass null for a limit to clear that cap. Exceeding a cap denies the app's runtime (runtimeDenialReason = spend_cap). Requires the 'manage_billing' permission on the app's org. */
3131
3259
  setAppSpendCaps: AppRuntimeState;
3132
3260
  /** Super admin only (also requires the management API to be enabled for this deployment). Overrides an app visibility platform-wide, e.g. to take down (PRIVATE/UNLISTED) or relist (PUBLIC) an app. Throws ForbiddenException for non-super-admins or when management APIs are disabled. Throws if the app id does not exist. */
@@ -3157,8 +3285,14 @@ export type Mutation = {
3157
3285
  setTeamPolicy: AppGroupPolicy;
3158
3286
  /** Begins vaulting a card for off-session auto-billing. Returns a Stripe SetupIntent client secret the browser confirms; no charge is made here. Requires the 'manage_billing' org permission. */
3159
3287
  setupSharedPaymentMethod: PaymentMethodSetup;
3288
+ /** Complete a federated sign-in from the provider callback (code + state). Returns a session AuthResponse, creating/linking the account by provider identity. Public. */
3289
+ socialLoginComplete: AuthResponse;
3290
+ /** Begin a federated (social) sign-in: returns an authorizeUrl to redirect the user to and an opaque state to round-trip back to socialLoginComplete. Public. */
3291
+ socialLoginStart: SocialLoginStart;
3160
3292
  /** Checks whether the authenticated user is allowed to teleport an actor to a destination within an app and returns the authorization result. This is an authorization check only — it does NOT itself move the actor; the UDP runtime performs the actual movement. Requires a valid bearer game token plus the app-level "teleport" runtime permission. Returns success=false with errorCode INVALID_APP_ID (non-positive appId), UNAUTHORIZED (reserved sentinel destination -6,-6,-6 or missing permission), or success=true / NO_ERROR when allowed. */
3161
3293
  teleportRequest: TeleportResponse;
3294
+ /** Unlink a federated identity from the signed-in account by identityId. Refuses to remove your last remaining sign-in method. Requires a session token. */
3295
+ unlinkIdentity: Scalars['Boolean']['output'];
3162
3296
  /** Update an existing access tier (name, ordering, pricing, permissions, etc.); only fields present in the input are changed. Requires the 'manage_access_tiers' permission on the app that owns the tier (resolved from tierId); super admins bypass. SIDE EFFECTS: re-syncs the tier's permissions to the game API. Throws if the tier is not found or the caller lacks permission. */
3163
3297
  updateAccessTier: AppAccessTier;
3164
3298
  /** Partially updates an actor (appId, avatarId, chunk, publicState, privateState); fields omitted from `input` are left unchanged. OWNER-EXCLUSIVE: only the actor’s owner may update (throws Unauthorized otherwise). Requires a valid game token. `uuid` is the 32-character ASCII actor id. */
@@ -3232,6 +3366,9 @@ export type MutationArchiveAppArgs = {
3232
3366
  export type MutationAssignGroupToGridArgs = {
3233
3367
  input: AssignGroupToGridInput;
3234
3368
  };
3369
+ export type MutationAuthorizeAppArgs = {
3370
+ input: AuthorizeAppInput;
3371
+ };
3235
3372
  export type MutationCancelSharedSubscriptionArgs = {
3236
3373
  appId: Scalars['BigInt']['input'];
3237
3374
  idempotencyKey?: InputMaybe<Scalars['String']['input']>;
@@ -3247,6 +3384,9 @@ export type MutationChangePasswordArgs = {
3247
3384
  export type MutationClaimFreeAppAccessArgs = {
3248
3385
  appId: Scalars['BigInt']['input'];
3249
3386
  };
3387
+ export type MutationCompleteLoginLinkArgs = {
3388
+ input: CompleteLoginLinkInput;
3389
+ };
3250
3390
  export type MutationConfirmEmailArgs = {
3251
3391
  token: Scalars['String']['input'];
3252
3392
  };
@@ -3337,6 +3477,9 @@ export type MutationDeleteUserAppStateArgs = {
3337
3477
  export type MutationDestroyEnvironmentArgs = {
3338
3478
  input: DestroyEnvironmentInput;
3339
3479
  };
3480
+ export type MutationDevLoginArgs = {
3481
+ input: DevLoginInput;
3482
+ };
3340
3483
  export type MutationExchangePortalCodeArgs = {
3341
3484
  input: ExchangePortalCodeInput;
3342
3485
  };
@@ -3363,10 +3506,27 @@ export type MutationGameModelDeleteAutomationTriggerArgs = {
3363
3506
  appId: Scalars['BigInt']['input'];
3364
3507
  triggerId: Scalars['String']['input'];
3365
3508
  };
3509
+ export type MutationGameModelDeleteContainerArgs = {
3510
+ appId: Scalars['BigInt']['input'];
3511
+ containerId: Scalars['String']['input'];
3512
+ };
3513
+ export type MutationGameModelDeleteContainerTypeArgs = {
3514
+ appId: Scalars['BigInt']['input'];
3515
+ typeName: Scalars['String']['input'];
3516
+ };
3517
+ export type MutationGameModelDeleteEdgeArgs = {
3518
+ appId: Scalars['BigInt']['input'];
3519
+ edgeId: Scalars['String']['input'];
3520
+ };
3366
3521
  export type MutationGameModelDeleteFunctionArgs = {
3367
3522
  appId: Scalars['BigInt']['input'];
3368
3523
  name: Scalars['String']['input'];
3369
3524
  };
3525
+ export type MutationGameModelDeletePropertyDefArgs = {
3526
+ appId: Scalars['BigInt']['input'];
3527
+ containerTypeName: Scalars['String']['input'];
3528
+ key: Scalars['String']['input'];
3529
+ };
3370
3530
  export type MutationGameModelGrantTierFeatureArgs = {
3371
3531
  input: GrantTierFeatureInput;
3372
3532
  };
@@ -3449,6 +3609,9 @@ export type MutationLeaveTeamArgs = {
3449
3609
  export type MutationLinkAppToEnvironmentArgs = {
3450
3610
  input: LinkAppToEnvironmentInput;
3451
3611
  };
3612
+ export type MutationLinkIdentityArgs = {
3613
+ input: LinkIdentityInput;
3614
+ };
3452
3615
  export type MutationLoginArgs = {
3453
3616
  loginUserInput: LoginUserInput;
3454
3617
  };
@@ -3505,6 +3668,9 @@ export type MutationRemoveTeamMemberArgs = {
3505
3668
  groupId: Scalars['BigInt']['input'];
3506
3669
  userId: Scalars['BigInt']['input'];
3507
3670
  };
3671
+ export type MutationRequestLoginLinkArgs = {
3672
+ input: RequestLoginLinkInput;
3673
+ };
3508
3674
  export type MutationRequestPasswordResetArgs = {
3509
3675
  email: Scalars['String']['input'];
3510
3676
  };
@@ -3531,6 +3697,9 @@ export type MutationRevokeAppAccessArgs = {
3531
3697
  idempotencyKey?: InputMaybe<Scalars['String']['input']>;
3532
3698
  userId: Scalars['BigInt']['input'];
3533
3699
  };
3700
+ export type MutationRevokeAppAuthorizationArgs = {
3701
+ appId: Scalars['BigInt']['input'];
3702
+ };
3534
3703
  export type MutationRevokeGridPermissionsArgs = {
3535
3704
  input: RevokeGridPermissionsInput;
3536
3705
  };
@@ -3571,6 +3740,13 @@ export type MutationSetAppBudgetArgs = {
3571
3740
  monthlyLimitCents: Scalars['BigInt']['input'];
3572
3741
  orgId: Scalars['BigInt']['input'];
3573
3742
  };
3743
+ export type MutationSetAppClientSettingsArgs = {
3744
+ input: SetAppClientSettingsInput;
3745
+ };
3746
+ export type MutationSetAppReservedThroughputArgs = {
3747
+ idempotencyKey?: InputMaybe<Scalars['String']['input']>;
3748
+ input: SetAppReservedThroughputInput;
3749
+ };
3574
3750
  export type MutationSetAppSpendCapsArgs = {
3575
3751
  appId: Scalars['BigInt']['input'];
3576
3752
  dailyLimitCents?: InputMaybe<Scalars['BigInt']['input']>;
@@ -3630,9 +3806,18 @@ export type MutationSetupSharedPaymentMethodArgs = {
3630
3806
  idempotencyKey?: InputMaybe<Scalars['String']['input']>;
3631
3807
  orgId: Scalars['BigInt']['input'];
3632
3808
  };
3809
+ export type MutationSocialLoginCompleteArgs = {
3810
+ input: SocialLoginCompleteInput;
3811
+ };
3812
+ export type MutationSocialLoginStartArgs = {
3813
+ input: SocialLoginStartInput;
3814
+ };
3633
3815
  export type MutationTeleportRequestArgs = {
3634
3816
  input: TeleportRequestInput;
3635
3817
  };
3818
+ export type MutationUnlinkIdentityArgs = {
3819
+ identityId: Scalars['String']['input'];
3820
+ };
3636
3821
  export type MutationUpdateAccessTierArgs = {
3637
3822
  input: UpdateAccessTierInput;
3638
3823
  tierId: Scalars['BigInt']['input'];
@@ -3753,6 +3938,20 @@ export type NotificationArgInput = {
3753
3938
  /** Argument name (kind-specific: chunk_x, channel_id, payload, target_uuid, ...). */
3754
3939
  name: Scalars['String']['input'];
3755
3940
  };
3941
+ /** Per-app projection row within an org rollup. */
3942
+ export type OrgAppUsageProjectionRow = {
3943
+ __typename?: 'OrgAppUsageProjectionRow';
3944
+ /** App id (as a string). */
3945
+ appId: Scalars['String']['output'];
3946
+ /** App display name. */
3947
+ appName: Scalars['String']['output'];
3948
+ /** Egress bytes so far this calendar month. */
3949
+ currentEgressBytes: Scalars['String']['output'];
3950
+ /** True when this app is on track to exceed its free allowance, or null when insufficient data. */
3951
+ onTrackToExceed: Maybe<Scalars['Boolean']['output']>;
3952
+ /** Projected end-of-month egress bytes, or null when insufficient data. */
3953
+ projectedBytes: Maybe<Scalars['String']['output']>;
3954
+ };
3756
3955
  /** Org off-session auto-billing configuration. */
3757
3956
  export type OrgAutoBilling = {
3758
3957
  __typename?: 'OrgAutoBilling';
@@ -3871,6 +4070,40 @@ export type OrgTokenWithSecret = {
3871
4070
  /** The plaintext token. Save it now; it is not stored. */
3872
4071
  token: Scalars['String']['output'];
3873
4072
  };
4073
+ /** Org-level rollup of per-app monthly egress projections for all shared apps. */
4074
+ export type OrgUsageProjection = {
4075
+ __typename?: 'OrgUsageProjection';
4076
+ /** Per-app projection breakdown. */
4077
+ apps: Array<OrgAppUsageProjectionRow>;
4078
+ /** Fractional UTC days elapsed since the calendar month started. */
4079
+ daysElapsed: Scalars['Float']['output'];
4080
+ /** True when any shared app is on track to exceed its free allowance. */
4081
+ onTrackToExceedAny: Scalars['Boolean']['output'];
4082
+ /** True when at least 3 days have elapsed in the month (projection is meaningful). */
4083
+ sufficientData: Scalars['Boolean']['output'];
4084
+ /** True when org total projected egress exceeds the combined free tier — suggest reserved throughput. */
4085
+ suggestReservedThroughput: Scalars['Boolean']['output'];
4086
+ /** Total free monthly egress allowance across all shared apps in the org (apps × 5 GB). */
4087
+ totalFreeAllowanceBytes: Scalars['String']['output'];
4088
+ /** Sum of projected end-of-month egress across shared apps, or null when insufficient data. */
4089
+ totalProjectedBytes: Maybe<Scalars['String']['output']>;
4090
+ };
4091
+ /** Org-level rollup of replication/GraphQL byte totals and GraphQL op counts across all apps in the organization for the time window. */
4092
+ export type OrgUsageSummary = {
4093
+ __typename?: 'OrgUsageSummary';
4094
+ /** Total GraphQL bytes received across all org apps (string counter). */
4095
+ graphqlRecvBytes: Scalars['String']['output'];
4096
+ /** Total GraphQL bytes sent across all org apps (string counter). */
4097
+ graphqlSendBytes: Scalars['String']['output'];
4098
+ /** Organization id (as a string). */
4099
+ orgId: Scalars['String']['output'];
4100
+ /** Total replication bytes received across all org apps (string counter). */
4101
+ replicationRecvBytes: Scalars['String']['output'];
4102
+ /** Total replication bytes sent across all org apps (string counter). */
4103
+ replicationSendBytes: Scalars['String']['output'];
4104
+ /** Total GraphQL operations (send + recv) across all org apps (string counter). */
4105
+ totalOps: Scalars['String']['output'];
4106
+ };
3874
4107
  export type OrgWallet = {
3875
4108
  __typename?: 'OrgWallet';
3876
4109
  /** Current wallet balance in minor currency units (cents) of `currency`, as a BigInt decimal string. May be negative if usage was charged against an empty wallet. */
@@ -4012,6 +4245,20 @@ export type PortalAuthorizationCode = {
4012
4245
  /** The validated redirect URI the player should be sent to. */
4013
4246
  redirectUri: Scalars['String']['output'];
4014
4247
  };
4248
+ /** Whether portaling into an app requires a consent prompt on the Overworld. */
4249
+ export type PortalConsentState = {
4250
+ __typename?: 'PortalConsentState';
4251
+ /** True if the user already has an active grant for this app. */
4252
+ alreadyGranted: Scalars['Boolean']['output'];
4253
+ /** App id, as a String. */
4254
+ appId: Scalars['String']['output'];
4255
+ /** App display name. */
4256
+ appName: Maybe<Scalars['String']['output']>;
4257
+ /** True if the Overworld must show a consent screen (untrusted app, not yet granted) before creating a portal code. */
4258
+ consentRequired: Scalars['Boolean']['output'];
4259
+ /** True for first-party/trusted apps (consent is always skipped). */
4260
+ trusted: Scalars['Boolean']['output'];
4261
+ };
4015
4262
  /** Postgres billing tier: bandwidth allotment and capacity charge. Usage metering deferred. */
4016
4263
  export type PostgresBillingTier = {
4017
4264
  __typename?: 'PostgresBillingTier';
@@ -4060,6 +4307,8 @@ export type Query = {
4060
4307
  actors: Array<Actor>;
4061
4308
  /** Relay-style cursor-paginated version of `actors`: lists actors owned by the authenticated user, optionally narrowed by `filter` (appId, avatarId, uuid, chunk). Page forward with `first` (default 50, max 200) and `after` (an opaque cursor from a previous page’s `pageInfo.endCursor`); `totalCount` is the full number of matching actors. Requires a valid game token; only the caller’s own actors are returned (full state included). */
4062
4309
  actorsConnection: ActorsConnection;
4310
+ /** Convenience for UI: returns true when the authenticated caller is the currently elected host for the given app (same election as gameHost), otherwise false (including when no host is elected). Not authoritative for server-side mutations — use gameModelInvoke's is_host policy for that. Requires a valid bearer game token (same auth as gameHost). */
4311
+ amIGameHost: Scalars['Boolean']['output'];
4063
4312
  /** Fetch a single app by its numeric id. Requires authentication (any signed-in user); does NOT enforce org/app permissions, so it can read apps the caller does not own, of any visibility/status. Returns null if the id does not exist. Prefer appBySlug for slug-based marketplace lookups. */
4064
4313
  app: Maybe<App>;
4065
4314
  /** Public listing of an app's access tiers (the free/paid bundles of runtime permissions), ordered by tierOrder ascending. PUBLIC: no authentication required. Powers the marketplace app detail / pricing page. Includes tiers of all statuses; inspect AppAccessTier.status to skip archived tiers. */
@@ -4078,6 +4327,8 @@ export type Query = {
4078
4327
  appRuntimeState: AppRuntimeState;
4079
4328
  /** An app's paid shared-environment subscription, or null when it has none (e.g. unpublished or on the free quota). Caller must be a member of the app's org. */
4080
4329
  appSharedSubscription: Maybe<AppSharedSubscription>;
4330
+ /** Linear end-of-month egress projection for one shared app from calendar-month usage so far. Requires at least 3 elapsed days in the month before returning projected values. Requires the 'view_usage' org permission. */
4331
+ appUsageProjection: AppUsageProjection;
4081
4332
  /** Replication and GraphQL byte totals plus the top GraphQL operations for one app over the time range. Read-only reporting; the app must be linked to an environment in the org. Requires the 'view_usage' org permission. */
4082
4333
  appUsageSummary: AppUsageSummary;
4083
4334
  /** Admin view of the user access records for an app (who has been granted/revoked access and on which tier). Requires the 'manage_access_tiers' permission on the app; super admins bypass. Ordered by most recently updated. Paginated via limit/offset. */
@@ -4090,6 +4341,8 @@ export type Query = {
4090
4341
  appsConnection: AppsConnection;
4091
4342
  /** All apps belonging to an organization, identified by the org's slug, regardless of visibility or status (includes drafts and archived). Requires authentication; intended for org dashboards. Ordered newest-first. Returns an empty list for an unknown slug. */
4092
4343
  appsForOrg: Array<App>;
4344
+ /** The federated sign-in providers currently enabled (e.g. ['google']). Use one with socialLoginStart. The dev mock provider only appears when the dev bypass is enabled. */
4345
+ availableLoginProviders: Array<Scalars['String']['output']>;
4093
4346
  /** Fetches a single avatar by id. Requires a valid game token. Owner-aware: the owner receives full state; non-owners receive a public copy with `privateState` stripped (null). Throws NotFound if the id does not exist. State blobs are base64-encoded binary. */
4094
4347
  avatar: Avatar;
4095
4348
  /** Reads one avatar’s per-app state (keyed by appId+avatarId). PUBLIC READ: any authenticated user may read it. Requires a valid game token. Returns null when no row exists. `state` is base64-encoded binary. */
@@ -4110,6 +4363,8 @@ export type Query = {
4110
4363
  channelRoles: Array<GroupRole>;
4111
4364
  /** List all active channels in an app (not just the caller's). */
4112
4365
  channels: Array<Group>;
4366
+ /** Email-first adaptive login: check whether the account has password sign-in enabled. Public; does not reveal whether the email is registered. */
4367
+ checkAuthMethod: AuthMethodResult;
4113
4368
  /** Cross-tenant payments audit across all users, orgs, and apps (newest first), with optional filtering. Restricted to super admins; requests from non-super-admins are rejected. For a caller's own history use `myCheckouts` instead. */
4114
4369
  checkouts: CheckoutsPage;
4115
4370
  /** Cross-tenant payments audit across all users, orgs, and apps (newest first), with optional filtering. Restricted to super admins; requests from non-super-admins are rejected. For a caller's own history use `myCheckoutsConnection` instead. Relay cursor connection; prefer this over the offset-based checkouts. */
@@ -4234,6 +4489,8 @@ export type Query = {
4234
4489
  myAppAccess: Maybe<AppUserAccess>;
4235
4490
  /** Apps the authenticated caller can see in their account: those owned by an org they are an active member of, OR those where they hold an active app_user_access grant. Requires authentication. Includes apps of any visibility/status (e.g. drafts the caller can access). Ordered newest-first. */
4236
4491
  myApps: Array<App>;
4492
+ /** The calling user's active app authorizations ("connected apps"). Requires a SESSION token. */
4493
+ myAuthorizedApps: Array<AppAuthorizationGrant>;
4237
4494
  /** Lists all avatars owned by the authenticated user, including full `publicState` and `privateState` (the caller is always the owner here). Requires a valid bearer game token; takes no arguments. State blobs are base64-encoded binary. Use `userAvatars` to view another user’s avatars (private state is stripped for non-owners). */
4238
4495
  myAvatars: Array<AvatarDto>;
4239
4496
  /** The caller's channels in an app, with their roles and effective channel permissions (e.g. whether they hold send_messages). Use this to discover which channels the current user can read/post in. */
@@ -4247,6 +4504,8 @@ export type Query = {
4247
4504
  * @deprecated Legacy donation/property-token data; these products are no longer purchasable. Retained for historical records.
4248
4505
  */
4249
4506
  myDonationData: UserDonationData;
4507
+ /** The signed-in user's linked sign-in identities. */
4508
+ myIdentities: Array<UserIdentity>;
4250
4509
  /** Lists the authenticated caller's organization memberships. Each entry bundles the org, the caller's effective permission keys, and assigned roles. Requires a valid session token. */
4251
4510
  myOrganizations: Array<OrgMembership>;
4252
4511
  /**
@@ -4280,6 +4539,10 @@ export type Query = {
4280
4539
  orgTokens: Array<OrgToken>;
4281
4540
  /** Aggregate replication/GraphQL byte totals per environment across the org for the time window. Read-only reporting. Requires the 'view_usage' org permission. */
4282
4541
  orgUsageByEnvironment: Array<EnvironmentUsageRollupRow>;
4542
+ /** Org rollup of per-app monthly egress projections for all shared apps, with upgrade prompts when on track to exceed free tier. Requires the 'view_usage' org permission. */
4543
+ orgUsageProjection: OrgUsageProjection;
4544
+ /** Org-level rollup of replication/GraphQL byte totals and GraphQL op counts across all apps in the organization for the time window. Read-only reporting. Requires the 'view_usage' org permission. */
4545
+ orgUsageSummary: OrgUsageSummary;
4283
4546
  /** Fetches an organization by id (BigInt as string). Requires a valid session token. Returns null if no such organization exists. */
4284
4547
  organization: Maybe<Organization>;
4285
4548
  /** Fetches an organization by its unique URL slug. Requires a valid session token. Returns null if not found. Use this when you only have the slug; otherwise prefer organization(id). */
@@ -4288,10 +4551,12 @@ export type Query = {
4288
4551
  paymentEvents: PaymentEventsPage;
4289
4552
  /** Audit log of inbound payment-provider webhook events (used for idempotent reconciliation of checkouts), newest first. Restricted to super admins; requests from non-super-admins are rejected. Relay cursor connection; prefer this over the offset-based paymentEvents. */
4290
4553
  paymentEventsConnection: PaymentEventsConnection;
4291
- /** Public platform discovery. Returns the shared game-api URL clients use for shared-environment apps. No auth required. */
4554
+ /** Public platform discovery. Returns the shared game-api URL clients use for shared-environment apps (served by the platform shared environment). No auth required. */
4292
4555
  platformConfig: PlatformConfig;
4293
4556
  /** Live concurrent players for the org vs its all-time peak, a percentile comparison against other studios, and the site-wide total. Requires the 'view_usage' org permission. */
4294
4557
  playerPulse: PlayerPulse;
4558
+ /** Whether portaling the calling user into an app needs a consent prompt. Trusted (first-party) apps and already-granted apps return consentRequired=false. The Overworld calls this before createPortalAuthorizationCode. Requires a SESSION token. */
4559
+ portalConsent: PortalConsentState;
4295
4560
  /** Public read-only catalog of active Postgres billing tiers. Usage metering deferred. */
4296
4561
  postgresBillingTiers: Array<PostgresBillingTier>;
4297
4562
  /** Lists the app-scoped quota rules explicitly configured for an app (excludes org-, tier-, and free-tier-default quotas). Use `effectiveQuota` to resolve the limit actually applied for a given metric. Requires the 'view_usage' app permission. */
@@ -4352,6 +4617,9 @@ export type QueryActorsConnectionArgs = {
4352
4617
  filter?: InputMaybe<ActorFilterInput>;
4353
4618
  first?: InputMaybe<Scalars['Int']['input']>;
4354
4619
  };
4620
+ export type QueryAmIGameHostArgs = {
4621
+ appId: Scalars['BigInt']['input'];
4622
+ };
4355
4623
  export type QueryAppArgs = {
4356
4624
  appId: Scalars['BigInt']['input'];
4357
4625
  };
@@ -4384,6 +4652,10 @@ export type QueryAppRuntimeStateArgs = {
4384
4652
  export type QueryAppSharedSubscriptionArgs = {
4385
4653
  appId: Scalars['BigInt']['input'];
4386
4654
  };
4655
+ export type QueryAppUsageProjectionArgs = {
4656
+ appId: Scalars['BigInt']['input'];
4657
+ orgId: Scalars['BigInt']['input'];
4658
+ };
4387
4659
  export type QueryAppUsageSummaryArgs = {
4388
4660
  appId: Scalars['BigInt']['input'];
4389
4661
  operationLimit?: InputMaybe<Scalars['Int']['input']>;
@@ -4444,6 +4716,9 @@ export type QueryChannelRolesArgs = {
4444
4716
  export type QueryChannelsArgs = {
4445
4717
  appId: Scalars['BigInt']['input'];
4446
4718
  };
4719
+ export type QueryCheckAuthMethodArgs = {
4720
+ input: CheckAuthMethodInput;
4721
+ };
4447
4722
  export type QueryCheckoutsArgs = {
4448
4723
  filter?: InputMaybe<CheckoutFilterInput>;
4449
4724
  limit?: InputMaybe<Scalars['Int']['input']>;
@@ -4704,6 +4979,13 @@ export type QueryOrgUsageByEnvironmentArgs = {
4704
4979
  orgId: Scalars['BigInt']['input'];
4705
4980
  since: Scalars['DateTime']['input'];
4706
4981
  };
4982
+ export type QueryOrgUsageProjectionArgs = {
4983
+ orgId: Scalars['BigInt']['input'];
4984
+ };
4985
+ export type QueryOrgUsageSummaryArgs = {
4986
+ orgId: Scalars['BigInt']['input'];
4987
+ since?: InputMaybe<Scalars['DateTime']['input']>;
4988
+ };
4707
4989
  export type QueryOrganizationArgs = {
4708
4990
  id: Scalars['BigInt']['input'];
4709
4991
  };
@@ -4721,6 +5003,9 @@ export type QueryPaymentEventsConnectionArgs = {
4721
5003
  export type QueryPlayerPulseArgs = {
4722
5004
  orgId: Scalars['BigInt']['input'];
4723
5005
  };
5006
+ export type QueryPortalConsentArgs = {
5007
+ appId: Scalars['BigInt']['input'];
5008
+ };
4724
5009
  export type QueryQuotasForAppArgs = {
4725
5010
  appId: Scalars['BigInt']['input'];
4726
5011
  };
@@ -4827,6 +5112,21 @@ export type RegisterUserInput = {
4827
5112
  /** Password for the new account (min 8 characters). */
4828
5113
  password: Scalars['String']['input'];
4829
5114
  };
5115
+ /** Request an emailed magic-link to sign in (passwordless). */
5116
+ export type RequestLoginLinkInput = {
5117
+ /** Email address to send the one-time sign-in link to. */
5118
+ email: Scalars['String']['input'];
5119
+ /** Where to send the user after they click the link (origin must be an allowed app/UI origin). Defaults to the platform sign-in page. */
5120
+ redirectUri?: InputMaybe<Scalars['String']['input']>;
5121
+ };
5122
+ /** Result of requesting a magic link. */
5123
+ export type RequestLoginLinkResult = {
5124
+ __typename?: 'RequestLoginLinkResult';
5125
+ /** DEV ONLY: when DEV_AUTH_BYPASS is enabled (so no email is delivered), the one-time token to pass to completeLoginLink. Always null in production. */
5126
+ devToken: Maybe<Scalars['String']['output']>;
5127
+ /** Always true (does not reveal whether the email exists). */
5128
+ sent: Scalars['Boolean']['output'];
5129
+ };
4830
5130
  export type ResetPasswordInput = {
4831
5131
  /** New password to set (min 8 characters). */
4832
5132
  newPassword: Scalars['String']['input'];
@@ -5149,6 +5449,33 @@ export type ServiceQuota = {
5149
5449
  /** When the rule was last updated (ISO-8601 UTC timestamp). */
5150
5450
  updatedAt: Scalars['DateTime']['output'];
5151
5451
  };
5452
+ /** Register/update an app's OAuth client settings for the portal handoff (requires manage_apps on the app). */
5453
+ export type SetAppClientSettingsInput = {
5454
+ appId: Scalars['BigInt']['input'];
5455
+ /** OAuth client type: 'public' (browser/PKCE) or 'confidential'. */
5456
+ clientType?: InputMaybe<Scalars['String']['input']>;
5457
+ /** Browser launch URL players are sent to when entering the app. */
5458
+ launchUrl?: InputMaybe<Scalars['String']['input']>;
5459
+ /** Allow-listed redirect URIs for the portal authorization code (origin-matched). Replaces the current list. */
5460
+ redirectUris?: InputMaybe<Array<Scalars['String']['input']>>;
5461
+ };
5462
+ /** Set or change an app's reserved sustained throughput on the shared environment. */
5463
+ export type SetAppReservedThroughputInput = {
5464
+ /** App to configure reserved throughput for. */
5465
+ appId: Scalars['BigInt']['input'];
5466
+ /** Organization that owns the app. */
5467
+ orgId: Scalars['BigInt']['input'];
5468
+ /** Reserved sustained egress in bytes/s (decimal MB/s: 1_000_000 = 1 MB/s). 0 clears the reservation (free tier). */
5469
+ reservedBytesPerSec: Scalars['BigInt']['input'];
5470
+ };
5471
+ /** Result of setAppReservedThroughput: updated app + reservation fee debited (0 when downgrading or unchanged). */
5472
+ export type SetAppReservedThroughputResult = {
5473
+ __typename?: 'SetAppReservedThroughputResult';
5474
+ /** App after the reservation change. */
5475
+ app: App;
5476
+ /** Cents debited from the org wallet for this change (prorated upgrade). 0 when clearing or lowering reservation. */
5477
+ chargedCents: Scalars['BigInt']['output'];
5478
+ };
5152
5479
  /** Set the per-app automation policy (guardrails / platform ceilings). */
5153
5480
  export type SetAutomationPolicyInput = {
5154
5481
  /** The app (tenant). */
@@ -5311,6 +5638,29 @@ export type SingleActorMessageNotification = {
5311
5638
  /** The destination actor’s UUID (your own actor’s UUID, echoed from the message). */
5312
5639
  uuid: Scalars['String']['output'];
5313
5640
  };
5641
+ /** Complete a federated sign-in from the provider callback. */
5642
+ export type SocialLoginCompleteInput = {
5643
+ /** The authorization code returned by the provider. */
5644
+ code: Scalars['String']['input'];
5645
+ provider: Scalars['String']['input'];
5646
+ /** The opaque state value from socialLoginStart (CSRF binding). */
5647
+ state: Scalars['String']['input'];
5648
+ };
5649
+ /** A federated sign-in handoff: redirect the user to authorizeUrl. */
5650
+ export type SocialLoginStart = {
5651
+ __typename?: 'SocialLoginStart';
5652
+ /** Provider authorize URL to redirect the user to. */
5653
+ authorizeUrl: Scalars['String']['output'];
5654
+ /** Opaque state to round-trip back to socialLoginComplete. */
5655
+ state: Scalars['String']['output'];
5656
+ };
5657
+ /** Begin a federated (social) sign-in. */
5658
+ export type SocialLoginStartInput = {
5659
+ /** Provider id, e.g. 'google' (see availableLoginProviders). */
5660
+ provider: Scalars['String']['input'];
5661
+ /** The callback URL the provider returns to (must be a registered auth callback for your app/UI). */
5662
+ redirectUri: Scalars['String']['input'];
5663
+ };
5314
5664
  export type Subscription = {
5315
5665
  __typename?: 'Subscription';
5316
5666
  /** Realtime downlink from the game server: spatial notifications and responses, GenericErrorResponse (errors from your sends, correlated by sequenceNumber), and RealtimeConnectionEvent (lifecycle/setup failures). Requires a bearer game token AND an appId-scoped connection — the appId is read from the graphql-transport-ws connection (game tokens are app-agnostic and one UDP socket is shared across apps, so an app-agnostic subscription is rejected with a RealtimeConnectionEvent code APP_ID_REQUIRED, and a missing/invalid token with AUTH_REQUIRED). On subscribe, opens a UDP proxy session if none exists (binds to the least-loaded game server); open/transport failures are delivered as RealtimeConnectionEvent (code UDP_PROXY_CONNECTION_FAILED) and then the stream ends. Only this app’s spatial fan-out is delivered; appId-less control frames always pass. Subscribe before/while sending so async results are not missed. Unsubscribing stops delivery only — it does NOT close the UDP session; call disconnectUdpProxy (or rely on the server inactivity timeout) to release it. */
@@ -5829,6 +6179,20 @@ export type UserEdge = {
5829
6179
  /** The node at the end of this edge. */
5830
6180
  node: User;
5831
6181
  };
6182
+ /** A federated / passwordless sign-in identity linked to a user account (a social provider, an emailed magic link, or the dev bypass). */
6183
+ export type UserIdentity = {
6184
+ __typename?: 'UserIdentity';
6185
+ createdAt: Scalars['DateTime']['output'];
6186
+ email: Maybe<Scalars['String']['output']>;
6187
+ emailVerified: Scalars['Boolean']['output'];
6188
+ identityId: Scalars['ID']['output'];
6189
+ lastLoginAt: Maybe<Scalars['DateTime']['output']>;
6190
+ /** The identity provider: 'google' | 'apple' | 'discord' | 'email' (magic link) | 'dev' (dev bypass). */
6191
+ provider: Scalars['String']['output'];
6192
+ /** The provider's stable subject id ('sub'). For 'email'/'dev' this is the lowercased email. */
6193
+ subject: Scalars['String']['output'];
6194
+ userId: Scalars['ID']['output'];
6195
+ };
5832
6196
  /** Aggregated property-token balances for a user. LEGACY: property tokens are no longer purchasable. Returned by the deprecated myPropertyTokens query. */
5833
6197
  export type UserPropertyTokenData = {
5834
6198
  __typename?: 'UserPropertyTokenData';
@@ -6070,7 +6434,7 @@ export type WalletTransaction = {
6070
6434
  referenceId: Maybe<Scalars['String']['output']>;
6071
6435
  /** Unique transaction id (BigInt as a decimal string). */
6072
6436
  transactionId: Scalars['BigInt']['output'];
6073
- /** What produced this transaction. Known values: "topup" (wallet credit from a checkout/top-up), "usage" (per-app usage charge, negative), "shared_usage" (shared-environment usage charge, negative), "environment_usage" (hourly environment cost, negative), "auto_recharge" (automatic wallet recharge). Other caller-supplied deposit types are possible. */
6437
+ /** What produced this transaction. Known values: "topup" (wallet credit from a checkout/top-up), "usage" (per-app usage charge, negative), "shared_usage" (shared-environment usage charge, negative), "reserved_throughput" (monthly/prorated reserved egress capacity, negative), "environment_usage" (hourly environment cost, negative), "auto_recharge" (automatic wallet recharge). Other caller-supplied deposit types are possible. */
6074
6438
  transactionType: Scalars['String']['output'];
6075
6439
  /** Wallet this transaction belongs to (BigInt as a decimal string). */
6076
6440
  walletId: Scalars['BigInt']['output'];
@@ -6776,47 +7140,6 @@ export type UpdateAppMutation = {
6776
7140
  updatedAt: string;
6777
7141
  };
6778
7142
  };
6779
- export type ChangePasswordMutationVariables = Exact<{
6780
- currentPassword: Scalars['String']['input'];
6781
- newPassword: Scalars['String']['input'];
6782
- }>;
6783
- export type ChangePasswordMutation = {
6784
- __typename?: 'Mutation';
6785
- changePassword: boolean;
6786
- };
6787
- export type ConfirmEmailMutationVariables = Exact<{
6788
- token: Scalars['String']['input'];
6789
- }>;
6790
- export type ConfirmEmailMutation = {
6791
- __typename?: 'Mutation';
6792
- confirmEmail: boolean;
6793
- };
6794
- export type LoginMutationVariables = Exact<{
6795
- input: LoginUserInput;
6796
- }>;
6797
- export type LoginMutation = {
6798
- __typename?: 'Mutation';
6799
- login: {
6800
- __typename?: 'AuthResponse';
6801
- token: string;
6802
- gameTokenId: string;
6803
- user: {
6804
- __typename?: 'User';
6805
- userId: string;
6806
- email: string | null;
6807
- gamertag: string | null;
6808
- disambiguation: string | null;
6809
- isConfirmed: boolean;
6810
- createdAt: string;
6811
- grantEarlyAccess: boolean;
6812
- grantEarlyAccessOverride: boolean;
6813
- orgId: string | null;
6814
- externalId: string | null;
6815
- userType: string;
6816
- isSuperAdmin: boolean;
6817
- };
6818
- };
6819
- };
6820
7143
  export type LogoutMutationVariables = Exact<{
6821
7144
  [key: string]: never;
6822
7145
  }>;
@@ -6831,53 +7154,6 @@ export type LogoutAllDevicesMutation = {
6831
7154
  __typename?: 'Mutation';
6832
7155
  logoutAllDevices: boolean;
6833
7156
  };
6834
- export type RegisterMutationVariables = Exact<{
6835
- input: RegisterUserInput;
6836
- }>;
6837
- export type RegisterMutation = {
6838
- __typename?: 'Mutation';
6839
- register: {
6840
- __typename?: 'AuthResponse';
6841
- token: string;
6842
- gameTokenId: string;
6843
- user: {
6844
- __typename?: 'User';
6845
- userId: string;
6846
- email: string | null;
6847
- gamertag: string | null;
6848
- disambiguation: string | null;
6849
- isConfirmed: boolean;
6850
- createdAt: string;
6851
- grantEarlyAccess: boolean;
6852
- grantEarlyAccessOverride: boolean;
6853
- orgId: string | null;
6854
- externalId: string | null;
6855
- userType: string;
6856
- isSuperAdmin: boolean;
6857
- };
6858
- };
6859
- };
6860
- export type RequestPasswordResetMutationVariables = Exact<{
6861
- email: Scalars['String']['input'];
6862
- }>;
6863
- export type RequestPasswordResetMutation = {
6864
- __typename?: 'Mutation';
6865
- requestPasswordReset: boolean;
6866
- };
6867
- export type ResendConfirmationEmailMutationVariables = Exact<{
6868
- email: Scalars['String']['input'];
6869
- }>;
6870
- export type ResendConfirmationEmailMutation = {
6871
- __typename?: 'Mutation';
6872
- resendConfirmationEmail: boolean;
6873
- };
6874
- export type ResetPasswordMutationVariables = Exact<{
6875
- input: ResetPasswordInput;
6876
- }>;
6877
- export type ResetPasswordMutation = {
6878
- __typename?: 'Mutation';
6879
- resetPassword: boolean;
6880
- };
6881
7157
  export type UserAvatarsQueryVariables = Exact<{
6882
7158
  userId: Scalars['BigInt']['input'];
6883
7159
  }>;
@@ -9160,6 +9436,14 @@ export type GameModelCreateContainerMutation = {
9160
9436
  metadataJson: string;
9161
9437
  };
9162
9438
  };
9439
+ export type GameModelDeleteContainerMutationVariables = Exact<{
9440
+ appId: Scalars['BigInt']['input'];
9441
+ containerId: Scalars['String']['input'];
9442
+ }>;
9443
+ export type GameModelDeleteContainerMutation = {
9444
+ __typename?: 'Mutation';
9445
+ gameModelDeleteContainer: boolean;
9446
+ };
9163
9447
  export type GameModelSetPropertyMutationVariables = Exact<{
9164
9448
  input: SetContainerPropertyInput;
9165
9449
  }>;
@@ -9191,6 +9475,14 @@ export type GameModelAddEdgeMutation = {
9191
9475
  weight: number | null;
9192
9476
  };
9193
9477
  };
9478
+ export type GameModelDeleteEdgeMutationVariables = Exact<{
9479
+ appId: Scalars['BigInt']['input'];
9480
+ edgeId: Scalars['String']['input'];
9481
+ }>;
9482
+ export type GameModelDeleteEdgeMutation = {
9483
+ __typename?: 'Mutation';
9484
+ gameModelDeleteEdge: boolean;
9485
+ };
9194
9486
  export type GameModelInvokeMutationVariables = Exact<{
9195
9487
  input: InvokeFunctionInput;
9196
9488
  }>;
@@ -9503,6 +9795,23 @@ export type GameModelUpsertPropertyDefMutation = {
9503
9795
  description: string | null;
9504
9796
  };
9505
9797
  };
9798
+ export type GameModelDeletePropertyDefMutationVariables = Exact<{
9799
+ appId: Scalars['BigInt']['input'];
9800
+ containerTypeName: Scalars['String']['input'];
9801
+ key: Scalars['String']['input'];
9802
+ }>;
9803
+ export type GameModelDeletePropertyDefMutation = {
9804
+ __typename?: 'Mutation';
9805
+ gameModelDeletePropertyDef: boolean;
9806
+ };
9807
+ export type GameModelDeleteContainerTypeMutationVariables = Exact<{
9808
+ appId: Scalars['BigInt']['input'];
9809
+ typeName: Scalars['String']['input'];
9810
+ }>;
9811
+ export type GameModelDeleteContainerTypeMutation = {
9812
+ __typename?: 'Mutation';
9813
+ gameModelDeleteContainerType: boolean;
9814
+ };
9506
9815
  export type GameModelUpsertFunctionMutationVariables = Exact<{
9507
9816
  input: UpsertFunctionInput;
9508
9817
  }>;
@@ -9835,6 +10144,13 @@ export type GameHostQuery = {
9835
10144
  earliestActorJoinedAt: string;
9836
10145
  } | null;
9837
10146
  };
10147
+ export type AmIGameHostQueryVariables = Exact<{
10148
+ appId: Scalars['BigInt']['input'];
10149
+ }>;
10150
+ export type AmIGameHostQuery = {
10151
+ __typename?: 'Query';
10152
+ amIGameHost: boolean;
10153
+ };
9838
10154
  export type ActorHeartbeatMutationVariables = Exact<{
9839
10155
  appId: Scalars['BigInt']['input'];
9840
10156
  }>;
@@ -12015,15 +12331,8 @@ export declare const AppsConnectionDocument: DocumentNode<AppsConnectionQuery, A
12015
12331
  export declare const MyAppsDocument: DocumentNode<MyAppsQuery, MyAppsQueryVariables>;
12016
12332
  export declare const SetAppVisibilityDocument: DocumentNode<SetAppVisibilityMutation, SetAppVisibilityMutationVariables>;
12017
12333
  export declare const UpdateAppDocument: DocumentNode<UpdateAppMutation, UpdateAppMutationVariables>;
12018
- export declare const ChangePasswordDocument: DocumentNode<ChangePasswordMutation, ChangePasswordMutationVariables>;
12019
- export declare const ConfirmEmailDocument: DocumentNode<ConfirmEmailMutation, ConfirmEmailMutationVariables>;
12020
- export declare const LoginDocument: DocumentNode<LoginMutation, LoginMutationVariables>;
12021
12334
  export declare const LogoutDocument: DocumentNode<LogoutMutation, LogoutMutationVariables>;
12022
12335
  export declare const LogoutAllDevicesDocument: DocumentNode<LogoutAllDevicesMutation, LogoutAllDevicesMutationVariables>;
12023
- export declare const RegisterDocument: DocumentNode<RegisterMutation, RegisterMutationVariables>;
12024
- export declare const RequestPasswordResetDocument: DocumentNode<RequestPasswordResetMutation, RequestPasswordResetMutationVariables>;
12025
- export declare const ResendConfirmationEmailDocument: DocumentNode<ResendConfirmationEmailMutation, ResendConfirmationEmailMutationVariables>;
12026
- export declare const ResetPasswordDocument: DocumentNode<ResetPasswordMutation, ResetPasswordMutationVariables>;
12027
12336
  export declare const UserAvatarsDocument: DocumentNode<UserAvatarsQuery, UserAvatarsQueryVariables>;
12028
12337
  export declare const AvatarByIdDocument: DocumentNode<AvatarByIdQuery, AvatarByIdQueryVariables>;
12029
12338
  export declare const MyAvatarsDocument: DocumentNode<MyAvatarsQuery, MyAvatarsQueryVariables>;
@@ -12133,8 +12442,10 @@ export declare const GameModelCreateSessionDocument: DocumentNode<GameModelCreat
12133
12442
  export declare const GameModelJoinSessionDocument: DocumentNode<GameModelJoinSessionMutation, GameModelJoinSessionMutationVariables>;
12134
12443
  export declare const GameModelSetSessionTurnDocument: DocumentNode<GameModelSetSessionTurnMutation, GameModelSetSessionTurnMutationVariables>;
12135
12444
  export declare const GameModelCreateContainerDocument: DocumentNode<GameModelCreateContainerMutation, GameModelCreateContainerMutationVariables>;
12445
+ export declare const GameModelDeleteContainerDocument: DocumentNode<GameModelDeleteContainerMutation, GameModelDeleteContainerMutationVariables>;
12136
12446
  export declare const GameModelSetPropertyDocument: DocumentNode<GameModelSetPropertyMutation, GameModelSetPropertyMutationVariables>;
12137
12447
  export declare const GameModelAddEdgeDocument: DocumentNode<GameModelAddEdgeMutation, GameModelAddEdgeMutationVariables>;
12448
+ export declare const GameModelDeleteEdgeDocument: DocumentNode<GameModelDeleteEdgeMutation, GameModelDeleteEdgeMutationVariables>;
12138
12449
  export declare const GameModelInvokeDocument: DocumentNode<GameModelInvokeMutation, GameModelInvokeMutationVariables>;
12139
12450
  export declare const GameModelContainerDocument: DocumentNode<GameModelContainerQuery, GameModelContainerQueryVariables>;
12140
12451
  export declare const GameModelContainersDocument: DocumentNode<GameModelContainersQuery, GameModelContainersQueryVariables>;
@@ -12147,6 +12458,8 @@ export declare const GameModelEventsConnectionDocument: DocumentNode<GameModelEv
12147
12458
  export declare const GameModelSeedDocument: DocumentNode<GameModelSeedMutation, GameModelSeedMutationVariables>;
12148
12459
  export declare const GameModelUpsertContainerTypeDocument: DocumentNode<GameModelUpsertContainerTypeMutation, GameModelUpsertContainerTypeMutationVariables>;
12149
12460
  export declare const GameModelUpsertPropertyDefDocument: DocumentNode<GameModelUpsertPropertyDefMutation, GameModelUpsertPropertyDefMutationVariables>;
12461
+ export declare const GameModelDeletePropertyDefDocument: DocumentNode<GameModelDeletePropertyDefMutation, GameModelDeletePropertyDefMutationVariables>;
12462
+ export declare const GameModelDeleteContainerTypeDocument: DocumentNode<GameModelDeleteContainerTypeMutation, GameModelDeleteContainerTypeMutationVariables>;
12150
12463
  export declare const GameModelUpsertFunctionDocument: DocumentNode<GameModelUpsertFunctionMutation, GameModelUpsertFunctionMutationVariables>;
12151
12464
  export declare const GameModelDeleteFunctionDocument: DocumentNode<GameModelDeleteFunctionMutation, GameModelDeleteFunctionMutationVariables>;
12152
12465
  export declare const GameModelDefineFeatureDocument: DocumentNode<GameModelDefineFeatureMutation, GameModelDefineFeatureMutationVariables>;
@@ -12162,6 +12475,7 @@ export declare const GameModelTierFeaturesDocument: DocumentNode<GameModelTierFe
12162
12475
  export declare const GameModelPolicyDocument: DocumentNode<GameModelPolicyQuery, GameModelPolicyQueryVariables>;
12163
12476
  export declare const GameModelRevokeTierFeatureDocument: DocumentNode<GameModelRevokeTierFeatureMutation, GameModelRevokeTierFeatureMutationVariables>;
12164
12477
  export declare const GameHostDocument: DocumentNode<GameHostQuery, GameHostQueryVariables>;
12478
+ export declare const AmIGameHostDocument: DocumentNode<AmIGameHostQuery, AmIGameHostQueryVariables>;
12165
12479
  export declare const ActorHeartbeatDocument: DocumentNode<ActorHeartbeatMutation, ActorHeartbeatMutationVariables>;
12166
12480
  export declare const CreateOrgRoleDocument: DocumentNode<CreateOrgRoleMutation, CreateOrgRoleMutationVariables>;
12167
12481
  export declare const CreateOrgTokenDocument: DocumentNode<CreateOrgTokenMutation, CreateOrgTokenMutationVariables>;