@crowdedkingdomstudios/crowdyjs 3.0.0 → 4.3.0

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 (58) hide show
  1. package/README.md +125 -57
  2. package/dist/client.d.ts.map +1 -1
  3. package/dist/client.js +3 -1
  4. package/dist/crowdy-client.d.ts +49 -13
  5. package/dist/crowdy-client.d.ts.map +1 -1
  6. package/dist/crowdy-client.js +47 -16
  7. package/dist/domains/apps.d.ts +59 -20
  8. package/dist/domains/apps.d.ts.map +1 -1
  9. package/dist/domains/apps.js +61 -35
  10. package/dist/domains/auth.d.ts +33 -22
  11. package/dist/domains/auth.d.ts.map +1 -1
  12. package/dist/domains/auth.js +51 -33
  13. package/dist/domains/channels.d.ts +34 -0
  14. package/dist/domains/channels.d.ts.map +1 -0
  15. package/dist/domains/channels.js +94 -0
  16. package/dist/domains/gameModel.d.ts +40 -0
  17. package/dist/domains/gameModel.d.ts.map +1 -0
  18. package/dist/domains/gameModel.js +114 -0
  19. package/dist/domains/platform.d.ts +33 -0
  20. package/dist/domains/platform.d.ts.map +1 -0
  21. package/dist/domains/platform.js +39 -0
  22. package/dist/domains/udp.d.ts +17 -1
  23. package/dist/domains/udp.d.ts.map +1 -1
  24. package/dist/domains/udp.js +25 -1
  25. package/dist/domains/users.d.ts +19 -16
  26. package/dist/domains/users.d.ts.map +1 -1
  27. package/dist/domains/users.js +21 -39
  28. package/dist/generated/graphql.d.ts +2912 -63
  29. package/dist/generated/graphql.d.ts.map +1 -1
  30. package/dist/generated/graphql.js +82 -10
  31. package/dist/index.d.ts +32 -14
  32. package/dist/index.d.ts.map +1 -1
  33. package/dist/index.js +33 -15
  34. package/dist/realtime.d.ts +6 -0
  35. package/dist/realtime.d.ts.map +1 -1
  36. package/dist/realtime.js +6 -0
  37. package/dist/types.d.ts +2 -31
  38. package/dist/types.d.ts.map +1 -1
  39. package/dist/types.js +5 -33
  40. package/dist/world.d.ts +9 -0
  41. package/dist/world.d.ts.map +1 -1
  42. package/dist/world.js +17 -0
  43. package/package.json +2 -2
  44. package/dist/domains/appAccess.d.ts +0 -23
  45. package/dist/domains/appAccess.d.ts.map +0 -1
  46. package/dist/domains/appAccess.js +0 -42
  47. package/dist/domains/billing.d.ts +0 -17
  48. package/dist/domains/billing.d.ts.map +0 -1
  49. package/dist/domains/billing.js +0 -31
  50. package/dist/domains/organizations.d.ts +0 -33
  51. package/dist/domains/organizations.d.ts.map +0 -1
  52. package/dist/domains/organizations.js +0 -90
  53. package/dist/domains/payments.d.ts +0 -20
  54. package/dist/domains/payments.d.ts.map +0 -1
  55. package/dist/domains/payments.js +0 -28
  56. package/dist/domains/quotas.d.ts +0 -20
  57. package/dist/domains/quotas.d.ts.map +0 -1
  58. package/dist/domains/quotas.js +0 -34
@@ -61,6 +61,7 @@ export type Actor = {
61
61
  createdAt: Scalars['DateTime']['output'];
62
62
  privateState: Maybe<Scalars['String']['output']>;
63
63
  publicState: Maybe<Scalars['String']['output']>;
64
+ updatedAt: Scalars['DateTime']['output'];
64
65
  userId: Scalars['BigInt']['output'];
65
66
  uuid: Scalars['ID']['output'];
66
67
  };
@@ -133,17 +134,30 @@ export type ActorUpdateResponse = {
133
134
  /** The unique identifier of the actor that was updated. */
134
135
  uuid: Scalars['String']['output'];
135
136
  };
137
+ export type AddEdgeInput = {
138
+ appId: Scalars['BigInt']['input'];
139
+ fromContainerId: Scalars['String']['input'];
140
+ metadataJson?: InputMaybe<Scalars['String']['input']>;
141
+ relationshipType: Scalars['String']['input'];
142
+ toContainerId: Scalars['String']['input'];
143
+ weight?: InputMaybe<Scalars['Float']['input']>;
144
+ };
136
145
  export type App = {
137
146
  __typename?: 'App';
138
147
  appId: Scalars['BigInt']['output'];
139
148
  createdAt: Scalars['DateTime']['output'];
140
149
  createdBy: Scalars['BigInt']['output'];
150
+ deploymentTarget: Scalars['String']['output'];
141
151
  description: Maybe<Scalars['String']['output']>;
152
+ gameApiUrl: Maybe<Scalars['String']['output']>;
142
153
  metadata: Maybe<Scalars['String']['output']>;
143
154
  name: Scalars['String']['output'];
144
155
  org: Maybe<Organization>;
145
156
  orgId: Scalars['BigInt']['output'];
157
+ runtimeDenialReason: Maybe<Scalars['String']['output']>;
158
+ runtimeStatus: Scalars['String']['output'];
146
159
  slug: Maybe<Scalars['String']['output']>;
160
+ splitMode: Scalars['Boolean']['output'];
147
161
  state: Maybe<Scalars['String']['output']>;
148
162
  status: AppStatus;
149
163
  updatedAt: Scalars['DateTime']['output'];
@@ -159,12 +173,21 @@ export type AppAccessTier = {
159
173
  isDefault: Scalars['Boolean']['output'];
160
174
  isFree: Scalars['Boolean']['output'];
161
175
  name: Scalars['String']['output'];
176
+ permissionKeys: Array<Scalars['String']['output']>;
162
177
  priceCents: Maybe<Scalars['BigInt']['output']>;
163
178
  status: Scalars['String']['output'];
164
179
  tierId: Scalars['BigInt']['output'];
165
180
  tierOrder: Scalars['Float']['output'];
166
181
  updatedAt: Scalars['DateTime']['output'];
167
182
  };
183
+ export type AppAvatarState = {
184
+ __typename?: 'AppAvatarState';
185
+ appId: Scalars['BigInt']['output'];
186
+ avatarId: Scalars['BigInt']['output'];
187
+ createdAt: Scalars['DateTime']['output'];
188
+ state: Maybe<Scalars['String']['output']>;
189
+ updatedAt: Scalars['DateTime']['output'];
190
+ };
168
191
  export type AppBudget = {
169
192
  __typename?: 'AppBudget';
170
193
  appBudgetId: Scalars['BigInt']['output'];
@@ -176,16 +199,82 @@ export type AppBudget = {
176
199
  periodStart: Scalars['DateTime']['output'];
177
200
  updatedAt: Scalars['DateTime']['output'];
178
201
  };
202
+ /** Where an app runs: none (draft), shared (the shared game-api), or dedicated (a provisioned environment). */
203
+ export declare enum AppDeploymentTarget {
204
+ Dedicated = "DEDICATED",
205
+ None = "NONE",
206
+ Shared = "SHARED"
207
+ }
208
+ export type AppGroupPolicy = {
209
+ __typename?: 'AppGroupPolicy';
210
+ appId: Scalars['BigInt']['output'];
211
+ /** admin | member | anyone */
212
+ creationPolicy: Scalars['String']['output'];
213
+ /** open | request | invite | admin */
214
+ defaultMembershipPolicy: Scalars['String']['output'];
215
+ groupType: Scalars['String']['output'];
216
+ maxGroupsPerUser: Maybe<Scalars['Int']['output']>;
217
+ maxMembers: Maybe<Scalars['Int']['output']>;
218
+ };
179
219
  export type AppMarketplaceFilterInput = {
180
220
  orgSlug?: InputMaybe<Scalars['String']['input']>;
181
221
  query?: InputMaybe<Scalars['String']['input']>;
182
222
  };
223
+ /** The shared-environment runtime gate + current billing-window usage for an app. */
224
+ export type AppRuntimeState = {
225
+ __typename?: 'AppRuntimeState';
226
+ appId: Scalars['BigInt']['output'];
227
+ currentDayUsageCents: Scalars['BigInt']['output'];
228
+ currentHourUsageCents: Scalars['BigInt']['output'];
229
+ dailyLimitCents: Maybe<Scalars['BigInt']['output']>;
230
+ deploymentTarget: AppDeploymentTarget;
231
+ hourlyLimitCents: Maybe<Scalars['BigInt']['output']>;
232
+ /** free_allowance | insufficient_funds | spend_cap | subscription_lapsed when not active. */
233
+ runtimeDenialReason: Maybe<Scalars['String']['output']>;
234
+ runtimeStatus: AppRuntimeStatus;
235
+ walletBalanceCents: Scalars['BigInt']['output'];
236
+ };
237
+ /** The per-app runtime gate game-api + Buddy enforce: active, grace, denied, or suspended. */
238
+ export declare enum AppRuntimeStatus {
239
+ Active = "ACTIVE",
240
+ Denied = "DENIED",
241
+ Grace = "GRACE",
242
+ Suspended = "SUSPENDED"
243
+ }
244
+ export type AppSharedSubscription = {
245
+ __typename?: 'AppSharedSubscription';
246
+ appId: Scalars['BigInt']['output'];
247
+ currentPeriodEnd: Maybe<Scalars['DateTime']['output']>;
248
+ orgId: Scalars['BigInt']['output'];
249
+ planId: Maybe<Scalars['BigInt']['output']>;
250
+ provider: Maybe<Scalars['String']['output']>;
251
+ status: Scalars['String']['output'];
252
+ };
183
253
  /** DRAFT = invisible to non-members, LIVE = purchasable/playable, ARCHIVED = read-only */
184
254
  export declare enum AppStatus {
185
255
  Archived = "ARCHIVED",
186
256
  Draft = "DRAFT",
187
257
  Live = "LIVE"
188
258
  }
259
+ export type AppUsageRollupRow = {
260
+ __typename?: 'AppUsageRollupRow';
261
+ appId: Scalars['String']['output'];
262
+ appName: Scalars['String']['output'];
263
+ appSlug: Scalars['String']['output'];
264
+ graphqlRecvBytes: Scalars['String']['output'];
265
+ graphqlSendBytes: Scalars['String']['output'];
266
+ replicationRecvBytes: Scalars['String']['output'];
267
+ replicationSendBytes: Scalars['String']['output'];
268
+ };
269
+ export type AppUsageSummary = {
270
+ __typename?: 'AppUsageSummary';
271
+ appId: Scalars['String']['output'];
272
+ graphqlRecvBytes: Scalars['String']['output'];
273
+ graphqlSendBytes: Scalars['String']['output'];
274
+ replicationRecvBytes: Scalars['String']['output'];
275
+ replicationSendBytes: Scalars['String']['output'];
276
+ topGraphqlOperations: Array<GraphqlOperationUsageRow>;
277
+ };
189
278
  export type AppUserAccess = {
190
279
  __typename?: 'AppUserAccess';
191
280
  appId: Scalars['BigInt']['output'];
@@ -210,6 +299,15 @@ export type AppsPage = {
210
299
  items: Array<App>;
211
300
  pageInfo: PageInfo;
212
301
  };
302
+ export type AssignGroupToGridInput = {
303
+ appId: Scalars['BigInt']['input'];
304
+ expiresAt?: InputMaybe<Scalars['DateTime']['input']>;
305
+ gridId: Scalars['BigInt']['input'];
306
+ groupId: Scalars['BigInt']['input'];
307
+ /** Optional: scope the grant to members holding this group role. Omit to grant to all members of the group. */
308
+ groupRoleId?: InputMaybe<Scalars['BigInt']['input']>;
309
+ permissionKeys: Array<Scalars['String']['input']>;
310
+ };
213
311
  export type AuthResponse = {
214
312
  __typename?: 'AuthResponse';
215
313
  gameTokenId: Scalars['String']['output'];
@@ -237,6 +335,41 @@ export type AvatarDto = {
237
335
  export type BatchActorLookupInput = {
238
336
  uuids: Array<Scalars['String']['input']>;
239
337
  };
338
+ export type BuddyLiveRates = {
339
+ __typename?: 'BuddyLiveRates';
340
+ clientRecvMbitPerSec: Scalars['Float']['output'];
341
+ clientRecvMsgsPerSec: Scalars['Float']['output'];
342
+ clientSendMbitPerSec: Scalars['Float']['output'];
343
+ clientSendMsgsPerSec: Scalars['Float']['output'];
344
+ clients: Scalars['Float']['output'];
345
+ serverId: Scalars['String']['output'];
346
+ updatedAt: Scalars['DateTime']['output'];
347
+ };
348
+ /** Input for publishing a message to a channel. Delivered to every active member of the channel (regardless of location), not chunk-routed. The sender must have the channel send_messages permission. */
349
+ export type ChannelMessageInput = {
350
+ /** The channel id (groups.group_id) to publish to. */
351
+ channelId: Scalars['BigInt']['input'];
352
+ /** The message payload, base64-encoded. Opaque to the server; decode per your application protocol. Max 1024 bytes. */
353
+ payload: Scalars['String']['input'];
354
+ /** Client's sequence number for this message (0-255, wraps). Used to match error responses. */
355
+ sequenceNumber?: InputMaybe<Scalars['Int']['input']>;
356
+ /** The sender's actor UUID (your own actor's UUID). Must be exactly 32 bytes when encoded as UTF-8. */
357
+ uuid: Scalars['String']['input'];
358
+ };
359
+ /** Notification received when a message is published to a channel you are a member of. Delivered over the udpNotifications subscription to every active channel member. */
360
+ export type ChannelMessageNotification = {
361
+ __typename?: 'ChannelMessageNotification';
362
+ /** The channel id (groups.group_id) the message was sent to. */
363
+ channelId: Scalars['BigInt']['output'];
364
+ /** Server-generated epoch milliseconds timestamp. */
365
+ epochMillis: Scalars['BigInt']['output'];
366
+ /** The message payload, base64-encoded. Opaque to the server; decode per your application protocol. */
367
+ payload: Scalars['String']['output'];
368
+ /** The sender's sequence number for this message (0-255). */
369
+ sequenceNumber: Scalars['Int']['output'];
370
+ /** The sending actor's UUID. */
371
+ uuid: Scalars['String']['output'];
372
+ };
240
373
  export type Checkout = {
241
374
  __typename?: 'Checkout';
242
375
  amountCents: Maybe<Scalars['BigInt']['output']>;
@@ -266,12 +399,13 @@ export type CheckoutFilterInput = {
266
399
  status?: InputMaybe<CheckoutStatus>;
267
400
  userId?: InputMaybe<Scalars['BigInt']['input']>;
268
401
  };
269
- /** Why the checkout exists. Drives which side effect runs on webhook completion: ORG_WALLET_TOPUP credits an org_wallet; APP_ACCESS_PURCHASE upserts app_user_access; DONATION inserts donations; PROPERTY_TOKENS credits property_tokens. */
402
+ /** Why the checkout exists. Drives which side effect runs on webhook completion: ORG_WALLET_TOPUP credits an org_wallet; APP_ACCESS_PURCHASE upserts app_user_access; DONATION inserts donations; PROPERTY_TOKENS credits property_tokens; SHARED_APP_SUBSCRIPTION activates a paid shared-environment app slot. */
270
403
  export declare enum CheckoutPurpose {
271
404
  AppAccessPurchase = "APP_ACCESS_PURCHASE",
272
405
  Donation = "DONATION",
273
406
  OrgWalletTopup = "ORG_WALLET_TOPUP",
274
- PropertyTokens = "PROPERTY_TOKENS"
407
+ PropertyTokens = "PROPERTY_TOKENS",
408
+ SharedAppSubscription = "SHARED_APP_SUBSCRIPTION"
275
409
  }
276
410
  /** Lifecycle state of a Checkout. Updated by webhook reconciliation, not by the redirect URL. */
277
411
  export declare enum CheckoutStatus {
@@ -341,25 +475,91 @@ export type ChunksByDistanceResponse = {
341
475
  limit: Maybe<Scalars['Int']['output']>;
342
476
  skip: Maybe<Scalars['Int']['output']>;
343
477
  };
478
+ export type CksBuddyHealth = {
479
+ __typename?: 'CksBuddyHealth';
480
+ clientPort: Maybe<Scalars['Int']['output']>;
481
+ clients: Maybe<Scalars['Int']['output']>;
482
+ /** Seconds since server_status.updated_at (game DB heartbeat). */
483
+ heartbeatAgeSec: Maybe<Scalars['Float']['output']>;
484
+ ip4: Maybe<Scalars['String']['output']>;
485
+ /** True when heartbeat is missing or older than the staleness threshold (~30s). Game-api rejects assignment when age > ~11s. */
486
+ isStale: Scalars['Boolean']['output'];
487
+ /** False when no server_status row exists for this environment. */
488
+ registered: Scalars['Boolean']['output'];
489
+ status: Maybe<Scalars['String']['output']>;
490
+ /** Operator-facing hint when multiplayer assignment may fail. */
491
+ troubleshootingHint: Scalars['String']['output'];
492
+ updatedAt: Maybe<Scalars['DateTime']['output']>;
493
+ };
494
+ export type CksDeployProgress = {
495
+ __typename?: 'CksDeployProgress';
496
+ /** Redeploy is allowed (failed deploy or stuck order cleared) */
497
+ canRetry: Scalars['Boolean']['output'];
498
+ changeOrderId: Scalars['String']['output'];
499
+ /** Change order kind (deploy or destroy pipeline identifier) */
500
+ changeOrderKind: Scalars['String']['output'];
501
+ changeOrderStatus: Scalars['String']['output'];
502
+ currentStepKind: Maybe<Scalars['String']['output']>;
503
+ currentTaskKind: Maybe<Scalars['String']['output']>;
504
+ error: Maybe<Scalars['String']['output']>;
505
+ /** True when the deploy failed but the change order was left in_progress */
506
+ isStuck: Scalars['Boolean']['output'];
507
+ targetVersion: Maybe<Scalars['String']['output']>;
508
+ tasks: Array<CksDeployProgressTask>;
509
+ tasksFailed: Scalars['Int']['output'];
510
+ tasksInProgress: Scalars['Int']['output'];
511
+ tasksPending: Scalars['Int']['output'];
512
+ tasksSucceeded: Scalars['Int']['output'];
513
+ tasksTotal: Scalars['Int']['output'];
514
+ };
515
+ export type CksDeployProgressStep = {
516
+ __typename?: 'CksDeployProgressStep';
517
+ attempt: Scalars['Int']['output'];
518
+ error: Maybe<Scalars['String']['output']>;
519
+ id: Scalars['String']['output'];
520
+ kind: Scalars['String']['output'];
521
+ /** Human-readable step label for the org UI */
522
+ label: Scalars['String']['output'];
523
+ status: Scalars['String']['output'];
524
+ };
525
+ export type CksDeployProgressTask = {
526
+ __typename?: 'CksDeployProgressTask';
527
+ error: Maybe<Scalars['String']['output']>;
528
+ id: Scalars['String']['output'];
529
+ kind: Scalars['String']['output'];
530
+ label: Scalars['String']['output'];
531
+ status: Scalars['String']['output'];
532
+ steps: Array<CksDeployProgressStep>;
533
+ };
344
534
  export type CksEnvironment = {
345
535
  __typename?: 'CksEnvironment';
346
536
  billingGraceDeadline: Maybe<Scalars['DateTime']['output']>;
347
537
  billingStatus: Scalars['String']['output'];
538
+ caddyFlavor: Maybe<Scalars['String']['output']>;
348
539
  createdAt: Scalars['DateTime']['output'];
349
540
  databaseFlavor: Maybe<Scalars['String']['output']>;
350
541
  desiredEnvironmentVersion: Maybe<Scalars['String']['output']>;
351
542
  displayName: Scalars['String']['output'];
352
- graphqlFlavor: Maybe<Scalars['String']['output']>;
543
+ /** 'dedicated' (multi-VM) or 'dev_single' (one dev-only VM). */
544
+ environmentClass: Scalars['String']['output'];
545
+ gameApiFlavor: Maybe<Scalars['String']['output']>;
546
+ gameApiMaxServers: Scalars['Int']['output'];
547
+ gameApiMinServers: Scalars['Int']['output'];
353
548
  id: Scalars['String']['output'];
549
+ loadBalancerCount: Scalars['Int']['output'];
354
550
  observedEnvironmentVersion: Maybe<Scalars['String']['output']>;
355
551
  orgId: Scalars['BigInt']['output'];
356
552
  primaryCloud: Scalars['String']['output'];
357
553
  primaryRegion: Scalars['String']['output'];
554
+ /** Single VM flavor when environmentClass = 'dev_single'. */
555
+ singleBoxFlavor: Maybe<Scalars['String']['output']>;
358
556
  slug: Scalars['String']['output'];
359
557
  status: Scalars['String']['output'];
360
558
  subdomainHandle: Maybe<Scalars['String']['output']>;
361
559
  suspendedAt: Maybe<Scalars['DateTime']['output']>;
362
560
  udpBuddyFlavor: Maybe<Scalars['String']['output']>;
561
+ udpBuddyMaxServers: Scalars['Int']['output'];
562
+ udpBuddyMinServers: Scalars['Int']['output'];
363
563
  updatedAt: Scalars['DateTime']['output'];
364
564
  };
365
565
  export type CksEnvironmentAudit = {
@@ -373,6 +573,7 @@ export type CksEnvironmentAudit = {
373
573
  export type CksEnvironmentBillingResource = {
374
574
  __typename?: 'CksEnvironmentBillingResource';
375
575
  componentKind: Scalars['String']['output'];
576
+ currency: Scalars['String']['output'];
376
577
  customerHourlyPriceCents: Maybe<Scalars['BigInt']['output']>;
377
578
  environmentId: Scalars['String']['output'];
378
579
  flavorName: Maybe<Scalars['String']['output']>;
@@ -415,8 +616,14 @@ export type CksEnvironmentDetail = {
415
616
  __typename?: 'CksEnvironmentDetail';
416
617
  audit: Array<CksEnvironmentAudit>;
417
618
  billingResources: Array<CksEnvironmentBillingResource>;
619
+ /** Buddy UDP server heartbeat from mirrored server_status. Null when env is destroyed or management DB has no row. */
620
+ buddyHealth: Maybe<CksBuddyHealth>;
418
621
  changeOrders: Array<CksEnvironmentChangeOrder>;
419
622
  components: Array<CksEnvironmentComponent>;
623
+ /** Live deploy task/step progress for the active or most recent failed deploy */
624
+ deployProgress: Maybe<CksDeployProgress>;
625
+ /** Destroy tear-down progress for game-api and platform change orders */
626
+ destroyProgress: Array<CksDeployProgress>;
420
627
  environment: CksEnvironment;
421
628
  outputs: Array<CksEnvironmentOutput>;
422
629
  secrets: Array<CksEnvironmentSecretValue>;
@@ -434,14 +641,20 @@ export type CksEnvironmentOutput = {
434
641
  export type CksEnvironmentQuote = {
435
642
  __typename?: 'CksEnvironmentQuote';
436
643
  availableBalanceCents: Scalars['BigInt']['output'];
644
+ caddyFlavor: Scalars['String']['output'];
437
645
  canCreate: Scalars['Boolean']['output'];
438
646
  currency: Scalars['String']['output'];
439
647
  databaseFlavor: Scalars['String']['output'];
440
648
  datacenter: Scalars['String']['output'];
441
649
  firstDayReserveCents: Scalars['BigInt']['output'];
442
- graphqlFlavor: Scalars['String']['output'];
650
+ gameApiFlavor: Scalars['String']['output'];
651
+ gameApiMaxServers: Scalars['Int']['output'];
652
+ gameApiMinServers: Scalars['Int']['output'];
443
653
  hourlyCostCents: Scalars['BigInt']['output'];
654
+ loadBalancerCount: Scalars['Int']['output'];
444
655
  udpBuddyFlavor: Scalars['String']['output'];
656
+ udpBuddyMaxServers: Scalars['Int']['output'];
657
+ udpBuddyMinServers: Scalars['Int']['output'];
445
658
  walletBalanceCents: Scalars['BigInt']['output'];
446
659
  };
447
660
  export type CksEnvironmentSecretValue = {
@@ -456,6 +669,8 @@ export type CksEnvironmentSecretValue = {
456
669
  };
457
670
  export type CksEnvironmentVersion = {
458
671
  __typename?: 'CksEnvironmentVersion';
672
+ /** Pinned cks-game-api git tag from the ingested manifest. */
673
+ gameApiGitTag: Maybe<Scalars['String']['output']>;
459
674
  notes: Maybe<Scalars['String']['output']>;
460
675
  releasedAt: Scalars['DateTime']['output'];
461
676
  status: Scalars['String']['output'];
@@ -463,20 +678,30 @@ export type CksEnvironmentVersion = {
463
678
  };
464
679
  export type CksOvhDatacenter = {
465
680
  __typename?: 'CksOvhDatacenter';
681
+ city: Maybe<Scalars['String']['output']>;
466
682
  continent: Maybe<Scalars['String']['output']>;
467
683
  isAvailable: Scalars['Boolean']['output'];
468
684
  name: Maybe<Scalars['String']['output']>;
469
685
  region: Scalars['String']['output'];
686
+ /** Number of customer-selectable instances in this datacenter after availability, pricing, and admin visibility filters. */
687
+ selectableInstanceCount: Scalars['Int']['output'];
470
688
  status: Scalars['String']['output'];
471
689
  syncedAt: Scalars['DateTime']['output'];
472
690
  };
691
+ /** Customer-selectable catalog instance flavor. Hidden, unavailable, or unpriced rows are omitted from environmentFlavors. */
473
692
  export type CksOvhFlavor = {
474
693
  __typename?: 'CksOvhFlavor';
694
+ availabilityStatus: Scalars['String']['output'];
475
695
  currency: Scalars['String']['output'];
476
- customerHourlyPriceCents: Maybe<Scalars['BigInt']['output']>;
696
+ /** Customer hourly price in cents. Non-null for every flavor returned from environmentFlavors. */
697
+ customerHourlyPriceCents: Scalars['BigInt']['output'];
698
+ /** Customer monthly reference price in cents. Display-only until monthly billing is implemented. */
699
+ customerMonthlyPriceCents: Maybe<Scalars['BigInt']['output']>;
477
700
  diskGb: Maybe<Scalars['Int']['output']>;
478
701
  flavorName: Scalars['String']['output'];
479
702
  flavorType: Maybe<Scalars['String']['output']>;
703
+ pricingMode: Scalars['String']['output'];
704
+ pricingSource: Maybe<Scalars['String']['output']>;
480
705
  quotaAvailable: Maybe<Scalars['Int']['output']>;
481
706
  ramMb: Maybe<Scalars['Int']['output']>;
482
707
  rawHourlyCostCents: Maybe<Scalars['BigInt']['output']>;
@@ -610,12 +835,249 @@ export type ClientTextPacketInput = {
610
835
  /** A unique identifier for the text source (typically the player UUID). Must be exactly 32 bytes when encoded as UTF-8. */
611
836
  uuid: Scalars['String']['input'];
612
837
  };
838
+ /** Operator-facing view of cks_environments. */
839
+ export type CpAdminEnvironment = {
840
+ __typename?: 'CpAdminEnvironment';
841
+ createdAt: Scalars['DateTime']['output'];
842
+ deletionProtectionEnabled: Scalars['Boolean']['output'];
843
+ deletionProtectionSetAt: Maybe<Scalars['DateTime']['output']>;
844
+ deletionProtectionSetByEmail: Maybe<Scalars['String']['output']>;
845
+ displayName: Scalars['String']['output'];
846
+ id: Scalars['ID']['output'];
847
+ orgId: Maybe<Scalars['String']['output']>;
848
+ primaryCloud: Scalars['String']['output'];
849
+ primaryRegion: Scalars['String']['output'];
850
+ slug: Scalars['String']['output'];
851
+ status: Scalars['String']['output'];
852
+ subdomainHandle: Maybe<Scalars['String']['output']>;
853
+ updatedAt: Scalars['DateTime']['output'];
854
+ };
855
+ export type CpAdminEnvironmentsPage = {
856
+ __typename?: 'CpAdminEnvironmentsPage';
857
+ page: Scalars['Int']['output'];
858
+ pageSize: Scalars['Int']['output'];
859
+ rows: Array<CpAdminEnvironment>;
860
+ total: Scalars['Int']['output'];
861
+ };
862
+ export type CpAuditEntry = {
863
+ __typename?: 'CpAuditEntry';
864
+ action: Scalars['String']['output'];
865
+ actorKind: Scalars['String']['output'];
866
+ actorUserId: Maybe<Scalars['String']['output']>;
867
+ createdAt: Scalars['DateTime']['output'];
868
+ entityId: Maybe<Scalars['String']['output']>;
869
+ entityKind: Maybe<Scalars['String']['output']>;
870
+ environmentId: Maybe<Scalars['String']['output']>;
871
+ id: Scalars['ID']['output'];
872
+ payloadJson: Maybe<Scalars['String']['output']>;
873
+ };
874
+ export type CpBuddyLiveRates = {
875
+ __typename?: 'CpBuddyLiveRates';
876
+ clientRecvMbitPerSec: Scalars['Float']['output'];
877
+ clientRecvMsgsPerSec: Scalars['Float']['output'];
878
+ clientSendMbitPerSec: Scalars['Float']['output'];
879
+ clientSendMsgsPerSec: Scalars['Float']['output'];
880
+ clients: Scalars['Float']['output'];
881
+ serverId: Scalars['String']['output'];
882
+ updatedAt: Scalars['DateTime']['output'];
883
+ };
884
+ export type CpChangeOrder = {
885
+ __typename?: 'CpChangeOrder';
886
+ claimedAt: Maybe<Scalars['DateTime']['output']>;
887
+ claimedBy: Maybe<Scalars['String']['output']>;
888
+ createdAt: Scalars['DateTime']['output'];
889
+ environmentId: Scalars['String']['output'];
890
+ error: Maybe<Scalars['String']['output']>;
891
+ finishedAt: Maybe<Scalars['DateTime']['output']>;
892
+ id: Scalars['ID']['output'];
893
+ kind: Scalars['String']['output'];
894
+ /** JSON-encoded payload */
895
+ payloadJson: Maybe<Scalars['String']['output']>;
896
+ status: Scalars['String']['output'];
897
+ updatedAt: Scalars['DateTime']['output'];
898
+ };
899
+ export type CpChangeOrderDetail = {
900
+ __typename?: 'CpChangeOrderDetail';
901
+ order: CpChangeOrder;
902
+ steps: Array<CpStepRow>;
903
+ tasks: Array<CpTaskRow>;
904
+ };
905
+ export type CpChangeOrdersPage = {
906
+ __typename?: 'CpChangeOrdersPage';
907
+ page: Scalars['Int']['output'];
908
+ pageSize: Scalars['Int']['output'];
909
+ rows: Array<CpChangeOrder>;
910
+ total: Scalars['Int']['output'];
911
+ };
912
+ export type CpEnvSecretRow = {
913
+ __typename?: 'CpEnvSecretRow';
914
+ createdAt: Scalars['DateTime']['output'];
915
+ environmentId: Scalars['String']['output'];
916
+ id: Scalars['ID']['output'];
917
+ kind: Maybe<Scalars['String']['output']>;
918
+ name: Scalars['String']['output'];
919
+ rotatedAt: Maybe<Scalars['DateTime']['output']>;
920
+ };
921
+ /** Operator-facing view of one ingested (or git-only pending) environment release manifest. */
922
+ export type CpEnvironmentVersionRow = {
923
+ __typename?: 'CpEnvironmentVersionRow';
924
+ buddyVersion: Maybe<Scalars['String']['output']>;
925
+ gameApiGitTag: Maybe<Scalars['String']['output']>;
926
+ /** True when a row exists in cks_environment_versions. */
927
+ inDb: Scalars['Boolean']['output'];
928
+ /** True when releases/<version>.yaml exists on the configured git ref. */
929
+ inGit: Scalars['Boolean']['output'];
930
+ ingestedAt: Scalars['DateTime']['output'];
931
+ /** True when this ingested available release is what org redeploy targets (newest available, or ENVIRONMENT_DEFAULT_VERSION). */
932
+ isLatestAvailable: Scalars['Boolean']['output'];
933
+ notes: Maybe<Scalars['String']['output']>;
934
+ releasedAt: Scalars['DateTime']['output'];
935
+ sourceCommit: Maybe<Scalars['String']['output']>;
936
+ status: Scalars['String']['output'];
937
+ updatedAt: Scalars['DateTime']['output'];
938
+ version: Scalars['String']['output'];
939
+ };
940
+ /** Operator release manifest list merged from git and cks_environment_versions. */
941
+ export type CpEnvironmentVersionsPage = {
942
+ __typename?: 'CpEnvironmentVersionsPage';
943
+ /** False when GitHub manifest listing failed (e.g. invalid GITHUB_PAT). Rows may still come from the database. */
944
+ gitSourceAvailable: Scalars['Boolean']['output'];
945
+ /** Version org redeploy resolves to when no explicit version is passed. */
946
+ latestAvailableVersion: Maybe<Scalars['String']['output']>;
947
+ rows: Array<CpEnvironmentVersionRow>;
948
+ };
949
+ export type CpOperatorUser = {
950
+ __typename?: 'CpOperatorUser';
951
+ createdAt: Scalars['DateTime']['output'];
952
+ email: Maybe<Scalars['String']['output']>;
953
+ gamertag: Maybe<Scalars['String']['output']>;
954
+ isOperator: Scalars['Boolean']['output'];
955
+ isSuperAdmin: Scalars['Boolean']['output'];
956
+ userId: Scalars['ID']['output'];
957
+ };
958
+ export type CpOvhCatalogRow = {
959
+ __typename?: 'CpOvhCatalogRow';
960
+ customerHourlyPriceCents: Maybe<Scalars['String']['output']>;
961
+ customerPricingMode: Scalars['String']['output'];
962
+ diskGb: Maybe<Scalars['Int']['output']>;
963
+ flavorName: Scalars['String']['output'];
964
+ inboundBandwidth: Maybe<Scalars['Int']['output']>;
965
+ outboundBandwidth: Maybe<Scalars['Int']['output']>;
966
+ ovhHourlyPriceCents: Maybe<Scalars['String']['output']>;
967
+ quotaAvailable: Maybe<Scalars['Int']['output']>;
968
+ ramMb: Maybe<Scalars['Int']['output']>;
969
+ region: Scalars['String']['output'];
970
+ vcpus: Maybe<Scalars['Int']['output']>;
971
+ };
972
+ /** Result of publishing an environment release from a game-api tag. */
973
+ export type CpPublishEnvironmentReleaseResult = {
974
+ __typename?: 'CpPublishEnvironmentReleaseResult';
975
+ /** True when releases/vX.Y.Z.yaml was committed to the manifest git ref. */
976
+ committedToGit: Scalars['Boolean']['output'];
977
+ /** Set when ingest succeeded but the GitHub manifest commit failed. */
978
+ gitCommitError: Maybe<Scalars['String']['output']>;
979
+ schemaChanged: Scalars['Boolean']['output'];
980
+ version: CpEnvironmentVersionRow;
981
+ };
982
+ export type CpSecretRow = {
983
+ __typename?: 'CpSecretRow';
984
+ createdAt: Scalars['DateTime']['output'];
985
+ environmentId: Scalars['String']['output'];
986
+ id: Scalars['ID']['output'];
987
+ kind: Maybe<Scalars['String']['output']>;
988
+ name: Scalars['String']['output'];
989
+ rotatedAt: Maybe<Scalars['DateTime']['output']>;
990
+ };
991
+ export type CpStepRow = {
992
+ __typename?: 'CpStepRow';
993
+ attempt: Scalars['Int']['output'];
994
+ claimedBy: Maybe<Scalars['String']['output']>;
995
+ createdAt: Scalars['DateTime']['output'];
996
+ error: Maybe<Scalars['String']['output']>;
997
+ finishedAt: Maybe<Scalars['DateTime']['output']>;
998
+ handleJson: Maybe<Scalars['String']['output']>;
999
+ id: Scalars['ID']['output'];
1000
+ idempotencyKey: Maybe<Scalars['String']['output']>;
1001
+ intentJson: Maybe<Scalars['String']['output']>;
1002
+ kind: Scalars['String']['output'];
1003
+ ordinal: Scalars['Int']['output'];
1004
+ outputJson: Maybe<Scalars['String']['output']>;
1005
+ payloadJson: Maybe<Scalars['String']['output']>;
1006
+ recheckAt: Maybe<Scalars['DateTime']['output']>;
1007
+ startedAt: Maybe<Scalars['DateTime']['output']>;
1008
+ status: Scalars['String']['output'];
1009
+ taskId: Scalars['String']['output'];
1010
+ updatedAt: Scalars['DateTime']['output'];
1011
+ };
1012
+ export type CpTaskRow = {
1013
+ __typename?: 'CpTaskRow';
1014
+ changeOrderId: Scalars['String']['output'];
1015
+ /** JSON-encoded context */
1016
+ contextJson: Maybe<Scalars['String']['output']>;
1017
+ createdAt: Scalars['DateTime']['output'];
1018
+ dependsOn: Array<Scalars['String']['output']>;
1019
+ environmentId: Maybe<Scalars['String']['output']>;
1020
+ error: Maybe<Scalars['String']['output']>;
1021
+ finishedAt: Maybe<Scalars['DateTime']['output']>;
1022
+ id: Scalars['ID']['output'];
1023
+ kind: Scalars['String']['output'];
1024
+ ordinal: Scalars['Int']['output'];
1025
+ startedAt: Maybe<Scalars['DateTime']['output']>;
1026
+ status: Scalars['String']['output'];
1027
+ updatedAt: Scalars['DateTime']['output'];
1028
+ };
1029
+ /** cks-game-api tag on GitHub that is not yet pinned by any available environment release. */
1030
+ export type CpUnreleasedGameApiTag = {
1031
+ __typename?: 'CpUnreleasedGameApiTag';
1032
+ /** Environment version that Publish & ingest would create (v0.1.N+1). */
1033
+ proposedEnvironmentVersion: Scalars['String']['output'];
1034
+ /** True when create-schema.sql differs between this tag and the current deploy-target game-api pin. */
1035
+ schemaChanged: Scalars['Boolean']['output'];
1036
+ tag: Scalars['String']['output'];
1037
+ /** ISO timestamp when the tag was created on GitHub. */
1038
+ taggedAt: Maybe<Scalars['String']['output']>;
1039
+ };
1040
+ /** Game-api tags eligible for one-click environment release publish. */
1041
+ export type CpUnreleasedGameApiTagsPage = {
1042
+ __typename?: 'CpUnreleasedGameApiTagsPage';
1043
+ /** gameApiGitTag on the current org deploy target, if any. */
1044
+ currentDeployTargetGameApiTag: Maybe<Scalars['String']['output']>;
1045
+ /** False when GitHub tag listing failed (e.g. invalid GITHUB_PAT). */
1046
+ gitSourceAvailable: Scalars['Boolean']['output'];
1047
+ tags: Array<CpUnreleasedGameApiTag>;
1048
+ };
1049
+ export type CpUsageMinuteRow = {
1050
+ __typename?: 'CpUsageMinuteRow';
1051
+ minute: Scalars['DateTime']['output'];
1052
+ recvBytes: Scalars['String']['output'];
1053
+ recvMsgs: Maybe<Scalars['String']['output']>;
1054
+ sendBytes: Scalars['String']['output'];
1055
+ sendMsgs: Maybe<Scalars['String']['output']>;
1056
+ };
1057
+ export type CpUsageRatePeaks = {
1058
+ __typename?: 'CpUsageRatePeaks';
1059
+ avgSendMbitPerSec: Scalars['Float']['output'];
1060
+ avgSendMsgsPerSec: Scalars['Float']['output'];
1061
+ peakSendMbitPerSec: Scalars['Float']['output'];
1062
+ peakSendMsgsPerSec: Scalars['Float']['output'];
1063
+ sampleMinutes: Scalars['Float']['output'];
1064
+ };
1065
+ export type CpUsageSummary = {
1066
+ __typename?: 'CpUsageSummary';
1067
+ buddyLive: Maybe<CpBuddyLiveRates>;
1068
+ environmentSlug: Scalars['String']['output'];
1069
+ graphql: Array<CpUsageMinuteRow>;
1070
+ orgId: Maybe<Scalars['String']['output']>;
1071
+ replication: Array<CpUsageMinuteRow>;
1072
+ replicationRates: CpUsageRatePeaks;
1073
+ };
613
1074
  export type CreateAccessTierInput = {
614
1075
  appId: Scalars['BigInt']['input'];
615
1076
  description?: InputMaybe<Scalars['String']['input']>;
616
1077
  isDefault?: InputMaybe<Scalars['Boolean']['input']>;
617
1078
  isFree?: InputMaybe<Scalars['Boolean']['input']>;
618
1079
  name: Scalars['String']['input'];
1080
+ permissionKeys?: InputMaybe<Array<Scalars['String']['input']>>;
619
1081
  tierOrder?: InputMaybe<Scalars['Int']['input']>;
620
1082
  };
621
1083
  export type CreateActorInput = {
@@ -638,25 +1100,62 @@ export type CreateAppInput = {
638
1100
  export type CreateAvatarInput = {
639
1101
  name?: InputMaybe<Scalars['String']['input']>;
640
1102
  };
1103
+ export type CreateChannelInput = {
1104
+ appId: Scalars['BigInt']['input'];
1105
+ description?: InputMaybe<Scalars['String']['input']>;
1106
+ /** When true (default), new members are auto-granted send_messages so they can post (open chat channel). When false, only roles you grant may post (announce/read-only channel). */
1107
+ membersCanSend?: InputMaybe<Scalars['Boolean']['input']>;
1108
+ /** open | request | invite | admin. Defaults to the app policy. */
1109
+ membershipPolicy?: InputMaybe<Scalars['String']['input']>;
1110
+ name: Scalars['String']['input'];
1111
+ };
641
1112
  export type CreateCheckoutInput = {
642
1113
  amountCents?: InputMaybe<Scalars['BigInt']['input']>;
643
1114
  appId?: InputMaybe<Scalars['BigInt']['input']>;
644
1115
  cancelUrl?: InputMaybe<Scalars['String']['input']>;
645
1116
  currency?: InputMaybe<Scalars['String']['input']>;
646
1117
  orgId?: InputMaybe<Scalars['BigInt']['input']>;
1118
+ planId?: InputMaybe<Scalars['BigInt']['input']>;
647
1119
  provider: PaymentProvider;
648
1120
  purpose: CheckoutPurpose;
649
1121
  successUrl?: InputMaybe<Scalars['String']['input']>;
650
1122
  tierId?: InputMaybe<Scalars['BigInt']['input']>;
651
1123
  };
1124
+ export type CreateContainerInput = {
1125
+ appId: Scalars['BigInt']['input'];
1126
+ description?: InputMaybe<Scalars['String']['input']>;
1127
+ displayName: Scalars['String']['input'];
1128
+ metadataJson?: InputMaybe<Scalars['String']['input']>;
1129
+ /** Owner user id; defaults to the caller for member/owner instantiation. */
1130
+ ownerUserId?: InputMaybe<Scalars['BigInt']['input']>;
1131
+ properties?: InputMaybe<Array<SeedPropertyInput>>;
1132
+ sessionId?: InputMaybe<Scalars['String']['input']>;
1133
+ typeName: Scalars['String']['input'];
1134
+ };
652
1135
  export type CreateEnvironmentInput = {
653
- databaseFlavor: Scalars['String']['input'];
1136
+ appIds?: InputMaybe<Array<Scalars['String']['input']>>;
1137
+ /** 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. */
1138
+ caddyFlavor?: InputMaybe<Scalars['String']['input']>;
1139
+ /** Flavor name from environmentFlavors(datacenter); must have a published hourly price. Required for dedicated. */
1140
+ databaseFlavor?: InputMaybe<Scalars['String']['input']>;
654
1141
  datacenter: Scalars['String']['input'];
655
1142
  displayName: Scalars['String']['input'];
656
- graphqlFlavor: Scalars['String']['input'];
1143
+ /** Deployment class: 'dedicated' (default, multi-VM) or 'dev_single' (one cheap dev-only VM running Postgres + management-api + game-api + Buddy). dev_single is not for production. */
1144
+ environmentClass?: InputMaybe<Scalars['String']['input']>;
1145
+ /** Single VM flavor for environmentClass='dev_single' (e.g. b3-8); must have a published hourly price. Ignored for dedicated. */
1146
+ flavor?: InputMaybe<Scalars['String']['input']>;
1147
+ /** Flavor name from environmentFlavors(datacenter) for per-tenant game-api VMs; must have a published hourly price. Required for dedicated. */
1148
+ gameApiFlavor?: InputMaybe<Scalars['String']['input']>;
1149
+ gameApiMaxServers?: InputMaybe<Scalars['Int']['input']>;
1150
+ gameApiMinServers?: InputMaybe<Scalars['Int']['input']>;
1151
+ loadBalancerCount?: InputMaybe<Scalars['Int']['input']>;
657
1152
  orgId: Scalars['BigInt']['input'];
658
- slug: Scalars['String']['input'];
659
- udpBuddyFlavor: Scalars['String']['input'];
1153
+ /** Optional explicit slug for scripts/E2E. When omitted, the API generates an opaque e-{12} slug. */
1154
+ slug?: InputMaybe<Scalars['String']['input']>;
1155
+ /** Flavor name from environmentFlavors(datacenter); must have a published hourly price. Required for dedicated. */
1156
+ udpBuddyFlavor?: InputMaybe<Scalars['String']['input']>;
1157
+ udpBuddyMaxServers?: InputMaybe<Scalars['Int']['input']>;
1158
+ udpBuddyMinServers?: InputMaybe<Scalars['Int']['input']>;
660
1159
  x25519PublicKeyBase64: Scalars['String']['input'];
661
1160
  };
662
1161
  export type CreateGridInput = {
@@ -669,6 +1168,12 @@ export type CreateGridResponse = {
669
1168
  error: UdpErrorCode;
670
1169
  grid: Maybe<Grid>;
671
1170
  };
1171
+ export type CreateGroupRoleInput = {
1172
+ groupId: Scalars['BigInt']['input'];
1173
+ permissions?: InputMaybe<Array<Scalars['String']['input']>>;
1174
+ rank?: InputMaybe<Scalars['Int']['input']>;
1175
+ roleName: Scalars['String']['input'];
1176
+ };
672
1177
  export type CreateOrgRoleInput = {
673
1178
  description?: InputMaybe<Scalars['String']['input']>;
674
1179
  orgId: Scalars['BigInt']['input'];
@@ -684,20 +1189,82 @@ export type CreateOrganizationInput = {
684
1189
  name: Scalars['String']['input'];
685
1190
  slug: Scalars['String']['input'];
686
1191
  };
1192
+ export type CreateSessionInput = {
1193
+ appId: Scalars['BigInt']['input'];
1194
+ metadataJson?: InputMaybe<Scalars['String']['input']>;
1195
+ name?: InputMaybe<Scalars['String']['input']>;
1196
+ /** Initial participants besides the creator. */
1197
+ participantUserIds?: InputMaybe<Array<Scalars['BigInt']['input']>>;
1198
+ };
1199
+ export type CreateTeamInput = {
1200
+ appId: Scalars['BigInt']['input'];
1201
+ description?: InputMaybe<Scalars['String']['input']>;
1202
+ /** open | request | invite | admin. Defaults to the app policy. */
1203
+ membershipPolicy?: InputMaybe<Scalars['String']['input']>;
1204
+ name: Scalars['String']['input'];
1205
+ };
687
1206
  export type CreateUserAppStateInput = {
688
1207
  appId: Scalars['BigInt']['input'];
689
1208
  state?: InputMaybe<Scalars['String']['input']>;
690
1209
  };
1210
+ export type DefineAppFeatureInput = {
1211
+ appId: Scalars['BigInt']['input'];
1212
+ description?: InputMaybe<Scalars['String']['input']>;
1213
+ featureKey: Scalars['String']['input'];
1214
+ };
691
1215
  export type DestroyEnvironmentInput = {
692
1216
  orgId: Scalars['BigInt']['input'];
693
1217
  slug: Scalars['String']['input'];
694
1218
  };
695
1219
  export type EnvironmentQuoteInput = {
696
- databaseFlavor: Scalars['String']['input'];
1220
+ /** 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. */
1221
+ caddyFlavor?: InputMaybe<Scalars['String']['input']>;
1222
+ /** Flavor name from environmentFlavors(datacenter); must have a published hourly price. Required for dedicated. */
1223
+ databaseFlavor?: InputMaybe<Scalars['String']['input']>;
697
1224
  datacenter: Scalars['String']['input'];
698
- graphqlFlavor: Scalars['String']['input'];
1225
+ /** Deployment class: 'dedicated' (default) or 'dev_single'. */
1226
+ environmentClass?: InputMaybe<Scalars['String']['input']>;
1227
+ /** Single VM flavor for environmentClass='dev_single'. Ignored for dedicated. */
1228
+ flavor?: InputMaybe<Scalars['String']['input']>;
1229
+ /** Flavor name from environmentFlavors(datacenter) for per-tenant game-api VMs; must have a published hourly price. Required for dedicated. */
1230
+ gameApiFlavor?: InputMaybe<Scalars['String']['input']>;
1231
+ gameApiMaxServers?: InputMaybe<Scalars['Int']['input']>;
1232
+ gameApiMinServers?: InputMaybe<Scalars['Int']['input']>;
1233
+ loadBalancerCount?: InputMaybe<Scalars['Int']['input']>;
699
1234
  orgId: Scalars['BigInt']['input'];
700
- udpBuddyFlavor: Scalars['String']['input'];
1235
+ /** Flavor name from environmentFlavors(datacenter); must have a published hourly price. Required for dedicated. */
1236
+ udpBuddyFlavor?: InputMaybe<Scalars['String']['input']>;
1237
+ udpBuddyMaxServers?: InputMaybe<Scalars['Int']['input']>;
1238
+ udpBuddyMinServers?: InputMaybe<Scalars['Int']['input']>;
1239
+ };
1240
+ export type EnvironmentUsageRollupRow = {
1241
+ __typename?: 'EnvironmentUsageRollupRow';
1242
+ displayName: Scalars['String']['output'];
1243
+ environmentId: Scalars['String']['output'];
1244
+ environmentSlug: Scalars['String']['output'];
1245
+ graphqlRecvBytes: Scalars['String']['output'];
1246
+ graphqlSendBytes: Scalars['String']['output'];
1247
+ replicationRecvBytes: Scalars['String']['output'];
1248
+ replicationSendBytes: Scalars['String']['output'];
1249
+ };
1250
+ export type EnvironmentUsageSummary = {
1251
+ __typename?: 'EnvironmentUsageSummary';
1252
+ buddyLive: Maybe<BuddyLiveRates>;
1253
+ environmentId: Scalars['String']['output'];
1254
+ environmentSlug: Scalars['String']['output'];
1255
+ graphql: Array<UsageMinuteRow>;
1256
+ orgId: Scalars['String']['output'];
1257
+ replication: Array<UsageMinuteRow>;
1258
+ replicationRates: UsageRatePeaks;
1259
+ };
1260
+ /** An org's free shared app slot quota usage. */
1261
+ export type FreeAppQuota = {
1262
+ __typename?: 'FreeAppQuota';
1263
+ orgId: Scalars['BigInt']['output'];
1264
+ paidApps: Scalars['Int']['output'];
1265
+ quota: Scalars['Int']['output'];
1266
+ remainingFree: Scalars['Int']['output'];
1267
+ usedFree: Scalars['Int']['output'];
701
1268
  };
702
1269
  export type FreePlayWindowInfo = {
703
1270
  __typename?: 'FreePlayWindowInfo';
@@ -705,6 +1272,22 @@ export type FreePlayWindowInfo = {
705
1272
  isCurrentlyActive: Scalars['Boolean']['output'];
706
1273
  nextWindowStart: Maybe<Scalars['String']['output']>;
707
1274
  };
1275
+ export type FunctionMutationInput = {
1276
+ /** Expression string (compiled to AST server-side). */
1277
+ expression: Scalars['String']['input'];
1278
+ property: Scalars['String']['input'];
1279
+ /** Container target: self | ref("uuid") | ref($param). */
1280
+ target: Scalars['String']['input'];
1281
+ };
1282
+ export type FunctionParamInput = {
1283
+ /** JSON-encoded default value. */
1284
+ defaultValueJson?: InputMaybe<Scalars['String']['input']>;
1285
+ description?: InputMaybe<Scalars['String']['input']>;
1286
+ name: Scalars['String']['input'];
1287
+ required?: InputMaybe<Scalars['Boolean']['input']>;
1288
+ sortOrder?: InputMaybe<Scalars['Int']['input']>;
1289
+ valueType: Scalars['String']['input'];
1290
+ };
708
1291
  /** Startup contract for browser game clients. Fetch this after login to initialize protocol/version checks and UDP proxy state in one round trip. */
709
1292
  export type GameClientBootstrap = {
710
1293
  __typename?: 'GameClientBootstrap';
@@ -720,6 +1303,16 @@ export type GameClientBootstrap = {
720
1303
  udpProxyConnectionStatus: UdpProxyConnectionStatus;
721
1304
  versionInfo: ServerVersionInfo;
722
1305
  };
1306
+ /** The elected host user of a game (app). Election is deterministic across all cks-game-api replicas: among actors that are still fresh (recently heartbeated), the user whose earliest actor was created first wins, with a uuid tiebreaker. Row lifecycle is owned by Buddy (cks-udp-api); liveness (updated_at) is owned by game-api's actorHeartbeat mutation. */
1307
+ export type GameHost = {
1308
+ __typename?: 'GameHost';
1309
+ /** How many actors the host user currently owns in this app (always >= 1 when this object is returned). */
1310
+ actorCount: Scalars['Int']['output'];
1311
+ /** Timestamp of the host's earliest still-connected actor (`MIN(actors.created_at)` for the host's group). Used as the primary election ordering key. */
1312
+ earliestActorJoinedAt: Scalars['DateTime']['output'];
1313
+ /** The user_id of the elected host. Stable while this user has at least one fresh row in `actors` for the app; the next-oldest user takes over automatically once the current host stops heartbeating (its rows age past HOST_ACTOR_FRESHNESS_SECONDS) or Buddy idle-evicts its last row. */
1314
+ hostUserId: Scalars['BigInt']['output'];
1315
+ };
723
1316
  /** Generic error response from the UDP game server. Uses the sequence number to match the original request that failed. */
724
1317
  export type GenericErrorResponse = {
725
1318
  __typename?: 'GenericErrorResponse';
@@ -750,21 +1343,231 @@ export type GetVoxelListInput = {
750
1343
  appId: Scalars['BigInt']['input'];
751
1344
  coordinates: ChunkCoordinatesInput;
752
1345
  };
1346
+ export type GmAppFeature = {
1347
+ __typename?: 'GmAppFeature';
1348
+ appId: Scalars['BigInt']['output'];
1349
+ description: Maybe<Scalars['String']['output']>;
1350
+ featureKey: Scalars['String']['output'];
1351
+ };
1352
+ export type GmAppPolicy = {
1353
+ __typename?: 'GmAppPolicy';
1354
+ appId: Scalars['BigInt']['output'];
1355
+ defaultParticipantRole: Scalars['String']['output'];
1356
+ sessionCreationPolicy: Scalars['String']['output'];
1357
+ };
1358
+ export type GmContainer = {
1359
+ __typename?: 'GmContainer';
1360
+ appId: Scalars['BigInt']['output'];
1361
+ containerId: Scalars['String']['output'];
1362
+ description: Maybe<Scalars['String']['output']>;
1363
+ displayName: Scalars['String']['output'];
1364
+ /** JSON object of developer metadata. */
1365
+ metadataJson: Scalars['String']['output'];
1366
+ ownerUserId: Maybe<Scalars['BigInt']['output']>;
1367
+ sessionId: Maybe<Scalars['String']['output']>;
1368
+ typeName: Scalars['String']['output'];
1369
+ };
1370
+ export type GmContainerState = {
1371
+ __typename?: 'GmContainerState';
1372
+ appId: Scalars['BigInt']['output'];
1373
+ containerId: Scalars['String']['output'];
1374
+ displayName: Scalars['String']['output'];
1375
+ ownerUserId: Maybe<Scalars['BigInt']['output']>;
1376
+ /** JSON object of visible properties (filtered by the caller). */
1377
+ propertiesJson: Scalars['String']['output'];
1378
+ sessionId: Maybe<Scalars['String']['output']>;
1379
+ typeName: Scalars['String']['output'];
1380
+ };
1381
+ export type GmContainerType = {
1382
+ __typename?: 'GmContainerType';
1383
+ appId: Scalars['BigInt']['output'];
1384
+ defaultPropertyVisibility: Scalars['String']['output'];
1385
+ description: Maybe<Scalars['String']['output']>;
1386
+ displayName: Scalars['String']['output'];
1387
+ instantiableBy: Scalars['String']['output'];
1388
+ /** JSON object of developer metadata. */
1389
+ metadataJson: Scalars['String']['output'];
1390
+ typeName: Scalars['String']['output'];
1391
+ };
1392
+ export type GmEdge = {
1393
+ __typename?: 'GmEdge';
1394
+ edgeId: Scalars['String']['output'];
1395
+ fromContainerId: Scalars['String']['output'];
1396
+ relationshipType: Scalars['String']['output'];
1397
+ toContainerId: Scalars['String']['output'];
1398
+ weight: Maybe<Scalars['Float']['output']>;
1399
+ };
1400
+ export type GmEvent = {
1401
+ __typename?: 'GmEvent';
1402
+ callerUserId: Maybe<Scalars['BigInt']['output']>;
1403
+ errorMessage: Maybe<Scalars['String']['output']>;
1404
+ eventId: Scalars['String']['output'];
1405
+ executedAt: Scalars['DateTime']['output'];
1406
+ functionName: Scalars['String']['output'];
1407
+ /** JSON array of applied mutations. */
1408
+ mutationsAppliedJson: Scalars['String']['output'];
1409
+ /** JSON object of params. */
1410
+ paramsJson: Scalars['String']['output'];
1411
+ /** JSON-encoded return value. */
1412
+ returnValueJson: Maybe<Scalars['String']['output']>;
1413
+ selfContainerId: Maybe<Scalars['String']['output']>;
1414
+ sessionId: Maybe<Scalars['String']['output']>;
1415
+ success: Scalars['Boolean']['output'];
1416
+ };
1417
+ export type GmFunction = {
1418
+ __typename?: 'GmFunction';
1419
+ appId: Scalars['BigInt']['output'];
1420
+ containerTypeName: Maybe<Scalars['String']['output']>;
1421
+ description: Maybe<Scalars['String']['output']>;
1422
+ functionId: Scalars['String']['output'];
1423
+ /** JSON-encoded invoke policy rule tree. */
1424
+ invokePolicyJson: Maybe<Scalars['String']['output']>;
1425
+ invokeScope: Scalars['String']['output'];
1426
+ mutations: Array<GmFunctionMutation>;
1427
+ name: Scalars['String']['output'];
1428
+ parameters: Array<GmFunctionParam>;
1429
+ returnExpression: Maybe<Scalars['String']['output']>;
1430
+ returnType: Maybe<Scalars['String']['output']>;
1431
+ /** Non-fatal static-analysis warnings from the last upload. */
1432
+ warnings: Array<Scalars['String']['output']>;
1433
+ };
1434
+ export type GmFunctionMutation = {
1435
+ __typename?: 'GmFunctionMutation';
1436
+ expression: Scalars['String']['output'];
1437
+ property: Scalars['String']['output'];
1438
+ /** Container reference target: self | ref("uuid") | ref($param). */
1439
+ target: Scalars['String']['output'];
1440
+ };
1441
+ export type GmFunctionParam = {
1442
+ __typename?: 'GmFunctionParam';
1443
+ /** JSON-encoded default value. */
1444
+ defaultValueJson: Maybe<Scalars['String']['output']>;
1445
+ description: Maybe<Scalars['String']['output']>;
1446
+ name: Scalars['String']['output'];
1447
+ required: Scalars['Boolean']['output'];
1448
+ sortOrder: Scalars['Int']['output'];
1449
+ valueType: Scalars['String']['output'];
1450
+ };
1451
+ export type GmInvokeResult = {
1452
+ __typename?: 'GmInvokeResult';
1453
+ errorMessage: Maybe<Scalars['String']['output']>;
1454
+ eventId: Scalars['String']['output'];
1455
+ functionName: Scalars['String']['output'];
1456
+ mutationsApplied: Array<GmMutationApplied>;
1457
+ /** JSON-encoded return value. */
1458
+ returnValueJson: Maybe<Scalars['String']['output']>;
1459
+ success: Scalars['Boolean']['output'];
1460
+ };
1461
+ export type GmMutationApplied = {
1462
+ __typename?: 'GmMutationApplied';
1463
+ containerId: Scalars['String']['output'];
1464
+ key: Scalars['String']['output'];
1465
+ newValueJson: Maybe<Scalars['String']['output']>;
1466
+ oldValueJson: Maybe<Scalars['String']['output']>;
1467
+ valueType: Scalars['String']['output'];
1468
+ };
1469
+ export type GmPropertyDef = {
1470
+ __typename?: 'GmPropertyDef';
1471
+ appId: Scalars['BigInt']['output'];
1472
+ containerTypeName: Scalars['String']['output'];
1473
+ /** JSON-encoded default value. */
1474
+ defaultValueJson: Maybe<Scalars['String']['output']>;
1475
+ description: Maybe<Scalars['String']['output']>;
1476
+ key: Scalars['String']['output'];
1477
+ valueType: Scalars['String']['output'];
1478
+ visibility: Scalars['String']['output'];
1479
+ writable: Scalars['String']['output'];
1480
+ };
1481
+ export type GmSeedResult = {
1482
+ __typename?: 'GmSeedResult';
1483
+ containerTypesCreated: Scalars['Int']['output'];
1484
+ containersCreated: Scalars['Int']['output'];
1485
+ edgesCreated: Scalars['Int']['output'];
1486
+ functionsCreated: Scalars['Int']['output'];
1487
+ /** JSON object mapping seed temp_id -> created container UUID. */
1488
+ idMapJson: Scalars['String']['output'];
1489
+ propertyDefinitionsCreated: Scalars['Int']['output'];
1490
+ warnings: Array<Scalars['String']['output']>;
1491
+ };
1492
+ export type GmSession = {
1493
+ __typename?: 'GmSession';
1494
+ appId: Scalars['BigInt']['output'];
1495
+ createdByUserId: Maybe<Scalars['BigInt']['output']>;
1496
+ currentTurnUserId: Maybe<Scalars['BigInt']['output']>;
1497
+ /** JSON object of developer metadata. */
1498
+ metadataJson: Scalars['String']['output'];
1499
+ name: Maybe<Scalars['String']['output']>;
1500
+ sessionId: Scalars['String']['output'];
1501
+ status: Scalars['String']['output'];
1502
+ };
1503
+ export type GmSessionParticipant = {
1504
+ __typename?: 'GmSessionParticipant';
1505
+ role: Scalars['String']['output'];
1506
+ sessionId: Scalars['String']['output'];
1507
+ userId: Scalars['BigInt']['output'];
1508
+ };
1509
+ export type GmTierFeature = {
1510
+ __typename?: 'GmTierFeature';
1511
+ appId: Scalars['BigInt']['output'];
1512
+ featureKey: Scalars['String']['output'];
1513
+ tierId: Scalars['BigInt']['output'];
1514
+ };
1515
+ export type GmTraverseResult = {
1516
+ __typename?: 'GmTraverseResult';
1517
+ edges: Array<GmEdge>;
1518
+ nodes: Array<GmContainer>;
1519
+ rootId: Scalars['String']['output'];
1520
+ };
1521
+ export type GmTypeSchema = {
1522
+ __typename?: 'GmTypeSchema';
1523
+ functions: Array<GmFunction>;
1524
+ propertyDefinitions: Array<GmPropertyDef>;
1525
+ typeName: Scalars['String']['output'];
1526
+ };
753
1527
  export type GrantAppAccessInput = {
754
1528
  appId: Scalars['BigInt']['input'];
755
1529
  grantedBy?: InputMaybe<Scalars['String']['input']>;
756
1530
  tierId?: InputMaybe<Scalars['BigInt']['input']>;
757
1531
  userId: Scalars['BigInt']['input'];
758
1532
  };
1533
+ export type GrantGridPermissionsInput = {
1534
+ appId: Scalars['BigInt']['input'];
1535
+ expiresAt?: InputMaybe<Scalars['DateTime']['input']>;
1536
+ gridId: Scalars['BigInt']['input'];
1537
+ permissionKeys: Array<Scalars['String']['input']>;
1538
+ userId: Scalars['BigInt']['input'];
1539
+ };
1540
+ export type GrantTierFeatureInput = {
1541
+ appId: Scalars['BigInt']['input'];
1542
+ featureKey: Scalars['String']['input'];
1543
+ tierId: Scalars['BigInt']['input'];
1544
+ };
759
1545
  export type GraphQlServer = {
760
1546
  __typename?: 'GraphQLServer';
1547
+ apiPort: Scalars['Int']['output'];
1548
+ cpuUsagePct: Maybe<Scalars['Float']['output']>;
761
1549
  createdAt: Scalars['DateTime']['output'];
762
1550
  graphqlServerId: Scalars['ID']['output'];
763
1551
  ip4: Maybe<Scalars['String']['output']>;
764
1552
  ip6: Maybe<Scalars['String']['output']>;
1553
+ /** Logical kind of GraphQL service: 'management-api' or 'game-api'. */
1554
+ kind: Maybe<Scalars['String']['output']>;
1555
+ loadAverage1m: Maybe<Scalars['Float']['output']>;
1556
+ memoryUsagePct: Maybe<Scalars['Float']['output']>;
1557
+ providerInstanceId: Maybe<Scalars['String']['output']>;
1558
+ publicIp4: Maybe<Scalars['String']['output']>;
1559
+ publicIp6: Maybe<Scalars['String']['output']>;
1560
+ runtimeServerId: Maybe<Scalars['String']['output']>;
765
1561
  status: ServerState;
766
1562
  updatedAt: Scalars['DateTime']['output'];
767
1563
  };
1564
+ export type GraphqlOperationUsageRow = {
1565
+ __typename?: 'GraphqlOperationUsageRow';
1566
+ operationName: Scalars['String']['output'];
1567
+ recvBytes: Scalars['String']['output'];
1568
+ sendBytes: Scalars['String']['output'];
1569
+ totalOps: Scalars['String']['output'];
1570
+ };
768
1571
  export type Grid = {
769
1572
  __typename?: 'Grid';
770
1573
  app_id: Scalars['BigInt']['output'];
@@ -773,10 +1576,93 @@ export type Grid = {
773
1576
  high_chunk: ChunkCoordinates;
774
1577
  low_chunk: ChunkCoordinates;
775
1578
  };
1579
+ export type GridGroupGrant = {
1580
+ __typename?: 'GridGroupGrant';
1581
+ appId: Scalars['BigInt']['output'];
1582
+ expiresAt: Maybe<Scalars['DateTime']['output']>;
1583
+ gridId: Scalars['BigInt']['output'];
1584
+ groupId: Scalars['BigInt']['output'];
1585
+ /** Null means the grant applies to all members of the group. */
1586
+ groupRoleId: Maybe<Scalars['BigInt']['output']>;
1587
+ permissionKey: Scalars['String']['output'];
1588
+ };
1589
+ export type GridPermissionLimits = {
1590
+ __typename?: 'GridPermissionLimits';
1591
+ appId: Scalars['BigInt']['output'];
1592
+ gridId: Scalars['BigInt']['output'];
1593
+ /** The permission keys this grid is limited to. Empty means no limit (every active grid permission is allowed). */
1594
+ permissionKeys: Array<Scalars['String']['output']>;
1595
+ };
1596
+ export type GridUserPermissions = {
1597
+ __typename?: 'GridUserPermissions';
1598
+ appId: Scalars['BigInt']['output'];
1599
+ gridId: Scalars['BigInt']['output'];
1600
+ permissionKeys: Array<Scalars['String']['output']>;
1601
+ userId: Scalars['BigInt']['output'];
1602
+ };
1603
+ export type Group = {
1604
+ __typename?: 'Group';
1605
+ appId: Scalars['BigInt']['output'];
1606
+ createdAt: Scalars['DateTime']['output'];
1607
+ /** Optional role auto-assigned to every new member (e.g. a channel "member" role granting send_messages). Null means new members get no role by default. */
1608
+ defaultRoleId: Maybe<Scalars['BigInt']['output']>;
1609
+ description: Maybe<Scalars['String']['output']>;
1610
+ groupId: Scalars['BigInt']['output'];
1611
+ groupType: Scalars['String']['output'];
1612
+ membershipPolicy: Scalars['String']['output'];
1613
+ name: Scalars['String']['output'];
1614
+ ownerUserId: Maybe<Scalars['BigInt']['output']>;
1615
+ status: Scalars['String']['output'];
1616
+ };
1617
+ export type GroupMember = {
1618
+ __typename?: 'GroupMember';
1619
+ createdAt: Scalars['DateTime']['output'];
1620
+ groupId: Scalars['BigInt']['output'];
1621
+ groupMemberId: Scalars['BigInt']['output'];
1622
+ roles: Array<GroupRole>;
1623
+ status: Scalars['String']['output'];
1624
+ userId: Scalars['BigInt']['output'];
1625
+ };
1626
+ export type GroupMembership = {
1627
+ __typename?: 'GroupMembership';
1628
+ group: Group;
1629
+ joinedAt: Scalars['DateTime']['output'];
1630
+ permissions: Array<Scalars['String']['output']>;
1631
+ roles: Array<GroupRole>;
1632
+ };
1633
+ export type GroupRole = {
1634
+ __typename?: 'GroupRole';
1635
+ createdAt: Scalars['DateTime']['output'];
1636
+ groupId: Scalars['BigInt']['output'];
1637
+ groupRoleId: Scalars['BigInt']['output'];
1638
+ isSystem: Scalars['Boolean']['output'];
1639
+ permissions: Array<Scalars['String']['output']>;
1640
+ rank: Scalars['Int']['output'];
1641
+ roleName: Scalars['String']['output'];
1642
+ };
1643
+ export type IngestEnvironmentVersionInput = {
1644
+ force?: Scalars['Boolean']['input'];
1645
+ notes?: InputMaybe<Scalars['String']['input']>;
1646
+ status?: InputMaybe<Scalars['String']['input']>;
1647
+ version: Scalars['String']['input'];
1648
+ };
776
1649
  export type InviteOrgMemberInput = {
777
1650
  orgId: Scalars['BigInt']['input'];
778
1651
  userId: Scalars['BigInt']['input'];
779
1652
  };
1653
+ export type InvokeFunctionInput = {
1654
+ appId: Scalars['BigInt']['input'];
1655
+ functionName: Scalars['String']['input'];
1656
+ /** JSON object of params. */
1657
+ paramsJson?: InputMaybe<Scalars['String']['input']>;
1658
+ selfContainerId: Scalars['String']['input'];
1659
+ sessionId?: InputMaybe<Scalars['String']['input']>;
1660
+ };
1661
+ export type JoinSessionInput = {
1662
+ appId: Scalars['BigInt']['input'];
1663
+ role?: InputMaybe<Scalars['String']['input']>;
1664
+ sessionId: Scalars['String']['input'];
1665
+ };
780
1666
  export type ListVoxelUpdatesByDistanceInput = {
781
1667
  appId: Scalars['BigInt']['input'];
782
1668
  centerCoordinate: ChunkCoordinatesInput;
@@ -805,8 +1691,18 @@ export type LoginUserInput = {
805
1691
  };
806
1692
  export type Mutation = {
807
1693
  __typename?: 'Mutation';
1694
+ /** Liveness heartbeat for the authenticated user's actors in an app. Refreshes actors.updated_at for every actor row the user owns so the user stays host-eligible, then returns the freshly-elected host (same shape as the gameHost query) so a client can fold its poll and heartbeat into one round-trip. Call on an interval shorter than HOST_ACTOR_FRESHNESS_SECONDS. Only refreshes rows that already exist (created by Buddy on chunk entry); returns null when no fresh actors exist for the app. */
1695
+ actorHeartbeat: Maybe<GameHost>;
1696
+ /** Add a user to a channel or approve a pending request (manage_members). */
1697
+ addChannelMember: GroupMember;
1698
+ /** Add a user to a team or approve a pending request (manage_members). */
1699
+ addTeamMember: GroupMember;
808
1700
  archiveAccessTier: AppAccessTier;
809
1701
  archiveApp: App;
1702
+ assignGroupToGrid: Array<GridGroupGrant>;
1703
+ cancelSharedSubscription: AppSharedSubscription;
1704
+ /** Captures an approved PayPal order after the hosted checkout redirects back. Wallet credit still reconciles through PayPal webhooks. */
1705
+ capturePaypalCheckout: Checkout;
810
1706
  changePassword: Scalars['Boolean']['output'];
811
1707
  confirmEmail: Scalars['Boolean']['output'];
812
1708
  /** 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. */
@@ -815,37 +1711,103 @@ export type Mutation = {
815
1711
  createActor: Actor;
816
1712
  createApp: App;
817
1713
  createAvatar: Avatar;
1714
+ /** Create a channel. Allowed per the app channel policy (admin | member | anyone). The creator becomes the owner with a system leader role. When membersCanSend is true (default), a default member role granting send_messages is created and auto-assigned to joiners. */
1715
+ createChannel: Group;
1716
+ /** Create a channel role (manage_roles). */
1717
+ createChannelRole: GroupRole;
818
1718
  /** Creates a Checkout row, opens the provider session, and returns the row with externalUrl set. Redirect the user to externalUrl. Status starts PENDING and updates via webhook. */
819
1719
  createCheckout: Checkout;
1720
+ /** Creates an environment only if each selected instance flavor is available and customer-priced in the catalog (same rule as environmentQuote). Use environmentFlavors / environmentDatacenters for valid options. */
820
1721
  createEnvironment: CksEnvironmentDetail;
821
1722
  createGrid: CreateGridResponse;
822
1723
  createOrgRole: OrgRole;
823
1724
  /** Returns the plaintext token exactly once. Save it; subsequent queries only show metadata. */
824
1725
  createOrgToken: OrgTokenWithSecret;
825
1726
  createOrganization: Organization;
1727
+ /** Create a team. Allowed per the app team policy (admin | member | anyone). The creator becomes the owner with a system leader role. */
1728
+ createTeam: Group;
1729
+ /** Create a team role (manage_roles). */
1730
+ createTeamRole: GroupRole;
826
1731
  deleteActor: Actor;
827
1732
  deleteAvatar: Avatar;
1733
+ /** Delete a channel (manage_group). */
1734
+ deleteChannel: Scalars['Boolean']['output'];
1735
+ /** Delete a non-system channel role (manage_roles). */
1736
+ deleteChannelRole: Scalars['Boolean']['output'];
1737
+ deleteCpSecret: Scalars['Boolean']['output'];
828
1738
  /** Soft-deletes the caller's account: anonymizes PII, revokes sessions. Wallet, voxel, and donation history stays intact via FK. */
829
1739
  deleteMyAccount: Scalars['Boolean']['output'];
830
1740
  deleteOrgRole: Scalars['Boolean']['output'];
831
1741
  deleteQuota: Scalars['Boolean']['output'];
1742
+ /** Delete a team (manage_group). */
1743
+ deleteTeam: Scalars['Boolean']['output'];
1744
+ /** Delete a non-system team role (manage_roles). */
1745
+ deleteTeamRole: Scalars['Boolean']['output'];
832
1746
  deleteUserAppState: UserAppState;
833
1747
  destroyEnvironment: CksEnvironmentChangeOrder;
834
1748
  /** 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). */
835
1749
  disconnectUdpProxy: Scalars['Boolean']['output'];
836
1750
  forceLogoutUser: Scalars['Boolean']['output'];
1751
+ gameModelAddEdge: GmEdge;
1752
+ gameModelCreateContainer: GmContainer;
1753
+ gameModelCreateSession: GmSession;
1754
+ gameModelDefineFeature: GmAppFeature;
1755
+ gameModelDeleteFunction: Scalars['Boolean']['output'];
1756
+ gameModelGrantTierFeature: GmTierFeature;
1757
+ gameModelInvoke: GmInvokeResult;
1758
+ gameModelJoinSession: GmSessionParticipant;
1759
+ gameModelRevokeTierFeature: Scalars['Boolean']['output'];
1760
+ gameModelSeed: GmSeedResult;
1761
+ gameModelSetPolicy: GmAppPolicy;
1762
+ gameModelSetProperty: GmContainer;
1763
+ gameModelSetSessionTurn: GmSession;
1764
+ gameModelUpsertContainerType: GmContainerType;
1765
+ gameModelUpsertFunction: GmFunction;
1766
+ gameModelUpsertPropertyDef: GmPropertyDef;
837
1767
  grantAppAccess: AppUserAccess;
1768
+ grantGridPermissions: GridUserPermissions;
1769
+ ingestEnvironmentVersion: CpEnvironmentVersionRow;
838
1770
  inviteOrgMember: OrgMember;
1771
+ /** Join a channel. Honors the channel membership policy (open -> active, request -> pending, otherwise rejected). */
1772
+ joinChannel: GroupMember;
1773
+ /** Join a team. Honors the team membership policy (open -> active, request -> pending, otherwise rejected). */
1774
+ joinTeam: GroupMember;
1775
+ /** Leave a channel. */
1776
+ leaveChannel: Scalars['Boolean']['output'];
1777
+ /** Leave a team. */
1778
+ leaveTeam: Scalars['Boolean']['output'];
839
1779
  login: AuthResponse;
840
1780
  logout: Scalars['Boolean']['output'];
841
1781
  logoutAllDevices: Scalars['Boolean']['output'];
1782
+ /** Publish an app to the shared game-api environment. Free under the org quota; otherwise pass a planId for a paid subscription checkout. */
1783
+ publishAppToShared: PublishAppResult;
1784
+ publishEnvironmentReleaseFromGameApiTag: CpPublishEnvironmentReleaseResult;
1785
+ /** Permanently deletes a destroyed environment record from the platform. Cloud resources must already be torn down via destroyEnvironment. */
1786
+ purgeEnvironment: Scalars['Boolean']['output'];
1787
+ putCpEnvSecret: CpEnvSecretRow;
1788
+ putCpSecret: CpSecretRow;
1789
+ /** Redeploys the environment to the latest available release version (or the configured default), reusing its current flavors/scaling and linked apps. Preserves the environment URLs. No-op-safe: re-running when already at latest still redeploys. If a prior deploy failed but stayed in_progress, it is abandoned first so the redeploy can proceed. */
1790
+ redeployEnvironment: CksEnvironmentChangeOrder;
842
1791
  register: AuthResponse;
1792
+ /** Remove a member from a channel (manage_members; members may remove themselves). */
1793
+ removeChannelMember: Scalars['Boolean']['output'];
843
1794
  removeOrgMember: Scalars['Boolean']['output'];
1795
+ removeSharedPaymentMethod: Scalars['Boolean']['output'];
1796
+ /** Remove a member from a team (manage_members; members may remove themselves). */
1797
+ removeTeamMember: Scalars['Boolean']['output'];
844
1798
  requestPasswordReset: Scalars['Boolean']['output'];
1799
+ /** Request to join a request-only channel (creates a pending membership a manager can approve). */
1800
+ requestToJoinChannel: GroupMember;
1801
+ /** Request to join a request-only team (creates a pending membership a manager can approve). */
1802
+ requestToJoinTeam: GroupMember;
845
1803
  resendConfirmationEmail: Scalars['Boolean']['output'];
846
1804
  resetPassword: Scalars['Boolean']['output'];
1805
+ /** SSH-restarts the Buddy systemd service on the active UDP runtime VM. Symptom relief when server_status heartbeat is stale; does not replace cks-udp-api pool fixes. */
1806
+ restartEnvironmentServices: CksEnvironmentChangeOrder;
847
1807
  resumeEnvironment: CksEnvironmentChangeOrder;
848
1808
  revokeAppAccess: AppUserAccess;
1809
+ revokeGridPermissions: GridUserPermissions;
1810
+ revokeGroupFromGrid: Array<GridGroupGrant>;
849
1811
  revokeOrgToken: Scalars['Boolean']['output'];
850
1812
  /** Reverts every voxel edit by `userId` in `appId` between `from` and `to`. Gated by the org permission `manage_apps`. Defaults to dryRun=true; pass dryRun=false to apply. */
851
1813
  rollbackVoxelUpdates: Array<RollbackVoxelEventResult>;
@@ -853,38 +1815,83 @@ export type Mutation = {
853
1815
  sendActorUpdate: Scalars['Boolean']['output'];
854
1816
  /** Send a voice audio packet to the game server. Opens a UDP proxy session automatically if none exists; notifications arrive on udpNotifications. */
855
1817
  sendAudioPacket: Scalars['Boolean']['output'];
1818
+ /** Publish a message to a channel. Delivered to every active member of the channel via udpNotifications (ChannelMessageNotification). Requires the channel send_messages permission; the server drops the message otherwise. Opens a UDP proxy session automatically if none exists. The sender receives no echo. */
1819
+ sendChannelMessage: Scalars['Boolean']['output'];
856
1820
  /** Send a client event to the game server. Opens a UDP proxy session automatically if none exists; related notifications arrive on udpNotifications. */
857
1821
  sendClientEvent: Scalars['Boolean']['output'];
1822
+ /** Send a direct actor-to-actor message, delivered only to the actor identified by targetUuid (not broadcast to nearby actors). The sender must know the destination actor’s chunk. Opens a UDP proxy session automatically if none exists; the target receives a SingleActorMessageNotification on udpNotifications. The sender receives no echo. */
1823
+ sendSingleActorMessage: Scalars['Boolean']['output'];
858
1824
  /** Send a text (chat) packet to the game server. Opens a UDP proxy session automatically if none exists; notifications arrive on udpNotifications. */
859
1825
  sendTextPacket: Scalars['Boolean']['output'];
860
1826
  /** Send a voxel update to the game server. Opens a UDP proxy session automatically if none exists; responses arrive on udpNotifications. */
861
1827
  sendVoxelUpdate: Scalars['Boolean']['output'];
862
1828
  setAppBudget: AppBudget;
1829
+ /** Set per-app hourly/daily spend caps (cents). Pass null to clear a cap. */
1830
+ setAppSpendCaps: AppRuntimeState;
863
1831
  /** Super admin only. Used to take down or relist apps platform-wide. */
864
1832
  setAppVisibility: App;
1833
+ /** Enable/disable off-session auto-billing. Pass limitCents=null for no limit. */
1834
+ setAutoBilling: OrgAutoBilling;
1835
+ /** Replace a member's channel roles (manage_roles). Re-pushes the member's effective send permission to Buddy. */
1836
+ setChannelMemberRoles: GroupMember;
1837
+ /** Set who may create channels in an app and the default membership policy for new channels (requires manage_apps). */
1838
+ setChannelPolicy: AppGroupPolicy;
865
1839
  setEarlyAccessOverride: User;
1840
+ setEnvironmentDeletionProtection: Scalars['Boolean']['output'];
1841
+ setGridPermissionLimits: GridPermissionLimits;
1842
+ /** Super-admin only. Flip users.is_operator to grant or revoke control-plane / operator access. */
1843
+ setOperator: User;
866
1844
  /** Super admin only. Used to freeze/unfreeze orgs platform-wide. */
867
1845
  setOrgStatus: Organization;
868
1846
  setQuota: ServiceQuota;
869
1847
  setSuperAdmin: User;
1848
+ /** Replace a member's roles (manage_roles). */
1849
+ setTeamMemberRoles: GroupMember;
1850
+ /** Set who may create teams in an app and the default membership policy for new teams (requires manage_apps). */
1851
+ setTeamPolicy: AppGroupPolicy;
1852
+ /** Begin vaulting a card for auto-billing. Returns a Stripe SetupIntent client secret for the browser to confirm. */
1853
+ setupSharedPaymentMethod: PaymentMethodSetup;
870
1854
  teleportRequest: TeleportResponse;
871
1855
  updateAccessTier: AppAccessTier;
872
1856
  updateActor: Actor;
873
1857
  updateActorState: Actor;
874
1858
  updateApp: App;
875
1859
  updateAvatar: Avatar;
1860
+ /** Set an avatar's per-app state. Only the avatar's owner may write; all players can read it. */
1861
+ updateAvatarAppState: AppAvatarState;
876
1862
  updateAvatarState: Avatar;
1863
+ /** Update channel name/description/membership policy (manage_group). */
1864
+ updateChannel: Group;
1865
+ /** Update a channel role (manage_roles). */
1866
+ updateChannelRole: GroupRole;
877
1867
  updateChunk: Chunk;
878
1868
  updateChunkLods: Maybe<Chunk>;
879
1869
  updateChunkState: Maybe<Chunk>;
1870
+ updateEnvironmentScaling: CksEnvironmentChangeOrder;
880
1871
  updateGamertag: User;
881
1872
  updateOrgMemberRoles: OrgMember;
882
1873
  updateOrgRole: OrgRole;
883
1874
  updateOrgToken: OrgToken;
1875
+ /** Update team name/description/membership policy (manage_group). */
1876
+ updateTeam: Group;
1877
+ /** Update a team role (manage_roles). */
1878
+ updateTeamRole: GroupRole;
884
1879
  updateUserAppState: UserAppState;
885
1880
  updateUserState: User;
886
1881
  updateUserType: User;
887
1882
  updateVoxel: Voxel;
1883
+ yankEnvironmentVersion: Scalars['Boolean']['output'];
1884
+ };
1885
+ export type MutationActorHeartbeatArgs = {
1886
+ appId: Scalars['BigInt']['input'];
1887
+ };
1888
+ export type MutationAddChannelMemberArgs = {
1889
+ groupId: Scalars['BigInt']['input'];
1890
+ userId: Scalars['BigInt']['input'];
1891
+ };
1892
+ export type MutationAddTeamMemberArgs = {
1893
+ groupId: Scalars['BigInt']['input'];
1894
+ userId: Scalars['BigInt']['input'];
888
1895
  };
889
1896
  export type MutationArchiveAccessTierArgs = {
890
1897
  tierId: Scalars['BigInt']['input'];
@@ -892,6 +1899,15 @@ export type MutationArchiveAccessTierArgs = {
892
1899
  export type MutationArchiveAppArgs = {
893
1900
  appId: Scalars['BigInt']['input'];
894
1901
  };
1902
+ export type MutationAssignGroupToGridArgs = {
1903
+ input: AssignGroupToGridInput;
1904
+ };
1905
+ export type MutationCancelSharedSubscriptionArgs = {
1906
+ appId: Scalars['BigInt']['input'];
1907
+ };
1908
+ export type MutationCapturePaypalCheckoutArgs = {
1909
+ orderId: Scalars['String']['input'];
1910
+ };
895
1911
  export type MutationChangePasswordArgs = {
896
1912
  currentPassword: Scalars['String']['input'];
897
1913
  newPassword: Scalars['String']['input'];
@@ -911,6 +1927,12 @@ export type MutationCreateAppArgs = {
911
1927
  export type MutationCreateAvatarArgs = {
912
1928
  input: CreateAvatarInput;
913
1929
  };
1930
+ export type MutationCreateChannelArgs = {
1931
+ input: CreateChannelInput;
1932
+ };
1933
+ export type MutationCreateChannelRoleArgs = {
1934
+ input: CreateGroupRoleInput;
1935
+ };
914
1936
  export type MutationCreateCheckoutArgs = {
915
1937
  input: CreateCheckoutInput;
916
1938
  };
@@ -929,18 +1951,40 @@ export type MutationCreateOrgTokenArgs = {
929
1951
  export type MutationCreateOrganizationArgs = {
930
1952
  input: CreateOrganizationInput;
931
1953
  };
1954
+ export type MutationCreateTeamArgs = {
1955
+ input: CreateTeamInput;
1956
+ };
1957
+ export type MutationCreateTeamRoleArgs = {
1958
+ input: CreateGroupRoleInput;
1959
+ };
932
1960
  export type MutationDeleteActorArgs = {
933
1961
  uuid: Scalars['String']['input'];
934
1962
  };
935
1963
  export type MutationDeleteAvatarArgs = {
936
1964
  id: Scalars['BigInt']['input'];
937
1965
  };
1966
+ export type MutationDeleteChannelArgs = {
1967
+ groupId: Scalars['BigInt']['input'];
1968
+ };
1969
+ export type MutationDeleteChannelRoleArgs = {
1970
+ groupRoleId: Scalars['BigInt']['input'];
1971
+ };
1972
+ export type MutationDeleteCpSecretArgs = {
1973
+ environmentId: Scalars['String']['input'];
1974
+ name: Scalars['String']['input'];
1975
+ };
938
1976
  export type MutationDeleteOrgRoleArgs = {
939
1977
  orgRoleId: Scalars['BigInt']['input'];
940
1978
  };
941
1979
  export type MutationDeleteQuotaArgs = {
942
1980
  quotaId: Scalars['BigInt']['input'];
943
1981
  };
1982
+ export type MutationDeleteTeamArgs = {
1983
+ groupId: Scalars['BigInt']['input'];
1984
+ };
1985
+ export type MutationDeleteTeamRoleArgs = {
1986
+ groupRoleId: Scalars['BigInt']['input'];
1987
+ };
944
1988
  export type MutationDeleteUserAppStateArgs = {
945
1989
  appId: Scalars['BigInt']['input'];
946
1990
  };
@@ -950,31 +1994,147 @@ export type MutationDestroyEnvironmentArgs = {
950
1994
  export type MutationForceLogoutUserArgs = {
951
1995
  userId: Scalars['BigInt']['input'];
952
1996
  };
1997
+ export type MutationGameModelAddEdgeArgs = {
1998
+ input: AddEdgeInput;
1999
+ };
2000
+ export type MutationGameModelCreateContainerArgs = {
2001
+ input: CreateContainerInput;
2002
+ };
2003
+ export type MutationGameModelCreateSessionArgs = {
2004
+ input: CreateSessionInput;
2005
+ };
2006
+ export type MutationGameModelDefineFeatureArgs = {
2007
+ input: DefineAppFeatureInput;
2008
+ };
2009
+ export type MutationGameModelDeleteFunctionArgs = {
2010
+ appId: Scalars['BigInt']['input'];
2011
+ name: Scalars['String']['input'];
2012
+ };
2013
+ export type MutationGameModelGrantTierFeatureArgs = {
2014
+ input: GrantTierFeatureInput;
2015
+ };
2016
+ export type MutationGameModelInvokeArgs = {
2017
+ input: InvokeFunctionInput;
2018
+ };
2019
+ export type MutationGameModelJoinSessionArgs = {
2020
+ input: JoinSessionInput;
2021
+ };
2022
+ export type MutationGameModelRevokeTierFeatureArgs = {
2023
+ input: GrantTierFeatureInput;
2024
+ };
2025
+ export type MutationGameModelSeedArgs = {
2026
+ input: SeedGameModelInput;
2027
+ };
2028
+ export type MutationGameModelSetPolicyArgs = {
2029
+ input: SetGameModelPolicyInput;
2030
+ };
2031
+ export type MutationGameModelSetPropertyArgs = {
2032
+ input: SetContainerPropertyInput;
2033
+ };
2034
+ export type MutationGameModelSetSessionTurnArgs = {
2035
+ input: SetSessionTurnInput;
2036
+ };
2037
+ export type MutationGameModelUpsertContainerTypeArgs = {
2038
+ input: UpsertContainerTypeInput;
2039
+ };
2040
+ export type MutationGameModelUpsertFunctionArgs = {
2041
+ input: UpsertFunctionInput;
2042
+ };
2043
+ export type MutationGameModelUpsertPropertyDefArgs = {
2044
+ input: UpsertPropertyDefInput;
2045
+ };
953
2046
  export type MutationGrantAppAccessArgs = {
954
2047
  input: GrantAppAccessInput;
955
2048
  };
2049
+ export type MutationGrantGridPermissionsArgs = {
2050
+ input: GrantGridPermissionsInput;
2051
+ };
2052
+ export type MutationIngestEnvironmentVersionArgs = {
2053
+ input: IngestEnvironmentVersionInput;
2054
+ };
956
2055
  export type MutationInviteOrgMemberArgs = {
957
2056
  input: InviteOrgMemberInput;
958
2057
  };
2058
+ export type MutationJoinChannelArgs = {
2059
+ groupId: Scalars['BigInt']['input'];
2060
+ };
2061
+ export type MutationJoinTeamArgs = {
2062
+ groupId: Scalars['BigInt']['input'];
2063
+ };
2064
+ export type MutationLeaveChannelArgs = {
2065
+ groupId: Scalars['BigInt']['input'];
2066
+ };
2067
+ export type MutationLeaveTeamArgs = {
2068
+ groupId: Scalars['BigInt']['input'];
2069
+ };
959
2070
  export type MutationLoginArgs = {
960
2071
  loginUserInput: LoginUserInput;
961
2072
  };
2073
+ export type MutationPublishAppToSharedArgs = {
2074
+ appId: Scalars['BigInt']['input'];
2075
+ cancelUrl?: InputMaybe<Scalars['String']['input']>;
2076
+ planId?: InputMaybe<Scalars['BigInt']['input']>;
2077
+ provider?: InputMaybe<PaymentProvider>;
2078
+ successUrl?: InputMaybe<Scalars['String']['input']>;
2079
+ };
2080
+ export type MutationPublishEnvironmentReleaseFromGameApiTagArgs = {
2081
+ input: PublishEnvironmentReleaseFromGameApiTagInput;
2082
+ };
2083
+ export type MutationPurgeEnvironmentArgs = {
2084
+ input: PurgeEnvironmentInput;
2085
+ };
2086
+ export type MutationPutCpEnvSecretArgs = {
2087
+ environmentId: Scalars['String']['input'];
2088
+ kind?: InputMaybe<Scalars['String']['input']>;
2089
+ name: Scalars['String']['input'];
2090
+ plaintext: Scalars['String']['input'];
2091
+ };
2092
+ export type MutationPutCpSecretArgs = {
2093
+ environmentId: Scalars['String']['input'];
2094
+ kind?: InputMaybe<Scalars['String']['input']>;
2095
+ name: Scalars['String']['input'];
2096
+ plaintext: Scalars['String']['input'];
2097
+ };
2098
+ export type MutationRedeployEnvironmentArgs = {
2099
+ input: RedeployEnvironmentInput;
2100
+ };
962
2101
  export type MutationRegisterArgs = {
963
2102
  registerUserInput: RegisterUserInput;
964
2103
  };
2104
+ export type MutationRemoveChannelMemberArgs = {
2105
+ groupId: Scalars['BigInt']['input'];
2106
+ userId: Scalars['BigInt']['input'];
2107
+ };
965
2108
  export type MutationRemoveOrgMemberArgs = {
966
2109
  orgId: Scalars['BigInt']['input'];
967
2110
  userId: Scalars['BigInt']['input'];
968
2111
  };
2112
+ export type MutationRemoveSharedPaymentMethodArgs = {
2113
+ orgId: Scalars['BigInt']['input'];
2114
+ paymentMethodId: Scalars['BigInt']['input'];
2115
+ };
2116
+ export type MutationRemoveTeamMemberArgs = {
2117
+ groupId: Scalars['BigInt']['input'];
2118
+ userId: Scalars['BigInt']['input'];
2119
+ };
969
2120
  export type MutationRequestPasswordResetArgs = {
970
2121
  email: Scalars['String']['input'];
971
2122
  };
2123
+ export type MutationRequestToJoinChannelArgs = {
2124
+ groupId: Scalars['BigInt']['input'];
2125
+ };
2126
+ export type MutationRequestToJoinTeamArgs = {
2127
+ groupId: Scalars['BigInt']['input'];
2128
+ };
972
2129
  export type MutationResendConfirmationEmailArgs = {
973
2130
  email: Scalars['String']['input'];
974
2131
  };
975
2132
  export type MutationResetPasswordArgs = {
976
2133
  resetPasswordInput: ResetPasswordInput;
977
2134
  };
2135
+ export type MutationRestartEnvironmentServicesArgs = {
2136
+ input: RestartEnvironmentServicesInput;
2137
+ };
978
2138
  export type MutationResumeEnvironmentArgs = {
979
2139
  input: ResumeEnvironmentInput;
980
2140
  };
@@ -982,6 +2142,12 @@ export type MutationRevokeAppAccessArgs = {
982
2142
  appId: Scalars['BigInt']['input'];
983
2143
  userId: Scalars['BigInt']['input'];
984
2144
  };
2145
+ export type MutationRevokeGridPermissionsArgs = {
2146
+ input: RevokeGridPermissionsInput;
2147
+ };
2148
+ export type MutationRevokeGroupFromGridArgs = {
2149
+ input: RevokeGroupFromGridInput;
2150
+ };
985
2151
  export type MutationRevokeOrgTokenArgs = {
986
2152
  orgTokenId: Scalars['BigInt']['input'];
987
2153
  };
@@ -994,9 +2160,15 @@ export type MutationSendActorUpdateArgs = {
994
2160
  export type MutationSendAudioPacketArgs = {
995
2161
  input: ClientAudioPacketInput;
996
2162
  };
2163
+ export type MutationSendChannelMessageArgs = {
2164
+ input: ChannelMessageInput;
2165
+ };
997
2166
  export type MutationSendClientEventArgs = {
998
2167
  input: ClientEventNotificationInput;
999
2168
  };
2169
+ export type MutationSendSingleActorMessageArgs = {
2170
+ input: SingleActorMessageInput;
2171
+ };
1000
2172
  export type MutationSendTextPacketArgs = {
1001
2173
  input: ClientTextPacketInput;
1002
2174
  };
@@ -1008,14 +2180,43 @@ export type MutationSetAppBudgetArgs = {
1008
2180
  monthlyLimitCents: Scalars['BigInt']['input'];
1009
2181
  orgId: Scalars['BigInt']['input'];
1010
2182
  };
2183
+ export type MutationSetAppSpendCapsArgs = {
2184
+ appId: Scalars['BigInt']['input'];
2185
+ dailyLimitCents?: InputMaybe<Scalars['BigInt']['input']>;
2186
+ hourlyLimitCents?: InputMaybe<Scalars['BigInt']['input']>;
2187
+ };
1011
2188
  export type MutationSetAppVisibilityArgs = {
1012
2189
  appId: Scalars['BigInt']['input'];
1013
2190
  visibility: AppVisibility;
1014
2191
  };
2192
+ export type MutationSetAutoBillingArgs = {
2193
+ enabled: Scalars['Boolean']['input'];
2194
+ limitCents?: InputMaybe<Scalars['BigInt']['input']>;
2195
+ lowWaterThresholdCents?: InputMaybe<Scalars['BigInt']['input']>;
2196
+ orgId: Scalars['BigInt']['input'];
2197
+ rechargeAmountCents?: InputMaybe<Scalars['BigInt']['input']>;
2198
+ };
2199
+ export type MutationSetChannelMemberRolesArgs = {
2200
+ input: SetMemberRolesInput;
2201
+ };
2202
+ export type MutationSetChannelPolicyArgs = {
2203
+ input: SetChannelPolicyInput;
2204
+ };
1015
2205
  export type MutationSetEarlyAccessOverrideArgs = {
1016
2206
  userId: Scalars['BigInt']['input'];
1017
2207
  value: Scalars['Boolean']['input'];
1018
2208
  };
2209
+ export type MutationSetEnvironmentDeletionProtectionArgs = {
2210
+ enabled: Scalars['Boolean']['input'];
2211
+ environmentId: Scalars['String']['input'];
2212
+ };
2213
+ export type MutationSetGridPermissionLimitsArgs = {
2214
+ input: SetGridPermissionLimitsInput;
2215
+ };
2216
+ export type MutationSetOperatorArgs = {
2217
+ userId: Scalars['BigInt']['input'];
2218
+ value: Scalars['Boolean']['input'];
2219
+ };
1019
2220
  export type MutationSetOrgStatusArgs = {
1020
2221
  orgId: Scalars['BigInt']['input'];
1021
2222
  status: Scalars['String']['input'];
@@ -1027,6 +2228,15 @@ export type MutationSetSuperAdminArgs = {
1027
2228
  userId: Scalars['BigInt']['input'];
1028
2229
  value: Scalars['Boolean']['input'];
1029
2230
  };
2231
+ export type MutationSetTeamMemberRolesArgs = {
2232
+ input: SetMemberRolesInput;
2233
+ };
2234
+ export type MutationSetTeamPolicyArgs = {
2235
+ input: SetTeamPolicyInput;
2236
+ };
2237
+ export type MutationSetupSharedPaymentMethodArgs = {
2238
+ orgId: Scalars['BigInt']['input'];
2239
+ };
1030
2240
  export type MutationTeleportRequestArgs = {
1031
2241
  input: TeleportRequestInput;
1032
2242
  };
@@ -1050,10 +2260,19 @@ export type MutationUpdateAvatarArgs = {
1050
2260
  id: Scalars['BigInt']['input'];
1051
2261
  input: UpdateAvatarInput;
1052
2262
  };
2263
+ export type MutationUpdateAvatarAppStateArgs = {
2264
+ input: UpdateAvatarAppStateInput;
2265
+ };
1053
2266
  export type MutationUpdateAvatarStateArgs = {
1054
2267
  id: Scalars['BigInt']['input'];
1055
2268
  input: UpdateAvatarStateInput;
1056
2269
  };
2270
+ export type MutationUpdateChannelArgs = {
2271
+ input: UpdateChannelInput;
2272
+ };
2273
+ export type MutationUpdateChannelRoleArgs = {
2274
+ input: UpdateGroupRoleInput;
2275
+ };
1057
2276
  export type MutationUpdateChunkArgs = {
1058
2277
  input: ChunkUpdateInput;
1059
2278
  };
@@ -1063,6 +2282,9 @@ export type MutationUpdateChunkLodsArgs = {
1063
2282
  export type MutationUpdateChunkStateArgs = {
1064
2283
  input: UpdateChunkStateInput;
1065
2284
  };
2285
+ export type MutationUpdateEnvironmentScalingArgs = {
2286
+ input: UpdateEnvironmentScalingInput;
2287
+ };
1066
2288
  export type MutationUpdateGamertagArgs = {
1067
2289
  input: UpdateGamertagInput;
1068
2290
  };
@@ -1079,6 +2301,12 @@ export type MutationUpdateOrgTokenArgs = {
1079
2301
  input: UpdateOrgTokenInput;
1080
2302
  orgTokenId: Scalars['BigInt']['input'];
1081
2303
  };
2304
+ export type MutationUpdateTeamArgs = {
2305
+ input: UpdateTeamInput;
2306
+ };
2307
+ export type MutationUpdateTeamRoleArgs = {
2308
+ input: UpdateGroupRoleInput;
2309
+ };
1082
2310
  export type MutationUpdateUserAppStateArgs = {
1083
2311
  input: CreateUserAppStateInput;
1084
2312
  };
@@ -1092,6 +2320,38 @@ export type MutationUpdateUserTypeArgs = {
1092
2320
  export type MutationUpdateVoxelArgs = {
1093
2321
  input: UpdateVoxelInput;
1094
2322
  };
2323
+ export type MutationYankEnvironmentVersionArgs = {
2324
+ version: Scalars['String']['input'];
2325
+ };
2326
+ export type NearbyGridPermissions = {
2327
+ __typename?: 'NearbyGridPermissions';
2328
+ appId: Scalars['BigInt']['output'];
2329
+ gridId: Scalars['BigInt']['output'];
2330
+ highChunk: ChunkCoordinates;
2331
+ lowChunk: ChunkCoordinates;
2332
+ permissionKeys: Array<Scalars['String']['output']>;
2333
+ userId: Scalars['BigInt']['output'];
2334
+ };
2335
+ export type NearbyGridPermissionsInput = {
2336
+ appId: Scalars['BigInt']['input'];
2337
+ highChunk: ChunkCoordinatesInput;
2338
+ lowChunk: ChunkCoordinatesInput;
2339
+ userId: Scalars['BigInt']['input'];
2340
+ };
2341
+ /** Org off-session auto-billing configuration. */
2342
+ export type OrgAutoBilling = {
2343
+ __typename?: 'OrgAutoBilling';
2344
+ autoBilledThisPeriodCents: Scalars['BigInt']['output'];
2345
+ enabled: Scalars['Boolean']['output'];
2346
+ hasPaymentMethod: Scalars['Boolean']['output'];
2347
+ lastError: Maybe<Scalars['String']['output']>;
2348
+ /** Max auto-billed per period in cents. Null = no limit. */
2349
+ limitCents: Maybe<Scalars['BigInt']['output']>;
2350
+ lowWaterThresholdCents: Scalars['BigInt']['output'];
2351
+ orgId: Scalars['BigInt']['output'];
2352
+ period: Scalars['String']['output'];
2353
+ rechargeAmountCents: Scalars['BigInt']['output'];
2354
+ };
1095
2355
  export type OrgMember = {
1096
2356
  __typename?: 'OrgMember';
1097
2357
  createdAt: Scalars['DateTime']['output'];
@@ -1128,8 +2388,10 @@ export type OrgRole = {
1128
2388
  export type OrgToken = {
1129
2389
  __typename?: 'OrgToken';
1130
2390
  createdAt: Scalars['DateTime']['output'];
2391
+ environmentId: Maybe<Scalars['String']['output']>;
1131
2392
  expiresAt: Maybe<Scalars['DateTime']['output']>;
1132
2393
  isActive: Scalars['Boolean']['output'];
2394
+ kind: Scalars['String']['output'];
1133
2395
  label: Maybe<Scalars['String']['output']>;
1134
2396
  lastUsedAt: Maybe<Scalars['DateTime']['output']>;
1135
2397
  orgId: Scalars['BigInt']['output'];
@@ -1174,11 +2436,63 @@ export type PageInfo = {
1174
2436
  offset: Scalars['Int']['output'];
1175
2437
  totalCount: Scalars['Int']['output'];
1176
2438
  };
2439
+ export type PaymentEventRecord = {
2440
+ __typename?: 'PaymentEventRecord';
2441
+ checkoutId: Maybe<Scalars['BigInt']['output']>;
2442
+ createdAt: Scalars['DateTime']['output'];
2443
+ error: Maybe<Scalars['String']['output']>;
2444
+ eventId: Scalars['BigInt']['output'];
2445
+ eventType: Scalars['String']['output'];
2446
+ externalEventId: Scalars['String']['output'];
2447
+ processedAt: Maybe<Scalars['DateTime']['output']>;
2448
+ provider: PaymentProvider;
2449
+ };
2450
+ export type PaymentEventsPage = {
2451
+ __typename?: 'PaymentEventsPage';
2452
+ items: Array<PaymentEventRecord>;
2453
+ pageInfo: PageInfo;
2454
+ };
2455
+ /** Stripe SetupIntent handle the browser uses to vault a card for auto-billing. */
2456
+ export type PaymentMethodSetup = {
2457
+ __typename?: 'PaymentMethodSetup';
2458
+ clientSecret: Maybe<Scalars['String']['output']>;
2459
+ externalCustomerId: Scalars['String']['output'];
2460
+ publishableKey: Maybe<Scalars['String']['output']>;
2461
+ };
1177
2462
  /** External payment processor for a checkout. */
1178
2463
  export declare enum PaymentProvider {
1179
2464
  Paypal = "PAYPAL",
1180
2465
  Stripe = "STRIPE"
1181
2466
  }
2467
+ /** Public platform discovery. Clients/SDKs read the shared game-api URL here to route apps deployed to the shared environment. */
2468
+ export type PlatformConfig = {
2469
+ __typename?: 'PlatformConfig';
2470
+ /** Free shared app slots an org gets before a paid subscription. */
2471
+ freeAppsPerOrg: Scalars['Int']['output'];
2472
+ /** Shared game-api HTTP/GraphQL root for shared-environment apps. */
2473
+ sharedGameApiUrl: Maybe<Scalars['String']['output']>;
2474
+ /** Shared game-api WebSocket root (subscriptions / UDP proxy). */
2475
+ sharedGameApiWsUrl: Maybe<Scalars['String']['output']>;
2476
+ };
2477
+ /** Result of publishing an app to the shared environment. Free path returns a runtime state with no checkout; paid path returns a checkout to redirect to. */
2478
+ export type PublishAppResult = {
2479
+ __typename?: 'PublishAppResult';
2480
+ appId: Scalars['BigInt']['output'];
2481
+ /** Subscription checkout to redirect to (paid path only). */
2482
+ checkout: Maybe<Checkout>;
2483
+ /** True when published under the free quota (no payment). */
2484
+ free: Scalars['Boolean']['output'];
2485
+ };
2486
+ export type PublishEnvironmentReleaseFromGameApiTagInput = {
2487
+ /** Overwrite an existing environment version row if it already exists. */
2488
+ force?: Scalars['Boolean']['input'];
2489
+ /** cks-game-api semver tag (e.g. v0.6.20). */
2490
+ gameApiTag: Scalars['String']['input'];
2491
+ };
2492
+ export type PurgeEnvironmentInput = {
2493
+ orgId: Scalars['BigInt']['input'];
2494
+ slug: Scalars['String']['input'];
2495
+ };
1182
2496
  export type Query = {
1183
2497
  __typename?: 'Query';
1184
2498
  /** Returns only active (ReadyForClients) GraphQL servers */
@@ -1191,29 +2505,88 @@ export type Query = {
1191
2505
  appBudget: Maybe<AppBudget>;
1192
2506
  appBudgets: Array<AppBudget>;
1193
2507
  appBySlug: Maybe<App>;
2508
+ /** Top GraphQL operations by bytes for an app in the time range. */
2509
+ appGraphqlOperations: Array<GraphqlOperationUsageRow>;
2510
+ /** Shared-environment runtime gate + current billing-window usage for an app. */
2511
+ appRuntimeState: AppRuntimeState;
2512
+ appSharedSubscription: Maybe<AppSharedSubscription>;
2513
+ /** Replication and GraphQL totals plus top operations for one app. */
2514
+ appUsageSummary: AppUsageSummary;
1194
2515
  appUserAccessByApp: Array<AppUserAccess>;
1195
2516
  /** Public marketplace listing. Returns visibility=PUBLIC + status=LIVE only. No auth required. */
1196
2517
  apps: AppsPage;
1197
2518
  appsForOrg: Array<App>;
1198
2519
  avatar: Avatar;
2520
+ /** Read one avatar's per-app state (public to all players). */
2521
+ avatarAppState: Maybe<AppAvatarState>;
2522
+ /** Batch-read per-app state for many avatars (public to all players). */
2523
+ avatarAppStates: Array<AppAvatarState>;
1199
2524
  batchLookupActors: Array<Actor>;
2525
+ /** Fetch one channel by id. */
2526
+ channel: Group;
2527
+ /** List the members of a channel. */
2528
+ channelMembers: Array<GroupMember>;
2529
+ /** The current channel creation/membership policy for an app. */
2530
+ channelPolicy: AppGroupPolicy;
2531
+ /** List the roles of a channel. */
2532
+ channelRoles: Array<GroupRole>;
2533
+ /** List active channels in an app. */
2534
+ channels: Array<Group>;
1200
2535
  /** Super admin only. Cross-tenant payments audit. */
1201
2536
  checkouts: CheckoutsPage;
2537
+ cpAudit: Array<CpAuditEntry>;
2538
+ cpChangeOrder: Maybe<CpChangeOrderDetail>;
2539
+ cpChangeOrders: CpChangeOrdersPage;
2540
+ cpEnvSecrets: Array<CpEnvSecretRow>;
2541
+ cpEnvironment: Maybe<CpAdminEnvironment>;
2542
+ cpEnvironmentVersions: CpEnvironmentVersionsPage;
2543
+ cpEnvironments: CpAdminEnvironmentsPage;
2544
+ cpOvhCatalogSummary: Array<CpOvhCatalogRow>;
2545
+ cpSecrets: Array<CpSecretRow>;
2546
+ cpUnreleasedGameApiTags: CpUnreleasedGameApiTagsPage;
2547
+ cpUsageSummary: CpUsageSummary;
1202
2548
  /** The most-specific quota that applies to (orgId, appId, tierId, metric). Walks tier -> app -> org -> free_tier_defaults. Returns null if nothing matches. */
1203
2549
  effectiveQuota: Maybe<ServiceQuota>;
2550
+ /** OVH datacenters that have at least one customer-priced instance flavor available for customer selection. */
1204
2551
  environmentDatacenters: Array<CksOvhDatacenter>;
2552
+ /** Customer-selectable instance flavors in the datacenter with current availability and customer pricing. */
1205
2553
  environmentFlavors: Array<CksOvhFlavor>;
2554
+ /** Pricing quote for the selected flavors. Fails if any flavor is unavailable, hidden, or lacks customer pricing. */
1206
2555
  environmentQuote: CksEnvironmentQuote;
2556
+ /** Per-app usage totals for apps linked to an environment. */
2557
+ environmentUsageByApp: Array<AppUsageRollupRow>;
2558
+ /** Per-minute replication and GraphQL usage for apps linked to an environment. Observability only. */
2559
+ environmentUsageSummary: EnvironmentUsageSummary;
1207
2560
  environmentVersions: Array<CksEnvironmentVersion>;
1208
2561
  freePlayWindowInfo: FreePlayWindowInfo;
1209
2562
  /** Single startup payload for browser game clients: current user, version requirements, UDP proxy status, realtime protocol details, and spatial send limits. */
1210
2563
  gameClientBootstrap: GameClientBootstrap;
2564
+ /** Returns the single elected host user for an app (game). Deterministic across all cks-game-api replicas behind the LB: the user whose earliest still-connected actor row was created first wins, with a uuid tiebreaker. Returns null when no actors exist for the app. Stale actors (no recent actorHeartbeat) are excluded once HOST_ACTOR_FRESHNESS_SECONDS is enabled. Clients should poll; there is no host-change subscription in v1. */
2565
+ gameHost: Maybe<GameHost>;
2566
+ gameModelContainer: GmContainer;
2567
+ gameModelContainerState: GmContainerState;
2568
+ gameModelContainerTypes: Array<GmContainerType>;
2569
+ gameModelContainers: Array<GmContainer>;
2570
+ gameModelEvents: Array<GmEvent>;
2571
+ gameModelFeatures: Array<GmAppFeature>;
2572
+ gameModelFunction: GmFunction;
2573
+ gameModelFunctions: Array<GmFunction>;
2574
+ gameModelPolicy: GmAppPolicy;
2575
+ gameModelPropertyDefs: Array<GmPropertyDef>;
2576
+ gameModelSession: GmSession;
2577
+ gameModelSessions: Array<GmSession>;
2578
+ gameModelTierFeatures: Array<GmTierFeature>;
2579
+ gameModelTraverse: GmTraverseResult;
2580
+ gameModelTypeSchema: GmTypeSchema;
1211
2581
  getChunk: Maybe<Chunk>;
1212
2582
  getChunkLods: Maybe<ChunkLodsResponse>;
1213
2583
  getChunksByDistance: ChunksByDistanceResponse;
1214
2584
  getVoxelList: ChunkVoxelResponse;
1215
2585
  /** Returns all registered GraphQL servers */
1216
2586
  graphqlServers: Array<GraphQlServer>;
2587
+ gridGroupGrants: Array<GridGroupGrant>;
2588
+ gridPermissionLimits: GridPermissionLimits;
2589
+ gridUserPermissions: GridUserPermissions;
1217
2590
  listVoxelUpdatesByDistance: VoxelUpdatesByDistanceResponse;
1218
2591
  listVoxels: Array<Voxel>;
1219
2592
  me: Maybe<User>;
@@ -1222,28 +2595,58 @@ export type Query = {
1222
2595
  /** Apps the caller can see: org member OR active app_user_access. */
1223
2596
  myApps: Array<App>;
1224
2597
  myAvatars: Array<AvatarDto>;
2598
+ /** The caller's channels in an app, with their roles and effective channel permissions. */
2599
+ myChannels: Array<GroupMembership>;
1225
2600
  myCheckouts: CheckoutsPage;
1226
2601
  myDonationData: UserDonationData;
1227
2602
  myOrganizations: Array<OrgMembership>;
1228
2603
  myPropertyTokens: UserPropertyTokenData;
2604
+ /** The caller's teams in an app, with their roles and effective team permissions. */
2605
+ myTeams: Array<GroupMembership>;
2606
+ nearbyGridPermissions: Array<NearbyGridPermissions>;
2607
+ operatorUsers: Array<CpOperatorUser>;
2608
+ orgAutoBilling: OrgAutoBilling;
1229
2609
  orgEnvironment: Maybe<CksEnvironmentDetail>;
1230
2610
  orgEnvironments: Array<CksEnvironment>;
2611
+ orgFreeAppQuota: FreeAppQuota;
1231
2612
  orgMembers: Array<OrgMember>;
2613
+ orgPaymentMethods: Array<SavedPaymentMethod>;
1232
2614
  /** The full seed list of permission keys. Used by the UI to render role editors. */
1233
2615
  orgPermissions: Array<OrgPermission>;
1234
2616
  orgRoles: Array<OrgRole>;
1235
2617
  orgTokens: Array<OrgToken>;
2618
+ /** Aggregate usage totals per environment in an organization. */
2619
+ orgUsageByEnvironment: Array<EnvironmentUsageRollupRow>;
1236
2620
  organization: Maybe<Organization>;
1237
2621
  organizationBySlug: Maybe<Organization>;
2622
+ /** Super admin only. Inbound payment webhook audit log. */
2623
+ paymentEvents: PaymentEventsPage;
2624
+ /** Public platform discovery. Returns the shared game-api URL clients use for shared-environment apps. No auth required. */
2625
+ platformConfig: PlatformConfig;
1238
2626
  quotasForApp: Array<ServiceQuota>;
1239
2627
  quotasForOrg: Array<ServiceQuota>;
2628
+ /** Runtime permission keys that can be granted through app tiers or grid permissions. */
2629
+ runtimePermissions: Array<Scalars['String']['output']>;
1240
2630
  /** Returns a random server from the lowest 20% of servers by client count to distribute load evenly */
1241
2631
  serverWithLeastClients: ServerStatus;
2632
+ /** Public catalog of paid shared-environment app-slot subscription plans. */
2633
+ sharedEnvPlans: Array<SharedEnvPlan>;
2634
+ /** Fetch one team by id. */
2635
+ team: Group;
2636
+ /** List the members of a team. */
2637
+ teamMembers: Array<GroupMember>;
2638
+ /** The current team creation/membership policy for an app. */
2639
+ teamPolicy: AppGroupPolicy;
2640
+ /** List the roles of a team. */
2641
+ teamRoles: Array<GroupRole>;
2642
+ /** List active teams in an app. */
2643
+ teams: Array<Group>;
1242
2644
  /** UDP proxy session status for the game token on this request. Without a game token, returns connected: false. Does not open a session—use udpNotifications or connectUdpProxy. */
1243
2645
  udpProxyConnectionStatus: UdpProxyConnectionStatus;
1244
2646
  user: Maybe<User>;
1245
2647
  userAppState: Maybe<UserAppState>;
1246
2648
  userAppStates: Array<UserAppState>;
2649
+ /** Avatars owned by a user. Non-owners receive public state only (private_state is stripped). */
1247
2650
  userAvatars: Array<Avatar>;
1248
2651
  /** Super admin only. Paginated user search; replaces the old `users`/`usersByGamertag`/`usersByEmail` triple. `query` is matched ILIKE-prefix against email, gamertag, disambiguation, and exact user_id. */
1249
2652
  usersPaginated: UsersPage;
@@ -1276,6 +2679,24 @@ export type QueryAppBySlugArgs = {
1276
2679
  appSlug: Scalars['String']['input'];
1277
2680
  orgSlug: Scalars['String']['input'];
1278
2681
  };
2682
+ export type QueryAppGraphqlOperationsArgs = {
2683
+ appId: Scalars['BigInt']['input'];
2684
+ limit?: InputMaybe<Scalars['Int']['input']>;
2685
+ orgId: Scalars['BigInt']['input'];
2686
+ since: Scalars['DateTime']['input'];
2687
+ };
2688
+ export type QueryAppRuntimeStateArgs = {
2689
+ appId: Scalars['BigInt']['input'];
2690
+ };
2691
+ export type QueryAppSharedSubscriptionArgs = {
2692
+ appId: Scalars['BigInt']['input'];
2693
+ };
2694
+ export type QueryAppUsageSummaryArgs = {
2695
+ appId: Scalars['BigInt']['input'];
2696
+ operationLimit?: InputMaybe<Scalars['Int']['input']>;
2697
+ orgId: Scalars['BigInt']['input'];
2698
+ since: Scalars['DateTime']['input'];
2699
+ };
1279
2700
  export type QueryAppUserAccessByAppArgs = {
1280
2701
  appId: Scalars['BigInt']['input'];
1281
2702
  limit?: InputMaybe<Scalars['Int']['input']>;
@@ -1293,14 +2714,69 @@ export type QueryAppsForOrgArgs = {
1293
2714
  export type QueryAvatarArgs = {
1294
2715
  id: Scalars['BigInt']['input'];
1295
2716
  };
2717
+ export type QueryAvatarAppStateArgs = {
2718
+ appId: Scalars['BigInt']['input'];
2719
+ avatarId: Scalars['BigInt']['input'];
2720
+ };
2721
+ export type QueryAvatarAppStatesArgs = {
2722
+ appId: Scalars['BigInt']['input'];
2723
+ avatarIds: Array<Scalars['BigInt']['input']>;
2724
+ };
1296
2725
  export type QueryBatchLookupActorsArgs = {
1297
2726
  input: BatchActorLookupInput;
1298
2727
  };
2728
+ export type QueryChannelArgs = {
2729
+ groupId: Scalars['BigInt']['input'];
2730
+ };
2731
+ export type QueryChannelMembersArgs = {
2732
+ groupId: Scalars['BigInt']['input'];
2733
+ };
2734
+ export type QueryChannelPolicyArgs = {
2735
+ appId: Scalars['BigInt']['input'];
2736
+ };
2737
+ export type QueryChannelRolesArgs = {
2738
+ groupId: Scalars['BigInt']['input'];
2739
+ };
2740
+ export type QueryChannelsArgs = {
2741
+ appId: Scalars['BigInt']['input'];
2742
+ };
1299
2743
  export type QueryCheckoutsArgs = {
1300
2744
  filter?: InputMaybe<CheckoutFilterInput>;
1301
2745
  limit?: InputMaybe<Scalars['Int']['input']>;
1302
2746
  offset?: InputMaybe<Scalars['Int']['input']>;
1303
2747
  };
2748
+ export type QueryCpAuditArgs = {
2749
+ environmentId?: InputMaybe<Scalars['String']['input']>;
2750
+ limit?: Scalars['Int']['input'];
2751
+ };
2752
+ export type QueryCpChangeOrderArgs = {
2753
+ id: Scalars['String']['input'];
2754
+ };
2755
+ export type QueryCpChangeOrdersArgs = {
2756
+ environmentId?: InputMaybe<Scalars['String']['input']>;
2757
+ page?: Scalars['Int']['input'];
2758
+ pageSize?: Scalars['Int']['input'];
2759
+ };
2760
+ export type QueryCpEnvSecretsArgs = {
2761
+ environmentId?: InputMaybe<Scalars['String']['input']>;
2762
+ };
2763
+ export type QueryCpEnvironmentArgs = {
2764
+ slug: Scalars['String']['input'];
2765
+ };
2766
+ export type QueryCpEnvironmentsArgs = {
2767
+ page?: Scalars['Int']['input'];
2768
+ pageSize?: Scalars['Int']['input'];
2769
+ };
2770
+ export type QueryCpOvhCatalogSummaryArgs = {
2771
+ region?: InputMaybe<Scalars['String']['input']>;
2772
+ };
2773
+ export type QueryCpSecretsArgs = {
2774
+ environmentId?: InputMaybe<Scalars['String']['input']>;
2775
+ };
2776
+ export type QueryCpUsageSummaryArgs = {
2777
+ environmentSlug: Scalars['String']['input'];
2778
+ since: Scalars['DateTime']['input'];
2779
+ };
1304
2780
  export type QueryEffectiveQuotaArgs = {
1305
2781
  appId?: InputMaybe<Scalars['BigInt']['input']>;
1306
2782
  metric: Scalars['String']['input'];
@@ -1313,9 +2789,87 @@ export type QueryEnvironmentFlavorsArgs = {
1313
2789
  export type QueryEnvironmentQuoteArgs = {
1314
2790
  input: EnvironmentQuoteInput;
1315
2791
  };
2792
+ export type QueryEnvironmentUsageByAppArgs = {
2793
+ environmentSlug: Scalars['String']['input'];
2794
+ orgId: Scalars['BigInt']['input'];
2795
+ since: Scalars['DateTime']['input'];
2796
+ };
2797
+ export type QueryEnvironmentUsageSummaryArgs = {
2798
+ environmentSlug: Scalars['String']['input'];
2799
+ orgId: Scalars['BigInt']['input'];
2800
+ since: Scalars['DateTime']['input'];
2801
+ };
1316
2802
  export type QueryGameClientBootstrapArgs = {
1317
2803
  appId: Scalars['BigInt']['input'];
1318
2804
  };
2805
+ export type QueryGameHostArgs = {
2806
+ appId: Scalars['BigInt']['input'];
2807
+ };
2808
+ export type QueryGameModelContainerArgs = {
2809
+ appId: Scalars['BigInt']['input'];
2810
+ containerId: Scalars['String']['input'];
2811
+ };
2812
+ export type QueryGameModelContainerStateArgs = {
2813
+ appId: Scalars['BigInt']['input'];
2814
+ containerId: Scalars['String']['input'];
2815
+ };
2816
+ export type QueryGameModelContainerTypesArgs = {
2817
+ appId: Scalars['BigInt']['input'];
2818
+ };
2819
+ export type QueryGameModelContainersArgs = {
2820
+ appId: Scalars['BigInt']['input'];
2821
+ sessionId?: InputMaybe<Scalars['String']['input']>;
2822
+ typeName?: InputMaybe<Scalars['String']['input']>;
2823
+ };
2824
+ export type QueryGameModelEventsArgs = {
2825
+ appId: Scalars['BigInt']['input'];
2826
+ functionName?: InputMaybe<Scalars['String']['input']>;
2827
+ limit?: InputMaybe<Scalars['Int']['input']>;
2828
+ offset?: InputMaybe<Scalars['Int']['input']>;
2829
+ selfContainerId?: InputMaybe<Scalars['String']['input']>;
2830
+ sessionId?: InputMaybe<Scalars['String']['input']>;
2831
+ success?: InputMaybe<Scalars['Boolean']['input']>;
2832
+ };
2833
+ export type QueryGameModelFeaturesArgs = {
2834
+ appId: Scalars['BigInt']['input'];
2835
+ };
2836
+ export type QueryGameModelFunctionArgs = {
2837
+ appId: Scalars['BigInt']['input'];
2838
+ name: Scalars['String']['input'];
2839
+ };
2840
+ export type QueryGameModelFunctionsArgs = {
2841
+ appId: Scalars['BigInt']['input'];
2842
+ containerTypeName?: InputMaybe<Scalars['String']['input']>;
2843
+ };
2844
+ export type QueryGameModelPolicyArgs = {
2845
+ appId: Scalars['BigInt']['input'];
2846
+ };
2847
+ export type QueryGameModelPropertyDefsArgs = {
2848
+ appId: Scalars['BigInt']['input'];
2849
+ typeName: Scalars['String']['input'];
2850
+ };
2851
+ export type QueryGameModelSessionArgs = {
2852
+ appId: Scalars['BigInt']['input'];
2853
+ sessionId: Scalars['String']['input'];
2854
+ };
2855
+ export type QueryGameModelSessionsArgs = {
2856
+ appId: Scalars['BigInt']['input'];
2857
+ status?: InputMaybe<Scalars['String']['input']>;
2858
+ };
2859
+ export type QueryGameModelTierFeaturesArgs = {
2860
+ appId: Scalars['BigInt']['input'];
2861
+ tierId?: InputMaybe<Scalars['BigInt']['input']>;
2862
+ };
2863
+ export type QueryGameModelTraverseArgs = {
2864
+ appId: Scalars['BigInt']['input'];
2865
+ depth?: InputMaybe<Scalars['Int']['input']>;
2866
+ relationshipType: Scalars['String']['input'];
2867
+ rootId: Scalars['String']['input'];
2868
+ };
2869
+ export type QueryGameModelTypeSchemaArgs = {
2870
+ appId: Scalars['BigInt']['input'];
2871
+ typeName: Scalars['String']['input'];
2872
+ };
1319
2873
  export type QueryGetChunkArgs = {
1320
2874
  input: GetChunkInput;
1321
2875
  };
@@ -1328,6 +2882,20 @@ export type QueryGetChunksByDistanceArgs = {
1328
2882
  export type QueryGetVoxelListArgs = {
1329
2883
  input: GetVoxelListInput;
1330
2884
  };
2885
+ export type QueryGridGroupGrantsArgs = {
2886
+ appId: Scalars['BigInt']['input'];
2887
+ gridId: Scalars['BigInt']['input'];
2888
+ groupId: Scalars['BigInt']['input'];
2889
+ };
2890
+ export type QueryGridPermissionLimitsArgs = {
2891
+ appId: Scalars['BigInt']['input'];
2892
+ gridId: Scalars['BigInt']['input'];
2893
+ };
2894
+ export type QueryGridUserPermissionsArgs = {
2895
+ appId: Scalars['BigInt']['input'];
2896
+ gridId: Scalars['BigInt']['input'];
2897
+ userId: Scalars['BigInt']['input'];
2898
+ };
1331
2899
  export type QueryListVoxelUpdatesByDistanceArgs = {
1332
2900
  input: ListVoxelUpdatesByDistanceInput;
1333
2901
  };
@@ -1340,10 +2908,22 @@ export type QueryMemberRolesArgs = {
1340
2908
  export type QueryMyAppAccessArgs = {
1341
2909
  appId: Scalars['BigInt']['input'];
1342
2910
  };
2911
+ export type QueryMyChannelsArgs = {
2912
+ appId: Scalars['BigInt']['input'];
2913
+ };
1343
2914
  export type QueryMyCheckoutsArgs = {
1344
2915
  limit?: InputMaybe<Scalars['Int']['input']>;
1345
2916
  offset?: InputMaybe<Scalars['Int']['input']>;
1346
2917
  };
2918
+ export type QueryMyTeamsArgs = {
2919
+ appId: Scalars['BigInt']['input'];
2920
+ };
2921
+ export type QueryNearbyGridPermissionsArgs = {
2922
+ input: NearbyGridPermissionsInput;
2923
+ };
2924
+ export type QueryOrgAutoBillingArgs = {
2925
+ orgId: Scalars['BigInt']['input'];
2926
+ };
1347
2927
  export type QueryOrgEnvironmentArgs = {
1348
2928
  orgId: Scalars['BigInt']['input'];
1349
2929
  slug: Scalars['String']['input'];
@@ -1351,27 +2931,56 @@ export type QueryOrgEnvironmentArgs = {
1351
2931
  export type QueryOrgEnvironmentsArgs = {
1352
2932
  orgId: Scalars['BigInt']['input'];
1353
2933
  };
2934
+ export type QueryOrgFreeAppQuotaArgs = {
2935
+ orgId: Scalars['BigInt']['input'];
2936
+ };
1354
2937
  export type QueryOrgMembersArgs = {
1355
2938
  orgId: Scalars['BigInt']['input'];
1356
2939
  };
2940
+ export type QueryOrgPaymentMethodsArgs = {
2941
+ orgId: Scalars['BigInt']['input'];
2942
+ };
1357
2943
  export type QueryOrgRolesArgs = {
1358
2944
  orgId: Scalars['BigInt']['input'];
1359
2945
  };
1360
2946
  export type QueryOrgTokensArgs = {
1361
2947
  orgId: Scalars['BigInt']['input'];
1362
2948
  };
2949
+ export type QueryOrgUsageByEnvironmentArgs = {
2950
+ orgId: Scalars['BigInt']['input'];
2951
+ since: Scalars['DateTime']['input'];
2952
+ };
1363
2953
  export type QueryOrganizationArgs = {
1364
2954
  id: Scalars['BigInt']['input'];
1365
2955
  };
1366
2956
  export type QueryOrganizationBySlugArgs = {
1367
2957
  slug: Scalars['String']['input'];
1368
2958
  };
2959
+ export type QueryPaymentEventsArgs = {
2960
+ limit?: InputMaybe<Scalars['Int']['input']>;
2961
+ offset?: InputMaybe<Scalars['Int']['input']>;
2962
+ };
1369
2963
  export type QueryQuotasForAppArgs = {
1370
2964
  appId: Scalars['BigInt']['input'];
1371
2965
  };
1372
2966
  export type QueryQuotasForOrgArgs = {
1373
2967
  orgId: Scalars['BigInt']['input'];
1374
2968
  };
2969
+ export type QueryTeamArgs = {
2970
+ groupId: Scalars['BigInt']['input'];
2971
+ };
2972
+ export type QueryTeamMembersArgs = {
2973
+ groupId: Scalars['BigInt']['input'];
2974
+ };
2975
+ export type QueryTeamPolicyArgs = {
2976
+ appId: Scalars['BigInt']['input'];
2977
+ };
2978
+ export type QueryTeamRolesArgs = {
2979
+ groupId: Scalars['BigInt']['input'];
2980
+ };
2981
+ export type QueryTeamsArgs = {
2982
+ appId: Scalars['BigInt']['input'];
2983
+ };
1375
2984
  export type QueryUserArgs = {
1376
2985
  id: Scalars['BigInt']['input'];
1377
2986
  };
@@ -1410,6 +3019,16 @@ export type RealtimeConnectionEvent = {
1410
3019
  retryable: Scalars['Boolean']['output'];
1411
3020
  status: Scalars['String']['output'];
1412
3021
  };
3022
+ /** full = replace VMs. services = update in place on existing runtime servers. Omit for automatic routing. */
3023
+ export declare enum RedeployDeployMode {
3024
+ Full = "FULL",
3025
+ Services = "SERVICES"
3026
+ }
3027
+ export type RedeployEnvironmentInput = {
3028
+ deployMode?: InputMaybe<RedeployDeployMode>;
3029
+ orgId: Scalars['BigInt']['input'];
3030
+ slug: Scalars['String']['input'];
3031
+ };
1413
3032
  export type RegisterUserInput = {
1414
3033
  email: Scalars['String']['input'];
1415
3034
  gamertag?: InputMaybe<Scalars['String']['input']>;
@@ -1419,10 +3038,28 @@ export type ResetPasswordInput = {
1419
3038
  newPassword: Scalars['String']['input'];
1420
3039
  token: Scalars['String']['input'];
1421
3040
  };
3041
+ export type RestartEnvironmentServicesInput = {
3042
+ orgId: Scalars['BigInt']['input'];
3043
+ slug: Scalars['String']['input'];
3044
+ };
1422
3045
  export type ResumeEnvironmentInput = {
1423
3046
  orgId: Scalars['BigInt']['input'];
1424
3047
  slug: Scalars['String']['input'];
1425
3048
  };
3049
+ export type RevokeGridPermissionsInput = {
3050
+ appId: Scalars['BigInt']['input'];
3051
+ gridId: Scalars['BigInt']['input'];
3052
+ permissionKeys?: InputMaybe<Array<Scalars['String']['input']>>;
3053
+ userId: Scalars['BigInt']['input'];
3054
+ };
3055
+ export type RevokeGroupFromGridInput = {
3056
+ appId: Scalars['BigInt']['input'];
3057
+ gridId: Scalars['BigInt']['input'];
3058
+ groupId: Scalars['BigInt']['input'];
3059
+ groupRoleId?: InputMaybe<Scalars['BigInt']['input']>;
3060
+ /** Optional subset of keys to revoke. Omit to revoke all of the group/role grants on this grid. */
3061
+ permissionKeys?: InputMaybe<Array<Scalars['String']['input']>>;
3062
+ };
1426
3063
  export type RollbackVoxelEventResult = {
1427
3064
  __typename?: 'RollbackVoxelEventResult';
1428
3065
  appId: Scalars['BigInt']['output'];
@@ -1434,12 +3071,83 @@ export type RollbackVoxelEventResult = {
1434
3071
  reason: Maybe<Scalars['String']['output']>;
1435
3072
  toVoxelType: Maybe<Scalars['Int']['output']>;
1436
3073
  };
1437
- export type RollbackVoxelUpdatesInput = {
3074
+ export type RollbackVoxelUpdatesInput = {
3075
+ appId: Scalars['BigInt']['input'];
3076
+ dryRun?: Scalars['Boolean']['input'];
3077
+ from: Scalars['DateTime']['input'];
3078
+ to: Scalars['DateTime']['input'];
3079
+ userId: Scalars['BigInt']['input'];
3080
+ };
3081
+ /** A saved (vaulted) off-session payment method. */
3082
+ export type SavedPaymentMethod = {
3083
+ __typename?: 'SavedPaymentMethod';
3084
+ brand: Maybe<Scalars['String']['output']>;
3085
+ isDefault: Scalars['Boolean']['output'];
3086
+ last4: Maybe<Scalars['String']['output']>;
3087
+ paymentMethodId: Scalars['BigInt']['output'];
3088
+ provider: Scalars['String']['output'];
3089
+ status: Scalars['String']['output'];
3090
+ };
3091
+ export type SeedContainerInput = {
3092
+ description?: InputMaybe<Scalars['String']['input']>;
3093
+ displayName: Scalars['String']['input'];
3094
+ metadataJson?: InputMaybe<Scalars['String']['input']>;
3095
+ ownerUserId?: InputMaybe<Scalars['BigInt']['input']>;
3096
+ properties?: InputMaybe<Array<SeedPropertyInput>>;
3097
+ /** Developer-assigned id used only for edge references in this seed. */
3098
+ tempId: Scalars['String']['input'];
3099
+ typeName: Scalars['String']['input'];
3100
+ };
3101
+ export type SeedContainerTypeInput = {
3102
+ defaultPropertyVisibility?: InputMaybe<Scalars['String']['input']>;
3103
+ description?: InputMaybe<Scalars['String']['input']>;
3104
+ displayName: Scalars['String']['input'];
3105
+ instantiableBy?: InputMaybe<Scalars['String']['input']>;
3106
+ metadataJson?: InputMaybe<Scalars['String']['input']>;
3107
+ typeName: Scalars['String']['input'];
3108
+ };
3109
+ export type SeedEdgeInput = {
3110
+ fromTempId: Scalars['String']['input'];
3111
+ metadataJson?: InputMaybe<Scalars['String']['input']>;
3112
+ relationshipType: Scalars['String']['input'];
3113
+ toTempId: Scalars['String']['input'];
3114
+ weight?: InputMaybe<Scalars['Float']['input']>;
3115
+ };
3116
+ export type SeedFunctionInput = {
3117
+ containerTypeName?: InputMaybe<Scalars['String']['input']>;
3118
+ description?: InputMaybe<Scalars['String']['input']>;
3119
+ invokePolicyJson?: InputMaybe<Scalars['String']['input']>;
3120
+ invokeScope?: InputMaybe<Scalars['String']['input']>;
3121
+ mutations?: InputMaybe<Array<FunctionMutationInput>>;
3122
+ name: Scalars['String']['input'];
3123
+ parameters?: InputMaybe<Array<FunctionParamInput>>;
3124
+ returnExpression?: InputMaybe<Scalars['String']['input']>;
3125
+ returnType?: InputMaybe<Scalars['String']['input']>;
3126
+ };
3127
+ export type SeedGameModelInput = {
1438
3128
  appId: Scalars['BigInt']['input'];
1439
- dryRun?: Scalars['Boolean']['input'];
1440
- from: Scalars['DateTime']['input'];
1441
- to: Scalars['DateTime']['input'];
1442
- userId: Scalars['BigInt']['input'];
3129
+ containerTypes?: InputMaybe<Array<SeedContainerTypeInput>>;
3130
+ containers?: InputMaybe<Array<SeedContainerInput>>;
3131
+ edges?: InputMaybe<Array<SeedEdgeInput>>;
3132
+ functions?: InputMaybe<Array<SeedFunctionInput>>;
3133
+ propertyDefinitions?: InputMaybe<Array<SeedPropertyDefInput>>;
3134
+ /** Optional session to seed instances into (NULL = app-global). */
3135
+ sessionId?: InputMaybe<Scalars['String']['input']>;
3136
+ };
3137
+ export type SeedPropertyDefInput = {
3138
+ containerTypeName: Scalars['String']['input'];
3139
+ defaultValueJson?: InputMaybe<Scalars['String']['input']>;
3140
+ description?: InputMaybe<Scalars['String']['input']>;
3141
+ key: Scalars['String']['input'];
3142
+ valueType: Scalars['String']['input'];
3143
+ visibility?: InputMaybe<Scalars['String']['input']>;
3144
+ writable?: InputMaybe<Scalars['String']['input']>;
3145
+ };
3146
+ export type SeedPropertyInput = {
3147
+ key: Scalars['String']['input'];
3148
+ /** JSON-encoded value. */
3149
+ valueJson: Scalars['String']['input'];
3150
+ valueType: Scalars['String']['input'];
1443
3151
  };
1444
3152
  /** Notification received when the server sends a custom event. Received via the udpNotifications subscription. */
1445
3153
  export type ServerEventNotification = {
@@ -1516,6 +3224,40 @@ export type ServiceQuota = {
1516
3224
  tierId: Maybe<Scalars['BigInt']['output']>;
1517
3225
  updatedAt: Scalars['DateTime']['output'];
1518
3226
  };
3227
+ export type SetChannelPolicyInput = {
3228
+ appId: Scalars['BigInt']['input'];
3229
+ /** admin | member | anyone. Who may create channels in this app. */
3230
+ creationPolicy?: InputMaybe<Scalars['String']['input']>;
3231
+ /** open | request | invite | admin. Default membership policy for new channels. */
3232
+ defaultMembershipPolicy?: InputMaybe<Scalars['String']['input']>;
3233
+ maxGroupsPerUser?: InputMaybe<Scalars['Int']['input']>;
3234
+ maxMembers?: InputMaybe<Scalars['Int']['input']>;
3235
+ };
3236
+ export type SetContainerPropertyInput = {
3237
+ appId: Scalars['BigInt']['input'];
3238
+ containerId: Scalars['String']['input'];
3239
+ key: Scalars['String']['input'];
3240
+ /** JSON-encoded value. */
3241
+ valueJson: Scalars['String']['input'];
3242
+ valueType: Scalars['String']['input'];
3243
+ };
3244
+ export type SetGameModelPolicyInput = {
3245
+ appId: Scalars['BigInt']['input'];
3246
+ defaultParticipantRole?: InputMaybe<Scalars['String']['input']>;
3247
+ /** admin | member | anyone */
3248
+ sessionCreationPolicy?: InputMaybe<Scalars['String']['input']>;
3249
+ };
3250
+ export type SetGridPermissionLimitsInput = {
3251
+ appId: Scalars['BigInt']['input'];
3252
+ gridId: Scalars['BigInt']['input'];
3253
+ /** The whitelist of permission keys allowed on this grid. Empty array removes all limits (every active grid permission becomes grantable again). */
3254
+ permissionKeys: Array<Scalars['String']['input']>;
3255
+ };
3256
+ export type SetMemberRolesInput = {
3257
+ groupId: Scalars['BigInt']['input'];
3258
+ roleIds: Array<Scalars['BigInt']['input']>;
3259
+ userId: Scalars['BigInt']['input'];
3260
+ };
1519
3261
  export type SetQuotaInput = {
1520
3262
  actionOnExceed?: InputMaybe<Scalars['String']['input']>;
1521
3263
  appId?: InputMaybe<Scalars['BigInt']['input']>;
@@ -1525,11 +3267,76 @@ export type SetQuotaInput = {
1525
3267
  period?: InputMaybe<Scalars['String']['input']>;
1526
3268
  tierId?: InputMaybe<Scalars['BigInt']['input']>;
1527
3269
  };
3270
+ export type SetSessionTurnInput = {
3271
+ appId: Scalars['BigInt']['input'];
3272
+ sessionId: Scalars['String']['input'];
3273
+ /** The user whose turn it now is (NULL clears the turn). */
3274
+ userId?: InputMaybe<Scalars['BigInt']['input']>;
3275
+ };
3276
+ export type SetTeamPolicyInput = {
3277
+ appId: Scalars['BigInt']['input'];
3278
+ /** admin | member | anyone. Who may create teams in this app. */
3279
+ creationPolicy?: InputMaybe<Scalars['String']['input']>;
3280
+ /** open | request | invite | admin. Default membership policy for new teams. */
3281
+ defaultMembershipPolicy?: InputMaybe<Scalars['String']['input']>;
3282
+ maxGroupsPerUser?: InputMaybe<Scalars['Int']['input']>;
3283
+ maxMembers?: InputMaybe<Scalars['Int']['input']>;
3284
+ };
3285
+ export type SharedEnvPlan = {
3286
+ __typename?: 'SharedEnvPlan';
3287
+ billingInterval: Scalars['String']['output'];
3288
+ code: Scalars['String']['output'];
3289
+ currency: Scalars['String']['output'];
3290
+ description: Maybe<Scalars['String']['output']>;
3291
+ name: Scalars['String']['output'];
3292
+ planId: Scalars['BigInt']['output'];
3293
+ priceCents: Scalars['BigInt']['output'];
3294
+ status: Scalars['String']['output'];
3295
+ };
3296
+ /** Input for sending an actor-to-actor message: a message delivered only to the single actor identified by targetUuid. It is spatially routed (the sender must know the destination actor’s chunk), but unlike normal spatial messages it is NOT broadcast to other nearby actors and has no distance/decay. */
3297
+ export type SingleActorMessageInput = {
3298
+ /** The ID of the app the destination actor belongs to. */
3299
+ appId: Scalars['BigInt']['input'];
3300
+ /** The chunk coordinates of the DESTINATION actor (where the target currently is). The sender must know this. */
3301
+ chunk: ChunkCoordinatesInput;
3302
+ /** The message payload, base64-encoded. Opaque to the server; the sender’s identity (if needed) must be embedded here by the application. */
3303
+ payload: Scalars['String']['input'];
3304
+ /** Client's sequence number for this message (0-255, wraps). Used to match error responses. */
3305
+ sequenceNumber?: InputMaybe<Scalars['Int']['input']>;
3306
+ /** The DESTINATION actor’s UUID. The message is delivered only to the client that owns this actor. Must be exactly 32 bytes when encoded as UTF-8. */
3307
+ targetUuid: Scalars['String']['input'];
3308
+ };
3309
+ /** Notification received when another actor sends you a direct actor-to-actor message (SINGLE_ACTOR_MESSAGE). Delivered only to the targeted actor via the udpNotifications subscription. */
3310
+ export type SingleActorMessageNotification = {
3311
+ __typename?: 'SingleActorMessageNotification';
3312
+ /** The ID of the app the message was sent within. */
3313
+ appId: Scalars['BigInt']['output'];
3314
+ /** The X coordinate of the destination chunk. */
3315
+ chunkX: Scalars['BigInt']['output'];
3316
+ /** The Y coordinate of the destination chunk. */
3317
+ chunkY: Scalars['BigInt']['output'];
3318
+ /** The Z coordinate of the destination chunk. */
3319
+ chunkZ: Scalars['BigInt']['output'];
3320
+ /** Server-generated epoch milliseconds timestamp. */
3321
+ epochMillis: Scalars['BigInt']['output'];
3322
+ /** The message payload, base64-encoded. Opaque to the server; decode per your application protocol. */
3323
+ payload: Scalars['String']['output'];
3324
+ /** The sender's sequence number for this message (0-255). */
3325
+ sequenceNumber: Scalars['Int']['output'];
3326
+ /** The destination actor’s UUID (your own actor’s UUID, echoed from the message). */
3327
+ uuid: Scalars['String']['output'];
3328
+ };
1528
3329
  export type Subscription = {
1529
3330
  __typename?: 'Subscription';
3331
+ /** Realtime stream of successful function-invocation events for an app, optionally narrowed to one session. Backed by Postgres NOTIFY so it fans out across game-api replicas without Buddy. Poll gameModelEvents if you prefer pull-based delivery. */
3332
+ gameModelEventStream: Maybe<GmEvent>;
1530
3333
  /** Downlink from the game server (responses, notifications, GenericErrorResponse, and RealtimeConnectionEvent). On subscribe, opens a UDP proxy session if none exists (least-loaded server). Connection failures are delivered as RealtimeConnectionEvent. Unsubscribing stops delivery only; call disconnectUdpProxy to release the session. */
1531
3334
  udpNotifications: Maybe<UdpNotification>;
1532
3335
  };
3336
+ export type SubscriptionGameModelEventStreamArgs = {
3337
+ appId: Scalars['BigInt']['input'];
3338
+ sessionId?: InputMaybe<Scalars['String']['input']>;
3339
+ };
1533
3340
  export type TeleportRequestInput = {
1534
3341
  appId: Scalars['BigInt']['input'];
1535
3342
  chunkAddress: ChunkCoordinatesInput;
@@ -1574,7 +3381,7 @@ export declare enum UdpErrorCode {
1574
3381
  UserNotAuthenticated = "USER_NOT_AUTHENTICATED"
1575
3382
  }
1576
3383
  /** All game-server messages delivered over the UDP proxy as GraphQL payloads. Subscribe to udpNotifications before or with sending mutations so responses and GenericErrorResponse (correlate via sequenceNumber) are not missed. */
1577
- export type UdpNotification = ActorUpdateNotification | ActorUpdateResponse | ClientAudioNotification | ClientEventNotification | ClientTextNotification | GenericErrorResponse | RealtimeConnectionEvent | ServerEventNotification | VoxelUpdateNotification | VoxelUpdateResponse;
3384
+ export type UdpNotification = ActorUpdateNotification | ActorUpdateResponse | ChannelMessageNotification | ClientAudioNotification | ClientEventNotification | ClientTextNotification | GenericErrorResponse | RealtimeConnectionEvent | ServerEventNotification | SingleActorMessageNotification | VoxelUpdateNotification | VoxelUpdateResponse;
1578
3385
  /** UDP proxy session for the game token on the request. Returned by udpProxyConnectionStatus and connectUdpProxy. Binary UDP layouts are documented in database/client-wire-formats.md. */
1579
3386
  export type UdpProxyConnectionStatus = {
1580
3387
  __typename?: 'UdpProxyConnectionStatus';
@@ -1595,6 +3402,7 @@ export type UpdateAccessTierInput = {
1595
3402
  isFree?: InputMaybe<Scalars['Boolean']['input']>;
1596
3403
  name?: InputMaybe<Scalars['String']['input']>;
1597
3404
  paypalPlanId?: InputMaybe<Scalars['String']['input']>;
3405
+ permissionKeys?: InputMaybe<Array<Scalars['String']['input']>>;
1598
3406
  priceCents?: InputMaybe<Scalars['BigInt']['input']>;
1599
3407
  stripePriceId?: InputMaybe<Scalars['String']['input']>;
1600
3408
  tierOrder?: InputMaybe<Scalars['Int']['input']>;
@@ -1617,6 +3425,12 @@ export type UpdateAppInput = {
1617
3425
  status?: InputMaybe<AppStatus>;
1618
3426
  visibility?: InputMaybe<AppVisibility>;
1619
3427
  };
3428
+ export type UpdateAvatarAppStateInput = {
3429
+ appId: Scalars['BigInt']['input'];
3430
+ avatarId: Scalars['BigInt']['input'];
3431
+ /** Base64-encoded binary state. Null clears it. */
3432
+ state?: InputMaybe<Scalars['String']['input']>;
3433
+ };
1620
3434
  export type UpdateAvatarInput = {
1621
3435
  name?: InputMaybe<Scalars['String']['input']>;
1622
3436
  };
@@ -1624,6 +3438,12 @@ export type UpdateAvatarStateInput = {
1624
3438
  privateState?: InputMaybe<Scalars['String']['input']>;
1625
3439
  publicState?: InputMaybe<Scalars['String']['input']>;
1626
3440
  };
3441
+ export type UpdateChannelInput = {
3442
+ description?: InputMaybe<Scalars['String']['input']>;
3443
+ groupId: Scalars['BigInt']['input'];
3444
+ membershipPolicy?: InputMaybe<Scalars['String']['input']>;
3445
+ name?: InputMaybe<Scalars['String']['input']>;
3446
+ };
1627
3447
  export type UpdateChunkLodsInput = {
1628
3448
  appId: Scalars['BigInt']['input'];
1629
3449
  coordinates: ChunkCoordinatesInput;
@@ -1634,10 +3454,27 @@ export type UpdateChunkStateInput = {
1634
3454
  chunkState?: InputMaybe<Scalars['String']['input']>;
1635
3455
  coordinates: ChunkCoordinatesInput;
1636
3456
  };
3457
+ export type UpdateEnvironmentScalingInput = {
3458
+ /** Caddy LB flavor (in front of the game-api fleet). When omitted the existing value is preserved. */
3459
+ caddyFlavor?: InputMaybe<Scalars['String']['input']>;
3460
+ gameApiMaxServers: Scalars['Int']['input'];
3461
+ gameApiMinServers: Scalars['Int']['input'];
3462
+ loadBalancerCount: Scalars['Int']['input'];
3463
+ orgId: Scalars['BigInt']['input'];
3464
+ slug: Scalars['String']['input'];
3465
+ udpBuddyMaxServers: Scalars['Int']['input'];
3466
+ udpBuddyMinServers: Scalars['Int']['input'];
3467
+ };
1637
3468
  export type UpdateGamertagInput = {
1638
3469
  disambiguation: Scalars['String']['input'];
1639
3470
  gamertag: Scalars['String']['input'];
1640
3471
  };
3472
+ export type UpdateGroupRoleInput = {
3473
+ groupRoleId: Scalars['BigInt']['input'];
3474
+ permissions?: InputMaybe<Array<Scalars['String']['input']>>;
3475
+ rank?: InputMaybe<Scalars['Int']['input']>;
3476
+ roleName?: InputMaybe<Scalars['String']['input']>;
3477
+ };
1641
3478
  export type UpdateOrgRoleInput = {
1642
3479
  description?: InputMaybe<Scalars['String']['input']>;
1643
3480
  permissions?: InputMaybe<Array<Scalars['String']['input']>>;
@@ -1648,6 +3485,12 @@ export type UpdateOrgTokenInput = {
1648
3485
  isActive?: InputMaybe<Scalars['Boolean']['input']>;
1649
3486
  label?: InputMaybe<Scalars['String']['input']>;
1650
3487
  };
3488
+ export type UpdateTeamInput = {
3489
+ description?: InputMaybe<Scalars['String']['input']>;
3490
+ groupId: Scalars['BigInt']['input'];
3491
+ membershipPolicy?: InputMaybe<Scalars['String']['input']>;
3492
+ name?: InputMaybe<Scalars['String']['input']>;
3493
+ };
1651
3494
  export type UpdateUserStateInput = {
1652
3495
  state?: InputMaybe<Scalars['String']['input']>;
1653
3496
  };
@@ -1658,6 +3501,62 @@ export type UpdateVoxelInput = {
1658
3501
  state?: InputMaybe<Scalars['String']['input']>;
1659
3502
  voxelType: Scalars['Float']['input'];
1660
3503
  };
3504
+ export type UpsertContainerTypeInput = {
3505
+ appId: Scalars['BigInt']['input'];
3506
+ /** public | owner | hidden default for this type's properties. */
3507
+ defaultPropertyVisibility?: InputMaybe<Scalars['String']['input']>;
3508
+ description?: InputMaybe<Scalars['String']['input']>;
3509
+ displayName: Scalars['String']['input'];
3510
+ /** admin | member | owner (who may instantiate this type). */
3511
+ instantiableBy?: InputMaybe<Scalars['String']['input']>;
3512
+ /** JSON object of metadata. */
3513
+ metadataJson?: InputMaybe<Scalars['String']['input']>;
3514
+ typeName: Scalars['String']['input'];
3515
+ };
3516
+ export type UpsertFunctionInput = {
3517
+ appId: Scalars['BigInt']['input'];
3518
+ containerTypeName?: InputMaybe<Scalars['String']['input']>;
3519
+ description?: InputMaybe<Scalars['String']['input']>;
3520
+ /** JSON-encoded invoke-policy rule tree (authority requirements). */
3521
+ invokePolicyJson?: InputMaybe<Scalars['String']['input']>;
3522
+ /** player | server | internal */
3523
+ invokeScope?: InputMaybe<Scalars['String']['input']>;
3524
+ mutations?: InputMaybe<Array<FunctionMutationInput>>;
3525
+ name: Scalars['String']['input'];
3526
+ parameters?: InputMaybe<Array<FunctionParamInput>>;
3527
+ returnExpression?: InputMaybe<Scalars['String']['input']>;
3528
+ returnType?: InputMaybe<Scalars['String']['input']>;
3529
+ };
3530
+ export type UpsertPropertyDefInput = {
3531
+ appId: Scalars['BigInt']['input'];
3532
+ containerTypeName: Scalars['String']['input'];
3533
+ /** JSON-encoded default value. */
3534
+ defaultValueJson?: InputMaybe<Scalars['String']['input']>;
3535
+ description?: InputMaybe<Scalars['String']['input']>;
3536
+ key: Scalars['String']['input'];
3537
+ /** int | float | string | bool | array | object | container_ref */
3538
+ valueType: Scalars['String']['input'];
3539
+ /** public | owner | hidden */
3540
+ visibility?: InputMaybe<Scalars['String']['input']>;
3541
+ /** function | owner | admin */
3542
+ writable?: InputMaybe<Scalars['String']['input']>;
3543
+ };
3544
+ export type UsageMinuteRow = {
3545
+ __typename?: 'UsageMinuteRow';
3546
+ minute: Scalars['DateTime']['output'];
3547
+ recvBytes: Scalars['String']['output'];
3548
+ recvMsgs: Maybe<Scalars['String']['output']>;
3549
+ sendBytes: Scalars['String']['output'];
3550
+ sendMsgs: Maybe<Scalars['String']['output']>;
3551
+ };
3552
+ export type UsageRatePeaks = {
3553
+ __typename?: 'UsageRatePeaks';
3554
+ avgSendMbitPerSec: Scalars['Float']['output'];
3555
+ avgSendMsgsPerSec: Scalars['Float']['output'];
3556
+ peakSendMbitPerSec: Scalars['Float']['output'];
3557
+ peakSendMsgsPerSec: Scalars['Float']['output'];
3558
+ sampleMinutes: Scalars['Float']['output'];
3559
+ };
1661
3560
  export type User = {
1662
3561
  __typename?: 'User';
1663
3562
  createdAt: Scalars['DateTime']['output'];
@@ -1668,6 +3567,8 @@ export type User = {
1668
3567
  grantEarlyAccess: Scalars['Boolean']['output'];
1669
3568
  grantEarlyAccessOverride: Scalars['Boolean']['output'];
1670
3569
  isConfirmed: Scalars['Boolean']['output'];
3570
+ /** Company-employee flag that grants access to control-plane / operator features. Independent from is_super_admin. */
3571
+ isOperator: Scalars['Boolean']['output'];
1671
3572
  isSuperAdmin: Scalars['Boolean']['output'];
1672
3573
  orgId: Maybe<Scalars['BigInt']['output']>;
1673
3574
  /** The current user's effective permission keys on the given org. Empty if not a member. Always full set if super admin. */
@@ -2008,6 +3909,7 @@ export type AppAccessTiersQuery = {
2008
3909
  currency: string | null;
2009
3910
  billingPeriod: string | null;
2010
3911
  description: string | null;
3912
+ permissionKeys: Array<string>;
2011
3913
  status: string;
2012
3914
  createdAt: string;
2013
3915
  updatedAt: string;
@@ -2064,6 +3966,7 @@ export type CreateAccessTierMutation = {
2064
3966
  currency: string | null;
2065
3967
  billingPeriod: string | null;
2066
3968
  description: string | null;
3969
+ permissionKeys: Array<string>;
2067
3970
  status: string;
2068
3971
  createdAt: string;
2069
3972
  updatedAt: string;
@@ -2145,6 +4048,7 @@ export type UpdateAccessTierMutation = {
2145
4048
  currency: string | null;
2146
4049
  billingPeriod: string | null;
2147
4050
  description: string | null;
4051
+ permissionKeys: Array<string>;
2148
4052
  status: string;
2149
4053
  updatedAt: string;
2150
4054
  };
@@ -2164,6 +4068,11 @@ export type AppQuery = {
2164
4068
  visibility: AppVisibility;
2165
4069
  status: AppStatus;
2166
4070
  metadata: string | null;
4071
+ splitMode: boolean;
4072
+ deploymentTarget: string;
4073
+ runtimeStatus: string;
4074
+ runtimeDenialReason: string | null;
4075
+ gameApiUrl: string | null;
2167
4076
  createdAt: string;
2168
4077
  updatedAt: string;
2169
4078
  org: {
@@ -2190,6 +4099,8 @@ export type AppBySlugQuery = {
2190
4099
  visibility: AppVisibility;
2191
4100
  status: AppStatus;
2192
4101
  metadata: string | null;
4102
+ splitMode: boolean;
4103
+ gameApiUrl: string | null;
2193
4104
  createdAt: string;
2194
4105
  updatedAt: string;
2195
4106
  org: {
@@ -2215,6 +4126,8 @@ export type AppsForOrgQuery = {
2215
4126
  visibility: AppVisibility;
2216
4127
  status: AppStatus;
2217
4128
  metadata: string | null;
4129
+ splitMode: boolean;
4130
+ gameApiUrl: string | null;
2218
4131
  createdAt: string;
2219
4132
  updatedAt: string;
2220
4133
  }>;
@@ -2268,6 +4181,8 @@ export type MarketplaceAppsQuery = {
2268
4181
  visibility: AppVisibility;
2269
4182
  status: AppStatus;
2270
4183
  metadata: string | null;
4184
+ splitMode: boolean;
4185
+ gameApiUrl: string | null;
2271
4186
  createdAt: string;
2272
4187
  updatedAt: string;
2273
4188
  org: {
@@ -2300,6 +4215,8 @@ export type MyAppsQuery = {
2300
4215
  visibility: AppVisibility;
2301
4216
  status: AppStatus;
2302
4217
  metadata: string | null;
4218
+ splitMode: boolean;
4219
+ gameApiUrl: string | null;
2303
4220
  createdAt: string;
2304
4221
  updatedAt: string;
2305
4222
  org: {
@@ -2476,63 +4393,389 @@ export type AppBudgetsQuery = {
2476
4393
  currentMonthUsageCents: string;
2477
4394
  periodStart: string;
2478
4395
  createdAt: string;
2479
- updatedAt: string;
2480
- }>;
4396
+ updatedAt: string;
4397
+ }>;
4398
+ };
4399
+ export type SetAppBudgetMutationVariables = Exact<{
4400
+ orgId: Scalars['BigInt']['input'];
4401
+ appId: Scalars['BigInt']['input'];
4402
+ monthlyLimitCents: Scalars['BigInt']['input'];
4403
+ }>;
4404
+ export type SetAppBudgetMutation = {
4405
+ __typename?: 'Mutation';
4406
+ setAppBudget: {
4407
+ __typename?: 'AppBudget';
4408
+ appBudgetId: string;
4409
+ orgId: string;
4410
+ appId: string;
4411
+ monthlyLimitCents: string | null;
4412
+ currentMonthUsageCents: string;
4413
+ periodStart: string;
4414
+ createdAt: string;
4415
+ updatedAt: string;
4416
+ };
4417
+ };
4418
+ export type WalletBalanceQueryVariables = Exact<{
4419
+ orgId: Scalars['BigInt']['input'];
4420
+ }>;
4421
+ export type WalletBalanceQuery = {
4422
+ __typename?: 'Query';
4423
+ walletBalance: {
4424
+ __typename?: 'OrgWallet';
4425
+ walletId: string;
4426
+ orgId: string;
4427
+ balanceCents: string;
4428
+ currency: string;
4429
+ createdAt: string;
4430
+ updatedAt: string;
4431
+ };
4432
+ };
4433
+ export type WalletTransactionsQueryVariables = Exact<{
4434
+ orgId: Scalars['BigInt']['input'];
4435
+ limit?: InputMaybe<Scalars['Int']['input']>;
4436
+ offset?: InputMaybe<Scalars['Int']['input']>;
4437
+ }>;
4438
+ export type WalletTransactionsQuery = {
4439
+ __typename?: 'Query';
4440
+ walletTransactions: Array<{
4441
+ __typename?: 'WalletTransaction';
4442
+ transactionId: string;
4443
+ walletId: string;
4444
+ orgId: string;
4445
+ amountCents: string;
4446
+ balanceAfter: string;
4447
+ transactionType: string;
4448
+ description: string | null;
4449
+ referenceId: string | null;
4450
+ appId: string | null;
4451
+ createdAt: string;
4452
+ }>;
4453
+ };
4454
+ export type AddChannelMemberMutationVariables = Exact<{
4455
+ groupId: Scalars['BigInt']['input'];
4456
+ userId: Scalars['BigInt']['input'];
4457
+ }>;
4458
+ export type AddChannelMemberMutation = {
4459
+ __typename?: 'Mutation';
4460
+ addChannelMember: {
4461
+ __typename?: 'GroupMember';
4462
+ groupMemberId: string;
4463
+ groupId: string;
4464
+ userId: string;
4465
+ status: string;
4466
+ createdAt: string;
4467
+ roles: Array<{
4468
+ __typename?: 'GroupRole';
4469
+ groupRoleId: string;
4470
+ roleName: string;
4471
+ rank: number;
4472
+ isSystem: boolean;
4473
+ permissions: Array<string>;
4474
+ }>;
4475
+ };
4476
+ };
4477
+ export type ChannelQueryVariables = Exact<{
4478
+ groupId: Scalars['BigInt']['input'];
4479
+ }>;
4480
+ export type ChannelQuery = {
4481
+ __typename?: 'Query';
4482
+ channel: {
4483
+ __typename?: 'Group';
4484
+ groupId: string;
4485
+ appId: string;
4486
+ groupType: string;
4487
+ name: string;
4488
+ description: string | null;
4489
+ ownerUserId: string | null;
4490
+ membershipPolicy: string;
4491
+ status: string;
4492
+ defaultRoleId: string | null;
4493
+ createdAt: string;
4494
+ };
4495
+ };
4496
+ export type ChannelMembersQueryVariables = Exact<{
4497
+ groupId: Scalars['BigInt']['input'];
4498
+ }>;
4499
+ export type ChannelMembersQuery = {
4500
+ __typename?: 'Query';
4501
+ channelMembers: Array<{
4502
+ __typename?: 'GroupMember';
4503
+ groupMemberId: string;
4504
+ groupId: string;
4505
+ userId: string;
4506
+ status: string;
4507
+ createdAt: string;
4508
+ roles: Array<{
4509
+ __typename?: 'GroupRole';
4510
+ groupRoleId: string;
4511
+ roleName: string;
4512
+ rank: number;
4513
+ isSystem: boolean;
4514
+ permissions: Array<string>;
4515
+ }>;
4516
+ }>;
4517
+ };
4518
+ export type ChannelPolicyQueryVariables = Exact<{
4519
+ appId: Scalars['BigInt']['input'];
4520
+ }>;
4521
+ export type ChannelPolicyQuery = {
4522
+ __typename?: 'Query';
4523
+ channelPolicy: {
4524
+ __typename?: 'AppGroupPolicy';
4525
+ appId: string;
4526
+ groupType: string;
4527
+ creationPolicy: string;
4528
+ defaultMembershipPolicy: string;
4529
+ maxMembers: number | null;
4530
+ maxGroupsPerUser: number | null;
4531
+ };
4532
+ };
4533
+ export type ChannelRolesQueryVariables = Exact<{
4534
+ groupId: Scalars['BigInt']['input'];
4535
+ }>;
4536
+ export type ChannelRolesQuery = {
4537
+ __typename?: 'Query';
4538
+ channelRoles: Array<{
4539
+ __typename?: 'GroupRole';
4540
+ groupRoleId: string;
4541
+ groupId: string;
4542
+ roleName: string;
4543
+ rank: number;
4544
+ isSystem: boolean;
4545
+ permissions: Array<string>;
4546
+ createdAt: string;
4547
+ }>;
4548
+ };
4549
+ export type ChannelsQueryVariables = Exact<{
4550
+ appId: Scalars['BigInt']['input'];
4551
+ }>;
4552
+ export type ChannelsQuery = {
4553
+ __typename?: 'Query';
4554
+ channels: Array<{
4555
+ __typename?: 'Group';
4556
+ groupId: string;
4557
+ appId: string;
4558
+ groupType: string;
4559
+ name: string;
4560
+ description: string | null;
4561
+ ownerUserId: string | null;
4562
+ membershipPolicy: string;
4563
+ status: string;
4564
+ defaultRoleId: string | null;
4565
+ createdAt: string;
4566
+ }>;
4567
+ };
4568
+ export type CreateChannelMutationVariables = Exact<{
4569
+ input: CreateChannelInput;
4570
+ }>;
4571
+ export type CreateChannelMutation = {
4572
+ __typename?: 'Mutation';
4573
+ createChannel: {
4574
+ __typename?: 'Group';
4575
+ groupId: string;
4576
+ appId: string;
4577
+ groupType: string;
4578
+ name: string;
4579
+ description: string | null;
4580
+ ownerUserId: string | null;
4581
+ membershipPolicy: string;
4582
+ status: string;
4583
+ defaultRoleId: string | null;
4584
+ createdAt: string;
4585
+ };
4586
+ };
4587
+ export type CreateChannelRoleMutationVariables = Exact<{
4588
+ input: CreateGroupRoleInput;
4589
+ }>;
4590
+ export type CreateChannelRoleMutation = {
4591
+ __typename?: 'Mutation';
4592
+ createChannelRole: {
4593
+ __typename?: 'GroupRole';
4594
+ groupRoleId: string;
4595
+ groupId: string;
4596
+ roleName: string;
4597
+ rank: number;
4598
+ isSystem: boolean;
4599
+ permissions: Array<string>;
4600
+ createdAt: string;
4601
+ };
4602
+ };
4603
+ export type DeleteChannelMutationVariables = Exact<{
4604
+ groupId: Scalars['BigInt']['input'];
4605
+ }>;
4606
+ export type DeleteChannelMutation = {
4607
+ __typename?: 'Mutation';
4608
+ deleteChannel: boolean;
4609
+ };
4610
+ export type DeleteChannelRoleMutationVariables = Exact<{
4611
+ groupRoleId: Scalars['BigInt']['input'];
4612
+ }>;
4613
+ export type DeleteChannelRoleMutation = {
4614
+ __typename?: 'Mutation';
4615
+ deleteChannelRole: boolean;
4616
+ };
4617
+ export type JoinChannelMutationVariables = Exact<{
4618
+ groupId: Scalars['BigInt']['input'];
4619
+ }>;
4620
+ export type JoinChannelMutation = {
4621
+ __typename?: 'Mutation';
4622
+ joinChannel: {
4623
+ __typename?: 'GroupMember';
4624
+ groupMemberId: string;
4625
+ groupId: string;
4626
+ userId: string;
4627
+ status: string;
4628
+ createdAt: string;
4629
+ roles: Array<{
4630
+ __typename?: 'GroupRole';
4631
+ groupRoleId: string;
4632
+ roleName: string;
4633
+ rank: number;
4634
+ isSystem: boolean;
4635
+ permissions: Array<string>;
4636
+ }>;
4637
+ };
4638
+ };
4639
+ export type LeaveChannelMutationVariables = Exact<{
4640
+ groupId: Scalars['BigInt']['input'];
4641
+ }>;
4642
+ export type LeaveChannelMutation = {
4643
+ __typename?: 'Mutation';
4644
+ leaveChannel: boolean;
4645
+ };
4646
+ export type MyChannelsQueryVariables = Exact<{
4647
+ appId: Scalars['BigInt']['input'];
4648
+ }>;
4649
+ export type MyChannelsQuery = {
4650
+ __typename?: 'Query';
4651
+ myChannels: Array<{
4652
+ __typename?: 'GroupMembership';
4653
+ permissions: Array<string>;
4654
+ joinedAt: string;
4655
+ group: {
4656
+ __typename?: 'Group';
4657
+ groupId: string;
4658
+ appId: string;
4659
+ groupType: string;
4660
+ name: string;
4661
+ description: string | null;
4662
+ ownerUserId: string | null;
4663
+ membershipPolicy: string;
4664
+ status: string;
4665
+ defaultRoleId: string | null;
4666
+ createdAt: string;
4667
+ };
4668
+ roles: Array<{
4669
+ __typename?: 'GroupRole';
4670
+ groupRoleId: string;
4671
+ roleName: string;
4672
+ rank: number;
4673
+ isSystem: boolean;
4674
+ permissions: Array<string>;
4675
+ }>;
4676
+ }>;
4677
+ };
4678
+ export type RemoveChannelMemberMutationVariables = Exact<{
4679
+ groupId: Scalars['BigInt']['input'];
4680
+ userId: Scalars['BigInt']['input'];
4681
+ }>;
4682
+ export type RemoveChannelMemberMutation = {
4683
+ __typename?: 'Mutation';
4684
+ removeChannelMember: boolean;
4685
+ };
4686
+ export type RequestToJoinChannelMutationVariables = Exact<{
4687
+ groupId: Scalars['BigInt']['input'];
4688
+ }>;
4689
+ export type RequestToJoinChannelMutation = {
4690
+ __typename?: 'Mutation';
4691
+ requestToJoinChannel: {
4692
+ __typename?: 'GroupMember';
4693
+ groupMemberId: string;
4694
+ groupId: string;
4695
+ userId: string;
4696
+ status: string;
4697
+ createdAt: string;
4698
+ roles: Array<{
4699
+ __typename?: 'GroupRole';
4700
+ groupRoleId: string;
4701
+ roleName: string;
4702
+ rank: number;
4703
+ isSystem: boolean;
4704
+ permissions: Array<string>;
4705
+ }>;
4706
+ };
4707
+ };
4708
+ export type SetChannelMemberRolesMutationVariables = Exact<{
4709
+ input: SetMemberRolesInput;
4710
+ }>;
4711
+ export type SetChannelMemberRolesMutation = {
4712
+ __typename?: 'Mutation';
4713
+ setChannelMemberRoles: {
4714
+ __typename?: 'GroupMember';
4715
+ groupMemberId: string;
4716
+ groupId: string;
4717
+ userId: string;
4718
+ status: string;
4719
+ createdAt: string;
4720
+ roles: Array<{
4721
+ __typename?: 'GroupRole';
4722
+ groupRoleId: string;
4723
+ roleName: string;
4724
+ rank: number;
4725
+ isSystem: boolean;
4726
+ permissions: Array<string>;
4727
+ }>;
4728
+ };
2481
4729
  };
2482
- export type SetAppBudgetMutationVariables = Exact<{
2483
- orgId: Scalars['BigInt']['input'];
2484
- appId: Scalars['BigInt']['input'];
2485
- monthlyLimitCents: Scalars['BigInt']['input'];
4730
+ export type SetChannelPolicyMutationVariables = Exact<{
4731
+ input: SetChannelPolicyInput;
2486
4732
  }>;
2487
- export type SetAppBudgetMutation = {
4733
+ export type SetChannelPolicyMutation = {
2488
4734
  __typename?: 'Mutation';
2489
- setAppBudget: {
2490
- __typename?: 'AppBudget';
2491
- appBudgetId: string;
2492
- orgId: string;
4735
+ setChannelPolicy: {
4736
+ __typename?: 'AppGroupPolicy';
2493
4737
  appId: string;
2494
- monthlyLimitCents: string | null;
2495
- currentMonthUsageCents: string;
2496
- periodStart: string;
2497
- createdAt: string;
2498
- updatedAt: string;
4738
+ groupType: string;
4739
+ creationPolicy: string;
4740
+ defaultMembershipPolicy: string;
4741
+ maxMembers: number | null;
4742
+ maxGroupsPerUser: number | null;
2499
4743
  };
2500
4744
  };
2501
- export type WalletBalanceQueryVariables = Exact<{
2502
- orgId: Scalars['BigInt']['input'];
4745
+ export type UpdateChannelMutationVariables = Exact<{
4746
+ input: UpdateChannelInput;
2503
4747
  }>;
2504
- export type WalletBalanceQuery = {
2505
- __typename?: 'Query';
2506
- walletBalance: {
2507
- __typename?: 'OrgWallet';
2508
- walletId: string;
2509
- orgId: string;
2510
- balanceCents: string;
2511
- currency: string;
4748
+ export type UpdateChannelMutation = {
4749
+ __typename?: 'Mutation';
4750
+ updateChannel: {
4751
+ __typename?: 'Group';
4752
+ groupId: string;
4753
+ appId: string;
4754
+ groupType: string;
4755
+ name: string;
4756
+ description: string | null;
4757
+ ownerUserId: string | null;
4758
+ membershipPolicy: string;
4759
+ status: string;
4760
+ defaultRoleId: string | null;
2512
4761
  createdAt: string;
2513
- updatedAt: string;
2514
4762
  };
2515
4763
  };
2516
- export type WalletTransactionsQueryVariables = Exact<{
2517
- orgId: Scalars['BigInt']['input'];
2518
- limit?: InputMaybe<Scalars['Int']['input']>;
2519
- offset?: InputMaybe<Scalars['Int']['input']>;
4764
+ export type UpdateChannelRoleMutationVariables = Exact<{
4765
+ input: UpdateGroupRoleInput;
2520
4766
  }>;
2521
- export type WalletTransactionsQuery = {
2522
- __typename?: 'Query';
2523
- walletTransactions: Array<{
2524
- __typename?: 'WalletTransaction';
2525
- transactionId: string;
2526
- walletId: string;
2527
- orgId: string;
2528
- amountCents: string;
2529
- balanceAfter: string;
2530
- transactionType: string;
2531
- description: string | null;
2532
- referenceId: string | null;
2533
- appId: string | null;
4767
+ export type UpdateChannelRoleMutation = {
4768
+ __typename?: 'Mutation';
4769
+ updateChannelRole: {
4770
+ __typename?: 'GroupRole';
4771
+ groupRoleId: string;
4772
+ groupId: string;
4773
+ roleName: string;
4774
+ rank: number;
4775
+ isSystem: boolean;
4776
+ permissions: Array<string>;
2534
4777
  createdAt: string;
2535
- }>;
4778
+ };
2536
4779
  };
2537
4780
  export type GetChunkQueryVariables = Exact<{
2538
4781
  input: GetChunkInput;
@@ -2727,6 +4970,519 @@ export type UpdateChunkStateMutation = {
2727
4970
  };
2728
4971
  } | null;
2729
4972
  };
4973
+ export type GmSessionFieldsFragment = {
4974
+ __typename?: 'GmSession';
4975
+ sessionId: string;
4976
+ appId: string;
4977
+ name: string | null;
4978
+ status: string;
4979
+ createdByUserId: string | null;
4980
+ currentTurnUserId: string | null;
4981
+ metadataJson: string;
4982
+ };
4983
+ export type GmContainerFieldsFragment = {
4984
+ __typename?: 'GmContainer';
4985
+ containerId: string;
4986
+ appId: string;
4987
+ sessionId: string | null;
4988
+ typeName: string;
4989
+ displayName: string;
4990
+ description: string | null;
4991
+ ownerUserId: string | null;
4992
+ metadataJson: string;
4993
+ };
4994
+ export type GmInvokeResultFieldsFragment = {
4995
+ __typename?: 'GmInvokeResult';
4996
+ eventId: string;
4997
+ functionName: string;
4998
+ success: boolean;
4999
+ returnValueJson: string | null;
5000
+ errorMessage: string | null;
5001
+ mutationsApplied: Array<{
5002
+ __typename?: 'GmMutationApplied';
5003
+ containerId: string;
5004
+ key: string;
5005
+ valueType: string;
5006
+ oldValueJson: string | null;
5007
+ newValueJson: string | null;
5008
+ }>;
5009
+ };
5010
+ export type GameModelCreateSessionMutationVariables = Exact<{
5011
+ input: CreateSessionInput;
5012
+ }>;
5013
+ export type GameModelCreateSessionMutation = {
5014
+ __typename?: 'Mutation';
5015
+ gameModelCreateSession: {
5016
+ __typename?: 'GmSession';
5017
+ sessionId: string;
5018
+ appId: string;
5019
+ name: string | null;
5020
+ status: string;
5021
+ createdByUserId: string | null;
5022
+ currentTurnUserId: string | null;
5023
+ metadataJson: string;
5024
+ };
5025
+ };
5026
+ export type GameModelJoinSessionMutationVariables = Exact<{
5027
+ input: JoinSessionInput;
5028
+ }>;
5029
+ export type GameModelJoinSessionMutation = {
5030
+ __typename?: 'Mutation';
5031
+ gameModelJoinSession: {
5032
+ __typename?: 'GmSessionParticipant';
5033
+ sessionId: string;
5034
+ userId: string;
5035
+ role: string;
5036
+ };
5037
+ };
5038
+ export type GameModelSetSessionTurnMutationVariables = Exact<{
5039
+ input: SetSessionTurnInput;
5040
+ }>;
5041
+ export type GameModelSetSessionTurnMutation = {
5042
+ __typename?: 'Mutation';
5043
+ gameModelSetSessionTurn: {
5044
+ __typename?: 'GmSession';
5045
+ sessionId: string;
5046
+ appId: string;
5047
+ name: string | null;
5048
+ status: string;
5049
+ createdByUserId: string | null;
5050
+ currentTurnUserId: string | null;
5051
+ metadataJson: string;
5052
+ };
5053
+ };
5054
+ export type GameModelCreateContainerMutationVariables = Exact<{
5055
+ input: CreateContainerInput;
5056
+ }>;
5057
+ export type GameModelCreateContainerMutation = {
5058
+ __typename?: 'Mutation';
5059
+ gameModelCreateContainer: {
5060
+ __typename?: 'GmContainer';
5061
+ containerId: string;
5062
+ appId: string;
5063
+ sessionId: string | null;
5064
+ typeName: string;
5065
+ displayName: string;
5066
+ description: string | null;
5067
+ ownerUserId: string | null;
5068
+ metadataJson: string;
5069
+ };
5070
+ };
5071
+ export type GameModelSetPropertyMutationVariables = Exact<{
5072
+ input: SetContainerPropertyInput;
5073
+ }>;
5074
+ export type GameModelSetPropertyMutation = {
5075
+ __typename?: 'Mutation';
5076
+ gameModelSetProperty: {
5077
+ __typename?: 'GmContainer';
5078
+ containerId: string;
5079
+ appId: string;
5080
+ sessionId: string | null;
5081
+ typeName: string;
5082
+ displayName: string;
5083
+ description: string | null;
5084
+ ownerUserId: string | null;
5085
+ metadataJson: string;
5086
+ };
5087
+ };
5088
+ export type GameModelAddEdgeMutationVariables = Exact<{
5089
+ input: AddEdgeInput;
5090
+ }>;
5091
+ export type GameModelAddEdgeMutation = {
5092
+ __typename?: 'Mutation';
5093
+ gameModelAddEdge: {
5094
+ __typename?: 'GmEdge';
5095
+ edgeId: string;
5096
+ fromContainerId: string;
5097
+ toContainerId: string;
5098
+ relationshipType: string;
5099
+ weight: number | null;
5100
+ };
5101
+ };
5102
+ export type GameModelInvokeMutationVariables = Exact<{
5103
+ input: InvokeFunctionInput;
5104
+ }>;
5105
+ export type GameModelInvokeMutation = {
5106
+ __typename?: 'Mutation';
5107
+ gameModelInvoke: {
5108
+ __typename?: 'GmInvokeResult';
5109
+ eventId: string;
5110
+ functionName: string;
5111
+ success: boolean;
5112
+ returnValueJson: string | null;
5113
+ errorMessage: string | null;
5114
+ mutationsApplied: Array<{
5115
+ __typename?: 'GmMutationApplied';
5116
+ containerId: string;
5117
+ key: string;
5118
+ valueType: string;
5119
+ oldValueJson: string | null;
5120
+ newValueJson: string | null;
5121
+ }>;
5122
+ };
5123
+ };
5124
+ export type GameModelContainerQueryVariables = Exact<{
5125
+ appId: Scalars['BigInt']['input'];
5126
+ containerId: Scalars['String']['input'];
5127
+ }>;
5128
+ export type GameModelContainerQuery = {
5129
+ __typename?: 'Query';
5130
+ gameModelContainer: {
5131
+ __typename?: 'GmContainer';
5132
+ containerId: string;
5133
+ appId: string;
5134
+ sessionId: string | null;
5135
+ typeName: string;
5136
+ displayName: string;
5137
+ description: string | null;
5138
+ ownerUserId: string | null;
5139
+ metadataJson: string;
5140
+ };
5141
+ };
5142
+ export type GameModelContainersQueryVariables = Exact<{
5143
+ appId: Scalars['BigInt']['input'];
5144
+ typeName?: InputMaybe<Scalars['String']['input']>;
5145
+ sessionId?: InputMaybe<Scalars['String']['input']>;
5146
+ }>;
5147
+ export type GameModelContainersQuery = {
5148
+ __typename?: 'Query';
5149
+ gameModelContainers: Array<{
5150
+ __typename?: 'GmContainer';
5151
+ containerId: string;
5152
+ appId: string;
5153
+ sessionId: string | null;
5154
+ typeName: string;
5155
+ displayName: string;
5156
+ description: string | null;
5157
+ ownerUserId: string | null;
5158
+ metadataJson: string;
5159
+ }>;
5160
+ };
5161
+ export type GameModelContainerStateQueryVariables = Exact<{
5162
+ appId: Scalars['BigInt']['input'];
5163
+ containerId: Scalars['String']['input'];
5164
+ }>;
5165
+ export type GameModelContainerStateQuery = {
5166
+ __typename?: 'Query';
5167
+ gameModelContainerState: {
5168
+ __typename?: 'GmContainerState';
5169
+ containerId: string;
5170
+ appId: string;
5171
+ sessionId: string | null;
5172
+ typeName: string;
5173
+ displayName: string;
5174
+ ownerUserId: string | null;
5175
+ propertiesJson: string;
5176
+ };
5177
+ };
5178
+ export type GameModelTraverseQueryVariables = Exact<{
5179
+ appId: Scalars['BigInt']['input'];
5180
+ rootId: Scalars['String']['input'];
5181
+ relationshipType: Scalars['String']['input'];
5182
+ depth?: InputMaybe<Scalars['Int']['input']>;
5183
+ }>;
5184
+ export type GameModelTraverseQuery = {
5185
+ __typename?: 'Query';
5186
+ gameModelTraverse: {
5187
+ __typename?: 'GmTraverseResult';
5188
+ rootId: string;
5189
+ nodes: Array<{
5190
+ __typename?: 'GmContainer';
5191
+ containerId: string;
5192
+ appId: string;
5193
+ sessionId: string | null;
5194
+ typeName: string;
5195
+ displayName: string;
5196
+ description: string | null;
5197
+ ownerUserId: string | null;
5198
+ metadataJson: string;
5199
+ }>;
5200
+ edges: Array<{
5201
+ __typename?: 'GmEdge';
5202
+ edgeId: string;
5203
+ fromContainerId: string;
5204
+ toContainerId: string;
5205
+ relationshipType: string;
5206
+ weight: number | null;
5207
+ }>;
5208
+ };
5209
+ };
5210
+ export type GameModelSessionQueryVariables = Exact<{
5211
+ appId: Scalars['BigInt']['input'];
5212
+ sessionId: Scalars['String']['input'];
5213
+ }>;
5214
+ export type GameModelSessionQuery = {
5215
+ __typename?: 'Query';
5216
+ gameModelSession: {
5217
+ __typename?: 'GmSession';
5218
+ sessionId: string;
5219
+ appId: string;
5220
+ name: string | null;
5221
+ status: string;
5222
+ createdByUserId: string | null;
5223
+ currentTurnUserId: string | null;
5224
+ metadataJson: string;
5225
+ };
5226
+ };
5227
+ export type GameModelSessionsQueryVariables = Exact<{
5228
+ appId: Scalars['BigInt']['input'];
5229
+ status?: InputMaybe<Scalars['String']['input']>;
5230
+ }>;
5231
+ export type GameModelSessionsQuery = {
5232
+ __typename?: 'Query';
5233
+ gameModelSessions: Array<{
5234
+ __typename?: 'GmSession';
5235
+ sessionId: string;
5236
+ appId: string;
5237
+ name: string | null;
5238
+ status: string;
5239
+ createdByUserId: string | null;
5240
+ currentTurnUserId: string | null;
5241
+ metadataJson: string;
5242
+ }>;
5243
+ };
5244
+ export type GameModelEventsQueryVariables = Exact<{
5245
+ appId: Scalars['BigInt']['input'];
5246
+ sessionId?: InputMaybe<Scalars['String']['input']>;
5247
+ selfContainerId?: InputMaybe<Scalars['String']['input']>;
5248
+ functionName?: InputMaybe<Scalars['String']['input']>;
5249
+ success?: InputMaybe<Scalars['Boolean']['input']>;
5250
+ limit?: InputMaybe<Scalars['Int']['input']>;
5251
+ offset?: InputMaybe<Scalars['Int']['input']>;
5252
+ }>;
5253
+ export type GameModelEventsQuery = {
5254
+ __typename?: 'Query';
5255
+ gameModelEvents: Array<{
5256
+ __typename?: 'GmEvent';
5257
+ eventId: string;
5258
+ sessionId: string | null;
5259
+ functionName: string;
5260
+ selfContainerId: string | null;
5261
+ callerUserId: string | null;
5262
+ paramsJson: string;
5263
+ mutationsAppliedJson: string;
5264
+ returnValueJson: string | null;
5265
+ success: boolean;
5266
+ errorMessage: string | null;
5267
+ executedAt: string;
5268
+ }>;
5269
+ };
5270
+ export type GmFunctionFieldsFragment = {
5271
+ __typename?: 'GmFunction';
5272
+ functionId: string;
5273
+ appId: string;
5274
+ name: string;
5275
+ containerTypeName: string | null;
5276
+ description: string | null;
5277
+ returnType: string | null;
5278
+ invokeScope: string;
5279
+ invokePolicyJson: string | null;
5280
+ returnExpression: string | null;
5281
+ warnings: Array<string>;
5282
+ parameters: Array<{
5283
+ __typename?: 'GmFunctionParam';
5284
+ name: string;
5285
+ valueType: string;
5286
+ required: boolean;
5287
+ defaultValueJson: string | null;
5288
+ description: string | null;
5289
+ sortOrder: number;
5290
+ }>;
5291
+ mutations: Array<{
5292
+ __typename?: 'GmFunctionMutation';
5293
+ target: string;
5294
+ property: string;
5295
+ expression: string;
5296
+ }>;
5297
+ };
5298
+ export type GmPropertyDefFieldsFragment = {
5299
+ __typename?: 'GmPropertyDef';
5300
+ appId: string;
5301
+ containerTypeName: string;
5302
+ key: string;
5303
+ valueType: string;
5304
+ defaultValueJson: string | null;
5305
+ visibility: string;
5306
+ writable: string;
5307
+ description: string | null;
5308
+ };
5309
+ export type GameModelSeedMutationVariables = Exact<{
5310
+ input: SeedGameModelInput;
5311
+ }>;
5312
+ export type GameModelSeedMutation = {
5313
+ __typename?: 'Mutation';
5314
+ gameModelSeed: {
5315
+ __typename?: 'GmSeedResult';
5316
+ containerTypesCreated: number;
5317
+ propertyDefinitionsCreated: number;
5318
+ functionsCreated: number;
5319
+ containersCreated: number;
5320
+ edgesCreated: number;
5321
+ warnings: Array<string>;
5322
+ idMapJson: string;
5323
+ };
5324
+ };
5325
+ export type GameModelUpsertContainerTypeMutationVariables = Exact<{
5326
+ input: UpsertContainerTypeInput;
5327
+ }>;
5328
+ export type GameModelUpsertContainerTypeMutation = {
5329
+ __typename?: 'Mutation';
5330
+ gameModelUpsertContainerType: {
5331
+ __typename?: 'GmContainerType';
5332
+ appId: string;
5333
+ typeName: string;
5334
+ displayName: string;
5335
+ description: string | null;
5336
+ instantiableBy: string;
5337
+ defaultPropertyVisibility: string;
5338
+ metadataJson: string;
5339
+ };
5340
+ };
5341
+ export type GameModelUpsertPropertyDefMutationVariables = Exact<{
5342
+ input: UpsertPropertyDefInput;
5343
+ }>;
5344
+ export type GameModelUpsertPropertyDefMutation = {
5345
+ __typename?: 'Mutation';
5346
+ gameModelUpsertPropertyDef: {
5347
+ __typename?: 'GmPropertyDef';
5348
+ appId: string;
5349
+ containerTypeName: string;
5350
+ key: string;
5351
+ valueType: string;
5352
+ defaultValueJson: string | null;
5353
+ visibility: string;
5354
+ writable: string;
5355
+ description: string | null;
5356
+ };
5357
+ };
5358
+ export type GameModelUpsertFunctionMutationVariables = Exact<{
5359
+ input: UpsertFunctionInput;
5360
+ }>;
5361
+ export type GameModelUpsertFunctionMutation = {
5362
+ __typename?: 'Mutation';
5363
+ gameModelUpsertFunction: {
5364
+ __typename?: 'GmFunction';
5365
+ functionId: string;
5366
+ appId: string;
5367
+ name: string;
5368
+ containerTypeName: string | null;
5369
+ description: string | null;
5370
+ returnType: string | null;
5371
+ invokeScope: string;
5372
+ invokePolicyJson: string | null;
5373
+ returnExpression: string | null;
5374
+ warnings: Array<string>;
5375
+ parameters: Array<{
5376
+ __typename?: 'GmFunctionParam';
5377
+ name: string;
5378
+ valueType: string;
5379
+ required: boolean;
5380
+ defaultValueJson: string | null;
5381
+ description: string | null;
5382
+ sortOrder: number;
5383
+ }>;
5384
+ mutations: Array<{
5385
+ __typename?: 'GmFunctionMutation';
5386
+ target: string;
5387
+ property: string;
5388
+ expression: string;
5389
+ }>;
5390
+ };
5391
+ };
5392
+ export type GameModelDeleteFunctionMutationVariables = Exact<{
5393
+ appId: Scalars['BigInt']['input'];
5394
+ name: Scalars['String']['input'];
5395
+ }>;
5396
+ export type GameModelDeleteFunctionMutation = {
5397
+ __typename?: 'Mutation';
5398
+ gameModelDeleteFunction: boolean;
5399
+ };
5400
+ export type GameModelDefineFeatureMutationVariables = Exact<{
5401
+ input: DefineAppFeatureInput;
5402
+ }>;
5403
+ export type GameModelDefineFeatureMutation = {
5404
+ __typename?: 'Mutation';
5405
+ gameModelDefineFeature: {
5406
+ __typename?: 'GmAppFeature';
5407
+ appId: string;
5408
+ featureKey: string;
5409
+ description: string | null;
5410
+ };
5411
+ };
5412
+ export type GameModelGrantTierFeatureMutationVariables = Exact<{
5413
+ input: GrantTierFeatureInput;
5414
+ }>;
5415
+ export type GameModelGrantTierFeatureMutation = {
5416
+ __typename?: 'Mutation';
5417
+ gameModelGrantTierFeature: {
5418
+ __typename?: 'GmTierFeature';
5419
+ appId: string;
5420
+ tierId: string;
5421
+ featureKey: string;
5422
+ };
5423
+ };
5424
+ export type GameModelSetPolicyMutationVariables = Exact<{
5425
+ input: SetGameModelPolicyInput;
5426
+ }>;
5427
+ export type GameModelSetPolicyMutation = {
5428
+ __typename?: 'Mutation';
5429
+ gameModelSetPolicy: {
5430
+ __typename?: 'GmAppPolicy';
5431
+ appId: string;
5432
+ sessionCreationPolicy: string;
5433
+ defaultParticipantRole: string;
5434
+ };
5435
+ };
5436
+ export type GameModelTypeSchemaQueryVariables = Exact<{
5437
+ appId: Scalars['BigInt']['input'];
5438
+ typeName: Scalars['String']['input'];
5439
+ }>;
5440
+ export type GameModelTypeSchemaQuery = {
5441
+ __typename?: 'Query';
5442
+ gameModelTypeSchema: {
5443
+ __typename?: 'GmTypeSchema';
5444
+ typeName: string;
5445
+ propertyDefinitions: Array<{
5446
+ __typename?: 'GmPropertyDef';
5447
+ appId: string;
5448
+ containerTypeName: string;
5449
+ key: string;
5450
+ valueType: string;
5451
+ defaultValueJson: string | null;
5452
+ visibility: string;
5453
+ writable: string;
5454
+ description: string | null;
5455
+ }>;
5456
+ functions: Array<{
5457
+ __typename?: 'GmFunction';
5458
+ functionId: string;
5459
+ appId: string;
5460
+ name: string;
5461
+ containerTypeName: string | null;
5462
+ description: string | null;
5463
+ returnType: string | null;
5464
+ invokeScope: string;
5465
+ invokePolicyJson: string | null;
5466
+ returnExpression: string | null;
5467
+ warnings: Array<string>;
5468
+ parameters: Array<{
5469
+ __typename?: 'GmFunctionParam';
5470
+ name: string;
5471
+ valueType: string;
5472
+ required: boolean;
5473
+ defaultValueJson: string | null;
5474
+ description: string | null;
5475
+ sortOrder: number;
5476
+ }>;
5477
+ mutations: Array<{
5478
+ __typename?: 'GmFunctionMutation';
5479
+ target: string;
5480
+ property: string;
5481
+ expression: string;
5482
+ }>;
5483
+ }>;
5484
+ };
5485
+ };
2730
5486
  export type CreateOrgRoleMutationVariables = Exact<{
2731
5487
  input: CreateOrgRoleInput;
2732
5488
  }>;
@@ -3087,6 +5843,18 @@ export type MyCheckoutsQuery = {
3087
5843
  };
3088
5844
  };
3089
5845
  };
5846
+ export type PlatformConfigQueryVariables = Exact<{
5847
+ [key: string]: never;
5848
+ }>;
5849
+ export type PlatformConfigQuery = {
5850
+ __typename?: 'Query';
5851
+ platformConfig: {
5852
+ __typename?: 'PlatformConfig';
5853
+ sharedGameApiUrl: string | null;
5854
+ sharedGameApiWsUrl: string | null;
5855
+ freeAppsPerOrg: number;
5856
+ };
5857
+ };
3090
5858
  export type DeleteQuotaMutationVariables = Exact<{
3091
5859
  quotaId: Scalars['BigInt']['input'];
3092
5860
  }>;
@@ -3399,6 +6167,13 @@ export type SendAudioPacketMutation = {
3399
6167
  __typename?: 'Mutation';
3400
6168
  sendAudioPacket: boolean;
3401
6169
  };
6170
+ export type SendChannelMessageMutationVariables = Exact<{
6171
+ input: ChannelMessageInput;
6172
+ }>;
6173
+ export type SendChannelMessageMutation = {
6174
+ __typename?: 'Mutation';
6175
+ sendChannelMessage: boolean;
6176
+ };
3402
6177
  export type SendClientEventMutationVariables = Exact<{
3403
6178
  input: ClientEventNotificationInput;
3404
6179
  }>;
@@ -3406,6 +6181,13 @@ export type SendClientEventMutation = {
3406
6181
  __typename?: 'Mutation';
3407
6182
  sendClientEvent: boolean;
3408
6183
  };
6184
+ export type SendSingleActorMessageMutationVariables = Exact<{
6185
+ input: SingleActorMessageInput;
6186
+ }>;
6187
+ export type SendSingleActorMessageMutation = {
6188
+ __typename?: 'Mutation';
6189
+ sendSingleActorMessage: boolean;
6190
+ };
3409
6191
  export type SendTextPacketMutationVariables = Exact<{
3410
6192
  input: ClientTextPacketInput;
3411
6193
  }>;
@@ -3448,6 +6230,13 @@ export type UdpNotificationsSubscription = {
3448
6230
  uuid: string;
3449
6231
  sequenceNumber: number;
3450
6232
  epochMillis: string;
6233
+ } | {
6234
+ __typename: 'ChannelMessageNotification';
6235
+ channelId: string;
6236
+ uuid: string;
6237
+ payload: string;
6238
+ sequenceNumber: number;
6239
+ epochMillis: string;
3451
6240
  } | {
3452
6241
  __typename: 'ClientAudioNotification';
3453
6242
  appId: string;
@@ -3508,6 +6297,16 @@ export type UdpNotificationsSubscription = {
3508
6297
  state: string;
3509
6298
  sequenceNumber: number;
3510
6299
  epochMillis: string;
6300
+ } | {
6301
+ __typename: 'SingleActorMessageNotification';
6302
+ appId: string;
6303
+ chunkX: string;
6304
+ chunkY: string;
6305
+ chunkZ: string;
6306
+ uuid: string;
6307
+ payload: string;
6308
+ sequenceNumber: number;
6309
+ epochMillis: string;
3511
6310
  } | {
3512
6311
  __typename: 'VoxelUpdateNotification';
3513
6312
  appId: string;
@@ -3855,6 +6654,11 @@ export type VoxelUpdateHistoryQuery = {
3855
6654
  };
3856
6655
  }>;
3857
6656
  };
6657
+ export declare const GmSessionFieldsFragmentDoc: DocumentNode<GmSessionFieldsFragment, unknown>;
6658
+ export declare const GmContainerFieldsFragmentDoc: DocumentNode<GmContainerFieldsFragment, unknown>;
6659
+ export declare const GmInvokeResultFieldsFragmentDoc: DocumentNode<GmInvokeResultFieldsFragment, unknown>;
6660
+ export declare const GmFunctionFieldsFragmentDoc: DocumentNode<GmFunctionFieldsFragment, unknown>;
6661
+ export declare const GmPropertyDefFieldsFragmentDoc: DocumentNode<GmPropertyDefFieldsFragment, unknown>;
3858
6662
  export declare const ActorDocument: DocumentNode<ActorQuery, ActorQueryVariables>;
3859
6663
  export declare const ActorsDocument: DocumentNode<ActorsQuery, ActorsQueryVariables>;
3860
6664
  export declare const BatchLookupActorsDocument: DocumentNode<BatchLookupActorsQuery, BatchLookupActorsQueryVariables>;
@@ -3893,6 +6697,25 @@ export declare const AppBudgetsDocument: DocumentNode<AppBudgetsQuery, AppBudget
3893
6697
  export declare const SetAppBudgetDocument: DocumentNode<SetAppBudgetMutation, SetAppBudgetMutationVariables>;
3894
6698
  export declare const WalletBalanceDocument: DocumentNode<WalletBalanceQuery, WalletBalanceQueryVariables>;
3895
6699
  export declare const WalletTransactionsDocument: DocumentNode<WalletTransactionsQuery, WalletTransactionsQueryVariables>;
6700
+ export declare const AddChannelMemberDocument: DocumentNode<AddChannelMemberMutation, AddChannelMemberMutationVariables>;
6701
+ export declare const ChannelDocument: DocumentNode<ChannelQuery, ChannelQueryVariables>;
6702
+ export declare const ChannelMembersDocument: DocumentNode<ChannelMembersQuery, ChannelMembersQueryVariables>;
6703
+ export declare const ChannelPolicyDocument: DocumentNode<ChannelPolicyQuery, ChannelPolicyQueryVariables>;
6704
+ export declare const ChannelRolesDocument: DocumentNode<ChannelRolesQuery, ChannelRolesQueryVariables>;
6705
+ export declare const ChannelsDocument: DocumentNode<ChannelsQuery, ChannelsQueryVariables>;
6706
+ export declare const CreateChannelDocument: DocumentNode<CreateChannelMutation, CreateChannelMutationVariables>;
6707
+ export declare const CreateChannelRoleDocument: DocumentNode<CreateChannelRoleMutation, CreateChannelRoleMutationVariables>;
6708
+ export declare const DeleteChannelDocument: DocumentNode<DeleteChannelMutation, DeleteChannelMutationVariables>;
6709
+ export declare const DeleteChannelRoleDocument: DocumentNode<DeleteChannelRoleMutation, DeleteChannelRoleMutationVariables>;
6710
+ export declare const JoinChannelDocument: DocumentNode<JoinChannelMutation, JoinChannelMutationVariables>;
6711
+ export declare const LeaveChannelDocument: DocumentNode<LeaveChannelMutation, LeaveChannelMutationVariables>;
6712
+ export declare const MyChannelsDocument: DocumentNode<MyChannelsQuery, MyChannelsQueryVariables>;
6713
+ export declare const RemoveChannelMemberDocument: DocumentNode<RemoveChannelMemberMutation, RemoveChannelMemberMutationVariables>;
6714
+ export declare const RequestToJoinChannelDocument: DocumentNode<RequestToJoinChannelMutation, RequestToJoinChannelMutationVariables>;
6715
+ export declare const SetChannelMemberRolesDocument: DocumentNode<SetChannelMemberRolesMutation, SetChannelMemberRolesMutationVariables>;
6716
+ export declare const SetChannelPolicyDocument: DocumentNode<SetChannelPolicyMutation, SetChannelPolicyMutationVariables>;
6717
+ export declare const UpdateChannelDocument: DocumentNode<UpdateChannelMutation, UpdateChannelMutationVariables>;
6718
+ export declare const UpdateChannelRoleDocument: DocumentNode<UpdateChannelRoleMutation, UpdateChannelRoleMutationVariables>;
3896
6719
  export declare const GetChunkDocument: DocumentNode<GetChunkQuery, GetChunkQueryVariables>;
3897
6720
  export declare const GetChunkLodsDocument: DocumentNode<GetChunkLodsQuery, GetChunkLodsQueryVariables>;
3898
6721
  export declare const GetChunksByDistanceDocument: DocumentNode<GetChunksByDistanceQuery, GetChunksByDistanceQueryVariables>;
@@ -3900,6 +6723,29 @@ export declare const GetVoxelListDocument: DocumentNode<GetVoxelListQuery, GetVo
3900
6723
  export declare const UpdateChunkDocument: DocumentNode<UpdateChunkMutation, UpdateChunkMutationVariables>;
3901
6724
  export declare const UpdateChunkLodsDocument: DocumentNode<UpdateChunkLodsMutation, UpdateChunkLodsMutationVariables>;
3902
6725
  export declare const UpdateChunkStateDocument: DocumentNode<UpdateChunkStateMutation, UpdateChunkStateMutationVariables>;
6726
+ export declare const GameModelCreateSessionDocument: DocumentNode<GameModelCreateSessionMutation, GameModelCreateSessionMutationVariables>;
6727
+ export declare const GameModelJoinSessionDocument: DocumentNode<GameModelJoinSessionMutation, GameModelJoinSessionMutationVariables>;
6728
+ export declare const GameModelSetSessionTurnDocument: DocumentNode<GameModelSetSessionTurnMutation, GameModelSetSessionTurnMutationVariables>;
6729
+ export declare const GameModelCreateContainerDocument: DocumentNode<GameModelCreateContainerMutation, GameModelCreateContainerMutationVariables>;
6730
+ export declare const GameModelSetPropertyDocument: DocumentNode<GameModelSetPropertyMutation, GameModelSetPropertyMutationVariables>;
6731
+ export declare const GameModelAddEdgeDocument: DocumentNode<GameModelAddEdgeMutation, GameModelAddEdgeMutationVariables>;
6732
+ export declare const GameModelInvokeDocument: DocumentNode<GameModelInvokeMutation, GameModelInvokeMutationVariables>;
6733
+ export declare const GameModelContainerDocument: DocumentNode<GameModelContainerQuery, GameModelContainerQueryVariables>;
6734
+ export declare const GameModelContainersDocument: DocumentNode<GameModelContainersQuery, GameModelContainersQueryVariables>;
6735
+ export declare const GameModelContainerStateDocument: DocumentNode<GameModelContainerStateQuery, GameModelContainerStateQueryVariables>;
6736
+ export declare const GameModelTraverseDocument: DocumentNode<GameModelTraverseQuery, GameModelTraverseQueryVariables>;
6737
+ export declare const GameModelSessionDocument: DocumentNode<GameModelSessionQuery, GameModelSessionQueryVariables>;
6738
+ export declare const GameModelSessionsDocument: DocumentNode<GameModelSessionsQuery, GameModelSessionsQueryVariables>;
6739
+ export declare const GameModelEventsDocument: DocumentNode<GameModelEventsQuery, GameModelEventsQueryVariables>;
6740
+ export declare const GameModelSeedDocument: DocumentNode<GameModelSeedMutation, GameModelSeedMutationVariables>;
6741
+ export declare const GameModelUpsertContainerTypeDocument: DocumentNode<GameModelUpsertContainerTypeMutation, GameModelUpsertContainerTypeMutationVariables>;
6742
+ export declare const GameModelUpsertPropertyDefDocument: DocumentNode<GameModelUpsertPropertyDefMutation, GameModelUpsertPropertyDefMutationVariables>;
6743
+ export declare const GameModelUpsertFunctionDocument: DocumentNode<GameModelUpsertFunctionMutation, GameModelUpsertFunctionMutationVariables>;
6744
+ export declare const GameModelDeleteFunctionDocument: DocumentNode<GameModelDeleteFunctionMutation, GameModelDeleteFunctionMutationVariables>;
6745
+ export declare const GameModelDefineFeatureDocument: DocumentNode<GameModelDefineFeatureMutation, GameModelDefineFeatureMutationVariables>;
6746
+ export declare const GameModelGrantTierFeatureDocument: DocumentNode<GameModelGrantTierFeatureMutation, GameModelGrantTierFeatureMutationVariables>;
6747
+ export declare const GameModelSetPolicyDocument: DocumentNode<GameModelSetPolicyMutation, GameModelSetPolicyMutationVariables>;
6748
+ export declare const GameModelTypeSchemaDocument: DocumentNode<GameModelTypeSchemaQuery, GameModelTypeSchemaQueryVariables>;
3903
6749
  export declare const CreateOrgRoleDocument: DocumentNode<CreateOrgRoleMutation, CreateOrgRoleMutationVariables>;
3904
6750
  export declare const CreateOrgTokenDocument: DocumentNode<CreateOrgTokenMutation, CreateOrgTokenMutationVariables>;
3905
6751
  export declare const CreateOrganizationDocument: DocumentNode<CreateOrganizationMutation, CreateOrganizationMutationVariables>;
@@ -3921,6 +6767,7 @@ export declare const UpdateOrgTokenDocument: DocumentNode<UpdateOrgTokenMutation
3921
6767
  export declare const CheckoutsDocument: DocumentNode<CheckoutsQuery, CheckoutsQueryVariables>;
3922
6768
  export declare const CreateCheckoutDocument: DocumentNode<CreateCheckoutMutation, CreateCheckoutMutationVariables>;
3923
6769
  export declare const MyCheckoutsDocument: DocumentNode<MyCheckoutsQuery, MyCheckoutsQueryVariables>;
6770
+ export declare const PlatformConfigDocument: DocumentNode<PlatformConfigQuery, PlatformConfigQueryVariables>;
3924
6771
  export declare const DeleteQuotaDocument: DocumentNode<DeleteQuotaMutation, DeleteQuotaMutationVariables>;
3925
6772
  export declare const EffectiveQuotaDocument: DocumentNode<EffectiveQuotaQuery, EffectiveQuotaQueryVariables>;
3926
6773
  export declare const QuotasForAppDocument: DocumentNode<QuotasForAppQuery, QuotasForAppQueryVariables>;
@@ -3940,7 +6787,9 @@ export declare const ConnectUdpProxyDocument: DocumentNode<ConnectUdpProxyMutati
3940
6787
  export declare const DisconnectUdpProxyDocument: DocumentNode<DisconnectUdpProxyMutation, DisconnectUdpProxyMutationVariables>;
3941
6788
  export declare const SendActorUpdateDocument: DocumentNode<SendActorUpdateMutation, SendActorUpdateMutationVariables>;
3942
6789
  export declare const SendAudioPacketDocument: DocumentNode<SendAudioPacketMutation, SendAudioPacketMutationVariables>;
6790
+ export declare const SendChannelMessageDocument: DocumentNode<SendChannelMessageMutation, SendChannelMessageMutationVariables>;
3943
6791
  export declare const SendClientEventDocument: DocumentNode<SendClientEventMutation, SendClientEventMutationVariables>;
6792
+ export declare const SendSingleActorMessageDocument: DocumentNode<SendSingleActorMessageMutation, SendSingleActorMessageMutationVariables>;
3944
6793
  export declare const SendTextPacketDocument: DocumentNode<SendTextPacketMutation, SendTextPacketMutationVariables>;
3945
6794
  export declare const SendVoxelUpdateDocument: DocumentNode<SendVoxelUpdateMutation, SendVoxelUpdateMutationVariables>;
3946
6795
  export declare const UdpNotificationsDocument: DocumentNode<UdpNotificationsSubscription, UdpNotificationsSubscriptionVariables>;